示例#1
0
        public new static PvEMission ParseNode(HtmlNode missionNode)
        {
            /*<mission mission_key='8b40c308-6ba5-4d3c-9de9-0b477dc7b5f9' no_teams='1' name='@na_mission_volcano_01' setting='survival/africa_survival_base' mode='pve' mode_name='@PvE_game_mode_desc' mode_icon='pve_icon' description='@na_mission_volcano_desc_01' image='mapImgNAvolcano_e' difficulty='easy' type='volcanoeasy' time_of_day='9:06'>
             *      <objectives factor='1'>
             *              <objective id='0' type='primary'/>
             *      </objectives>
             *      <CrownRewardsThresholds>
             *              <TotalPerformance bronze='1130300' silver='1358000' gold='1520000'/>
             *              <Time bronze='4190944' silver='4191784' gold='4192204'/>
             *      </CrownRewardsThresholds>
             *      <CrownRewards bronze='6' silver='17' gold='32'/>
             * </mission>*/

            string missionKey = missionNode.Attributes["mission_key"].Value;
            var    type       = (PvEMissionType)Enum.Parse(typeof(PvEMissionType), missionNode.Attributes["type"].Value, true);
            var    mode       = (MissionMode)Enum.Parse(typeof(MissionMode), missionNode.Attributes["mode"].Value, true);

            if (mode != MissionMode.Pve)
            {
                throw new InvalidOperationException();
            }

            bool noTeams = missionNode.Attributes["no_teams"].BoolValue();

            Debug.Assert(noTeams);

            var          crownRewardsThresholdsNode = missionNode.SelectSingleNode(".//crownrewardsthresholds");
            CrownRewards crownRewards = null;

            if (crownRewardsThresholdsNode != null)
            {
                var totalPerformanceNode = crownRewardsThresholdsNode.SelectSingleNode(".//totalperformance");
                int bronzeScore          = totalPerformanceNode.Attributes["bronze"].IntValue();
                int silverScore          = totalPerformanceNode.Attributes["silver"].IntValue();
                int goldScore            = totalPerformanceNode.Attributes["gold"].IntValue();
                var timeNode             = crownRewardsThresholdsNode.SelectSingleNode(".//time");
                var bronzeTime           = TimeSpan.FromSeconds((1 << 22) - timeNode.Attributes["bronze"].IntValue());
                var silverTime           = TimeSpan.FromSeconds((1 << 22) - timeNode.Attributes["silver"].IntValue());
                var goldTime             = TimeSpan.FromSeconds((1 << 22) - timeNode.Attributes["gold"].IntValue());
                var crownRewardsNode     = missionNode.SelectSingleNode(".//crownrewards");
                int bronzeCrownAmount    = crownRewardsNode.Attributes["bronze"].IntValue();
                int silverCrownAmount    = crownRewardsNode.Attributes["silver"].IntValue();
                int goldCrownAmount      = crownRewardsNode.Attributes["gold"].IntValue();
                crownRewards = new CrownRewards()
                {
                    Bronze = new CrownReward()
                    {
                        Amount = bronzeCrownAmount,
                        Score  = bronzeScore,
                        Time   = bronzeTime
                    },
                    Gold = new CrownReward()
                    {
                        Amount = goldCrownAmount,
                        Score  = goldScore,
                        Time   = goldTime
                    },
                    Silver = new CrownReward()
                    {
                        Amount = silverCrownAmount,
                        Score  = silverScore,
                        Time   = silverTime
                    }
                };
            }

            return(new PvEMission(missionKey, type, crownRewards));
        }
示例#2
0
 PvEMission(string key, PvEMissionType type, CrownRewards crownRewards) : base(key, type.ToString(), MissionMode.Pve, true)
 {
     Type         = type;
     CrownRewards = crownRewards;
 }