///* // * To change this template, choose Tools | Templates // * and open the template in the editor. // */ //package org.petah.spring.bai.delegate; // //import com.springrts.ai.AI; //import com.springrts.ai.AICallback; //import com.springrts.ai.oo.AIFloat3; //import com.springrts.ai.oo.AbstractOOAI; //import com.springrts.ai.oo.clb.OOAICallback; //import com.springrts.ai.oo.clb.Command; //import com.springrts.ai.oo.clb.Unit; //import com.springrts.ai.oo.clb.WeaponDef; //import java.util.Collection; //import java.util.List; //import java.util.concurrent.CopyOnWriteArrayList; //import org.petah.common.util.profiler.Profiler; //import org.petah.spring.bai.AIReturnCode; //import org.petah.spring.bai.listener.AIEventListener; //import org.petah.spring.bai.listener.CommandEventListener; //import org.petah.spring.bai.listener.DamageEventListener; //import org.petah.spring.bai.listener.EnemyEventListener; //import org.petah.spring.bai.listener.IOEventListener; //import org.petah.spring.bai.listener.MessageEventListener; //import org.petah.spring.bai.listener.MoveEventListener; //import org.petah.spring.bai.listener.SeismicPingEventListener; //import org.petah.spring.bai.listener.UnitEventListener; //import org.petah.spring.bai.listener.UpdateEventListener; //import org.petah.spring.bai.listener.WeaponEventListener; // ///** // * // * @author davnei06 // */ //public class AIEventHandler implements AI { // // private AIDelegate aiDelegate; // private Collection<AIEventListener> aiEventListeners = new CopyOnWriteArrayList<AIEventListener>(); // private Collection<CommandEventListener> commandEventListeners = new CopyOnWriteArrayList<CommandEventListener>(); // private Collection<DamageEventListener> damageEventListeners = new CopyOnWriteArrayList<DamageEventListener>(); // private Collection<EnemyEventListener> enemyEventListeners = new CopyOnWriteArrayList<EnemyEventListener>(); // private Collection<IOEventListener> ioEventListeners = new CopyOnWriteArrayList<IOEventListener>(); // private Collection<MessageEventListener> messageEventListeners = new CopyOnWriteArrayList<MessageEventListener>(); // private Collection<SeismicPingEventListener> seismicPingEventListeners = new CopyOnWriteArrayList<SeismicPingEventListener>(); // private Collection<UnitEventListener> unitEventListeners = new CopyOnWriteArrayList<UnitEventListener>(); // private Collection<UpdateEventListener> updateEventListeners = new CopyOnWriteArrayList<UpdateEventListener>(); // private Collection<WeaponEventListener> weaponEventListeners = new CopyOnWriteArrayList<WeaponEventListener>(); // private Collection<MoveEventListener> moveEventListeners = new CopyOnWriteArrayList<MoveEventListener>(); // // // Private methods // private void handleException(Exception ex) { // ex.printStackTrace(); // } // // // Public methods // public void addAIEventListener(AIEventListener listener) { // aiEventListeners.add(listener); // } // // public void removeAIEventListener(AIEventListener listener) { // aiEventListeners.remove(listener); // } // // public void addCommandEventListener(CommandEventListener listener) { // commandEventListeners.add(listener); // } // // public void removeCommandEventListener(CommandEventListener listener) { // commandEventListeners.remove(listener); // } // // public void addDamageEventListener(DamageEventListener listener) { // damageEventListeners.add(listener); // } // // public void removeDamageEventListener(DamageEventListener listener) { // damageEventListeners.remove(listener); // } // // public void addEnemyEventListener(EnemyEventListener listener) { // enemyEventListeners.add(listener); // } // // public void removeEnemyEventListener(EnemyEventListener listener) { // enemyEventListeners.remove(listener); // } // // public void addIOEventListener(IOEventListener listener) { // ioEventListeners.add(listener); // } // // public void removeIOEventListener(IOEventListener listener) { // ioEventListeners.remove(listener); // } // // public void addMessageEventListener(MessageEventListener listener) { // messageEventListeners.add(listener); // } // // public void removeMessageEventListener(MessageEventListener listener) { // messageEventListeners.remove(listener); // } // // public void addSeismicPingEventListener(SeismicPingEventListener listener) { // seismicPingEventListeners.add(listener); // } // // public void removeSeismicPingEventListener(SeismicPingEventListener listener) { // seismicPingEventListeners.remove(listener); // } // // public void addUnitEventListener(UnitEventListener listener) { // unitEventListeners.add(listener); // } // // public void removeUnitEventListener(UnitEventListener listener) { // unitEventListeners.remove(listener); // } // // public void addUpdateEventListener(UpdateEventListener listener) { // updateEventListeners.add(listener); // } // // public void removeUpdateEventListener(UpdateEventListener listener) { // updateEventListeners.remove(listener); // } // // public void addWeaponEventListener(WeaponEventListener listener) { // weaponEventListeners.add(listener); // } // // public void removeWeaponEventListener(WeaponEventListener listener) { // weaponEventListeners.remove(listener); // } // // public void addMoveEventListener(MoveEventListener listener) { // moveEventListeners.add(listener); // } // // public void removeMoveEventListener(MoveEventListener listener) { // moveEventListeners.remove(listener); // } // // // Events // public int commandFinished(Unit unit, int commandId, int commandTopicId) { // try { // for (CommandEventListener commandEventListener : commandEventListeners) { // Profiler.start(AIEventHandler.class, aiDelegate.getPrefix() + commandEventListener.getClass().getSimpleName() + ".commandFinished()"); // commandEventListener.commandFinished(unit, commandId, commandTopicId); // Profiler.stop(AIEventHandler.class, aiDelegate.getPrefix() + commandEventListener.getClass().getSimpleName() + ".commandFinished()"); // } // return AIReturnCode.NORMAL; // } catch (Exception ex) { // handleException(ex); // return AIReturnCode.UNHANDLED_EXCEPTION; // } // } // // public int enemyDamaged(Unit enemy, Unit attacker, float damage, AIFloat3 dir, WeaponDef weaponDef, boolean paralyzer) { // try { // for (DamageEventListener damageEventListener : damageEventListeners) { // Profiler.start(AIEventHandler.class, aiDelegate.getPrefix() + damageEventListener.getClass().getSimpleName() + ".enemyDamaged()"); // damageEventListener.enemyDamaged(enemy, attacker, damage, dir, weaponDef, paralyzer); // Profiler.stop(AIEventHandler.class, aiDelegate.getPrefix() + damageEventListener.getClass().getSimpleName() + ".enemyDamaged()"); // } // return AIReturnCode.NORMAL; // } catch (Exception ex) { // handleException(ex); // return AIReturnCode.UNHANDLED_EXCEPTION; // } // } // // public int enemyDestroyed(Unit enemy, Unit attacker) { // try { // for (DamageEventListener damageEventListener : damageEventListeners) { // Profiler.start(AIEventHandler.class, aiDelegate.getPrefix() + damageEventListener.getClass().getSimpleName() + ".enemyDestroyed()"); // damageEventListener.enemyDestroyed(enemy, attacker); // Profiler.stop(AIEventHandler.class, aiDelegate.getPrefix() + damageEventListener.getClass().getSimpleName() + ".enemyDestroyed()"); // } // return AIReturnCode.NORMAL; // } catch (Exception ex) { // handleException(ex); // return AIReturnCode.UNHANDLED_EXCEPTION; // } // } // // public int enemyEnterLOS(Unit enemy) { // try { // for (EnemyEventListener enemyEventListener : enemyEventListeners) { // Profiler.start(AIEventHandler.class, aiDelegate.getPrefix() + enemyEventListener.getClass().getSimpleName() + ".enemyEnterLOS()"); // enemyEventListener.enemyEnterLOS(enemy); // Profiler.stop(AIEventHandler.class, aiDelegate.getPrefix() + enemyEventListener.getClass().getSimpleName() + ".enemyEnterLOS()"); // } // return AIReturnCode.NORMAL; // } catch (Exception ex) { // handleException(ex); // return AIReturnCode.UNHANDLED_EXCEPTION; // } // } // // public int enemyEnterRadar(Unit enemy) { // try { // for (EnemyEventListener enemyEventListener : enemyEventListeners) { // Profiler.start(AIEventHandler.class, aiDelegate.getPrefix() + enemyEventListener.getClass().getSimpleName() + ".enemyEnterRadar()"); // enemyEventListener.enemyEnterRadar(enemy); // Profiler.stop(AIEventHandler.class, aiDelegate.getPrefix() + enemyEventListener.getClass().getSimpleName() + ".enemyEnterRadar()"); // } // return AIReturnCode.NORMAL; // } catch (Exception ex) { // handleException(ex); // return AIReturnCode.UNHANDLED_EXCEPTION; // } // // } // // public int enemyLeaveLOS(Unit enemy) { // try { // for (EnemyEventListener enemyEventListener : enemyEventListeners) { // Profiler.start(AIEventHandler.class, aiDelegate.getPrefix() + enemyEventListener.getClass().getSimpleName() + ".enemyLeaveLOS()"); // enemyEventListener.enemyLeaveLOS(enemy); // Profiler.stop(AIEventHandler.class, aiDelegate.getPrefix() + enemyEventListener.getClass().getSimpleName() + ".enemyLeaveLOS()"); // } // return AIReturnCode.NORMAL; // } catch (Exception ex) { // handleException(ex); // return AIReturnCode.UNHANDLED_EXCEPTION; // } // } // // public int enemyLeaveRadar(Unit enemy) { // try { // for (EnemyEventListener enemyEventListener : enemyEventListeners) { // Profiler.start(AIEventHandler.class, aiDelegate.getPrefix() + enemyEventListener.getClass().getSimpleName() + ".enemyLeaveRadar()"); // enemyEventListener.enemyLeaveRadar(enemy); // Profiler.stop(AIEventHandler.class, aiDelegate.getPrefix() + enemyEventListener.getClass().getSimpleName() + ".enemyLeaveRadar()"); // } // return AIReturnCode.NORMAL; // } catch (Exception ex) { // handleException(ex); // return AIReturnCode.UNHANDLED_EXCEPTION; // } // } // // public int init(int teamId, OOAICallback callback) { // try { // for (AIEventListener aiEventListener : aiEventListeners) { // Profiler.start(AIEventHandler.class, aiDelegate.getPrefix() + aiEventListener.getClass().getSimpleName() + ".init()"); // aiEventListener.init(teamId, callback); // Profiler.stop(AIEventHandler.class, aiDelegate.getPrefix() + aiEventListener.getClass().getSimpleName() + ".init()"); // } // return AIReturnCode.NORMAL; // } catch (Exception ex) { // handleException(ex); // return AIReturnCode.UNHANDLED_EXCEPTION; // } // } // // public int load(String file) { // try { // for (IOEventListener ioEventListener : ioEventListeners) { // Profiler.start(AIEventHandler.class, aiDelegate.getPrefix() + ioEventListener.getClass().getSimpleName() + ".load()"); // ioEventListener.load(file); // Profiler.stop(AIEventHandler.class, aiDelegate.getPrefix() + ioEventListener.getClass().getSimpleName() + ".load()"); // } // return AIReturnCode.NORMAL; // } catch (Exception ex) { // handleException(ex); // return AIReturnCode.UNHANDLED_EXCEPTION; // } // } // // public int message(int player, String message) { // try { // for (MessageEventListener messageEventListener : messageEventListeners) { // Profiler.start(AIEventHandler.class, aiDelegate.getPrefix() + messageEventListener.getClass().getSimpleName() + ".message()"); // messageEventListener.message(player, message); // Profiler.stop(AIEventHandler.class, aiDelegate.getPrefix() + messageEventListener.getClass().getSimpleName() + ".message()"); // } // return AIReturnCode.NORMAL; // } catch (Exception ex) { // handleException(ex); // return AIReturnCode.UNHANDLED_EXCEPTION; // } // } // // public int playerCommand(List<Unit> units, Command command, int playerId) { // try { // for (CommandEventListener commandEventListener : commandEventListeners) { // Profiler.start(AIEventHandler.class, aiDelegate.getPrefix() + commandEventListener.getClass().getSimpleName() + ".playerCommand()"); // commandEventListener.playerCommand(units, command, playerId); // Profiler.stop(AIEventHandler.class, aiDelegate.getPrefix() + commandEventListener.getClass().getSimpleName() + ".playerCommand()"); // } // return AIReturnCode.NORMAL; // } catch (Exception ex) { // handleException(ex); // return AIReturnCode.UNHANDLED_EXCEPTION; // } // } // // public int release(int reason) { // try { // for (AIEventListener aiEventListener : aiEventListeners) { // Profiler.start(AIEventHandler.class, aiDelegate.getPrefix() + aiEventListener.getClass().getSimpleName() + ".release()"); // aiEventListener.release(reason); // Profiler.stop(AIEventHandler.class, aiDelegate.getPrefix() + aiEventListener.getClass().getSimpleName() + ".release()"); // } // return AIReturnCode.NORMAL; // } catch (Exception ex) { // handleException(ex); // return AIReturnCode.UNHANDLED_EXCEPTION; // } // } // // public int save(String file) { // try { // for (IOEventListener ioEventListener : ioEventListeners) { // Profiler.start(AIEventHandler.class, aiDelegate.getPrefix() + ioEventListener.getClass().getSimpleName() + ".save()"); // ioEventListener.save(file); // Profiler.stop(AIEventHandler.class, aiDelegate.getPrefix() + ioEventListener.getClass().getSimpleName() + ".save()"); // } // return AIReturnCode.NORMAL; // } catch (Exception ex) { // handleException(ex); // return AIReturnCode.UNHANDLED_EXCEPTION; // } // } // // public int seismicPing(AIFloat3 pos, float strength) { // try { // for (SeismicPingEventListener seismicPingEventListener : seismicPingEventListeners) { // Profiler.start(AIEventHandler.class, aiDelegate.getPrefix() + seismicPingEventListener.getClass().getSimpleName() + ".seismicPing()"); // seismicPingEventListener.seismicPing(pos, strength); // Profiler.stop(AIEventHandler.class, aiDelegate.getPrefix() + seismicPingEventListener.getClass().getSimpleName() + ".seismicPing()"); // } // return AIReturnCode.NORMAL; // } catch (Exception ex) { // handleException(ex); // return AIReturnCode.UNHANDLED_EXCEPTION; // } // } // // public int unitCaptured(Unit unit, int oldTeamId, int newTeamId) { // try { // for (UnitEventListener unitEventListener : unitEventListeners) { // Profiler.start(AIEventHandler.class, aiDelegate.getPrefix() + unitEventListener.getClass().getSimpleName() + ".unitCaptured()"); // unitEventListener.unitCaptured(unit, oldTeamId, newTeamId); // Profiler.stop(AIEventHandler.class, aiDelegate.getPrefix() + unitEventListener.getClass().getSimpleName() + ".unitCaptured()"); // } // return AIReturnCode.NORMAL; // } catch (Exception ex) { // handleException(ex); // return AIReturnCode.UNHANDLED_EXCEPTION; // } // } // // public int unitCreated(Unit unit, Unit builder) { // try { // for (UnitEventListener unitEventListener : unitEventListeners) { // Profiler.start(AIEventHandler.class, aiDelegate.getPrefix() + unitEventListener.getClass().getSimpleName() + ".unitCreated()"); // unitEventListener.unitCreated(unit, builder); // Profiler.stop(AIEventHandler.class, aiDelegate.getPrefix() + unitEventListener.getClass().getSimpleName() + ".unitCreated()"); // } // return AIReturnCode.NORMAL; // } catch (Exception ex) { // handleException(ex); // return AIReturnCode.UNHANDLED_EXCEPTION; // } // } // // public int unitDamaged(Unit unit, Unit attacker, float damage, AIFloat3 dir, WeaponDef weaponDef, boolean paralyzer) { // try { // for (DamageEventListener damageEventListener : damageEventListeners) { // Profiler.start(AIEventHandler.class, aiDelegate.getPrefix() + damageEventListener.getClass().getSimpleName() + ".unitDamaged()"); // damageEventListener.unitDamaged(unit, attacker, damage, dir, weaponDef, paralyzer); // Profiler.stop(AIEventHandler.class, aiDelegate.getPrefix() + damageEventListener.getClass().getSimpleName() + ".unitDamaged()"); // } // return AIReturnCode.NORMAL; // } catch (Exception ex) { // handleException(ex); // return AIReturnCode.UNHANDLED_EXCEPTION; // } // } // // public int unitDestroyed(Unit unit, Unit attacker) { // try { // for (DamageEventListener damageEventListener : damageEventListeners) { // Profiler.start(AIEventHandler.class, aiDelegate.getPrefix() + damageEventListener.getClass().getSimpleName() + ".unitDestroyed()"); // damageEventListener.unitDestroyed(unit, attacker); // Profiler.stop(AIEventHandler.class, aiDelegate.getPrefix() + damageEventListener.getClass().getSimpleName() + ".unitDestroyed()"); // } // return AIReturnCode.NORMAL; // } catch (Exception ex) { // handleException(ex); // return AIReturnCode.UNHANDLED_EXCEPTION; // } // } // // public int unitFinished(Unit unit) { // try { // for (UnitEventListener unitEventListener : unitEventListeners) { // Profiler.start(AIEventHandler.class, aiDelegate.getPrefix() + unitEventListener.getClass().getSimpleName() + ".unitFinished()"); // unitEventListener.unitFinished(unit); // Profiler.stop(AIEventHandler.class, aiDelegate.getPrefix() + unitEventListener.getClass().getSimpleName() + ".unitFinished()"); // } // return AIReturnCode.NORMAL; // } catch (Exception ex) { // handleException(ex); // return AIReturnCode.UNHANDLED_EXCEPTION; // } // } // // public int unitGiven(Unit unit, int oldTeamId, int newTeamId) { // try { // for (UnitEventListener unitEventListener : unitEventListeners) { // Profiler.start(AIEventHandler.class, aiDelegate.getPrefix() + unitEventListener.getClass().getSimpleName() + ".unitGiven()"); // unitEventListener.unitGiven(unit, oldTeamId, newTeamId); // Profiler.stop(AIEventHandler.class, aiDelegate.getPrefix() + unitEventListener.getClass().getSimpleName() + ".unitGiven()"); // } // return AIReturnCode.NORMAL; // } catch (Exception ex) { // handleException(ex); // return AIReturnCode.UNHANDLED_EXCEPTION; // } // } // // public int unitIdle(Unit unit) { // try { // for (MoveEventListener moveEventListener : moveEventListeners) { // Profiler.start(AIEventHandler.class, aiDelegate.getPrefix() + moveEventListener.getClass().getSimpleName() + ".unitIdle()"); // moveEventListener.unitIdle(unit); // Profiler.stop(AIEventHandler.class, aiDelegate.getPrefix() + moveEventListener.getClass().getSimpleName() + ".unitIdle()"); // } // return AIReturnCode.NORMAL; // } catch (Exception ex) { // handleException(ex); // return AIReturnCode.UNHANDLED_EXCEPTION; // } // } // // public int unitMoveFailed(Unit unit) { // try { // for (MoveEventListener moveEventListener : moveEventListeners) { // Profiler.start(AIEventHandler.class, aiDelegate.getPrefix() + moveEventListener.getClass().getSimpleName() + ".unitMoveFailed()"); // moveEventListener.unitMoveFailed(unit); // Profiler.stop(AIEventHandler.class, aiDelegate.getPrefix() + moveEventListener.getClass().getSimpleName() + ".unitMoveFailed()"); // } // return AIReturnCode.NORMAL; // } catch (Exception ex) { // handleException(ex); // return AIReturnCode.UNHANDLED_EXCEPTION; // } // } // // public int update(int frame) { // try { // for (UpdateEventListener updateEventListener : updateEventListeners) { // Profiler.start(AIEventHandler.class, aiDelegate.getPrefix() + updateEventListener.getClass().getSimpleName() + ".update()"); // updateEventListener.update(frame); // Profiler.stop(AIEventHandler.class, aiDelegate.getPrefix() + updateEventListener.getClass().getSimpleName() + ".update()"); // } // return AIReturnCode.NORMAL; // } catch (Exception ex) { // handleException(ex); // return AIReturnCode.UNHANDLED_EXCEPTION; // } // } // // public int weaponFired(Unit unit, WeaponDef weaponDef) { // try { // for (WeaponEventListener weaponEventListener : weaponEventListeners) { // Profiler.start(AIEventHandler.class, aiDelegate.getPrefix() + weaponEventListener.getClass().getSimpleName() + ".weaponFired()"); // weaponEventListener.weaponFired(unit, weaponDef); // Profiler.stop(AIEventHandler.class, aiDelegate.getPrefix() + weaponEventListener.getClass().getSimpleName() + ".weaponFired()"); // } // return AIReturnCode.NORMAL; // } catch (Exception ex) { // handleException(ex); // return AIReturnCode.UNHANDLED_EXCEPTION; // } // } // // public int commandFinished(int unitId, int commandId, int commandTopicId) { // return 0; // } // // public int enemyCreated(int enemy) { // return 0; // } // // public int enemyDamaged(int enemy, int attacker, float damage, float[] dir_posF3, int weaponDefId, boolean paralyzer) { // return 0; // } // // public int enemyDestroyed(int enemy, int attacker) { // return 0; // } // // public int enemyEnterLOS(int enemy) { // return 0; // } // // public int enemyEnterRadar(int enemy) { // return 0; // } // // public int enemyFinished(int enemy) { // return 0; // } // // public int enemyLeaveLOS(int enemy) { // return 0; // } // // public int enemyLeaveRadar(int enemy) { // return 0; // } // // public int init(int skirmishAIId, AICallback callback) { // return 0; // } // // public int luaMessage(String inData, String[] outData) { // return 0; // } // // public int playerCommand(int[] unitIds, int unitIds_size, int commandTopicId, int playerId) { // return 0; // } // // public int seismicPing(float[] pos_posF3, float strength) { // return 0; // } // // public int unitCaptured(int unitId, int oldTeamId, int newTeamId) { // return 0; // } // // public int unitCreated(int unit, int builder) { // return 0; // } // // public int unitDamaged(int unit, int attacker, float damage, float[] dir_posF3, int weaponDefId, boolean paralyzer) { // return 0; // } // // public int unitDestroyed(int unit, int attacker) { // return 0; // } // // public int unitFinished(int unit) { // return 0; // } // // public int unitGiven(int unitId, int oldTeamId, int newTeamId) { // return 0; // } // // public int unitIdle(int unit) { // return 0; // } // // public int unitMoveFailed(int unit) { // return 0; // } // // public int weaponFired(int unitId, int weaponDefId) { // return 0; // } // // public void setAiDelegate(AIDelegate aiDelegate) { // this.aiDelegate = aiDelegate; // } //}