private ACommand putMineProcess(PutMineCommand command, Battlefield.RobotAndBattlefield robotAndBattlefield)
        {
            BattlefieldRobot robot = robotAndBattlefield.ROBOT;

            MineLayer mineLayer = robot as MineLayer;

            if (mineLayer == null)
            {
                return(new ErrorCommand(robot.ROBOT_TYPE + " cannot use put mine command."));
            }

            if (mineLayer.MinesNow < mineLayer.MineGun.MAX_MINES && mineLayer.HitPoints > 0)
            {
                int id = PutMineAnswerCommand.FALSE_MINE_ID + 1;
                while (mineLayer.MINES_BY_ID.ContainsKey(id))
                {
                    id++;
                }
                mineLayer.MINES_BY_ID.Add(id, new Mine(id, mineLayer.X, mineLayer.Y, mineLayer));
                return(new PutMineAnswerCommand(true, id));
            }
            else
            {
                return(new PutMineAnswerCommand(false, PutMineAnswerCommand.FALSE_MINE_ID));
            }
        }
Exemple #2
0
            public override bool IsTransferable(ACommand c)
            {
                PutMineCommand command = c as PutMineCommand;

                if (command != null)
                {
                    cache.Cached(command, new PutMineCommandV1_0());
                    return(true);
                }
                return(false);
            }