Esempio n. 1
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);
     }
 }
Esempio n. 2
0
        public void EndGame(HSGameDto gameDto)
        {
            MongoRepository <HSGame> gameRepository = new MongoRepository <HSGame>();
            var entity = gameRepository.FirstOrDefault(x => x.GameId == gameDto.GameId);

            if (entity != null)
            {
                entity.Won               = gameDto.Won;
                entity.OpponentDeckId    = gameDto.OpponentDeckId;
                entity.OpponentDeckType  = gameDto.OpponentDeckType;
                entity.OpponentDeckMatch = gameDto.OpponentDeckMatch;
                gameRepository.Update(entity);
            }
        }
Esempio n. 3
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);
        }
Esempio n. 4
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);
        }
Esempio n. 5
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));
        }