package com.captstudios.games.tafl.core.utils;
import com.artemis.World;
import com.captstudios.games.tafl.core.enums.LifeCycle;
import com.captstudios.games.tafl.core.es.model.TaflMatch;
import com.captstudios.games.tafl.core.es.model.ai.optimization.moves.Move;
import com.captstudios.games.tafl.core.es.systems.events.AiCompleteEvent;
import com.captstudios.games.tafl.core.es.systems.events.LifeCycleEvent;
import com.captstudios.games.tafl.core.es.systems.interaction.AiSystem;
public class AiThread extends Thread {
public World world;
public AiSystem runner;
public TaflMatch match;
public AiThread(World world, AiSystem runner) {
this.world = world;
this.runner = runner;
}
@Override
public void run() {
try {
Move move = match.aiStrategy.search(match);
if (move != null) {
AiCompleteEvent completeEvent = world.createEvent(AiCompleteEvent.class);
completeEvent.move = move;
world.postEvent(runner, completeEvent);
} else {
LifeCycleEvent lce = world.createEvent(LifeCycleEvent.class);
lce.lifecycle = LifeCycle.SURRENDER;
world.postEvent(runner, lce);
}
} catch (Exception e) {
e.printStackTrace();
LifeCycleEvent lce = world.createEvent(LifeCycleEvent.class);
lce.lifecycle = LifeCycle.SURRENDER;
world.postEvent(runner, lce);
}
}
}