少年修仙传客户端代码仓库
client_linchunjie
2018-10-10 39eccd578245e95ffa5451b4b549c4eb6c8b4f7a
4096【前端】【1.1.0】boss争夺战广告图功能
7个文件已修改
2个文件已添加
384 ■■■■■ 已修改文件
System/DailyQuest/DailyQuestData.cs 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/DailyQuest/DayRemind.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/FairyAu/FairyGrabBossModel.cs 104 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/FairyAu/FairyGrabBossNoticeWin.cs 109 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/FairyAu/FairyGrabBossNoticeWin.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/FairyAu/FairyGrabBossWin.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/OpenServerActivity/ImpactRankModel.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/OpenServerActivity/OpenServerActivityWin.cs 60 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI/Common/UI3DModelExhibition.cs 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/DailyQuest/DailyQuestData.cs
@@ -334,6 +334,74 @@
    }
    public int GetFirstOpenSurplusSeconds()
    {
        if (IsAfterFirstOpen())
        {
            return 0;
        }
        var openDayWeek = (int)TimeUtility.openServerDayOfWeek;
        var dayIndex = TimeUtility.OpenDay + 1;
        var maxDays = 15 - openDayWeek == 0 ? 7 : openDayWeek;
        for (int i = dayIndex; i <= maxDays; i++)
        {
            if (specialOpenTimes.ContainsKey(openDayWeek) && specialOpenTimes[openDayWeek].ContainsKey(dayIndex))
            {
                var days = i - dayIndex;
                var hourMinute = specialOpenTimes[openDayWeek][dayIndex][0];
                var hour = TimeUtility.ServerNow.Hour;
                var minute = TimeUtility.ServerNow.Minute;
                var time = TimeUtility.ServerNow.AddDays(days);
                time = new DateTime(time.Year, time.Month, time.Day, hourMinute.hourBegin, hourMinute.minuteBegin, 0);
                var seconds = (int)(time - TimeUtility.ServerNow).TotalSeconds;
                return Mathf.Max(0, seconds);
            }
        }
        return 0;
    }
    public bool IsAfterFirstOpen()
    {
        var isSpecialDay = TimeUtility.OpenWeekCnt <= 1;
        if (!isSpecialDay)
        {
            return true;
        }
        var openDayWeek = (int)TimeUtility.openServerDayOfWeek;
        var dayIndex = TimeUtility.OpenDay + 1;
        var maxDays = 15 - openDayWeek == 0 ? 7 : openDayWeek;
        for (int i = 1; i <= maxDays; i++)
        {
            if (specialOpenTimes.ContainsKey(openDayWeek) && specialOpenTimes[openDayWeek].ContainsKey(dayIndex))
            {
                if (i < dayIndex)
                {
                    return true;
                }
                if (i == dayIndex)
                {
                    var hourMinute = specialOpenTimes[openDayWeek][dayIndex][0];
                    var hour = TimeUtility.ServerNow.Hour;
                    var minute = TimeUtility.ServerNow.Minute;
                    if (hour < hourMinute.hourEnd ||
                        (hour == hourMinute.hourEnd && minute < hourMinute.minuteEnd))
                    {
                        return false;
                    }
                    else
                    {
                        return true;
                    }
                }
                if (i > dayIndex)
                {
                    return false;
                }
            }
        }
        return true;
    }
    public bool ContainTimeNode(int week, int timeNode)
    {
        var openDayWeek = (int)TimeUtility.openServerDayOfWeek;
System/DailyQuest/DayRemind.cs
@@ -46,6 +46,7 @@
    public const string TASK_SKILL_HOLE = "TaskSkillHole";
    public const string RUNE_SPECIAL_HOLE = "RuneSpecialHole";
    public const string LEAGUE_NOTICE_REDPOINT = "LeagueNoticeRedpoint";
    public const string FAIRYGRABBOSS_NOTICE_REDPOINT = "FairyGrabBossRedpoint";
    public Dictionary<string, int[]> dayRemindDic = new Dictionary<string, int[]>();
    public bool GetDayRemind(string _remindKey)
@@ -100,6 +101,7 @@
        SetDayRemind(TASK_SKILL_HOLE);
        SetDayRemind(RUNE_SPECIAL_HOLE);
        SetDayRemind(LEAGUE_NOTICE_REDPOINT);
        SetDayRemind(FAIRYGRABBOSS_NOTICE_REDPOINT);
    }
    private void SetDayRemind(string _key)
System/FairyAu/FairyGrabBossModel.cs
@@ -5,14 +5,14 @@
using UnityEngine;
namespace Snxxz.UI
{
    public class FairyGrabBossModel : Model, IBeforePlayerDataInitialize, IPlayerLoginOk
    public class FairyGrabBossModel : Model, IBeforePlayerDataInitialize, IPlayerLoginOk, IOpenServerActivity
    {
        public List<int> bosses { get; private set; }
        Dictionary<int, List<Item>> dropItemDict = new Dictionary<int, List<Item>>();
        Dictionary<int, Dictionary<int, FairyGrabBossInfo>> fairyGrabBossDict = new Dictionary<int, Dictionary<int, FairyGrabBossInfo>>();
        Dictionary<int, BossProgressInfo> bossProgressDict = new Dictionary<int, BossProgressInfo>();
        public bool IsOpen
        public bool IsActivityOpen
        {
            get
            {
@@ -76,6 +76,9 @@
        public int callMemberDuty { get; private set; }
        public int callMemberSeconds { get; private set; }
        public int noticeShowPet { get; private set; }
        public int noticeShowHorse { get; private set; }
        private bool serverInited = false;
        //private DateTime lastQueryProgressTime = DateTime.Now;
@@ -103,17 +106,22 @@
            PlayerDatas.Instance.PlayerDataRefreshInfoEvent += PlayerDataRefreshInfoEvent;
            SysNotifyMgr.Instance.sysNotifyEvent += SystemNotifyEvent;
            GlobalTimeEvent.Instance.secondEvent += SecondEvent;
            TimeMgr.Instance.OnMinuteEvent += MinuteEvent;
            OpenServerActivityCenter.Instance.Register(13, this);
        }
        public void OnBeforePlayerDataInitialize()
        {
            serverInited = false;
            cacheNoticeOpen = false;
            bossAliveDict.Clear();
        }
        public void OnPlayerLoginOk()
        {
            serverInited = true;
            cacheNoticeOpen = IsOpen;
            UpdateNoticeRedpoint();
        }
        public override void UnInit()
@@ -126,6 +134,22 @@
            PlayerDatas.Instance.PlayerDataRefreshInfoEvent -= PlayerDataRefreshInfoEvent;
            SysNotifyMgr.Instance.sysNotifyEvent -= SystemNotifyEvent;
            GlobalTimeEvent.Instance.secondEvent -= SecondEvent;
            TimeMgr.Instance.OnMinuteEvent -= MinuteEvent;
        }
        private void MinuteEvent()
        {
            if (serverInited)
            {
                if (cacheNoticeOpen != IsOpen)
                {
                    cacheNoticeOpen = !cacheNoticeOpen;
                    if (onStateUpate != null)
                    {
                        onStateUpate((int)OpenServerActivityCenter.OSActivityType.FairyGrabBossNotice);
                    }
                }
            }
        }
        private void PlayerDataRefreshInfoEvent(PlayerDataRefresh refreshType)
@@ -266,6 +290,11 @@
            if (_id == 139)
            {
                RecheckGrabBoss();
                if (onStateUpate != null)
                {
                    onStateUpate((int)OpenServerActivityCenter.OSActivityType.FairyGrabBossNotice);
                }
                UpdateNoticeRedpoint();
            }
        }
@@ -294,6 +323,14 @@
            var config = Config.Instance.Get<FuncConfigConfig>("FairyCallMember");
            callMemberSeconds = int.Parse(config.Numerical1);
            callMemberDuty = int.Parse(config.Numerical2);
            config = Config.Instance.Get<FuncConfigConfig>("FairyGrabBossShowModel");
            noticeShowHorse = 305;
            noticeShowPet = 50106305;
            if (config != null)
            {
                noticeShowPet = int.Parse(config.Numerical1);
                noticeShowHorse = int.Parse(config.Numerical2);
            }
        }
        public bool TryGetDropItems(int bossId, out List<Item> dropItems)
@@ -533,7 +570,6 @@
        #region 召集弹窗
        public bool helpCoolDown { get; set; }
        public List<FairyGrabBossHelp> fairyGrabBossHelps = new List<FairyGrabBossHelp>();
        public event Action fairyGrabBossHelpUpdate;
@@ -638,6 +674,68 @@
        }
        #endregion
        #region 骑宠争夺预告
        public bool IsOpen
        {
            get
            {
                DailyQuestOpenTime dailyQuestOpenTime;
                if (dailyQuestModel.TryGetOpenTime((int)DailyQuestType.FairyGrabBoss, out dailyQuestOpenTime))
                {
                    return FuncOpen.Instance.IsFuncOpen(139) && !dailyQuestOpenTime.IsAfterFirstOpen();
                }
                return false;
            }
        }
        public bool IsAdvance
        {
            get { return false; }
        }
        public bool priorityOpen
        {
            get { return false; }
        }
        bool cacheNoticeOpen { get; set; }
        public event Action<int> onStateUpate;
        public int GetFirstOpenSeconds()
        {
            int seconds = 0;
            if (!InActivityTime)
            {
                DailyQuestOpenTime dailyQuestOpenTime;
                if (dailyQuestModel.TryGetOpenTime((int)DailyQuestType.FairyGrabBoss, out dailyQuestOpenTime))
                {
                    seconds = dailyQuestOpenTime.GetFirstOpenSurplusSeconds();
                }
            }
            return seconds;
        }
        Redpoint fairyGrabBossNoticeRedpoint = new Redpoint(MainRedDot.REDPOINT_OPENSERVER, 20913);
        void UpdateNoticeRedpoint()
        {
            fairyGrabBossNoticeRedpoint.state = RedPointState.None;
            if (!DayRemind.Instance.GetDayRemind(DayRemind.FAIRYGRABBOSS_NOTICE_REDPOINT)
                && IsOpen)
            {
                //fairyGrabBossNoticeRedpoint.state = RedPointState.Simple;
            }
        }
        public void SetViewFairyGrabBossNotice()
        {
            if (fairyGrabBossNoticeRedpoint.state == RedPointState.Simple)
            {
                DayRemind.Instance.SetDayRemind(DayRemind.FAIRYGRABBOSS_NOTICE_REDPOINT, true);
                UpdateNoticeRedpoint();
            }
        }
        #endregion
        public class FairyGrabBossInfo
        {
            public int npcId { get; private set; }
System/FairyAu/FairyGrabBossNoticeWin.cs
New file
@@ -0,0 +1,109 @@
//--------------------------------------------------------
//    [Author]:           第二世界
//    [  Date ]:           Tuesday, October 09, 2018
//--------------------------------------------------------
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using TableConfig;
namespace Snxxz.UI {
    public class FairyGrabBossNoticeWin : Window
    {
        [SerializeField] Button m_Goto;
        [SerializeField] RawImage m_Horse;
        [SerializeField] RawImage m_Pet;
        [SerializeField] Text m_SurplusTime;
        FairyGrabBossModel model { get { return ModelCenter.Instance.GetModel<FairyGrabBossModel>(); } }
        #region Built-in
        protected override void BindController()
        {
        }
        protected override void AddListeners()
        {
            m_Goto.onClick.AddListener(Goto);
        }
        protected override void OnPreOpen()
        {
            GlobalTimeEvent.Instance.secondEvent += SecondEvent;
            Display();
            DisplayTime();
            model.SetViewFairyGrabBossNotice();
        }
        protected override void OnAfterOpen()
        {
        }
        protected override void OnPreClose()
        {
            GlobalTimeEvent.Instance.secondEvent -= SecondEvent;
            UI3DModelExhibition.Instance.StopShow();
            UI3DModelExhibition.InstanceClone1.StopShow();
        }
        protected override void OnAfterClose()
        {
        }
        #endregion
        private void Goto()
        {
            WindowJumpMgr.Instance.WindowJumpTo(JumpUIType.FairyGrabBoss);
        }
        void Display()
        {
            m_Horse.gameObject.SetActive(true);
            m_Pet.gameObject.SetActive(true);
            var npcConfig = Config.Instance.Get<NPCConfig>(model.noticeShowPet);
            UI3DModelExhibition.Instance.ShowNPC(model.noticeShowPet, npcConfig.UIModeLOffset, npcConfig.UIModelRotation, m_Pet);
            var horseConfig = Config.Instance.Get<HorseConfig>(model.noticeShowHorse);
            UI3DModelExhibition.InstanceClone1.ShowHourse(horseConfig.Model, m_Horse);
            UI3DModelExhibition.Instance.interactable = false;
            UI3DModelExhibition.InstanceClone1.interactable = false;
        }
        private void SecondEvent()
        {
            DisplayTime();
        }
        void DisplayTime()
        {
            var seconds = model.GetFirstOpenSeconds();
            var isOpen = model.IsOpen;
            if (seconds > 0)
            {
                if (!m_SurplusTime.gameObject.activeSelf)
                {
                    m_SurplusTime.gameObject.SetActive(true);
                }
                m_SurplusTime.text = Language.Get("FairyGrabBossTime", TimeUtility.SecondsToDHMSCHS(seconds));
            }
            else if (isOpen)
            {
                if (!m_SurplusTime.gameObject.activeSelf)
                {
                    m_SurplusTime.gameObject.SetActive(true);
                }
                m_SurplusTime.text = Language.Get("FairyGrabBossOpened");
            }
            else
            {
                m_SurplusTime.gameObject.SetActive(false);
            }
        }
    }
}
System/FairyAu/FairyGrabBossNoticeWin.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 1ab2a47cddd6c5c45bd057f4cdc3df3a
timeCreated: 1539083346
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
System/FairyAu/FairyGrabBossWin.cs
@@ -159,7 +159,7 @@
        {
            m_FairyName.text = string.Empty;
            m_NoneFairy.gameObject.SetActive(true);
            if (!model.IsOpen)
            if (!model.IsActivityOpen)
            {
                return;
            }
System/OpenServerActivity/ImpactRankModel.cs
@@ -784,6 +784,8 @@
            VipInvest,
            [Header("仙盟联赛预告")]
            FairyLeagueNotice,
            [Header("骑宠争夺预告")]
            FairyGrabBossNotice,
        }
    }
System/OpenServerActivity/OpenServerActivityWin.cs
@@ -30,6 +30,7 @@
            }
        }
        FairyLeagueModel fairyLeagueModel { get { return ModelCenter.Instance.GetModel<FairyLeagueModel>(); } }
        FairyGrabBossModel fairyGrabBossModel { get { return ModelCenter.Instance.GetModel<FairyGrabBossModel>(); } }
        List<int> openActivitys = new List<int>();
        List<int> priorityActivitys = new List<int>();
@@ -181,6 +182,23 @@
                activityCell.title.text = TimeUtility.SecondsToHMS(seconds);
                activityCell.title.gameObject.SetActive(seconds > 0);
            }
            cell = m_ActivityCtrl.GetActiveCellView((int)OpenServerActivityCenter.OSActivityType.FairyGrabBossNotice);
            if (cell != null)
            {
                var activityCell = cell as OpenServerActivityCell;
                var seconds = fairyGrabBossModel.GetFirstOpenSeconds();
                bool isOpen = fairyGrabBossModel.IsOpen;
                activityCell.title.gameObject.SetActive(seconds > 0 || isOpen);
                activityCell.title.color = UIHelper.GetUIColor(TextColType.Green, true);
                if (seconds > 0)
                {
                    activityCell.title.text = TimeUtility.SecondsToHMS(seconds);
                }
                else if (isOpen)
                {
                    activityCell.title.text = Language.Get("FairyGrabBossOpened");
                }
            }
        }
        void CheckAlreadyOpen()
@@ -232,6 +250,8 @@
            });
            bool customIcon = !string.IsNullOrEmpty(customActivity.titleIcon);
            _cell.title.color = UIHelper.GetUIColor(TextColType.NavyBrown);
            OperationBase operationBase;
            switch (_cell.index)
            {
@@ -241,7 +261,6 @@
                        _cell.title.text = Language.Get("ExpActivity_Text5", (operationBase as OperationMultiExp).GetMultipleCHS());
                    }
                    _cell.title.gameObject.SetActive(!customIcon);
                    _cell.title.color = UIHelper.GetUIColor(TextColType.NavyBrown);
                    break;
                case 8:
                    if (OperationTimeHepler.Instance.TryGetOperationTime(Operation.MultipRealmPoint, out operationBase))
@@ -249,21 +268,37 @@
                        _cell.title.text = Language.Get("MultipleRealmPoint", Language.Get(StringUtility.Contact("Num_CHS_", (operationBase as OperationMultipleRealmPoint).multiplePractice)));
                    }
                    _cell.title.gameObject.SetActive(!customIcon);
                    _cell.title.color = UIHelper.GetUIColor(TextColType.NavyBrown);
                    break;
                case 12:
                    var seconds = fairyLeagueModel.GetBeforeFirstLeagueTime();
                    _cell.title.gameObject.SetActive(seconds > 0);
                    if (seconds > 0)
                    {
                        _cell.title.text = TimeUtility.SecondsToHMS(seconds);
                        var seconds = fairyLeagueModel.GetBeforeFirstLeagueTime();
                        _cell.title.gameObject.SetActive(seconds > 0);
                        if (seconds > 0)
                        {
                            _cell.title.text = TimeUtility.SecondsToHMS(seconds);
                            _cell.title.color = UIHelper.GetUIColor(TextColType.Green, true);
                        }
                    }
                    break;
                case 13:
                    {
                        var seconds = fairyGrabBossModel.GetFirstOpenSeconds();
                        bool isOpen = fairyGrabBossModel.IsOpen;
                        _cell.title.gameObject.SetActive(seconds > 0 || isOpen);
                        _cell.title.color = UIHelper.GetUIColor(TextColType.Green, true);
                        if (seconds > 0)
                        {
                            _cell.title.text = TimeUtility.SecondsToHMS(seconds);
                        }
                        else if (isOpen)
                        {
                            _cell.title.text = Language.Get("FairyGrabBossOpened");
                        }
                    }
                    break;
                default:
                    _cell.title.gameObject.SetActive(!customIcon);
                    _cell.title.text = Language.Get(StringUtility.Contact("OSActivityTitle_", _cell.index));
                    _cell.title.color = UIHelper.GetUIColor(TextColType.NavyBrown);
                    break;
            }
            _cell.order = _cell.index;
@@ -529,6 +564,16 @@
                        WindowCenter.Instance.Open<FairyLeagueNoticeWin>(true);
                    }
                    break;
                case 13:
                    if (windowState == WindowState.Opened)
                    {
                        WindowCenter.Instance.OpenWithoutAnimation<FairyGrabBossNoticeWin>();
                    }
                    else
                    {
                        WindowCenter.Instance.Open<FairyGrabBossNoticeWin>(true);
                    }
                    break;
            }
        }
@@ -563,6 +608,7 @@
            WindowCenter.Instance.CloseImmediately<FairyJadeInvestmentWin>();
            WindowCenter.Instance.CloseImmediately<VipInvestWin>();
            WindowCenter.Instance.CloseImmediately<FairyLeagueNoticeWin>();
            WindowCenter.Instance.CloseImmediately<FairyGrabBossNoticeWin>();
        }
        private int Compare(int order_x, int order_y)
UI/Common/UI3DModelExhibition.cs
@@ -65,6 +65,19 @@
        public static UI3DModelExhibition Instance { get; private set; }
        static UI3DModelExhibition m_InstanceClone1 = null;
        public static UI3DModelExhibition InstanceClone1
        {
            get
            {
                if (m_InstanceClone1 == null)
                {
                    CreateCloneStage();
                }
                return m_InstanceClone1;
            }
        }
        public static void CreateStage()
        {
            var prefab = Resources.Load<GameObject>("UI/Prefabs/UI3DModelExhibitionStage");
@@ -77,6 +90,18 @@
            DontDestroyOnLoad(gameObject);
        }
        static void CreateCloneStage()
        {
            var prefab = Resources.Load<GameObject>("UI/Prefabs/UI3DModelExhibitionStage");
            var gameObject = GameObject.Instantiate(prefab);
            m_InstanceClone1 = gameObject.GetComponent<UI3DModelExhibition>();
            m_InstanceClone1.transform.position = new Vector3(2000, 4000, 5000);
            m_InstanceClone1.name = "UI3DModelExhibitionStage(clone1)";
            m_InstanceClone1.gameObject.SetActive(true);
            m_InstanceClone1.m_ShowCamera.enabled = false;
            DontDestroyOnLoad(gameObject);
        }
        public void ShowLoginPlayer(RawImage _rawImage, int _job)
        {
            var clothesItemId = 0;