public void PublishMessage(HsGameMessage message) { var serializedString = JsonConvert.SerializeObject(message); var byteArray = MessageToBytes(serializedString); _model.BasicPublish(ExchangeName, "", _properties, byteArray); }
private void OnGameEnd() { _isGameJustStarted = false; var message = new HsGameMessage(HSGameEventTypes.OnGameEnd); message.Data = _gameId; PublishMessage(message); }
private void OnTurnStart(ActivePlayer player) { var message = new HsGameMessage(HSGameEventTypes.OnTurnStart); var game = Core.Game; if (_isGameJustStarted) { var cardsList = game.Player.OpponentCardList.Where(x => x.Name != "The Coint").Select(x => x.Id).ToList(); cardsList.AddRange(game.Player.PlayerCardList.Select(x => x.Id)); var resultList = cardsList.Distinct(); HSGameDto dto = new HSGameDto { GameId = _gameId.ToString(), Region = Enum.GetName(typeof (Region), game.CurrentRegion), // get from enum GameMode = Enum.GetName(typeof (GameMode), game.CurrentGameMode), // get from enum OpponentClass = game.Opponent.Class, OpponentName = game.Opponent.Name, OpponentRank = game.CurrentGameStats.RankString, PlayerName = game.Player.Name, PlayerClass = game.Player.Class, PlayerHasCoin = game.Player.HasCoin, PlayerCardsIds = resultList }; message.Data = dto; PublishMessage(message); _isGameJustStarted = false; } else { message.Data = null; PublishMessage(message); } }
private void CreateGame(HsGameMessage message) { var gameDto = message.Data.ToObject <HSGameDto>(); var gameEntity = Mapper.Map <HSGame>(gameDto); _gameRepository.Add(gameEntity); }
public HttpResponseMessage Post([FromBody] HsGameMessage message) { BusPublisher pub = new BusPublisher(); pub.PublishMessage(message); pub.Dispose(); return(Request.CreateResponse(HttpStatusCode.OK, "ok")); }
private void DisplayMessage(HsGameMessage message) { var hubContext = GlobalHost.ConnectionManager.GetHubContext <HSGameHub>(); HSGameDto gameDto; switch (message.EventType) { case HSGameEventTypes.OnGameStart: CreateGame(message); hubContext.Clients.All.sendMessage(message); break; case HSGameEventTypes.OnTurnStart: try { UpdateGameInDb(message); } catch (Exception ex) { message.Data = null; } hubContext.Clients.All.sendMessage(message); break; case HSGameEventTypes.OnPlayerGet: hubContext.Clients.All.sendMessage(message); break; case HSGameEventTypes.OnOpponentGet: hubContext.Clients.All.sendMessage(message); break; case HSGameEventTypes.OnOpponentDraw: hubContext.Clients.All.sendMessage(message); break; case HSGameEventTypes.OnOpponentPlay: hubContext.Clients.All.sendMessage(message); break; case HSGameEventTypes.OnPlayerDraw: hubContext.Clients.All.sendMessage(message); break; case HSGameEventTypes.OnGameLost: hubContext.Clients.All.sendMessage(message); break; case HSGameEventTypes.OnGameWon: hubContext.Clients.All.sendMessage(message); break; } }
private void OnOpponentHandDiscard(Card card) { var message = new HsGameMessage(HSGameEventTypes.OnOpponentPlay); message.Data = new { GameId = _gameId, card.Id, Name = card.LocalizedName }; PublishMessage(message); }
public HttpResponseMessage Get() { BusPublisher pub = new BusPublisher(); var msg = new HsGameMessage(HSGameEventTypes.OnGameStart) { Data = null }; pub.PublishMessage(msg); pub.Dispose(); return(Request.CreateResponse(HttpStatusCode.OK, "ok")); }
private void OnGameStart() { _isGameJustStarted = true; var game = Core.Game; var message = new HsGameMessage(HSGameEventTypes.OnGameStart); _gameId = Guid.NewGuid(); HSGameDto dto = new HSGameDto { GameId = _gameId.ToString(), GameMode = Enum.GetName(typeof(GameMode), game.CurrentGameMode), // get from enum Region = Enum.GetName(typeof(Region), game.CurrentRegion), // get from enum PlayerName = game.Player.Name, PlayerClass = game.Player.Class }; message.Data = dto; PublishMessage(message); }
private void UpdateGameInDb(HsGameMessage message) { HSGameDto gameDto = message.Data.ToObject <HSGameDto>(); var gameEntity = _gameRepository.FirstOrDefault(x => x.GameId == gameDto.GameId); gameEntity.Date = DateTime.Now; gameEntity.Region = gameDto.Region; gameEntity.GameMode = gameDto.GameMode; gameEntity.OpponentClass = gameDto.OpponentClass; gameEntity.OpponentName = gameDto.OpponentName; gameEntity.OpponentRank = gameDto.OpponentRank; gameEntity.PlayerClass = gameDto.PlayerClass; gameEntity.PlayerName = gameDto.PlayerName; gameEntity.PlayerRank = gameDto.PlayerRank; gameEntity.OpponentDeckId = gameDto.OpponentDeckId; gameEntity.OpponentDeckType = gameDto.OpponentDeckType; gameEntity.PlayerDeckId = GetPlayerDeckArchetype(message).Item2; gameEntity.PlayerDeckType = GetPlayerDeckArchetype(message).Item1; gameEntity.PlayerHasCoin = gameDto.PlayerHasCoin; _gameRepository.Update(gameEntity); }
private Tuple <string, string> GetPlayerDeckArchetype(HsGameMessage message) { HSGameDto gameDto = message.Data.ToObject <HSGameDto>(); var deckList = _deckRepository.Where(x => x.Class == gameDto.PlayerClass.ToUpper()); int count = 0; string deckArchetype = string.Empty; string deckId = ""; foreach (var deck in deckList) { var ids = deck.Cards.Select(x => x.cardId).ToList(); var result = gameDto.PlayerCardsIds.Intersect(ids).ToList(); if (result.Count() > count) { count = result.Count(); deckArchetype = deck.Type; deckId = deck.Id; } } return(new Tuple <string, string>(deckArchetype, deckId)); }
private void OnOpponentGet() { var message = new HsGameMessage(HSGameEventTypes.OnOpponentGet); message.Data = new { GameId = _gameId, CoinTo = "Opponent" }; PublishMessage(message); }
private void OnPlayerDraw(Card card) { var message = new HsGameMessage(HSGameEventTypes.OnPlayerDraw); message.Data = new { GameId = _gameId, Card = card }; PublishMessage(message); }
private void OnOpponentHeroPower() { var message = new HsGameMessage(HSGameEventTypes.OnOpponentHeroPower); message.Data = null; PublishMessage(message); }
private void OnGameLost() { var message = new HsGameMessage(HSGameEventTypes.OnGameLost); message.Data = _gameId; PublishMessage(message); }
public void PublishMessage(HsGameMessage message) { var serializedString = JsonConvert.SerializeObject(message); _uploader.SendPost(serializedString); }
private void OnPlayerMulligan(Card card) { var message = new HsGameMessage(HSGameEventTypes.OnPlayerMulligan); message.Data = card; PublishMessage(message); }
private void OnPlayerGet(Card card) { var message = new HsGameMessage(HSGameEventTypes.OnPlayerGet); message.Data = new { GameId = _gameId, CoinTo = "Player" }; PublishMessage(message); }
private void OnOpponentDraw() { var message = new HsGameMessage(HSGameEventTypes.OnOpponentDraw); message.Data = ""; PublishMessage(message); }