SensorRandom class
Пакет: com.hypixel.hytale.server.npc.corecomponents.utility
Файл: com/hypixel/hytale/server/npc/corecomponents/utility/SensorRandom.java
extends: SensorBase
Поля (3)
| Модификаторы | Тип | Имя |
|---|---|---|
final |
double |
minFalseDuration |
|
double[] |
var3 |
|
double[] |
var4 |
Методы (2)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
protected |
double |
pickNextDurationdouble pickNextDuration() |
abstract |
|
super super(var1) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.server.npc.corecomponents.utility;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.component.Store;
class="kw">import com.hypixel.hytale.math.random.RandomExtra;
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.BuilderSensorRandom;
class="kw">import com.hypixel.hytale.server.npc.instructions.ExecutionSupport;
class="kw">import com.hypixel.hytale.server.npc.sensorinfo.InfoProvider;
class="kw">import javax.annotation.Nonnull;
class="kw">public class SensorRandom class="kw">extends SensorBase {
class="kw">protected class="kw">final double minFalseDuration;
class="kw">protected class="kw">final double maxFalseDuration;
class="kw">protected class="kw">final double minTrueDuration;
class="kw">protected class="kw">final double maxTrueDuration;
class="kw">protected double remainingDuration;
class="kw">protected boolean state;
class="kw">public SensorRandom(@Nonnull BuilderSensorRandom var1, @Nonnull BuilderSupport var2) {
super(var1);
double[] var3 = var1.getFalseRange(var2);
this.minFalseDuration = var3[0];
this.maxFalseDuration = var3[1];
double[] var4 = var1.getTrueRange(var2);
this.minTrueDuration = var4[0];
this.maxTrueDuration = var4[1];
this.state = RandomExtra.randomBoolean();
this.remainingDuration = this.pickNextDuration();
}
@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)) {
class="kw">return false;
}
if ((this.remainingDuration -= var3) <= 0.0) {
this.state = !this.state;
this.remainingDuration = this.pickNextDuration();
}
class="kw">return this.state;
}
@Override
class="kw">public InfoProvider getSensorInfo() {
class="kw">return null;
}
class="kw">protected double pickNextDuration() {
class="kw">return this.state
? RandomExtra.randomRange(this.minTrueDuration, this.maxTrueDuration)
: RandomExtra.randomRange(this.minFalseDuration, this.maxFalseDuration);
}
}