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);
}
}