Tick class

Пакет: com.hypixel.hytale.builtin.encountermanager

Файл: com/hypixel/hytale/builtin/encountermanager/EncounterMemberSystems.java

extends: EntityTickingSystem<EntityStore>

Поля (10)

МодификаторыТипИмя
private final ComponentType<EntityStore, EncounterAudioState> audioStateComponentType
private final ComponentType<EntityStore, EncounterBossBarState> bossBarStateComponentType
private final Set<Dependency<EntityStore>> dependencies
private final ComponentType<EntityStore, EncounterMembers> membersComponentType
Ref var10
float var11
ObjectIterator var13
EncounterMembers var6
List var7
Entry var9

Методы (7)

МодификаторыВозвратСигнатура
abstract for for(int var8 = 0; var8 < var7.size()
abstract for for(int var12 = 0; var12 < var7.size()
public Set<Dependency<EntityStore>> getDependenciespublic Set<Dependency<EntityStore>> getDependencies()
public Query<EntityStore> getQuerypublic Query<EntityStore> getQuery()
if if(var11 <= 0.0F)
public boolean isParallelpublic boolean isParallel(int var1, int var2)
public void tickpublic void tick(float var1, int var2, @Nonnull ArchetypeChunk<EntityStore> var3, @Nonnull Store<EntityStore> var4, @Nonnull CommandBuffer<EntityStore> var5)

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.encountermanager;

class="kw">import com.hypixel.hytale.component.ArchetypeChunk;
class="kw">import com.hypixel.hytale.component.CommandBuffer;
class="kw">import com.hypixel.hytale.component.ComponentAccessor;
class="kw">import com.hypixel.hytale.component.ComponentType;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.component.Store;
class="kw">import com.hypixel.hytale.component.dependency.Dependency;
class="kw">import com.hypixel.hytale.component.dependency.Order;
class="kw">import com.hypixel.hytale.component.dependency.SystemDependency;
class="kw">import com.hypixel.hytale.component.query.Query;
class="kw">import com.hypixel.hytale.component.system.tick.EntityTickingSystem;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
class="kw">import it.unimi.dsi.fastutil.objects.ObjectIterator;
class="kw">import it.unimi.dsi.fastutil.objects.ReferenceArrayList;
class="kw">import it.unimi.dsi.fastutil.objects.Reference2FloatMap.Entry;
class="kw">import java.util.List;
class="kw">import java.util.Set;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;

class="kw">public class EncounterMemberSystems {
   class="kw">private class="kw">static class="kw">final ThreadLocal<List<EncounterMemberConsumer>> CONSUMERS = ThreadLocal.withInitial(ReferenceArrayList::new);

   class="kw">private EncounterMemberSystems() {
   }

   class="kw">public class="kw">static void revertAndClearMembers(@Nonnull ComponentAccessor<EntityStore> var0, @Nonnull Ref<EntityStore> var1) {
      EncounterMembers var2 = var0.getComponent(var1, EncounterMembers.getComponentType());
      if (var2 != null && !var2.isEmpty()) {
         List var3 = new ReferenceArrayList();
         collectConsumers(
            var0.getComponent(var1, EncounterAudioState.getComponentType()), var0.getComponent(var1, EncounterBossBarState.getComponentType()), var3
         );
         ObjectIterator var4 = var2.getMemberTtl().keySet().iterator();

         while (var4.hasNext()) {
            Ref var5 = (Ref<EntityStore>)var4.next();
            release(var3, var0, var5);
         }

         var2.clearMembers();
      }
   }

   class="kw">private class="kw">static void collectConsumers(@Nullable EncounterAudioState var0, @Nullable EncounterBossBarState var1, @Nonnull List<EncounterMemberConsumer> var2) {
      var2.clear();
      if (var0 != null) {
         var2.add(var0);
      }

      if (var1 != null) {
         var2.add(var1);
      }
   }

   class="kw">private class="kw">static void release(@Nonnull List<EncounterMemberConsumer> var0, @Nonnull ComponentAccessor<EntityStore> var1, @Nonnull Ref<EntityStore> var2) {
      boolean var3 = var2.isValid();

      for (int var4 = 0; var4 < var0.size(); var4++) {
         EncounterMemberConsumer var5 = var0.get(var4);
         if (var3) {
            var5.revertPlayer(var1, var2);
         } else {
            var5.forgetPlayer(var2);
         }
      }
   }

   class="kw">public class="kw">static class Tick class="kw">extends EntityTickingSystem<EntityStore> {
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, EncounterMembers> membersComponentType;
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, EncounterAudioState> audioStateComponentType;
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, EncounterBossBarState> bossBarStateComponentType;
      @Nonnull
      class="kw">private class="kw">final Set<Dependency<EntityStore>> dependencies = Set.of(new SystemDependency<>(Order.AFTER, EncounterManagerSystems.TickSystem.class));

      class="kw">public Tick(
         @Nonnull ComponentType<EntityStore, EncounterMembers> var1,
         @Nonnull ComponentType<EntityStore, EncounterAudioState> var2,
         @Nonnull ComponentType<EntityStore, EncounterBossBarState> var3
      ) {
         this.membersComponentType = var1;
         this.audioStateComponentType = var2;
         this.bossBarStateComponentType = var3;
      }

      @Override
      class="kw">public boolean isParallel(int var1, int var2) {
         class="kw">return false;
      }

      @Nonnull
      @Override
      class="kw">public Query<EntityStore> getQuery() {
         class="kw">return this.membersComponentType;
      }

      @Nonnull
      @Override
      class="kw">public Set<Dependency<EntityStore>> getDependencies() {
         class="kw">return this.dependencies;
      }

      @Override
      class="kw">public void tick(
         float var1, int var2, @Nonnull ArchetypeChunk<EntityStore> var3, @Nonnull Store<EntityStore> var4, @Nonnull CommandBuffer<EntityStore> var5
      ) {
         EncounterMembers var6 = var3.getComponent(var2, this.membersComponentType);
         assert var6 != null;
         if (!var6.isEmpty()) {
            List var7 = EncounterMemberSystems.CONSUMERS.get();
            EncounterMemberSystems.collectConsumers(
               var3.getComponent(var2, this.audioStateComponentType), var3.getComponent(var2, this.bossBarStateComponentType), var7
            );
            if (!var7.isEmpty()) {
               for (int var8 = 0; var8 < var7.size(); var8++) {
                  var7.get(var8).beginTick(var5);
               }

               ObjectIterator var13 = var6.getMemberTtl().reference2FloatEntrySet().fastIterator();

               while (var13.hasNext()) {
                  Entry var9 = (Entry<Ref<EntityStore>>)var13.next();
                  Ref var10 = (Ref<EntityStore>)var9.getKey();
                  float var11 = var10.isValid() ? var9.getFloatValue() - var1 : 0.0F;
                  if (var11 <= 0.0F) {
                     EncounterMemberSystems.release(var7, var5, var10);
                     var13.remove();
                  } else {
                     var9.setValue(var11);

                     for (int var12 = 0; var12 < var7.size(); var12++) {
                        var7.get(var12).applyToPlayer(var5, var10);
                     }
                  }
               }
            }
         }
      }
   }
}