EncounterMemberSystems class

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

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

Поля (17)

МодификаторыТипИмя
final ThreadLocal<List<EncounterMemberConsumer>> CONSUMERS
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 var2
List var3
boolean var3
ObjectIterator var4
Ref var5
EncounterMemberConsumer var5
EncounterMembers var6
List var7
Entry var9

Методы (16)

МодификаторыВозвратСигнатура
public Tickpublic Tick(@Nonnull ComponentType<EntityStore, EncounterMembers> var1, @Nonnull ComponentType<EntityStore, EncounterAudioState> var2, @Nonnull ComponentType<EntityStore, EncounterBossBarState> var3)
static void collectConsumersvoid collectConsumers(@Nullable EncounterAudioState var0, @Nullable EncounterBossBarState var1, @Nonnull List<EncounterMemberConsumer> var2)
abstract for for(int var4 = 0; var4 < var0.size()
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(var0 != null)
if if(var1 != null)
if if(var3)
if if(var11 <= 0.0F)
public boolean isParallelpublic boolean isParallel(int var1, int var2)
static void releasevoid release(@Nonnull List<EncounterMemberConsumer> var0, @Nonnull ComponentAccessor<EntityStore> var1, @Nonnull Ref<EntityStore> var2)
abstract release release(var3, var0, var5)
static void revertAndClearMembersvoid revertAndClearMembers(@Nonnull ComponentAccessor<EntityStore> var0, @Nonnull Ref<EntityStore> var1)
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);
                     }
                  }
               }
            }
         }
      }
   }
}