Exemplo n.º 1
0
        /// <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);
        }
Exemplo n.º 2
0
            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);
            }
Exemplo n.º 3
0
        /// <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);
        }