少年修仙传客户端代码仓库
lwb
2021-02-22 a9b4bb435fc0eda83fa5338f40ff854bd9844361
System/OpenServerActivity/OpenServerActivityCenter.cs
@@ -4,46 +4,44 @@
using UnityEngine;
namespace Snxxz.UI
{
    //修改成控制多个活动模块,如精彩活动模板1,精彩活动模板2
    [XLua.LuaCallCSharp]
    public class OpenServerActivityCenter : Singleton<OpenServerActivityCenter>
    {
        public event Action openServerActivityStateChange;
        Dictionary<int, IOpenServerActivity> openServerActivitys = new Dictionary<int, IOpenServerActivity>();
        Dictionary<int, ILuaOpenServerActivity> luaOpenServerAcitivitys = new Dictionary<int, ILuaOpenServerActivity>();
        //{活动模板:{活动ID:活动接口}}
        Dictionary<int, Dictionary<int, IOpenServerActivity>> GameServerActivitys = new Dictionary<int, Dictionary<int, IOpenServerActivity>>();
        public int selectFuncOrder = -1;
        public enum ActivityType
        {
            AT_JCHD = 0,    //精彩活动
            AT_JRZF,    //节日祝福
            AT_HFHD,    //合服活动
            AT_Activity1,   //预备活动1
            AT_Activity2,   //预备活动2
            AT_Activity3,   //预备活动3
        }
        public OpenServerActivityCenter()
        {
            TimeUtility.OnServerOpenDayRefresh += OnServerOpenDayRefresh;
        }
        public void Register(int funcOrder, IOpenServerActivity activity)
        public void Register(int funcOrder, IOpenServerActivity activity, int activityType = (int)ActivityType.AT_JCHD)
        {
            if (!GameServerActivitys.ContainsKey(activityType))
            {
                GameServerActivitys.Add(activityType, new Dictionary<int, IOpenServerActivity>());
            }
            var openServerActivitys = GameServerActivitys[activityType];
            if (!openServerActivitys.ContainsKey(funcOrder))
            {
                openServerActivitys.Add(funcOrder, activity);
                activity.onStateUpdate += OnStateUpdate;
            }
        }
        public void RegisterLuaActivity(int funcOrder, string luaTableName)
        {
            if (!openServerActivitys.ContainsKey(funcOrder))
            {
                var activity = LuaUtility.Global.Get<IOpenServerActivity>(luaTableName);
                if (activity != null)
                {
                    openServerActivitys.Add(funcOrder, activity);
                    activity.onStateUpdate += OnStateUpdate;
                }
                var luaActivity = LuaUtility.Global.Get<ILuaOpenServerActivity>(luaTableName);
                if (luaActivity != null)
                {
                    luaOpenServerAcitivitys[funcOrder] = luaActivity;
                }
            }
        }
@@ -63,8 +61,14 @@
            }
        }
        public bool IsAnyActivityOpen(out int _functionOrder)
        public bool IsAnyActivityOpen(out int _functionOrder, int activityType=(int)ActivityType.AT_JCHD)
        {
            if (!GameServerActivitys.ContainsKey(activityType))
            {
                GameServerActivitys.Add(activityType, new Dictionary<int, IOpenServerActivity>());
            }
            var openServerActivitys = GameServerActivitys[activityType];
            _functionOrder = 0;
            foreach (var _order in openServerActivitys.Keys)
            {
@@ -77,8 +81,14 @@
            return false;
        }
        public bool IsActivityOpen(int _funcOrder)
        public bool IsActivityOpen(int _funcOrder, int activityType=(int)ActivityType.AT_JCHD)
        {
            if (!GameServerActivitys.ContainsKey(activityType))
            {
                GameServerActivitys.Add(activityType, new Dictionary<int, IOpenServerActivity>());
            }
            var openServerActivitys = GameServerActivitys[activityType];
            if (openServerActivitys.ContainsKey(_funcOrder))
            {
                return openServerActivitys[_funcOrder].IsOpen || openServerActivitys[_funcOrder].IsAdvance;
@@ -86,8 +96,14 @@
            return false;
        }
        public bool IsPriorityOpenOpen(int _funcOrder)
        public bool IsPriorityOpenOpen(int _funcOrder, int activityType = (int)ActivityType.AT_JCHD)
        {
            if (!GameServerActivitys.ContainsKey(activityType))
            {
                GameServerActivitys.Add(activityType, new Dictionary<int, IOpenServerActivity>());
            }
            var openServerActivitys = GameServerActivitys[activityType];
            if (openServerActivitys.ContainsKey(_funcOrder))
            {
                return openServerActivitys[_funcOrder].priorityOpen;
@@ -95,13 +111,6 @@
            return false;
        }
        public void SetSelectDefaultChildType(int _funcOrder)
        {
            if (luaOpenServerAcitivitys.ContainsKey(_funcOrder))
            {
                luaOpenServerAcitivitys[_funcOrder].SetSelectDefaultChildType();
            }
        }
        public bool ExistChildBookmark(int _funcOrder)
        {
@@ -122,14 +131,6 @@
            }
        }
        public int GetChildSelectType(int _funcOrder)
        {
            if (luaOpenServerAcitivitys.ContainsKey(_funcOrder))
            {
                return luaOpenServerAcitivitys[_funcOrder].selectType;
            }
            return 0;
        }
        public int[] GetChildTypes(int _funcOrder)
        {
@@ -141,13 +142,6 @@
            return null;
        }
        public void SetSelectChildType(int _funcOrder, int type)
        {
            if (luaOpenServerAcitivitys.ContainsKey(_funcOrder))
            {
                luaOpenServerAcitivitys[_funcOrder].SetSelectChildType(type);
            }
        }
        public void ProcessErrorTip()
        {
@@ -165,12 +159,5 @@
        event Action<int> onStateUpdate;
    }
    [XLua.CSharpCallLua]
    public interface ILuaOpenServerActivity
    {
        int selectType { get; }
        void SetSelectDefaultChildType();
        void SetSelectChildType(int type);
    }
}