public void RunEnemyPlayerExampleTest() { Log.d(">> Starting a Planning Phase. <<"); var end = new Action(() => { Log.d(">> End of a Planning Phase. <<"); }); if (_enemyPlayerBotData == null) { _enemyPlayerBotData = ScriptableObject.CreateInstance <TestExamples.MyBotData>(); } var battleStage = new Action(() => { Log.d(this, "Starting Battle Stage"); if (_enemyPlayerBattleTest == null) { _enemyPlayerBattleTest = ScriptableObject.CreateInstance <TestExamples.BattleTest>(); } _enemyPlayerBattleTest.MyBotData = _enemyPlayerBotData; _enemyPlayerBattleTest.BattleStage(end); }); var buildingStage = new Action(() => { Log.d(this, "Starting Building Stage"); if (_enemyPlayerBuildingTest == null) { _enemyPlayerBuildingTest = ScriptableObject.CreateInstance <TestExamples.BuildingTest>(); } _enemyPlayerBuildingTest.MyBotData = _enemyPlayerBotData; _enemyPlayerBuildingTest.BuildingStage(battleStage); }); var economyStage = new Action(() => { Log.d(this, "Starting Economy Stage"); if (_enemyPlayerEconomyTest == null) { _enemyPlayerEconomyTest = ScriptableObject.CreateInstance <TestExamples.EconomyTest>(); } _enemyPlayerEconomyTest.MyBotData = _enemyPlayerBotData; _enemyPlayerEconomyTest.EconomyStage(buildingStage); }); economyStage(); }
public void BuildingStage(Action startNextStage) { // A first building GameEvent.Register(GameEventType.MineralsChanged, args => BuildNubianArmory(args)); GameEvent.Register(GameEventType.BuildingCreated, args => { // A second building if (BuildNubianArmory(args)) { args.ThisGameEvent.UnregisterEvent(); // A third building GameEvent.Register(GameEventType.BuildingCreated, argsThird => { // A second building if (BuildNubianArmory(argsThird)) { argsThird.ThisGameEvent.UnregisterEvent(); } }); } }); GameEvent.Register(GameEventType.BuildingCreated, args => { // Worker will return to work afterwards if (args.MyBuilding is NubianArmory && args.MyUnit is Worker) { var worker = (Worker)args.MyUnit; EconomyTest.Gather(worker); BuildArmy(startNextStage); } args.ThisGameEvent.UnregisterEvent(); }); }