SensorValueProviderWrapper class

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

Файл: com/hypixel/hytale/server/npc/corecomponents/utility/SensorValueProviderWrapper.java

extends: SensorBase

implements: IAnnotatedComponentCollection

Поля (16)

МодификаторыТипИмя
break
break
int var10
SingleDoubleParameterProvider var11
String var11
SingleIntParameterProvider var12
SingleStringParameterProvider var13
DebugSupport var13
int var22
double var23
ObjectArrayList var4
ObjectArrayList var5
ObjectArrayList var6
ValueStore var6
List var7
BuilderValueToParameterMapping.ValueToParameterMapping var9

Методы (9)

МодификаторыВозвратСигнатура
abstract throw new IndexOutOfBoundsExceptionthrow new IndexOutOfBoundsException()
for for(IntObjectPair var10 : this.stringParameterProviders)
for for(IntObjectPair var20 : this.intParameterProviders)
for for(IntObjectPair var21 : this.doubleParameterProviders)
abstract for for(int var8 = 0; var8 < var7.size()
if if(var7 != null)
if if(!this.passValues)
if if(var6 == null)
abstract super super(var1)

Исходный код

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

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.server.core.universe.world.World;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
class="kw">import com.hypixel.hytale.server.npc.asset.builder.BuilderSupport;
class="kw">import com.hypixel.hytale.server.npc.corecomponents.SensorBase;
class="kw">import com.hypixel.hytale.server.npc.corecomponents.utility.builders.BuilderSensorValueProviderWrapper;
class="kw">import com.hypixel.hytale.server.npc.corecomponents.utility.builders.BuilderValueToParameterMapping;
class="kw">import com.hypixel.hytale.server.npc.entities.NPCEntity;
class="kw">import com.hypixel.hytale.server.npc.instructions.ExecutionSupport;
class="kw">import com.hypixel.hytale.server.npc.instructions.Sensor;
class="kw">import com.hypixel.hytale.server.npc.movement.controllers.MotionController;
class="kw">import com.hypixel.hytale.server.npc.role.support.DebugSupport;
class="kw">import com.hypixel.hytale.server.npc.sensorinfo.InfoProvider;
class="kw">import com.hypixel.hytale.server.npc.sensorinfo.ValueWrappedInfoProvider;
class="kw">import com.hypixel.hytale.server.npc.sensorinfo.parameterproviders.MultipleParameterProvider;
class="kw">import com.hypixel.hytale.server.npc.sensorinfo.parameterproviders.SingleDoubleParameterProvider;
class="kw">import com.hypixel.hytale.server.npc.sensorinfo.parameterproviders.SingleIntParameterProvider;
class="kw">import com.hypixel.hytale.server.npc.sensorinfo.parameterproviders.SingleStringParameterProvider;
class="kw">import com.hypixel.hytale.server.npc.util.IAnnotatedComponent;
class="kw">import com.hypixel.hytale.server.npc.util.IAnnotatedComponentCollection;
class="kw">import com.hypixel.hytale.server.npc.valuestore.ValueStore;
class="kw">import it.unimi.dsi.fastutil.ints.IntObjectPair;
class="kw">import it.unimi.dsi.fastutil.objects.ObjectArrayList;
class="kw">import java.util.List;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;

class="kw">public class SensorValueProviderWrapper class="kw">extends SensorBase class="kw">implements IAnnotatedComponentCollection {
   class="kw">protected class="kw">static class="kw">final IntObjectPair<?>[] EMPTY_ARRAY = new IntObjectPair[0];
   @Nonnull
   class="kw">protected class="kw">final Sensor sensor;
   class="kw">protected class="kw">final boolean passValues;
   @Nonnull
   class="kw">protected class="kw">final IntObjectPair<SingleStringParameterProvider>[] stringParameterProviders;
   @Nonnull
   class="kw">protected class="kw">final IntObjectPair<SingleIntParameterProvider>[] intParameterProviders;
   @Nonnull
   class="kw">protected class="kw">final IntObjectPair<SingleDoubleParameterProvider>[] doubleParameterProviders;
   @Nonnull
   class="kw">protected class="kw">final ValueWrappedInfoProvider infoProvider;
   class="kw">protected class="kw">final MultipleParameterProvider multipleParameterProvider = new MultipleParameterProvider();
   class="kw">protected class="kw">final ComponentType<EntityStore, ValueStore> valueStoreComponentType;

   class="kw">public SensorValueProviderWrapper(@Nonnull BuilderSensorValueProviderWrapper var1, @Nonnull BuilderSupport var2, @Nonnull Sensor var3) {
      super(var1);
      this.sensor = var3;
      this.passValues = var1.isPassValues(var2);
      this.infoProvider = new ValueWrappedInfoProvider(var3.getSensorInfo(), this.multipleParameterProvider);
      ObjectArrayList var4 = new ObjectArrayList();
      ObjectArrayList var5 = new ObjectArrayList();
      ObjectArrayList var6 = new ObjectArrayList();
      List var7 = var1.getParameterMappings(var2);
      if (var7 != null) {
         for (int var8 = 0; var8 < var7.size(); var8++) {
            BuilderValueToParameterMapping.ValueToParameterMapping var9 = var7.get(var8);
            int var10 = var9.getToParameterSlot();
            class="kw">switch (var9.getType()) {
               case String: {
                  SingleStringParameterProvider var13 = new SingleStringParameterProvider(var10);
                  this.multipleParameterProvider.addParameterProvider(var10, var13);
                  var4.add(IntObjectPair.of(var9.getFromValueSlot(), var13));
                  break;
               }
               case Int: {
                  SingleIntParameterProvider var12 = new SingleIntParameterProvider(var10);
                  this.multipleParameterProvider.addParameterProvider(var10, var12);
                  var5.add(IntObjectPair.of(var9.getFromValueSlot(), var12));
                  break;
               }
               case Double: {
                  SingleDoubleParameterProvider var11 = new SingleDoubleParameterProvider(var10);
                  this.multipleParameterProvider.addParameterProvider(var10, var11);
                  var6.add(IntObjectPair.of(var9.getFromValueSlot(), var11));
               }
            }
         }
      }

      if (var4.isEmpty()) {
         this.stringParameterProviders = (IntObjectPair<SingleStringParameterProvider>[])EMPTY_ARRAY;
      } else {
         this.stringParameterProviders = (IntObjectPair<SingleStringParameterProvider>[])var4.toArray(IntObjectPair[]::new);
      }

      if (var5.isEmpty()) {
         this.intParameterProviders = (IntObjectPair<SingleIntParameterProvider>[])EMPTY_ARRAY;
      } else {
         this.intParameterProviders = (IntObjectPair<SingleIntParameterProvider>[])var5.toArray(IntObjectPair[]::new);
      }

      if (var6.isEmpty()) {
         this.doubleParameterProviders = (IntObjectPair<SingleDoubleParameterProvider>[])EMPTY_ARRAY;
      } else {
         this.doubleParameterProviders = (IntObjectPair<SingleDoubleParameterProvider>[])var6.toArray(IntObjectPair[]::new);
      }

      this.valueStoreComponentType = ValueStore.getComponentType();
   }

   @Override
   class="kw">public boolean matches(@Nonnull Ref<EntityStore> var1, @Nonnull ExecutionSupport var2, double var3, @Nonnull Store<EntityStore> var5) {
      if (!super.matches(var1, var2, var3, var5) || !this.sensor.matches(var1, var2, var3, var5)) {
         DebugSupport var13 = var2.getDebugSupport();
         if (var13.isTraceSensorFails()) {
            var13.setLastFailingSensor(this.sensor);
         }

         this.multipleParameterProvider.clear();
         class="kw">return false;
      } else {
         if (!this.passValues) {
            class="kw">return true;
         }

         ValueStore var6 = var5.getComponent(var1, this.valueStoreComponentType);
         if (var6 == null) {
            class="kw">return false;
         }

         for (IntObjectPair var10 : this.stringParameterProviders) {
            String var11 = var6.readString(var10.firstInt());
            ((SingleStringParameterProvider)var10.value()).overrideString(var11);
         }

         for (IntObjectPair var20 : this.intParameterProviders) {
            int var22 = var6.readInt(var20.firstInt());
            ((SingleIntParameterProvider)var20.value()).overrideInt(var22);
         }

         for (IntObjectPair var21 : this.doubleParameterProviders) {
            double var23 = var6.readDouble(var21.firstInt());
            ((SingleDoubleParameterProvider)var21.value()).overrideDouble(var23);
         }

         class="kw">return true;
      }
   }

   @Override
   class="kw">public InfoProvider getSensorInfo() {
      class="kw">return this.infoProvider;
   }

   @Override
   class="kw">public void registerWithSupport(ExecutionSupport var1) {
      this.sensor.registerWithSupport(var1);
   }

   @Override
   class="kw">public void motionControllerChanged(
      @Nullable Ref<EntityStore> var1, @Nonnull NPCEntity var2, MotionController var3, @Nullable ComponentAccessor<EntityStore> var4
   ) {
      this.sensor.motionControllerChanged(var1, var2, var3, var4);
   }

   @Override
   class="kw">public void loaded(ExecutionSupport var1) {
      this.sensor.loaded(var1);
   }

   @Override
   class="kw">public void spawned(ExecutionSupport var1) {
      this.sensor.spawned(var1);
   }

   @Override
   class="kw">public void unloaded(ExecutionSupport var1) {
      this.sensor.unloaded(var1);
   }

   @Override
   class="kw">public void removed(ExecutionSupport var1) {
      this.sensor.removed(var1);
   }

   @Override
   class="kw">public void teleported(ExecutionSupport var1, World var2, World var3) {
      this.sensor.teleported(var1, var2, var3);
   }

   @Override
   class="kw">public void done() {
      this.sensor.done();
   }

   @Override
   class="kw">public int componentCount() {
      class="kw">return 1;
   }

   @Nonnull
   @Override
   class="kw">public IAnnotatedComponent getComponent(int var1) {
      if (var1 >= this.componentCount()) {
         throw new IndexOutOfBoundsException();
      } else {
         class="kw">return this.sensor;
      }
   }

   @Override
   class="kw">public void setContext(IAnnotatedComponent var1, int var2) {
      super.setContext(var1, var2);
      this.sensor.setContext(this, var2);
   }
}