Пример #1
0
    public void ActOnEntity(Entity entity)
    {
        // Get this ship's available actions from blueprint

        // Get all actions that can act on this entity

        // For now, this ship can only mine

        Debug.Log("ActOnEntity");
        IMineable i = entity as IMineable;

        if (i != null)
        {
            if (CmpMining)
            {
                // TODO: Check mining equipment range
                MineCommand command = new MineCommand(this, i);
                CurrentCommand = command;
                CommandQueue.Clear();
                GeneralManager.Instance.SetShipState(this, EntityState.Active);
            }
            else
            {
                Debug.Log("Ship has no Mining attachment!");
            }
        }
    }
    public void MineAsteroid(GameObject asteroid, bool resetCommands)
    {
        FleetCommand fleetCommand = new MineCommand(gameObject.GetComponent <MapObject>(), asteroid.GetComponent <MapObject>());

        AddCommand(resetCommands, fleetCommand);
        _fleetCommandQueue.loopFleetCommands = false;
    }
Пример #3
0
        public ActionResult ExecuteCommand(string key, CoordInfo info)
        {
            Game game = games.Find(game => game.Key == key);

            var gameNullHandler         = new GameNullHandler();
            var registeredPlayerHandler = new RegisteredPlayerHandler();
            var finalHandler            = new FinalHandler();

            registeredPlayerHandler.SetNext(gameNullHandler).SetNext(finalHandler);

            if (!Request.Headers.ContainsKey("PlayerIdentifier"))
            {
                return(StatusCode(403));
            }
            if (!game.HasPlayerWithIdentifier(Request.Headers["PlayerIdentifier"]))
            {
                return(StatusCode(403));
            }

            string text = "";

            if (registeredPlayerHandler.Handle(game, text) == null)
            {
                return(StatusCode(403));
            }

            Command cmd = null;

            switch (info.CommandType)
            {
            case "mine":
                cmd = new MineCommand(info, Request.Headers["PlayerIdentifier"]);
                break;

            case "shot":
                cmd = new ShotCommand(info, Request.Headers["PlayerIdentifier"]);
                break;

            case "endTurn":
                cmd = new EndTurnCommand(info, Request.Headers["PlayerIdentifier"]);
                break;

            default:
                return(NotFound());
            }

            lock (games)
                game.AddExecuteCommand(cmd);

            return(StatusCode(200));
        }