public AmeisenStateMachine( AmeisenDataHolder ameisenDataHolder, AmeisenDBManager ameisenDBManager, AmeisenMovementEngine ameisenMovementEngine, IAmeisenCombatPackage combatPackage, AmeisenCharacterManager ameisenCharacterManager, AmeisenNavmeshClient ameisenNavmeshClient) { StateStack = new Stack <BotState>(); StateActionMap = new Dictionary <BotState, IAction> { { BotState.Idle, new ActionIdle(ameisenDataHolder) }, { BotState.Follow, new ActionFollow(ameisenDataHolder, ameisenDBManager, ameisenMovementEngine, ameisenNavmeshClient) }, { BotState.Moving, new ActionMoving(ameisenDataHolder, ameisenDBManager, ameisenNavmeshClient) }, { BotState.Combat, new ActionCombat(ameisenDataHolder, combatPackage, ameisenDBManager, ameisenNavmeshClient) }, { BotState.Dead, new ActionDead(ameisenDataHolder, ameisenDBManager, ameisenNavmeshClient) }, { BotState.Loot, new ActionLoot(ameisenDataHolder, ameisenDBManager, ameisenNavmeshClient) }, { BotState.BotStuff, new ActionDoBotStuff(ameisenDataHolder, ameisenDBManager, ameisenCharacterManager, ameisenNavmeshClient) } }; BotStuffList = new List <IAction>() { new BotStuffRepairEquip(ameisenDataHolder, ameisenDBManager, ameisenCharacterManager, ameisenNavmeshClient) }; }
/// <summary> /// Load a given CombatClass *.cs file into the CombatManager by compiling it at runtime /// </summary> /// <param name="fileName">*.cs CombatClass file</param> public void LoadCombatClassFromFile(string fileName) { AmeisenSettings.Settings.combatClassPath = fileName; AmeisenSettings.SaveToFile(AmeisenSettings.loadedconfName); IAmeisenCombatPackage combatClass = CompileAndLoadCombatClass(fileName); AmeisenStateMachineManager.StateMachine.LoadNewCombatClass(AmeisenDataHolder, combatClass, AmeisenDBManager, AmeisenNavmeshClient); }
public ActionCombat( AmeisenDataHolder ameisenDataHolder, IAmeisenCombatPackage combatPackage, AmeisenDBManager ameisenDBManager, AmeisenNavmeshClient ameisenNavmeshClient) : base(ameisenDataHolder, ameisenDBManager, ameisenNavmeshClient) { AmeisenDataHolder = ameisenDataHolder; CombatPackage = combatPackage; }
public AmeisenStateMachineManager( AmeisenDataHolder ameisenDataHolder, AmeisenDBManager ameisenDBManager, AmeisenMovementEngine ameisenMovementEngine, IAmeisenCombatPackage combatPackage, AmeisenCharacterManager characterManager, AmeisenNavmeshClient ameisenNavmeshClient) { Active = false; AmeisenDataHolder = ameisenDataHolder; AmeisenDBManager = ameisenDBManager; CombatPackage = combatPackage; AmeisenNavmeshClient = ameisenNavmeshClient; AmeisenCharacterManager = characterManager; AmeisenMovementEngine = ameisenMovementEngine; MainWorker = new Thread(new ThreadStart(DoWork)); StateWatcherWorker = new Thread(new ThreadStart(WatchForStateChanges)); StateMachine = new AmeisenStateMachine(ameisenDataHolder, ameisenDBManager, ameisenMovementEngine, combatPackage, characterManager, ameisenNavmeshClient); }
public void LoadNewCombatClass( AmeisenDataHolder ameisenDataHolder, IAmeisenCombatPackage combatPackage, AmeisenDBManager ameisenDBManager, AmeisenNavmeshClient ameisenNavmeshClient) => StateActionMap[BotState.Combat] = new ActionCombat(ameisenDataHolder, combatPackage, ameisenDBManager, ameisenNavmeshClient);
public void UpdateCombatPackage(IAmeisenCombatPackage combatPackage) { CombatPackage = combatPackage; StateMachine = new AmeisenStateMachine(AmeisenDataHolder, AmeisenDBManager, AmeisenMovementEngine, combatPackage, AmeisenCharacterManager, AmeisenNavmeshClient); }