Beispiel #1
0
        public PlayerGameBuildViewModel GetPlayerGameBuild(int gameId, string playerName)
        {
            PlayerGameBuildViewModel vm   = new PlayerGameBuildViewModel();
            PlayerGameBuildData      data = _detailDal.GetPlayerGameBuildDetail(playerName, gameId);

            //TO DO: Is there any cleaner way of doing this?
            vm.PlayerName       = playerName;
            vm.HeroIconURL      = ContentURL.GetHeroIconURL(data.HeroUnitTypeId);
            vm.Strength         = data.StatBuildDic.GetValueOrDefault("A02W");
            vm.Agility          = data.StatBuildDic.GetValueOrDefault("A03D");
            vm.Intelligence     = data.StatBuildDic.GetValueOrDefault("A03E");
            vm.Attack           = data.StatBuildDic.GetValueOrDefault("A03W");
            vm.Armor            = data.StatBuildDic.GetValueOrDefault("A03X");
            vm.HealthRegen      = data.StatBuildDic.GetValueOrDefault("A03Y");
            vm.ManaRegen        = data.StatBuildDic.GetValueOrDefault("A03Z");
            vm.MoveSpeed        = data.StatBuildDic.GetValueOrDefault("A04Y");
            vm.GoldRegen        = data.StatBuildDic.GetValueOrDefault("A0A9");
            vm.PrelatiMana      = data.StatBuildDic.GetValueOrDefault("A0CJ");
            vm.WardCount       += data.PurchasedItemsDic.GetValueOrDefault("I003");
            vm.WardCount       += data.PurchasedItemsDic.GetValueOrDefault("I00N");
            vm.WardCount       += data.PurchasedItemsDic.GetValueOrDefault("SWAR");
            vm.FamiliarCount   += data.PurchasedItemsDic.GetValueOrDefault("I002");
            vm.FamiliarCount   += data.PurchasedItemsDic.GetValueOrDefault("I005");
            vm.SpiritLinkCount += data.PurchasedItemsDic.GetValueOrDefault("I00G");
            vm.SpiritLinkCount += data.PurchasedItemsDic.GetValueOrDefault("I00R");
            vm.FirstCS          = data.CommandSealDic.GetValueOrDefault("A094");
            vm.SecondCS         = data.CommandSealDic.GetValueOrDefault("A043");
            vm.ThirdCS          = data.CommandSealDic.GetValueOrDefault("A044");
            vm.FourthCS         = data.CommandSealDic.GetValueOrDefault("A05Q");

            vm.AttributeList = new List <PlayerGameBuildAttribute>();
            foreach (Tuple <string, string> attributeData in data.LearnedAttributeList)
            {
                PlayerGameBuildAttribute attr = new PlayerGameBuildAttribute
                {
                    AttributeImgUrl = ContentURL.GetAttributeIconURL(attributeData.Item1),
                    AttributeName   = attributeData.Item2
                };
                vm.AttributeList.Add(attr);
            }
            return(vm);
        }
Beispiel #2
0
        public PlayerGameBuildData GetPlayerGameBuildDetail(string playerName, int gameId)
        {
            using (frsDatabase db = frsDatabase.Create())
            {
                //Find gamePlayerDetailId first
                int gamePlayerDetailId = (
                    from game in db.game
                    join gameDetail in db.gameplayerdetail on game.GameID equals gameDetail.FK_GameID
                    join player in db.player on gameDetail.FK_PlayerID equals player.PlayerID
                    where game.GameID == gameId && player.PlayerName == playerName
                    select gameDetail.GamePlayerDetailID).FirstOrDefault();

                if (gamePlayerDetailId == 0)
                {
                    return(null);
                }

                //Find HeroUnitTypeId
                string heroTypeUnitId = (
                    from herotype in db.herotype
                    join gameDetail in db.gameplayerdetail on herotype.HeroTypeID equals gameDetail.FK_HeroTypeID
                    where gameDetail.GamePlayerDetailID == gamePlayerDetailId
                    select herotype.HeroUnitTypeID).First();

                PlayerGameBuildData buildData = new PlayerGameBuildData {
                    HeroUnitTypeId = heroTypeUnitId
                };

                //Find stat learn information
                var heroStatLearnQuery = (
                    from herostatinfo in db.herostatinfo
                    join herostatlearn in db.herostatlearn on herostatinfo.HeroStatInfoID equals
                    herostatlearn.FK_HeroStatInfoID
                    where herostatlearn.FK_GamePlayerDetailID == gamePlayerDetailId
                    select new
                {
                    herostatinfo.HeroStatAbilID,
                    herostatlearn.LearnCount
                });

                buildData.StatBuildDic = new Dictionary <string, int>();
                foreach (var heroStat in heroStatLearnQuery)
                {
                    buildData.StatBuildDic.Add(heroStat.HeroStatAbilID, heroStat.LearnCount);
                }

                //Find attribute information
                var heroAttributeQuery = (
                    from attributeinfo in db.attributeinfo
                    join attributelearn in db.attributelearn on attributeinfo.AttributeInfoID equals attributelearn.FK_AttributeInfoID
                    where attributelearn.FK_GamePlayerDetailID == gamePlayerDetailId
                    select new
                {
                    attributeinfo.AttributeAbilID,
                    attributeinfo.AttributeName
                });

                buildData.LearnedAttributeList = new List <Tuple <string, string> >();
                foreach (var attribute in heroAttributeQuery)
                {
                    Tuple <string, string> attrTuple = new Tuple <string, string>(attribute.AttributeAbilID, attribute.AttributeName);
                    buildData.LearnedAttributeList.Add(attrTuple);
                }

                //Find Ward/Familiar Information
                var itemKeys = new[] { "I003", "I00N", "SWAR", "I002", "I005", "I00R", "I00G" };

                var itemsQuery = (
                    from iteminfo in db.iteminfo
                    join itembuy in db.gameitempurchase on iteminfo.ItemID equals itembuy.FK_ItemID
                    where itembuy.FK_GamePlayerDetailID == gamePlayerDetailId && itemKeys.Contains(iteminfo.ItemTypeID)
                    select new
                {
                    iteminfo.ItemTypeID,
                    itembuy.ItemPurchaseCount
                });

                buildData.PurchasedItemsDic = new Dictionary <string, int>();
                foreach (var item in itemsQuery)
                {
                    buildData.PurchasedItemsDic.Add(item.ItemTypeID, item.ItemPurchaseCount);
                }

                //Find CommandSeal Info
                var commandSealKeys = new[] { "A05Q", "A094", "A043", "A044" };

                var commandSealQuery = (
                    from commandseal in db.commandsealuse
                    where commandseal.FK_GamePlayerDetailID == gamePlayerDetailId && commandSealKeys.Contains(commandseal.CommandSealAbilID)
                    select new
                {
                    commandseal.CommandSealAbilID,
                    commandseal.UseCount
                });

                buildData.CommandSealDic = new Dictionary <string, int>();
                foreach (var cs in commandSealQuery)
                {
                    buildData.CommandSealDic.Add(cs.CommandSealAbilID, cs.UseCount);
                }

                return(buildData);
            }
        }