CombatViewSystems class

Пакет: com.hypixel.hytale.server.npc.blackboard.view.combat

Файл: com/hypixel/hytale/server/npc/blackboard/view/combat/CombatViewSystems.java

Поля (26)

МодификаторыТипИмя
private final List<InterpretedCombatData> combatData
private final ComponentType<EntityStore, CombatViewSystems.CombatData> combatDataComponentType
private final ComponentType<EntityStore, CombatViewSystems.CombatData> combatDataComponentType
private final ComponentType<EntityStore, CombatViewSystems.CombatData> combatDataComponentType
private final ArrayDeque<InterpretedCombatData> combatDataPool
private final ResourceType<EntityStore, CombatViewSystems.CombatDataPool> dataPoolResourceType
private final ResourceType<EntityStore, CombatViewSystems.CombatDataPool> dataPoolResourceType
private boolean interpreted
private final List<InterpretedCombatData> unmodifiableCombatData
CombatViewSystems.CombatData var1
Set var10
List var2
CombatViewSystems.CombatData var2
InteractionManager var3
CombatViewSystems.CombatDataPool var4
CombatViewSystems.CombatData var4
List var5
CombatViewSystems.CombatDataPool var5
IndexedLookupTableAssetMap var6
CombatViewSystems.CombatData var6
Set var7
CombatViewSystems.CombatDataPool var7
Set var8
String var8
Set var9
InterpretedCombatData var9

Методы (25)

МодификаторыВозвратСигнатура
public CombatDatapublic CombatData()
public CombatDataPoolpublic CombatDataPool()
public Ensurepublic Ensure(ComponentType<EntityStore, CombatViewSystems.CombatData> var1)
public EntityRemovedpublic EntityRemoved(ComponentType<EntityStore, CombatViewSystems.CombatData> var1, ResourceType<EntityStore, CombatViewSystems.CombatDataPool> var2)
public Tickingpublic Ticking(ComponentType<EntityStore, CombatViewSystems.CombatData> var1, ResourceType<EntityStore, CombatViewSystems.CombatDataPool> var2)
static void clearCombatDatavoid clearCombatData(@Nonnull CombatViewSystems.CombatData var0, @Nonnull CombatViewSystems.CombatDataPool var1)
public Component<EntityStore> clonepublic Component<EntityStore> clone()
public Resource<EntityStore> clonepublic Resource<EntityStore> clone()
abstract for for(int var3 = 0; var3 < var2.size()
abstract for for(int var2 = 0; var2 < this.combatData.size()
public static ComponentType<EntityStore, CombatViewSystems.CombatData> getComponentTypepublic static ComponentType<EntityStore, CombatViewSystems.CombatData> getComponentType()
public InterpretedCombatData getEmptyCombatDatapublic InterpretedCombatData getEmptyCombatData()
public Query<EntityStore> getQuerypublic Query<EntityStore> getQuery()
public Query<EntityStore> getQuerypublic Query<EntityStore> getQuery()
public Query<EntityStore> getQuerypublic Query<EntityStore> getQuery()
public static ResourceType<EntityStore, CombatViewSystems.CombatDataPool> getResourceTypepublic static ResourceType<EntityStore, CombatViewSystems.CombatDataPool> getResourceType()
if if(var0.interpreted)
if if(var2.interpreted)
public boolean isParallelpublic boolean isParallel(int var1, int var2)
public void onEntityAddpublic void onEntityAdd(@Nonnull Holder<EntityStore> var1, @Nonnull AddReason var2, @Nonnull Store<EntityStore> var3)
public void onEntityAddpublic void onEntityAdd(@Nonnull Holder<EntityStore> var1, @Nonnull AddReason var2, @Nonnull Store<EntityStore> var3)
public void onEntityRemovedpublic void onEntityRemoved(@Nonnull Holder<EntityStore> var1, @Nonnull RemoveReason var2, @Nonnull Store<EntityStore> var3)
public void onEntityRemovedpublic void onEntityRemoved(@Nonnull Holder<EntityStore> var1, @Nonnull RemoveReason var2, @Nonnull Store<EntityStore> var3)
public void releaseCombatDatapublic void releaseCombatData(@Nonnull InterpretedCombatData 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.server.npc.blackboard.view.combat;

class="kw">import com.hypixel.hytale.assetstore.map.IndexedLookupTableAssetMap;
class="kw">import com.hypixel.hytale.component.AddReason;
class="kw">import com.hypixel.hytale.component.ArchetypeChunk;
class="kw">import com.hypixel.hytale.component.CommandBuffer;
class="kw">import com.hypixel.hytale.component.Component;
class="kw">import com.hypixel.hytale.component.ComponentType;
class="kw">import com.hypixel.hytale.component.Holder;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.component.RemoveReason;
class="kw">import com.hypixel.hytale.component.Resource;
class="kw">import com.hypixel.hytale.component.ResourceType;
class="kw">import com.hypixel.hytale.component.Store;
class="kw">import com.hypixel.hytale.component.query.Query;
class="kw">import com.hypixel.hytale.component.system.HolderSystem;
class="kw">import com.hypixel.hytale.component.system.tick.EntityTickingSystem;
class="kw">import com.hypixel.hytale.server.core.entity.InteractionManager;
class="kw">import com.hypixel.hytale.server.core.modules.entity.AllLegacyEntityTypesQuery;
class="kw">import com.hypixel.hytale.server.core.modules.interaction.InteractionModule;
class="kw">import com.hypixel.hytale.server.core.modules.interaction.interaction.config.RootInteraction;
class="kw">import com.hypixel.hytale.server.core.modules.interaction.interaction.config.client.ChargingInteraction;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
class="kw">import com.hypixel.hytale.server.npc.NPCPlugin;
class="kw">import com.hypixel.hytale.server.npc.role.support.CombatSupport;
class="kw">import it.unimi.dsi.fastutil.objects.ObjectArrayList;
class="kw">import java.util.ArrayDeque;
class="kw">import java.util.Collections;
class="kw">import java.util.List;
class="kw">import java.util.Set;
class="kw">import javax.annotation.Nonnull;

class="kw">public class CombatViewSystems {
   class="kw">public CombatViewSystems() {
   }

   class="kw">private class="kw">static void clearCombatData(@Nonnull CombatViewSystems.CombatData var0, @Nonnull CombatViewSystems.CombatDataPool var1) {
      if (var0.interpreted) {
         List var2 = var0.combatData;

         for (int var3 = 0; var3 < var2.size(); var3++) {
            var1.releaseCombatData(var2.get(var3));
         }

         var2.clear();
         var0.interpreted = false;
      }
   }

   @Nonnull
   class="kw">public class="kw">static List<InterpretedCombatData> getCombatData(@Nonnull Ref<EntityStore> var0, @Nonnull Store<EntityStore> var1) {
      CombatViewSystems.CombatData var2 = var1.getComponent(var0, CombatViewSystems.CombatData.getComponentType());
      if (var2.interpreted) {
         class="kw">return var2.unmodifiableCombatData;
      }

      InteractionManager var3 = var1.getComponent(var0, InteractionModule.get().getInteractionManagerComponent());
      CombatViewSystems.CombatDataPool var4 = var1.getResource(CombatViewSystems.CombatDataPool.getResourceType());
      List var5 = var2.combatData;
      IndexedLookupTableAssetMap var6 = RootInteraction.getAssetMap();
      Set var7 = var6.getKeysForTag(CombatSupport.ATTACK_TAG_INDEX);
      Set var8 = var6.getKeysForTag(CombatSupport.MELEE_TAG_INDEX);
      Set var9 = var6.getKeysForTag(CombatSupport.RANGED_TAG_INDEX);
      Set var10 = var6.getKeysForTag(CombatSupport.BLOCK_TAG_INDEX);
      var3.forEachInteraction((var5x, var6x, var7x) -> {
         String var8 = var5x.getInitialRootInteraction().getId();
         if (!var7.contains(var8)) {
            class="kw">return var7x;
         }

         InterpretedCombatData var9 = var4.getEmptyCombatData();
         var9.setAttack(var8);
         var9.setCurrentElapsedTime(var5x.getTimeInSeconds());
         var9.setCharging(var6x class="kw">instanceof ChargingInteraction);
         var9.setPerformingMeleeAttack(var8.contains(var8));
         var9.setPerformingRangedAttack(var9.contains(var8));
         var9.setPerformingBlock(var10.contains(var8));
         var7x.add(var9);
         class="kw">return var7x;
      }, var5);
      var2.interpreted = true;
      class="kw">return var2.unmodifiableCombatData;
   }

   class="kw">public class="kw">static class CombatData class="kw">implements Component<EntityStore> {
      class="kw">private class="kw">final List<InterpretedCombatData> combatData = new ObjectArrayList();
      class="kw">private class="kw">final List<InterpretedCombatData> unmodifiableCombatData = Collections.unmodifiableList(this.combatData);
      class="kw">private boolean interpreted;

      class="kw">public CombatData() {
      }

      class="kw">public class="kw">static ComponentType<EntityStore, CombatViewSystems.CombatData> getComponentType() {
         class="kw">return NPCPlugin.get().getCombatDataComponentType();
      }

      @Nonnull
      @Override
      class="kw">public Component<EntityStore> clone() {
         CombatViewSystems.CombatData var1 = new CombatViewSystems.CombatData();
         var1.interpreted = this.interpreted;

         for (int var2 = 0; var2 < this.combatData.size(); var2++) {
            var1.combatData.add(this.combatData.get(var2).clone());
         }

         class="kw">return var1;
      }
   }

   class="kw">public class="kw">static class CombatDataPool class="kw">implements Resource<EntityStore> {
      class="kw">private class="kw">final ArrayDeque<InterpretedCombatData> combatDataPool = new ArrayDeque<>();

      class="kw">public CombatDataPool() {
      }

      class="kw">public class="kw">static ResourceType<EntityStore, CombatViewSystems.CombatDataPool> getResourceType() {
         class="kw">return NPCPlugin.get().getCombatDataPoolResourceType();
      }

      @Nonnull
      @Override
      class="kw">public Resource<EntityStore> clone() {
         class="kw">return new CombatViewSystems.CombatDataPool();
      }

      class="kw">public InterpretedCombatData getEmptyCombatData() {
         class="kw">return this.combatDataPool.isEmpty() ? new InterpretedCombatData() : this.combatDataPool.poll();
      }

      class="kw">public void releaseCombatData(@Nonnull InterpretedCombatData var1) {
         this.combatDataPool.push(var1);
      }
   }

   class="kw">public class="kw">static class Ensure class="kw">extends HolderSystem<EntityStore> {
      class="kw">private class="kw">final ComponentType<EntityStore, CombatViewSystems.CombatData> combatDataComponentType;

      class="kw">public Ensure(ComponentType<EntityStore, CombatViewSystems.CombatData> var1) {
         this.combatDataComponentType = var1;
      }

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

      @Override
      class="kw">public void onEntityAdd(@Nonnull Holder<EntityStore> var1, @Nonnull AddReason var2, @Nonnull Store<EntityStore> var3) {
         var1.ensureComponent(this.combatDataComponentType);
      }

      @Override
      class="kw">public void onEntityRemoved(@Nonnull Holder<EntityStore> var1, @Nonnull RemoveReason var2, @Nonnull Store<EntityStore> var3) {
      }
   }

   class="kw">public class="kw">static class EntityRemoved class="kw">extends HolderSystem<EntityStore> {
      class="kw">private class="kw">final ComponentType<EntityStore, CombatViewSystems.CombatData> combatDataComponentType;
      class="kw">private class="kw">final ResourceType<EntityStore, CombatViewSystems.CombatDataPool> dataPoolResourceType;

      class="kw">public EntityRemoved(ComponentType<EntityStore, CombatViewSystems.CombatData> var1, ResourceType<EntityStore, CombatViewSystems.CombatDataPool> var2) {
         this.combatDataComponentType = var1;
         this.dataPoolResourceType = var2;
      }

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

      @Override
      class="kw">public void onEntityAdd(@Nonnull Holder<EntityStore> var1, @Nonnull AddReason var2, @Nonnull Store<EntityStore> var3) {
      }

      @Override
      class="kw">public void onEntityRemoved(@Nonnull Holder<EntityStore> var1, @Nonnull RemoveReason var2, @Nonnull Store<EntityStore> var3) {
         CombatViewSystems.CombatData var4 = var1.getComponent(this.combatDataComponentType);
         CombatViewSystems.CombatDataPool var5 = var3.getResource(this.dataPoolResourceType);
         CombatViewSystems.clearCombatData(var4, var5);
      }
   }

   class="kw">public class="kw">static class Ticking class="kw">extends EntityTickingSystem<EntityStore> {
      class="kw">private class="kw">final ComponentType<EntityStore, CombatViewSystems.CombatData> combatDataComponentType;
      class="kw">private class="kw">final ResourceType<EntityStore, CombatViewSystems.CombatDataPool> dataPoolResourceType;

      class="kw">public Ticking(ComponentType<EntityStore, CombatViewSystems.CombatData> var1, ResourceType<EntityStore, CombatViewSystems.CombatDataPool> var2) {
         this.combatDataComponentType = var1;
         this.dataPoolResourceType = var2;
      }

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

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

      @Override
      class="kw">public void tick(
         float var1, int var2, @Nonnull ArchetypeChunk<EntityStore> var3, @Nonnull Store<EntityStore> var4, @Nonnull CommandBuffer<EntityStore> var5
      ) {
         CombatViewSystems.CombatData var6 = var3.getComponent(var2, this.combatDataComponentType);
         CombatViewSystems.CombatDataPool var7 = var4.getResource(this.dataPoolResourceType);
         CombatViewSystems.clearCombatData(var6, var7);
      }
   }
}