Ejemplo n.º 1
0
        public void PublishMessage(HsGameMessage message)
        {
            var serializedString = JsonConvert.SerializeObject(message);
            var byteArray        = MessageToBytes(serializedString);

            _model.BasicPublish(ExchangeName, "", _properties, byteArray);
        }
Ejemplo n.º 2
0
 private void OnGameEnd()
 {
     _isGameJustStarted = false;
     var message = new HsGameMessage(HSGameEventTypes.OnGameEnd);
     message.Data = _gameId;
     PublishMessage(message);
 }
Ejemplo n.º 3
0
 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);
     }
 }
Ejemplo n.º 4
0
        private void CreateGame(HsGameMessage message)
        {
            var gameDto    = message.Data.ToObject <HSGameDto>();
            var gameEntity = Mapper.Map <HSGame>(gameDto);

            _gameRepository.Add(gameEntity);
        }
Ejemplo n.º 5
0
        public HttpResponseMessage Post([FromBody] HsGameMessage message)
        {
            BusPublisher pub = new BusPublisher();

            pub.PublishMessage(message);
            pub.Dispose();
            return(Request.CreateResponse(HttpStatusCode.OK, "ok"));
        }
Ejemplo n.º 6
0
        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;
            }
        }
Ejemplo n.º 7
0
        private void OnOpponentHandDiscard(Card card)
        {
            var message = new HsGameMessage(HSGameEventTypes.OnOpponentPlay);

            message.Data = new
            {
                GameId = _gameId,
                card.Id,
                Name = card.LocalizedName
            };
            PublishMessage(message);
        }
Ejemplo n.º 8
0
        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"));
        }
Ejemplo n.º 9
0
        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);
        }
Ejemplo n.º 10
0
        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);
        }
Ejemplo n.º 11
0
        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));
        }
Ejemplo n.º 12
0
 private void OnOpponentGet()
 {
     var message = new HsGameMessage(HSGameEventTypes.OnOpponentGet);
     message.Data = new { GameId = _gameId, CoinTo = "Opponent" };
     PublishMessage(message);
 }
Ejemplo n.º 13
0
 private void OnPlayerDraw(Card card)
 {
     var message = new HsGameMessage(HSGameEventTypes.OnPlayerDraw);
     message.Data = new { GameId = _gameId, Card = card };
     PublishMessage(message);
 }
Ejemplo n.º 14
0
 private void OnOpponentHeroPower()
 {
     var message = new HsGameMessage(HSGameEventTypes.OnOpponentHeroPower);
     message.Data = null;
     PublishMessage(message);
 }
Ejemplo n.º 15
0
 private void OnGameLost()
 {
     var message = new HsGameMessage(HSGameEventTypes.OnGameLost);
     message.Data = _gameId;
     PublishMessage(message);
 }
Ejemplo n.º 16
0
 public void PublishMessage(HsGameMessage message)
 {
     var serializedString = JsonConvert.SerializeObject(message);
     _uploader.SendPost(serializedString);
 }
Ejemplo n.º 17
0
 private void OnPlayerMulligan(Card card)
 {
     var message = new HsGameMessage(HSGameEventTypes.OnPlayerMulligan);
     message.Data = card;
     PublishMessage(message);
 }
Ejemplo n.º 18
0
 private void OnPlayerGet(Card card)
 {
     var message = new HsGameMessage(HSGameEventTypes.OnPlayerGet);
     message.Data = new { GameId = _gameId, CoinTo = "Player" };
     PublishMessage(message);
 }
Ejemplo n.º 19
0
 private void OnOpponentDraw()
 {
     var message = new HsGameMessage(HSGameEventTypes.OnOpponentDraw);
     message.Data = "";
     PublishMessage(message);
 }