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; }
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)); }