mirror of
https://github.com/ProjectSWGCore/Holocore.git
synced 2026-10-05 20:13:20 -04:00
Cleaned up some AI classes
This commit is contained in:
-7
@@ -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;
|
||||
|
||||
+9
-13
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user