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); } } }
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); } } }
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); } } }
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); }
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; } }
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); } } }