Ejemplo n.º 1
0
    override public void SetParams(bool is_new, object[] parms)
    {
        base.SetParams(is_new, parms);
        if (parms != null && parms.Length == 1)
        {
            EventParamBattleEnd _param = (EventParamBattleEnd)parms[0];

            m_LabelTeamLevel.text = Localization.Format("TeamLevelFormat", _param.player_levelup.old_level);
            m_SpriteFail.gameObject.SetActive(_param.end_type == pe_EndBattle.Lose);
            m_SpriteTimeover.gameObject.SetActive(_param.end_type == pe_EndBattle.Timeout);
        }
        else
        {
            throw new System.Exception("invalid parms");
        }

        m_ContinueTime = Time.time + 2f;

        m_LabelContinue.gameObject.SetActive(false);

        if (BattleContinue.Instance.IsPlaying)
        {
            m_LabelContinue.gameObject.SetActive(true);
            m_LabelContinue.text = Localization.Format("BattleContinueDesc", BattleContinue.Instance.BattleCount, BattleContinue.Instance.RequestCount);
        }

        m_BtnRetry.gameObject.SetActive(BattleStage.Instance != null);
    }
Ejemplo n.º 2
0
    void OnEndBattleHandler(C2G.EndBattle packet, C2G.EndBattleAck ack)
    {
        MapStageDifficulty stage_info = Network.BattleStageInfo;

        _battle_end_param          = new EventParamBattleEnd();
        _battle_end_param.end_type = packet.end_type;
        _battle_end_param.is_boss  = stage_info.MapInfo.MapType == "boss";
        _battle_end_param.maxlevel_reward_mail_idxs = ack.maxlevel_reward_mail_idx;
        if (packet.end_type != pe_EndBattle.Exit)
        {
            Network.PlayerInfo.UseEnergy(stage_info.Energy);

            _battle_end_param.player_levelup = Network.PlayerInfo.UpdateExp(ack.player_exp_add_info);
            _battle_end_param.creatures      = new List <BattleEndCreature>();

            m_TeamData.Creatures.ForEach(c => _battle_end_param.creatures.Add(c.creature.UpdateExp(ack.creature_exp_add_infos.Find(i => i.creature_idx == c.creature.Idx))));
            _battle_end_param.add_goods  = ack.add_goods;
            _battle_end_param.loot_items = ack.loot_items;
            _battle_end_param.loot_runes = ack.loot_runes;

            _battle_end_param.loot_creatures = ack.loot_creatures.Select(c => c.creature_idx).ToList();

            ack.loot_items.ForEach(i => ItemManager.Instance.Add(i));
            ack.loot_runes.ForEach(i => RuneManager.Instance.Add(i));
            ack.add_goods.ForEach(g => Network.PlayerInfo.AddGoods(g));
            Network.Instance.LootCreatures(ack.loot_creatures, ack.loot_creatures_equip);

            //int dead_count = dead_characters.Count;
            _battle_end_param.clear_rate = 3;

            MapClearDataManager.Instance.SetClearRate(stage_info, _battle_end_param.clear_rate);
        }
        GameMain.SetBattleMode(eBattleMode.None);
    }
Ejemplo n.º 3
0
    override public void SetParams(bool is_new, object[] parms)
    {
        base.SetParams(is_new, parms);

        if (parms != null && parms.Length == 1)
        {
            EventParamBattleEnd _param = (EventParamBattleEnd)parms[0];

            if (_param.end_type == pe_EndBattle.Win)
            {
                m_Creatures = _param.creatures;

                m_MaxLevelMailIdxs = _param.maxlevel_reward_mail_idxs;

                m_Star1.SetActive(_param.clear_rate >= 1);
                m_Star2.SetActive(_param.clear_rate >= 2);
                m_Star3.SetActive(_param.clear_rate == 3);

                m_LabelTeamLevel.text = Localization.Format("TeamLevelFormat", _param.player_levelup.new_level);
                if (_param.player_levelup.old_level < _param.player_levelup.new_level)
                {
                    TeamLevelUp.Instance.Show(_param.player_levelup);
                }

                m_LabelTeamExp.text = Localization.Format("AddTeamExp", _param.player_levelup.add_exp);

                for (int i = 0; i < m_Heroes.Length; ++i)
                {
                    BattleEndHero[] heroes = m_Heroes[i].GetComponentsInChildren <BattleEndHero>(true);
                    BattleEndHero   hero;
                    if (heroes != null && heroes.Length > 0)
                    {
                        hero = heroes[0];
                    }
                    else
                    {
                        hero = NGUITools.AddChild(m_Heroes[i], m_BattleEndHeroPrefab).GetComponent <BattleEndHero>();
                    }

                    if (m_Creatures.Count > i)
                    {
                        hero.Init(m_Creatures[i]);
                    }
                    else
                    {
                        hero.gameObject.SetActive(false);
                    }
                }
                m_GridReward.GetChildList().ForEach(ch => DestroyImmediate(ch.gameObject));
                for (int i = 0; i < _param.add_goods.Count; ++i)
                {
                    RewardItem reward = NGUITools.AddChild(m_GridReward.gameObject, m_RewardItemPrefab).GetComponent <RewardItem>();
                    reward.InitReward(40000 + (int)_param.add_goods[i].goods_type, (int)_param.add_goods[i].goods_value);
                }
                for (int i = 0; i < _param.loot_items.Count; ++i)
                {
                    RewardItem reward = NGUITools.AddChild(m_GridReward.gameObject, m_RewardItemPrefab).GetComponent <RewardItem>();
                    reward.InitReward(_param.loot_items[i].item_idn, _param.loot_items[i].add_piece_count);
                }
                for (int i = 0; i < _param.loot_runes.Count; ++i)
                {
                    RewardItem reward = NGUITools.AddChild(m_GridReward.gameObject, m_RewardItemPrefab).GetComponent <RewardItem>();
                    reward.InitReward(_param.loot_runes[i].rune_idn, 0);
                }
                if (_param.loot_creatures != null)
                {
                    foreach (var loot_creature in _param.loot_creatures)
                    {
                        RewardItem reward = NGUITools.AddChild(m_GridReward.gameObject, m_RewardItemPrefab).GetComponent <RewardItem>();
                        reward.InitCreature(CreatureManager.Instance.GetInfoByIdx(loot_creature));
                    }
                }
                m_GridReward.Reposition();
            }
        }
        else
        {
            throw new System.Exception("invalid parms");
        }

        m_MadeList = new List <EventParamItemMade>();
        //m_MadeList = new List<EventParamItemMade>(ItemManager.Instance.ItemMadeList);
        ItemManager.Instance.ItemMadeList.Clear();
        if (m_MadeList.Count > 0)
        {
            showMadeItemTooltip = Time.time + 2f;
            m_ContinueTime      = showMadeItemTooltip + 1f;
        }
        else
        {
            m_ContinueTime = Time.time + 3f;
        }

        m_LabelContinue.gameObject.SetActive(false);
        if (BattleStage.Instance != null && Network.NewStageInfo == null)
        {
            m_BtnRetry.gameObject.SetActive(true);
        }
        else
        {
            m_BtnRetry.gameObject.SetActive(false);
        }

        if (BattleContinue.Instance.IsPlaying)
        {
            m_LabelContinue.gameObject.SetActive(true);
            m_LabelContinue.text = Localization.Format("BattleContinueDesc", BattleContinue.Instance.BattleCount, BattleContinue.Instance.RequestCount);
        }
    }
Ejemplo n.º 4
0
    void OnEndBattleHandler(C2G.EndBattle packet, C2G.EndBattleAck ack)
    {
        MapStageDifficulty stage_info = Network.BattleStageInfo;

        _battle_end_param          = new EventParamBattleEnd();
        _battle_end_param.end_type = packet.end_type;
        _battle_end_param.is_boss  = stage_info.MapInfo.MapType == "boss";
        if (packet.end_type == pe_EndBattle.Win)
        {
            _battle_end_param.player_levelup = Network.PlayerInfo.UpdateExp(ack.player_exp_add_info);
            _battle_end_param.creatures      = new List <BattleEndCreature>();

            m_TeamData.Creatures.ForEach(c => _battle_end_param.creatures.Add(c.creature.UpdateExp(ack.creature_exp_add_infos.Find(i => i.creature_idx == c.creature.Idx))));
            _battle_end_param.add_goods  = ack.add_goods;
            _battle_end_param.loot_items = ack.loot_items;
            _battle_end_param.loot_runes = ack.loot_runes;

            _battle_end_param.loot_creatures = ack.loot_creatures.Select(c => c.creature_idx).ToList();

            ack.loot_items.ForEach(i => ItemManager.Instance.Add(i));
            ack.loot_runes.ForEach(i => RuneManager.Instance.Add(i));
            ack.add_goods.ForEach(g => Network.PlayerInfo.AddGoods(g));
            Network.Instance.LootCreatures(ack.loot_creatures, ack.loot_creatures_equip);

            int dead_count = dead_characters.Count;
            _battle_end_param.clear_rate = battleEndType == pe_EndBattle.Win ? (short)Math.Max(1, 3 - dead_count) : (short)0;

            if (MapClearDataManager.Instance.SetClearRate(stage_info, _battle_end_param.clear_rate) == true && stage_info.MapInfo.MapType == "main")
            {
                Network.LastOpenContentsStageInfo = stage_info;
                Tutorial.Instance.first_clear     = true;
            }
            else
            {
                Tutorial.Instance.first_clear = false;
            }

            Network.NewStageInfo = null;

            if (ack.set_new_map == true)
            {
                var next_stage_info = MapInfoManager.Instance.GetNextStageInfo(stage_info);
                if (next_stage_info != null)
                {
                    MapClearDataManager.Instance.SetNew(next_stage_info);
                    if (next_stage_info.MapInfo.MapType != "main" || next_stage_info.MapInfo.IDN <= GameConfig.Get <int>("contents_open_main_map"))
                    {
                        Network.NewStageInfo = next_stage_info;
                    }
                }
            }
        }
        else
        {
            _battle_end_param.player_levelup = Network.PlayerInfo.UpdateExp(null);

            short energy       = stage_info.Energy;
            var   energy_event = EventHottimeManager.Instance.GetInfoByID("dungeon_energy_zero");
            if (energy_event != null)
            {
                energy = (short)(energy * energy_event.Percent);
            }
            Network.PlayerInfo.AddEnergy(energy);
        }

        _battle_end_param.maxlevel_reward_mail_idxs = ack.maxlevel_reward_mail_idx;

        m_Hottime.Clear();

        if (packet.end_type == pe_EndBattle.Exit)
        {
            GameMain.SetBattleMode(eBattleMode.None);
        }
    }