少年修仙传客户端代码仓库
client_linchunjie
2018-09-06 619a37b0c8c78845a034d1e36a5d77654f88a23e
System/WindowBase/ModelCenter.cs
@@ -1,285 +1,292 @@
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using System;
using Snxxz.UI;
namespace Snxxz.UI
{
    public abstract class Model
    {
        public Model()
        {
        }
        public abstract void Init(); //整个游戏生命周期只有一次
        public abstract void UnInit();//整个游戏生命周期最多有一次
    }
    /// <summary>
    /// 玩家数据初始化(0102)之前调用
    /// </summary>
    public interface IBeforePlayerDataInitialize
    {
        void OnBeforePlayerDataInitialize();
    }
    /// <summary>
    /// 玩家数据初始化(0102)之后调用
    /// </summary>
    public interface IAfterPlayerDataInitialize
    {
        void OnAfterPlayerDataInitialize();
    }
    /// <summary>
    /// 玩家登录流程全部ok调用
    /// </summary>
    public interface IPlayerLoginOk
    {
        void OnPlayerLoginOk();
    }
    public interface IMapInitOk
    {
        void OnMapInitOk();
    }
    public interface ISwitchAccount
    {
        void OnSwitchAccount();
    }
    public class ModelCenter : Singleton<ModelCenter>
    {
        bool inited = false;
        Dictionary<int, Model> models = new Dictionary<int, Model>();
        public ModelCenter()
        {
            DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent += OnBeforePlayerDataInitialize;
            DTC0102_tagCDBPlayer.switchAccountEvent += OnAccountSwitch;
            DTC0102_tagCDBPlayer.afterPlayerDataInitializeEvent += OnAfterPlayerDataInitialize;
            DTC0403_tagPlayerLoginLoadOK.playerLoginOkEvent += OnPlayerLoginOk;
            DTC0403_tagPlayerLoginLoadOK.mapInitOkEvent += OnMapInitOk;
        }
        public void Init()
        {
            if (inited)
            {
                return;
            }
            if (VersionConfig.Get().debugVersion)
            {
                RegisterModel<GMCmdModel>();
            }
            RegisterModel<UnionTaskModel>();
            RegisterModel<FriendsModel>();
            RegisterModel<RolePointModel>();
            RegisterModel<RoleParticularModel>();
            RegisterModel<WorldBossModel>();
            RegisterModel<RolePromoteModel>();
            RegisterModel<HowToPlayModel>();
            RegisterModel<PrayerModel>();
            RegisterModel<ComposeWinModel>();
            RegisterModel<PKModel>();
            RegisterModel<AchievementModel>();
            RegisterModel<FairyBossModel>();
            RegisterModel<MagicianModel>();
            RegisterModel<DungeonModel>();
            RegisterModel<SelectEquipModel>();
            RegisterModel<RoleModel>();
            RegisterModel<RuneTowerModel>();
            RegisterModel<ElderGodAreaModel>();
            RegisterModel<PersonalBossModel>();
            RegisterModel<FairyModel>();
            RegisterModel<SkillModel>();
            RegisterModel<StoreModel>();
            RegisterModel<GetItemPathModel>();
            RegisterModel<RuneModel>();
            RegisterModel<GemModel>();
            RegisterModel<TreasureModel>();
            RegisterModel<DailyQuestModel>();
            RegisterModel<WashProModel>();
            RegisterModel<FairyLeagueModel>();
            RegisterModel<LoginModel>();
            RegisterModel<EquipWashModel>();
            RegisterModel<HeavenBattleModel>();
            RegisterModel<WingsRedDot>();
            RegisterModel<TeamModel>();
            RegisterModel<BossHomeModel>();
            RegisterModel<RealmModel>();
            RegisterModel<RankModel>();
            RegisterModel<MapModel>();
            RegisterModel<DungeonLiquidModel>();
            RegisterModel<FindPreciousModel>();
            RegisterModel<VipModel>();
            RegisterModel<BlastFurnaceModel>();
            RegisterModel<MarketModel>();
            RegisterModel<SignInModel>();
            RegisterModel<TitleModel>();
            RegisterModel<KingFairyModel>();
            RegisterModel<DemonJarModel>();
            RegisterModel<PlayerBuffDatas>();
            RegisterModel<PlayerPetDatas>();
            RegisterModel<PlayerMountDatas>();
            RegisterModel<TaiChiModel>();
            RegisterModel<PlayerStrengthengDatas>();
            RegisterModel<OffLineOnHookModel>();
            RegisterModel<RuneComposeModel>();
            RegisterModel<ItemOverdueModel>();
            RegisterModel<NewGuideModel>();
            RegisterModel<GuideMessageModel>();
            RegisterModel<StoryHintModel>();
            RegisterModel<GuideDialogueModel>();
            RegisterModel<ResourcesBackModel>();
            RegisterModel<PlayerPackModel>();
            RegisterModel<ItemTipsModel>();
            RegisterModel<PackModelInterface>();
            RegisterModel<ActivityModel>();
            RegisterModel<PlayerDeadModel>();
            RegisterModel<BetterEquipGetModel>();
            RegisterModel<PreciousItemGetModel>();
            RegisterModel<PlayerMainDate>();
            RegisterModel<StoryMissionsModel>();
            RegisterModel<PlayerFairyAuTreasureData>();
            RegisterModel<BoxGetItemModel>();
            RegisterModel<PlayerRedPacketDatas>();
            RegisterModel<GuardModel>();
            RegisterModel<PlayerMethodData>();
            RegisterModel<ItemUseModel>();
            RegisterModel<ImpactRankModel>();
            RegisterModel<InSevenDayModel>();
            RegisterModel<OnlineRewardsModel>();
            RegisterModel<LevelGiftModel>();
            RegisterModel<PlayerSuitModel>();
            RegisterModel<CapacityDelayModel>();
            RegisterModel<TreasureEffectModel>();
            RegisterModel<MonthlyInvestmentModel>();
            RegisterModel<VipInvestModel>();
            RegisterModel<ChatCenter>();
            RegisterModel<HappyXBModel>();
            RegisterModel<FairyJadeInvestmentModel>();
            RegisterModel<OSRedEnvelopeModel>();
            RegisterModel<RedEnvelopeModel>();
            RegisterModel<TreasureFindHostModel>();
            RegisterModel<OSGiftModel>();
            RegisterModel<OSTimeLimitGiftModel>();
            RegisterModel<FirstTimeRechargeModel>();
            RegisterModel<SetPrivateModel>();
            RegisterModel<RidingAndPetActivationModel>();
            RegisterModel<GMNotify>();
            RegisterModel<LoginAdModel>();
            RegisterModel<CoinTaskTipModel>();
            RegisterModel<BossRebornModel>();
            RegisterModel<NeedForWhiteModel>();
            RegisterModel<MultipleExpModel>();
            RegisterModel<ConsumeRebateModel>();
            RegisterModel<LimitedTimePackageItemClassModel>();
            RegisterModel<FlashSaleModel>();
            RegisterModel<FairylandCeremonyModel>();
            inited = true;
        }
        public T GetModel<T>() where T : Model, new()
        {
            T model = null;
            var token = typeof(T).MetadataToken;
            if (models.ContainsKey(token))
            {
                model = models[token] as T;
            }
            else
            {
                model = RegisterModel<T>();
            }
            return model;
        }
        T RegisterModel<T>() where T : Model, new()
        {
            T model = null;
            var token = typeof(T).MetadataToken;
            if (!models.ContainsKey(token))
            {
                model = new T();
                models[token] = model;
                model.Init();
            }
            return model;
        }
        void OnBeforePlayerDataInitialize()
        {
            foreach (var model in models.Values)
            {
                var beforePlayerDataInitialize = model as IBeforePlayerDataInitialize;
                if (beforePlayerDataInitialize != null)
                {
                    beforePlayerDataInitialize.OnBeforePlayerDataInitialize();
                }
            }
        }
        void OnAfterPlayerDataInitialize()
        {
            foreach (var model in models.Values)
            {
                var afterPlayerDataInitialize = model as IAfterPlayerDataInitialize;
                if (afterPlayerDataInitialize != null)
                {
                    afterPlayerDataInitialize.OnAfterPlayerDataInitialize();
                }
            }
        }
        void OnPlayerLoginOk()
        {
            foreach (var model in models.Values)
            {
                var playerLoginOk = model as IPlayerLoginOk;
                if (playerLoginOk != null)
                {
                    playerLoginOk.OnPlayerLoginOk();
                }
            }
        }
        void OnMapInitOk()
        {
            foreach (var model in models.Values)
            {
                var mapInitOk = model as IMapInitOk;
                if (mapInitOk != null)
                {
                    mapInitOk.OnMapInitOk();
                }
            }
        }
        void OnAccountSwitch()
        {
            foreach (var model in models.Values)
            {
                var switchAccount = model as ISwitchAccount;
                if (switchAccount != null)
                {
                    switchAccount.OnSwitchAccount();
                }
            }
        }
    }
}
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using System;
using Snxxz.UI;
namespace Snxxz.UI
{
    public abstract class Model
    {
        public Model()
        {
        }
        public abstract void Init(); //整个游戏生命周期只有一次
        public abstract void UnInit();//整个游戏生命周期最多有一次
    }
    /// <summary>
    /// 玩家数据初始化(0102)之前调用
    /// </summary>
    public interface IBeforePlayerDataInitialize
    {
        void OnBeforePlayerDataInitialize();
    }
    /// <summary>
    /// 玩家数据初始化(0102)之后调用
    /// </summary>
    public interface IAfterPlayerDataInitialize
    {
        void OnAfterPlayerDataInitialize();
    }
    /// <summary>
    /// 玩家登录流程全部ok调用
    /// </summary>
    public interface IPlayerLoginOk
    {
        void OnPlayerLoginOk();
    }
    public interface IMapInitOk
    {
        void OnMapInitOk();
    }
    public interface ISwitchAccount
    {
        void OnSwitchAccount();
    }
    public class ModelCenter : Singleton<ModelCenter>
    {
        bool inited = false;
        Dictionary<int, Model> models = new Dictionary<int, Model>();
        public ModelCenter()
        {
            DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent += OnBeforePlayerDataInitialize;
            DTC0102_tagCDBPlayer.switchAccountEvent += OnAccountSwitch;
            DTC0102_tagCDBPlayer.afterPlayerDataInitializeEvent += OnAfterPlayerDataInitialize;
            DTC0403_tagPlayerLoginLoadOK.playerLoginOkEvent += OnPlayerLoginOk;
            DTC0403_tagPlayerLoginLoadOK.mapInitOkEvent += OnMapInitOk;
        }
        public void Init()
        {
            if (inited)
            {
                return;
            }
            if (VersionConfig.Get().debugVersion)
            {
                RegisterModel<GMCmdModel>();
            }
            RegisterModel<UnionTaskModel>();
            RegisterModel<FriendsModel>();
            RegisterModel<RoleParticularModel>();
            RegisterModel<WorldBossModel>();
            RegisterModel<RolePromoteModel>();
            RegisterModel<HowToPlayModel>();
            RegisterModel<PrayerModel>();
            RegisterModel<ComposeWinModel>();
            RegisterModel<PKModel>();
            RegisterModel<AchievementModel>();
            RegisterModel<FairyBossModel>();
            RegisterModel<MagicianModel>();
            RegisterModel<DungeonModel>();
            RegisterModel<SelectEquipModel>();
            RegisterModel<RoleModel>();
            RegisterModel<RuneTowerModel>();
            RegisterModel<ElderGodAreaModel>();
            RegisterModel<PersonalBossModel>();
            RegisterModel<FairyModel>();
            RegisterModel<SkillModel>();
            RegisterModel<StoreModel>();
            RegisterModel<GetItemPathModel>();
            RegisterModel<RuneModel>();
            RegisterModel<GemModel>();
            RegisterModel<TreasureModel>();
            RegisterModel<DailyQuestModel>();
            RegisterModel<WashProModel>();
            RegisterModel<FairyLeagueModel>();
            RegisterModel<LoginModel>();
            RegisterModel<EquipWashModel>();
            RegisterModel<HeavenBattleModel>();
            RegisterModel<WingsRedDot>();
            RegisterModel<TeamModel>();
            RegisterModel<BossHomeModel>();
            RegisterModel<RealmModel>();
            RegisterModel<RankModel>();
            RegisterModel<MapModel>();
            RegisterModel<DungeonLiquidModel>();
            RegisterModel<FindPreciousModel>();
            RegisterModel<VipModel>();
            RegisterModel<BlastFurnaceModel>();
            RegisterModel<MarketModel>();
            RegisterModel<SignInModel>();
            RegisterModel<TitleModel>();
            RegisterModel<KingFairyModel>();
            RegisterModel<DemonJarModel>();
            RegisterModel<PlayerBuffDatas>();
            RegisterModel<PlayerPetDatas>();
            RegisterModel<PlayerMountDatas>();
            RegisterModel<TaiChiModel>();
            RegisterModel<PlayerStrengthengDatas>();
            RegisterModel<OffLineOnHookModel>();
            RegisterModel<RuneComposeModel>();
            RegisterModel<ItemOverdueModel>();
            RegisterModel<NewGuideModel>();
            RegisterModel<GuideMessageModel>();
            RegisterModel<StoryHintModel>();
            RegisterModel<GuideDialogueModel>();
            RegisterModel<ResourcesBackModel>();
            RegisterModel<PlayerPackModel>();
            RegisterModel<ItemTipsModel>();
            RegisterModel<PackModelInterface>();
            RegisterModel<ActivityModel>();
            RegisterModel<PlayerDeadModel>();
            RegisterModel<BetterEquipGetModel>();
            RegisterModel<RealmBetterEquipModel>();
            RegisterModel<PreciousItemGetModel>();
            RegisterModel<PlayerMainDate>();
            RegisterModel<StoryMissionsModel>();
            RegisterModel<PlayerFairyAuTreasureData>();
            RegisterModel<BoxGetItemModel>();
            RegisterModel<PlayerRedPacketDatas>();
            RegisterModel<GuardModel>();
            RegisterModel<PlayerMethodData>();
            RegisterModel<ItemUseModel>();
            RegisterModel<ImpactRankModel>();
            RegisterModel<InSevenDayModel>();
            RegisterModel<OnlineRewardsModel>();
            RegisterModel<LevelGiftModel>();
            RegisterModel<PlayerSuitModel>();
            RegisterModel<CapacityDelayModel>();
            RegisterModel<TreasureEffectModel>();
            RegisterModel<MonthlyInvestmentModel>();
            RegisterModel<VipInvestModel>();
            RegisterModel<ChatCenter>();
            RegisterModel<HappyXBModel>();
            RegisterModel<FairyJadeInvestmentModel>();
            RegisterModel<OSRedEnvelopeModel>();
            RegisterModel<RedEnvelopeModel>();
            RegisterModel<TreasureFindHostModel>();
            RegisterModel<OSGiftModel>();
            RegisterModel<OSTimeLimitGiftModel>();
            RegisterModel<FirstTimeRechargeModel>();
            RegisterModel<SetPrivateModel>();
            RegisterModel<RidingAndPetActivationModel>();
            RegisterModel<GMNotify>();
            RegisterModel<LoginAdModel>();
            RegisterModel<CoinTaskTipModel>();
            RegisterModel<BossRebornModel>();
            RegisterModel<NeedForWhiteModel>();
            RegisterModel<MultipleExpModel>();
            RegisterModel<ConsumeRebateModel>();
            RegisterModel<LimitedTimePackageItemClassModel>();
            RegisterModel<FlashSaleModel>();
            RegisterModel<FairylandCeremonyModel>();
            RegisterModel<TrialDungeonModel>();
            RegisterModel<ActivitiesPushMgr>();
            RegisterModel<MultipleRealmPointModel>();
            RegisterModel<DogzDungeonModel>();
            RegisterModel<DogzModel>();
            RegisterModel<TreasureSoulModel>();
            RegisterModel<FairyGrabBossModel>();
            inited = true;
        }
        public T GetModel<T>() where T : Model, new()
        {
            T model = null;
            var token = typeof(T).MetadataToken;
            if (models.ContainsKey(token))
            {
                model = models[token] as T;
            }
            else
            {
                model = RegisterModel<T>();
            }
            return model;
        }
        T RegisterModel<T>() where T : Model, new()
        {
            T model = null;
            var token = typeof(T).MetadataToken;
            if (!models.ContainsKey(token))
            {
                model = new T();
                models[token] = model;
                model.Init();
            }
            return model;
        }
        void OnBeforePlayerDataInitialize()
        {
            foreach (var model in models.Values)
            {
                var beforePlayerDataInitialize = model as IBeforePlayerDataInitialize;
                if (beforePlayerDataInitialize != null)
                {
                    beforePlayerDataInitialize.OnBeforePlayerDataInitialize();
                }
            }
        }
        void OnAfterPlayerDataInitialize()
        {
            foreach (var model in models.Values)
            {
                var afterPlayerDataInitialize = model as IAfterPlayerDataInitialize;
                if (afterPlayerDataInitialize != null)
                {
                    afterPlayerDataInitialize.OnAfterPlayerDataInitialize();
                }
            }
        }
        void OnPlayerLoginOk()
        {
            foreach (var model in models.Values)
            {
                var playerLoginOk = model as IPlayerLoginOk;
                if (playerLoginOk != null)
                {
                    playerLoginOk.OnPlayerLoginOk();
                }
            }
        }
        void OnMapInitOk()
        {
            foreach (var model in models.Values)
            {
                var mapInitOk = model as IMapInitOk;
                if (mapInitOk != null)
                {
                    mapInitOk.OnMapInitOk();
                }
            }
        }
        void OnAccountSwitch()
        {
            foreach (var model in models.Values)
            {
                var switchAccount = model as ISwitchAccount;
                if (switchAccount != null)
                {
                    switchAccount.OnSwitchAccount();
                }
            }
        }
    }
}