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)); }
PvEMission(string key, PvEMissionType type, CrownRewards crownRewards) : base(key, type.ToString(), MissionMode.Pve, true) { Type = type; CrownRewards = crownRewards; }