Esempio n. 1
0
    public MapCondition CheckCondition()
    {
        switch (type)
        {
        case eMapCondition.MapClear:
        {
            MapInfo      map_info   = MapInfoManager.Instance.GetInfoByID(value);
            MapStageInfo stage_info = map_info.Stages.Last();

            pe_Difficulty difficulty = (pe_Difficulty)Enum.Parse(typeof(pe_Difficulty), value2);

            var clear_data = MapClearDataManager.Instance.GetData(stage_info, difficulty);
            if (clear_data == null || clear_data.clear_rate == 0)
            {
                return(this);
            }
        }
        break;

        case eMapCondition.MapStageClear:
        {
            pe_Difficulty difficulty = (pe_Difficulty)Enum.Parse(typeof(pe_Difficulty), value2);

            MapStageDifficulty stage_info = MapInfoManager.Instance.GetStageInfoByID(value, difficulty);


            var clear_data = MapClearDataManager.Instance.GetData(stage_info);
            if (clear_data == null || clear_data.clear_rate == 0)
            {
                return(this);
            }
        }
        break;

        case eMapCondition.Weekly:
            DayOfWeek cur_dow = Network.Instance.ServerTime.DayOfWeek;
            DayOfWeek set_dow = (DayOfWeek)Enum.Parse(typeof(DayOfWeek), value);
            if (cur_dow != set_dow)
            {
                return(this);
            }

            break;

        case eMapCondition.Period:
            DateTime begin_time = DateTime.Parse(value);
            DateTime end_time   = DateTime.Parse(value2);
            if (begin_time > Network.Instance.ServerTime || end_time < Network.Instance.ServerTime)
            {
                return(this);
            }
            break;

        case eMapCondition.Block:
            return(this);
        }
        return(null);
    }
Esempio n. 2
0
 public pd_MapClearData GetData(MapStageInfo stage_info, pe_Difficulty difficulty = pe_Difficulty.Normal)
 {
     return(GetData(stage_info.MapInfo.IDN, stage_info.StageIndex, difficulty));
 }
Esempio n. 3
0
    public MapStageDifficulty(MapStageInfo stage_info, XmlNode node)
    {
        StageInfo = stage_info;

        XmlAttribute difficultyAttr = node.Attributes["type"];

        if (difficultyAttr != null)
        {
            Difficulty = (pe_Difficulty)Enum.Parse(typeof(pe_Difficulty), difficultyAttr.Value);
        }
        else
        {
            Difficulty = pe_Difficulty.Normal;
        }

        Condition = StageInfo.Conditions[(int)Difficulty];

        XmlAttribute tryLimitAttr = node.Attributes["try_limit"];

        if (tryLimitAttr != null)
        {
            TryLimit = int.Parse(tryLimitAttr.Value);
        }
        else
        {
            TryLimit = StageInfo.MapInfo.TryLimit;
        }

        if (MapInfo.MapType != "weekly")
        {
            Energy     = short.Parse(node.Attributes["energy"].Value);
            RewardExp  = int.Parse(node.Attributes["reward_exp"].Value);
            RewardGold = int.Parse(node.Attributes["reward_gold"].Value);
        }
        Waves = new List <MapWaveInfo>();
        foreach (XmlNode waveNode in node.SelectNodes("Wave"))
        {
            Waves.Add(new MapWaveInfo(waveNode));
        }

        //Rewards = new List<MapRewardInfo>();
        //foreach (XmlNode rewardNode in node.SelectNodes("Reward"))
        //{
        //    var reward = new MapRewardInfo(rewardNode);
        //    Rewards.Add(reward);

        //    //if (MapInfo.MapType == "main" && (reward.Reward as StuffInfo) != null)
        //    //    (reward.Reward as StuffInfo).AddDropInfo(this);
        //}

        Recommends = new List <CreatureInfo>();
        foreach (XmlNode recommendNode in node.SelectNodes("Recommend"))
        {
            Recommends.Add(CreatureInfoManager.Instance.GetInfoByID(recommendNode.Attributes["id"].Value));
        }

        DropInfo = new List <RewardLootInfo>();
        foreach (XmlNode LootNode in node.SelectNodes("Loot"))
        {
            DropInfo.Add(new RewardLootInfo(LootNode, Difficulty));
        }
    }