少年修仙传客户端代码仓库
client_linchunjie
2019-03-11 c58946be7dcad07432e33dc2279f1e0b56fafcfd
6292 【前端】【2.0】限时仙盟boss
2个文件已添加
3个文件已修改
268 ■■■■■ 已修改文件
Fight/Stage/Dungeon/DungeonStage.cs 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/DailyQuest/DailyQuestWin.cs 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/FairyAu/AllianceBossEntranceWin.cs 240 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/FairyAu/AllianceBossEntranceWin.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/FairyAu/AllianceBossVictoryWin.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Fight/Stage/Dungeon/DungeonStage.cs
@@ -245,6 +245,9 @@
            case GatherSoulDungeonModel.DUNGEON_MAPID:
                WindowCenter.Instance.Open<GatherSoulDungeonStageTimeWin>();
                break;
            case AllianceBossModel.DATAMAPID:
                WindowCenter.Instance.Open<AllianceBossHintWin>();
                break;
            default:
                WindowCenter.Instance.Open<DungeonStageTimeWin>();
                break;
System/DailyQuest/DailyQuestWin.cs
@@ -316,8 +316,10 @@
                    WindowCenter.Instance.Open<CrossServerWin>();
                    break;
                case DailyQuestType.AllianceBoss1:
                    GotoAllianceBoss(_id, 0);
                    break;
                case DailyQuestType.AllianceBoss2:
                    GotoNormalDungeon(_id);
                    GotoAllianceBoss(_id, 1);
                    break;
                //case DailyQuestType.JadeDynastyBoss:
                //    WindowCenter.Instance.Close<DailyQuestWin>();
@@ -503,6 +505,13 @@
            }
        }
        private void GotoAllianceBoss(int id, int lineId)
        {
            dungeonModel.currentDungeon = new Dungeon(AllianceBossModel.DATAMAPID, lineId);
            AllianceBossEntranceWin.dailyQuestId = id;
            WindowCenter.Instance.Open<AllianceBossEntranceWin>();
        }
        private void GotoTreasureCollectSoul()
        {
            var treasureModel = ModelCenter.Instance.GetModel<TreasureModel>();
System/FairyAu/AllianceBossEntranceWin.cs
New file
@@ -0,0 +1,240 @@
//--------------------------------------------------------
//    [Author]:           第二世界
//    [  Date ]:           Friday, March 08, 2019
//--------------------------------------------------------
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
namespace Snxxz.UI {
    public class AllianceBossEntranceWin : Window
    {
        [SerializeField] Text m_ActivityName;
        [SerializeField] Image m_Background;
        [SerializeField] Text m_OpenTime;
        [SerializeField] Text m_EnterTimes;
        [SerializeField] Text m_LimitLevel;
        [SerializeField] Text m_Description;
        [SerializeField] ItemBehaviour[] m_Items;
        [SerializeField] Button m_Goto;
        AllianceBossModel allianceBossModel { get { return ModelCenter.Instance.GetModel<AllianceBossModel>(); } }
        DailyQuestModel dailyQuestModel { get { return ModelCenter.Instance.GetModel<DailyQuestModel>(); } }
        DungeonModel dungeonModel { get { return ModelCenter.Instance.GetModel<DungeonModel>(); } }
        public static int dailyQuestId = 0;
        #region Built-in
        protected override void BindController()
        {
        }
        protected override void AddListeners()
        {
            m_Goto.AddListener(GotoAllianceBoss);
        }
        protected override void OnPreOpen()
        {
            Display();
        }
        protected override void OnAfterOpen()
        {
        }
        protected override void OnPreClose()
        {
        }
        protected override void OnAfterClose()
        {
        }
        #endregion
        void Display()
        {
            DisplayBase();
            DisplayEnterTimes();
        }
        void DisplayBase()
        {
            var config = DailyQuestConfig.Get(dailyQuestId);
            m_ActivityName.text = config.Title;
            DailyQuestOpenTime openTime;
            if (dailyQuestModel.TryGetOpenTime(dailyQuestId, out openTime))
            {
                if (openTime.always)
                {
                    m_OpenTime.text = Language.Get("DailyQuest_NoTimeLimit");
                }
                else
                {
                    var week = (int)TimeUtility.ServerNow.DayOfWeek;
                    var openTimes = openTime.GetHourMinuteByWeek(week);
                    if (openTimes != null)
                    {
                        var stringArray = new string[openTimes.Count];
                        for (int i = 0; i < openTimes.Count; i++)
                        {
                            stringArray[i] = openTimes[i].ToString();
                        }
                        m_OpenTime.text = string.Join(",", stringArray);
                    }
                }
            }
            switch ((DailyQuestType)dailyQuestId)
            {
                case DailyQuestType.AllianceBoss1:
                    m_Background.SetSprite("AllianceBossBG1");
                    break;
                case DailyQuestType.AllianceBoss2:
                    m_Background.SetSprite("AllianceBossBG2");
                    break;
            }
            var dungeon = dungeonModel.currentDungeon;
            var dungeonId = dungeonModel.GetDungeonId(dungeon);
            var dungeonConfig = DungeonConfig.Get(dungeonId);
            if (dungeonConfig != null)
            {
                var levelLimitMin = dungeonConfig.LVLimitMin;
                var playerLevel = PlayerDatas.Instance.baseData.LV;
                m_LimitLevel.color = playerLevel >= levelLimitMin ? UIHelper.GetUIColor(TextColType.NavyBrown) : UIHelper.GetUIColor(TextColType.Red, true);
                m_Description.text = dungeonConfig.Description;
                for (int i = 0; i < m_Items.Length; i++)
                {
                    var behaviour = m_Items[i];
                    if (i < dungeonConfig.Rewards.Length)
                    {
                        behaviour.gameObject.SetActive(true);
                        behaviour.showCount = false;
                        behaviour.SetItem(dungeonConfig.Rewards[i], 0);
                    }
                    else
                    {
                        behaviour.gameObject.SetActive(false);
                    }
                }
            }
        }
        void DisplayEnterTimes()
        {
            var enterTimes = dailyQuestModel.GetDailyQuestCompletedTimes(dailyQuestId);
            var totalTimes = dailyQuestModel.GetDailyQuestTotalTimes(dailyQuestId);
            m_EnterTimes.text = StringUtility.Contact(totalTimes - enterTimes, "/", totalTimes);
            m_EnterTimes.color = (totalTimes - enterTimes) > 0 ? UIHelper.GetUIColor(TextColType.NavyBrown) : UIHelper.GetUIColor(TextColType.Red);
        }
        private void GotoAllianceBoss()
        {
            var error = 0;
            if (TestEnterAllianceBoss(dailyQuestId, out error))
            {
                if ((DailyQuestType)dailyQuestId == DailyQuestType.AllianceBoss1)
                {
                    dungeonModel.SingleChallenge(AllianceBossModel.DATAMAPID, 0);
                }
                else
                {
                    dungeonModel.SingleChallenge(AllianceBossModel.DATAMAPID, 1);
                }
            }
            else
            {
                DisplayErrorTip(error);
            }
        }
        bool TestEnterAllianceBoss(int id, out int error)
        {
            error = 0;
            var lineId = 0;
            var dungeonId = 0;
            switch ((DailyQuestType)id)
            {
                case DailyQuestType.AllianceBoss1:
                    lineId = 0;
                    break;
                case DailyQuestType.AllianceBoss2:
                    lineId = 1;
                    break;
            }
            dungeonId = dungeonModel.GetDungeonId(AllianceBossModel.DATAMAPID, lineId);
            var dungeonConfig = DungeonConfig.Get(dungeonId);
            if (dungeonConfig != null)
            {
                var playerLevel = PlayerDatas.Instance.baseData.LV;
                if (playerLevel < dungeonConfig.LVLimitMin)
                {
                    error = 1;
                    return false;
                }
            }
            var completedTimes = dailyQuestModel.GetDailyQuestCompletedTimes(dailyQuestId);
            var totalTimes = dailyQuestModel.GetDailyQuestTotalTimes(dailyQuestId);
            if (completedTimes >= totalTimes)
            {
                error = 2;
                return false;
            }
            if (CrossServerUtility.IsCrossServerBoss())
            {
                error = 3;
                return false;
            }
            if (allianceBossModel.isActivityOver)
            {
                error = 4;
                return false;
            }
            var dailyQuestState = dailyQuestModel.GetQuestState(dailyQuestId);
            if (dailyQuestState != DailyQuestModel.DailyQuestState.Normal)
            {
                error = 5;
                return false;
            }
            return true;
        }
        void DisplayErrorTip(int error)
        {
            switch (error)
            {
                case 1:
                    SysNotifyMgr.Instance.ShowTip("DemonJar_Text2");
                    break;
                case 2:
                    SysNotifyMgr.Instance.ShowTip("GeRen_chenxin_268121", AllianceBossModel.DATAMAPID);
                    break;
                case 3:
                    SysNotifyMgr.Instance.ShowTip("CrossMap10");
                    break;
                case 4:
                    SysNotifyMgr.Instance.ShowTip("AllianceBossDead");
                    break;
                case 5:
                    SysNotifyMgr.Instance.ShowTip("Join_Space_Lost");
                    break;
            }
        }
    }
}
System/FairyAu/AllianceBossEntranceWin.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 6bb43801ab363a74794c2c7d8e2f0b84
timeCreated: 1552037863
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
System/FairyAu/AllianceBossVictoryWin.cs
@@ -100,7 +100,7 @@
        private void GotoAuction()
        {
            WindowCenter.Instance.Open<AuctionHouseWin>(false, 1);
        }
    }