/// <summary> /// Detonate specified mine. /// </summary> /// <param name="mineId">witch mine robot wants to detonate.</param> /// <returns></returns> public DetonateMineAnswerCommand DetonateMine(int mineId) { DetonateMineAnswerCommand answer = new DetonateMineAnswerCommand(); addRobotTask(DetonateMineAsync(answer, mineId)); return(answer); }
public override bool IsTransferable(ACommand c) { DetonateMineAnswerCommand command = c as DetonateMineAnswerCommand; if (command != null) { cache.Cached(c, new DetonateMineAnswerCommandV1_0(command.SUCCESS)); return(true); } return(false); }
/// <summary> /// Detonate specified mine. Send action to server asynchronously. /// </summary> /// <param name="destination">Where to fill answer data.</param> /// <param name="mineId">witch mine robot wants to detonate.</param> /// <returns></returns> private async Task <DetonateMineAnswerCommand> DetonateMineAsync(DetonateMineAnswerCommand destination, int mineId) { await sendCommandAsync(new DetonateMineCommand(mineId)); var answerCommand = await receiveCommandAsync <DetonateMineAnswerCommand>(); destination.FillData(answerCommand); if (answerCommand.SUCCESS) { PutMines--; foreach (var mine in PutMinesList) { if (mine.ID == mineId) { PutMinesList.Remove(mine); break; } } } return(answerCommand); }