public void OnTopicMessageReceived(string message) { var result = StaticResources.sevicebusLogs.Where(sbl => sbl == message).FirstOrDefault(); if (result == null) { StaticResources.sevicebusLogs.Add(message); Transfer transfer = JsonConvert.DeserializeObject <Transfer>(message); if (transfer.type == MessageType.Action) { GameAction action = JsonConvert.DeserializeObject <GameAction>(transfer.message); Player player = StaticResources.PlayerList.Where(Speler => Speler.PlayerId == action.playerId).First(); if (action.action == PlayerAction.shoot) { if (action.coordinates.field == StaticResources.user.orderNumber) { // shot is directed at my field bool hit = StaticResources.field.CheckForHit(action.coordinates); bool gameOver = StaticResources.field.CheckForGameOver(); sender.SendHitResponseMessage(action.coordinates, hit, gameOver, action.playerId); } // reset timer and increase turn TimerHandler.ResetTime(); } } if (transfer.type == MessageType.Surrender) { var settings = new JsonSerializerSettings() { TypeNameHandling = TypeNameHandling.All }; SurrenderResponse response = JsonConvert.DeserializeObject <SurrenderResponse>(transfer.message, settings); Player player = StaticResources.PlayerList.Where(Speler => Speler.PlayerId == response.playerId).First(); // enter code here to display surrender message in log string logEntry = "{player} has surrendered"; logEntry = logEntry.Replace("{player}", player.name); WriteMessageToLog(logEntry); // start gameover function HandleGameOver(response.playerId, response.field); // reset timer and increase turn TimerHandler.ResetTime(); } if (transfer.type == MessageType.GameResponse) { GameResponse response = JsonConvert.DeserializeObject <GameResponse>(transfer.message); HandleHitResponse(response); } } }
public void SendSurrenderMessage() { PlayerField field = new PlayerField() { fieldNumber = StaticResources.field.fieldNumber, hitList = StaticResources.field.hitList }; foreach (IBoat boat in StaticResources.field.boats) { field.AddNewBoatToField(boat); } SurrenderResponse response = new SurrenderResponse() { playerId = StaticResources.user.PlayerId, field = field }; var indented = Formatting.Indented; var settings = new JsonSerializerSettings() { TypeNameHandling = TypeNameHandling.All }; string line = JsonConvert.SerializeObject(response, indented, settings); ServiceBusHandler.program.topic.SendTopicMessage(line, MessageType.Surrender); }
void ConfirmSurrender() { SurrenderRequest request = new SurrenderRequest(); App.Manager.Network.Request("Surrender", request, delegate(IMessage responseData) { SurrenderResponse response = (SurrenderResponse)responseData; if (response.IsSurrender) { Common.UI.OpenTips("发起投降"); } }); }
public override Response DoWork(string request) { var workRequest = JsonConvert.DeserializeObject<PeaceRequest>(request); var workResponse = new SurrenderResponse(); if (Server.Games[workRequest.GameID].Act == Act.WaitingOpponent) { workResponse.Status = Statuses.NoUser; return workResponse; } if (workRequest.From == Server.Games[workRequest.GameID].PlayerWhite.Name) { Server.Messages.GetOrAdd(Server.Games[workRequest.GameID].PlayerBlack.Name, i => new List<Message>()).Add(MessageSender.OpponentRequestPeace()); workResponse.Status = Statuses.Ok; } if (workRequest.From == Server.Games[workRequest.GameID].PlayerBlack.Name) { Server.Messages.GetOrAdd(Server.Games[workRequest.GameID].PlayerWhite.Name, i => new List<Message>()).Add(MessageSender.OpponentRequestPeace()); workResponse.Status = Statuses.Ok; } return workResponse; }