public clsCommandCollection getCommandsForUnit(clsUnit objAktUnit, bool blnCollision) { clsCommandCollection objCommands = new clsCommandCollection(); objCommands.aktUnit = objAktUnit; // Unfertige Commands von der Unit - Enthalten zB keine Position-/Zielsektoren objCommands.listRawCommands = (!blnCollision ? objAktUnit.getTypeCommands() : new List<ICommand> { new comSolveKollision() }); objCommands.listReadyCommands = new List<ICommand>(); // Liste mit ausführbaren Commands - Enthalten zB explizite Position / Zielsektoren objCommands.onStatus += new Field.delStatus(General_onNewStatus); foreach (ICommand cmdRaw in objCommands.listRawCommands) { clsFactoryBase objCommandFactory = cmdRaw.getCommandFactory(objAktUnit, FieldField); if (objCommandFactory != null) { objCommandFactory.actingPlayer = getPlayerByID(objAktUnit.strOwnerID); objCommands.useFactory(objCommandFactory); } else { cmdRaw.CommandId = Guid.NewGuid().ToString(); objCommands.listReadyCommands.Add(cmdRaw); } } return objCommands; }
public override void Setup(clsUnit aktUnit, Action<ICommand, clsCommandCollection> _commandCallback) { m_aktUnit = aktUnit; m_objCommandCollection = Program.m_objCampaign.Unit_getCommandsForUnit(aktUnit); mCommandCallback = _commandCallback; Refresh(); }