Cleaned up some AI classes

This commit is contained in:
Obique
2018-08-29 18:06:53 -05:00
parent 007ad235c8
commit e4a89346ae
3 changed files with 10 additions and 20 deletions
@@ -7,15 +7,12 @@ import com.projectswg.holocore.resources.support.objects.swg.SWGObject;
import com.projectswg.holocore.resources.support.objects.swg.creature.CreatureObject;
import java.util.Collection;
import java.util.Random;
public abstract class NpcMode {
private final Random random;
private final AIObject obj;
public NpcMode(AIObject obj) {
this.random = new Random();
this.obj = obj;
}
@@ -74,10 +71,6 @@ public abstract class NpcMode {
return obj;
}
public final Random getRandom() {
return random;
}
public final Spawner getSpawner() {
return obj.getSpawner();
}
@@ -9,6 +9,7 @@ import com.projectswg.holocore.resources.support.objects.swg.custom.AIObject;
import me.joshlarson.jlcommon.concurrency.ScheduledThreadPool;
import me.joshlarson.jlcommon.control.IntentHandler;
import me.joshlarson.jlcommon.control.Service;
import me.joshlarson.jlcommon.log.Log;
import java.util.ArrayList;
import java.util.List;
@@ -3,15 +3,14 @@ package com.projectswg.holocore.services.support.npc.ai;
import com.projectswg.holocore.intents.support.npc.ai.ScheduleNpcModeIntent;
import com.projectswg.holocore.intents.support.npc.ai.StartNpcCombatIntent;
import com.projectswg.holocore.resources.support.npc.ai.NpcCombatMode;
import com.projectswg.holocore.resources.support.objects.swg.creature.CreatureObject;
import com.projectswg.holocore.resources.support.objects.swg.custom.AIObject;
import com.projectswg.holocore.resources.support.objects.swg.custom.NpcMode;
import me.joshlarson.jlcommon.control.IntentHandler;
import me.joshlarson.jlcommon.control.Service;
import me.joshlarson.jlcommon.log.Log;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.Collection;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
@@ -40,8 +39,14 @@ public class AISchedulingService extends Service {
@IntentHandler
private void handleStartNpcCombatIntent(StartNpcCombatIntent snci) {
AIObject obj = snci.getObject();
modes.compute(obj, (o, prev) -> computeCombatMode(o, prev, snci.getTargets()));
modes.compute(snci.getObject(), (o, prev) -> {
if (prev instanceof NpcCombatMode)
return prev;
NpcCombatMode mode = new NpcCombatMode(o);
mode.addTargets(snci.getTargets());
start(o, mode);
return mode;
});
}
private void start(@NotNull AIObject obj, @Nullable NpcMode mode) {
@@ -60,13 +65,4 @@ public class AISchedulingService extends Service {
mode.onModeEnd();
}
private NpcMode computeCombatMode(AIObject obj, NpcMode prev, Collection<CreatureObject> targets) {
if (prev instanceof NpcCombatMode)
return prev;
NpcCombatMode mode = new NpcCombatMode(obj);
mode.addTargets(targets);
start(obj, mode);
return mode;
}
}