StateEvaluatorSystem class

Пакет: com.hypixel.hytale.server.npc.systems

Файл: com/hypixel/hytale/server/npc/systems/StateEvaluatorSystem.java

extends: EntityTickingSystem<EntityStore>

Поля (13)

МодификаторыТипИмя
StateEvaluator var10
HytaleLogger.Api var11
var11
var11
EvaluationContext var12
Evaluator.OptionHolder var13
StateOption var14
int var15
int var16
NPCEntity var6
UUIDComponent var7
Role var8
StateSupport var9

Методы (2)

МодификаторыВозвратСигнатура
if if(var8 != null)
if if(var13 != null)

Исходный код

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

class="kw">import com.hypixel.hytale.component.ArchetypeChunk;
class="kw">import com.hypixel.hytale.component.CommandBuffer;
class="kw">import com.hypixel.hytale.component.ComponentType;
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.logger.HytaleLogger;
class="kw">import com.hypixel.hytale.server.core.entity.UUIDComponent;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
class="kw">import com.hypixel.hytale.server.npc.decisionmaker.core.EvaluationContext;
class="kw">import com.hypixel.hytale.server.npc.decisionmaker.core.Evaluator;
class="kw">import com.hypixel.hytale.server.npc.decisionmaker.stateevaluator.StateEvaluator;
class="kw">import com.hypixel.hytale.server.npc.decisionmaker.stateevaluator.StateOption;
class="kw">import com.hypixel.hytale.server.npc.entities.NPCEntity;
class="kw">import com.hypixel.hytale.server.npc.role.Role;
class="kw">import com.hypixel.hytale.server.npc.role.support.StateSupport;
class="kw">import java.util.Set;
class="kw">import java.util.logging.Level;
class="kw">import javax.annotation.Nonnull;

class="kw">public class StateEvaluatorSystem class="kw">extends EntityTickingSystem<EntityStore> {
   @Nonnull
   class="kw">private class="kw">static class="kw">final HytaleLogger LOGGER = HytaleLogger.forEnclosingClass();
   @Nonnull
   class="kw">private class="kw">final ComponentType<EntityStore, StateEvaluator> stateEvaluatorComponent;
   @Nonnull
   class="kw">private class="kw">final ComponentType<EntityStore, NPCEntity> npcComponentType;
   @Nonnull
   class="kw">private class="kw">final ComponentType<EntityStore, UUIDComponent> uuidComponentType = UUIDComponent.getComponentType();
   @Nonnull
   class="kw">private class="kw">final Set<Dependency<EntityStore>> dependencies;
   @Nonnull
   class="kw">private class="kw">final Query<EntityStore> query;

   class="kw">public StateEvaluatorSystem(@Nonnull ComponentType<EntityStore, StateEvaluator> var1, @Nonnull ComponentType<EntityStore, NPCEntity> var2) {
      this.stateEvaluatorComponent = var1;
      this.npcComponentType = var2;
      this.dependencies = Set.of(
         new SystemDependency<>(Order.BEFORE, RoleSystems.BehaviourTickSystem.class),
         new SystemDependency<>(Order.AFTER, RoleSystems.PreBehaviourSupportTickSystem.class)
      );
      this.query = Query.and(var2, var1, this.uuidComponentType);
   }

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

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

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

   @Override
   class="kw">public void tick(float var1, int var2, @Nonnull ArchetypeChunk<EntityStore> var3, @Nonnull Store<EntityStore> var4, @Nonnull CommandBuffer<EntityStore> var5) {
      NPCEntity var6 = var3.getComponent(var2, this.npcComponentType);
      assert var6 != null;
      UUIDComponent var7 = var3.getComponent(var2, this.uuidComponentType);
      assert var7 != null;
      Role var8 = var6.getRole();
      if (var8 != null) {
         StateSupport var9 = var3.getComponent(var2, StateSupport.getComponentType());
         assert var9 != null;
         if (!var9.isRunningTransitionActions()) {
            StateEvaluator var10 = var3.getComponent(var2, this.stateEvaluatorComponent);
            assert var10 != null;
            if (var10.isActive() && var10.shouldExecute(var1)) {
               HytaleLogger.Api var11 = LOGGER.at(Level.FINE);
               if (var11.isEnabled()) {
                  var11.log("%s with uuid %s: Beginning state evaluation", var6.getRoleName(), var7.getUuid());
               }

               EvaluationContext var12 = var10.getEvaluationContext();
               var10.prepareEvaluationContext(var12);
               Evaluator.OptionHolder var13 = var10.evaluate(var2, var3, var5, var12);
               var12.reset();
               var11 = LOGGER.at(Level.FINE);
               if (var11.isEnabled()) {
                  var11.log("%s with uuid %s: Chose state option %s", var6.getRoleName(), var7.getUuid(), var13);
               }

               if (var13 != null) {
                  var13.setLastUsedNanos(System.nanoTime());
                  StateOption var14 = (StateOption)var13.getOption();
                  int var15 = var14.getStateIndex();
                  int var16 = var14.getSubStateIndex();
                  if (!var9.inState(var15) || !var9.inSubState(var16)) {
                     var9.setState(var14.getStateIndex(), var14.getSubStateIndex(), true, false);
                     var11 = LOGGER.at(Level.FINE);
                     if (var11.isEnabled()) {
                        var11.log("%s with uuid %s: Setting state", var6.getRoleName(), var7.getUuid());
                     }

                     var10.onStateSwitched();
                  }
               }
            }
         }
      }
   }
}