Пример #1
0
        private static void AddCommandSealUseToDatabase(ReplayData replayData, frsDb db,
                                                        List <gameplayerdetail> dbPlayerDetailList, List <player> dbPlayerList)
        {
            foreach (player player in dbPlayerList)
            {
                PlayerInfo playerInfo = replayData.GetPlayerInfoByPlayerName(player.PlayerName);
                if (playerInfo == null)
                {
                    throw new InvalidOperationException("Player Name could not be found from replay data (AddCommandSealUseToDatabase): " + player.PlayerName);
                }

                gameplayerdetail gpDetail = dbPlayerDetailList.First(x => x.FK_PlayerID == player.PlayerID);

                var commandSealGroup = playerInfo.CommandSealList.GroupBy(x => x)
                                       .Select(group => new
                {
                    CommandSealAbilID = group.Key,
                    UseCount          = group.Count()
                });

                foreach (var commandSeal in commandSealGroup)
                {
                    commandsealuse commandSealUsed = new commandsealuse()
                    {
                        FK_GamePlayerDetailID = gpDetail.GamePlayerDetailID,
                        CommandSealAbilID     = commandSeal.CommandSealAbilID,
                        UseCount = commandSeal.UseCount
                    };
                    db.commandsealuses.Add(commandSealUsed);
                }
            }
        }
Пример #2
0
        private static void AddGodsHelpUseToDatabase(ReplayData replayData, frsDb db,
                                                     List <gameplayerdetail> dbPlayerDetailList, List <player> dbPlayerList)
        {
            foreach (player player in dbPlayerList)
            {
                PlayerInfo playerInfo = replayData.GetPlayerInfoByPlayerName(player.PlayerName);
                if (playerInfo == null)
                {
                    throw new InvalidOperationException("Player Name could not be found from replay data (AddGodsHelpUseToDatabase): " + player.PlayerName);
                }

                gameplayerdetail gpDetail = dbPlayerDetailList.First(x => x.FK_PlayerID == player.PlayerID);

                foreach (var godsHelpAbilId in playerInfo.GodsHelpList)
                {
                    godshelpinfo godsHelpInfo = db.godshelpinfo.First(x => x.GodsHelpAbilID == godsHelpAbilId);
                    godshelpuse  godsHelpUsed = new godshelpuse()
                    {
                        FK_GodsHelpInfoID     = godsHelpInfo.GodsHelpInfoID,
                        FK_GamePlayerDetailID = gpDetail.GamePlayerDetailID
                    };
                    db.godshelpuse.Add(godsHelpUsed);
                }
            }
        }
Пример #3
0
        private static void AddHeroStatLearnDetailToDatabase(ReplayData replayData, frsDb db,
                                                             List <gameplayerdetail> dbPlayerDetailList, List <player> dbPlayerList)
        {
            foreach (player player in dbPlayerList)
            {
                PlayerInfo playerInfo = replayData.GetPlayerInfoByPlayerName(player.PlayerName);
                if (playerInfo == null)
                {
                    throw new InvalidOperationException("Player Name could not be found from replay data (AddHeroStatLearnDetailToDatabase): " + player.PlayerName);
                }
                var statList = playerInfo.StatList.GroupBy(x => x)
                               .Select(group => new
                {
                    StatAbilID     = group.Key,
                    StatLearnCount = group.Count()
                });

                gameplayerdetail gpDetail = dbPlayerDetailList.First(x => x.FK_PlayerID == player.PlayerID);

                foreach (var stat in statList)
                {
                    herostatinfo  statInfo    = db.herostatinfo.First(x => x.HeroStatAbilID == stat.StatAbilID);
                    herostatlearn statLearned = new herostatlearn()
                    {
                        FK_HeroStatInfoID     = statInfo.HeroStatInfoID,
                        FK_GamePlayerDetailID = gpDetail.GamePlayerDetailID,
                        LearnCount            = stat.StatLearnCount
                    };
                    db.herostatlearn.Add(statLearned);
                }
            }
        }
Пример #4
0
        private List <gameplayerdetail> GetGamePlayerDetailList(ReplayData replayData, IEnumerable <player> dbPlayers, game fateGame, server dbServer,
                                                                frsDb db)
        {
            List <gameplayerdetail> fateGamePlayerDetailList = new List <gameplayerdetail>();

            foreach (player player in dbPlayers)
            {
                PlayerInfo playerInfo = replayData.GetPlayerInfoByPlayerName(player.PlayerName);
                if (playerInfo == null)
                {
                    throw new Exception(String.Format("Player Name not found during GamePlayerDetailList module. Input: {0}",
                                                      player.PlayerName));
                }

                gameplayerdetail fateGamePlayerDetail = new gameplayerdetail();
                fateGamePlayerDetail.FK_GameID   = fateGame.GameID;
                fateGamePlayerDetail.FK_PlayerID = player.PlayerID;
                fateGamePlayerDetail.FK_ServerID = dbServer.ServerID;
                herotype playerHeroType = db.herotype.FirstOrDefault(x => x.HeroUnitTypeID == playerInfo.ServantId);
                if (playerHeroType == null)
                {
                    throw new Exception(String.Format("DB Error: Unknown hero type id: {0}", playerInfo.ServantId));
                }
                fateGamePlayerDetail.FK_HeroTypeID = playerHeroType.HeroTypeID;
                fateGamePlayerDetail.Kills         = playerInfo.Kills;
                fateGamePlayerDetail.Deaths        = playerInfo.Deaths;
                fateGamePlayerDetail.Assists       = playerInfo.Assists;
                fateGamePlayerDetail.Team          = (playerInfo.Team + 1).ToString();
                fateGamePlayerDetail.DamageTaken   = playerInfo.DamageTaken;
                fateGamePlayerDetail.DamageDealt   = playerInfo.DamageDealt;
                fateGamePlayerDetail.HeroLevel     = playerInfo.ServantLevel;
                if (fateGame.Result == GameResult.NONE.ToString())
                {
                    fateGamePlayerDetail.Result = GamePlayerResult.NONE.ToString();
                }
                else if (fateGame.Result == GameResult.T1W.ToString())
                {
                    fateGamePlayerDetail.Result = playerInfo.Team == 0
                                                      ? GamePlayerResult.WIN.ToString()
                                                      : GamePlayerResult.LOSS.ToString();
                }
                else if (fateGame.Result == GameResult.T2W.ToString())
                {
                    fateGamePlayerDetail.Result = playerInfo.Team == 1
                                                      ? GamePlayerResult.WIN.ToString()
                                                      : GamePlayerResult.LOSS.ToString();
                }
                else
                {
                    throw new Exception(String.Format("Unexpected GameResult enumeration. Input: {0}",
                                                      fateGame.Result));
                }
                fateGamePlayerDetailList.Add(fateGamePlayerDetail);
            }
            return(fateGamePlayerDetailList);
        }
Пример #5
0
        private static void AddItemPurchaseDetailToDatabase(ReplayData replayData, frsDb db,
                                                            List <gameplayerdetail> dbPlayerDetailList, List <player> dbPlayerList)
        {
            int maxGameItemPurchaseId = 0;

            if (db.gameitempurchase.Any())
            {
                maxGameItemPurchaseId = db.gameitempurchase.Max(x => x.GameItemPurchaseID) + 1;
            }
            foreach (player player in dbPlayerList)
            {
                PlayerInfo playerInfo = replayData.GetPlayerInfoByPlayerName(player.PlayerName);
                if (playerInfo == null)
                {
                    throw new InvalidOperationException("Player Name could not be found from replay data (AIPDTD): " + player.PlayerName);
                }
                var purchasedItemGroup = playerInfo.ItemPurchaseList.GroupBy(x => x)
                                         .Select(group => new
                {
                    ItemTypeID    = group.Key,
                    PurchaseCount = group.Count()
                });

                gameplayerdetail gpDetail = dbPlayerDetailList.First(x => x.FK_PlayerID == player.PlayerID);

                int spentGold = 0;
                foreach (var item in purchasedItemGroup)
                {
                    iteminfo         itemInfo        = db.iteminfo.First(x => x.ItemTypeID == item.ItemTypeID);
                    gameitempurchase itemPurchaseRow = new gameitempurchase
                    {
                        GameItemPurchaseID    = maxGameItemPurchaseId,
                        FK_GamePlayerDetailID = gpDetail.GamePlayerDetailID,
                        FK_ItemID             = itemInfo.ItemID,
                        ItemPurchaseCount     = item.PurchaseCount
                    };
                    spentGold += itemInfo.ItemCost * item.PurchaseCount;
                    db.gameitempurchase.Add(itemPurchaseRow);
                    maxGameItemPurchaseId++;
                }

                gpDetail.GoldSpent = spentGold;
            }
        }
Пример #6
0
        private static void AddAttributeLearnToDatabase(ReplayData replayData, frsDb db,
                                                        List <gameplayerdetail> dbPlayerDetailList, List <player> dbPlayerList)
        {
            foreach (player player in dbPlayerList)
            {
                PlayerInfo playerInfo = replayData.GetPlayerInfoByPlayerName(player.PlayerName);
                if (playerInfo == null)
                {
                    throw new InvalidOperationException("Player Name could not be found from replay data (AddAttributeLearnToDatabase): " + player.PlayerName);
                }

                gameplayerdetail gpDetail = dbPlayerDetailList.First(x => x.FK_PlayerID == player.PlayerID);

                foreach (var attributeAbilId in playerInfo.AttributeList)
                {
                    attributeinfo attributeInfo = db.attributeinfo.FirstOrDefault(x => x.AttributeAbilID == attributeAbilId);
                    if (attributeInfo == null)
                    {
                        int maxId = 0;
                        if (db.attributeinfo.Any())
                        {
                            maxId = db.attributeinfo.Max(x => x.AttributeInfoID);
                        }
                        attributeInfo = new attributeinfo
                        {
                            AttributeInfoID = maxId,
                            AttributeAbilID = attributeAbilId,
                            AttributeName   = ""
                        };
                        db.attributeinfo.Add(attributeInfo);
                    }
                    attributelearn attributeLearned = new attributelearn()
                    {
                        FK_AttributeInfoID    = attributeInfo.AttributeInfoID,
                        FK_GamePlayerDetailID = gpDetail.GamePlayerDetailID
                    };
                    db.attributelearn.Add(attributeLearned);
                }
            }
        }