private void AddTask(GameState s, RTSUnit unit) { // Init The Unit if (unit.CombatController != null) { unit.CombatController.Init(s, this, unit.Data.CombatControllerInitArgs); } if (unit.MovementController != null) { unit.MovementController.Init(s, this, unit.Data.MovementControllerInitArgs); } if (unit.AnimationController != null) { unit.AnimationController.Init(s, this, unit.Data.AnimationControllerInitArgs); } if (unit.ActionController != null) { unit.ActionController.Init(s, this, unit.Data.ActionControllerInitArgs); } var btu = new BTaskUnitDecision(s, unit); unit.OnDestruction += (o) => { tbEntityDecisions.RemoveTask(btu); }; tbEntityDecisions.AddTask(btu); }
private void AddTask(GameState s, RTSSquad squad) { // Init The Squad if (squad.TargetingController != null) { squad.TargetingController.Init(s, this, squad.Team.Race.SCTargeting); } if (squad.MovementController != null) { squad.MovementController.Init(s, this, squad.Team.Race.SCMovementInitArgs); } if (squad.ActionController != null) { squad.ActionController.Init(s, this, squad.Team.Race.SCActionInitArgs); } var bts = new BTaskSquadDecision(s, squad); squad.OnDeath += (o) => { tbSquadDecisions.RemoveTask(bts); }; tbSquadDecisions.AddTask(bts); }