コード例 #1
0
    /// <summary>
    /// 派发观察者消息
    /// </summary>
    /// <param name="target"></param>
    /// <param name="noticeName"></param>
    /// <param name="notice"></param>
    public static void Dispatch(this INotificationSender target, int noticeName, INoticeBase <int> notice = default)
    {
        bool defaultNotice = notice == default;

        if (defaultNotice)
        {
            notice = Pooling <Notice> .From();
        }
        else
        {
        }

        notice.SetNoticeName(noticeName);
        notice.NotifcationSender = target;

        NotificatonsInt.Instance.Notificater.Dispatch(notice);

        if (defaultNotice)
        {
            Pooling <Notice> .To(notice as Notice);
        }
        else
        {
        }
    }
コード例 #2
0
 private void ActiveCollider(INoticeBase <int> param)
 {
     if (param.Name == m_ActiveColliderNoticeName && param is IParamNotice <bool> )
     {
         m_IsNotificational = (param as IParamNotice <bool>).ParamValue;
     }
 }
コード例 #3
0
        private void SendLoadedNotice()
        {
            if (m_LoadedNoticeInfo.IsSendIDAsNotice && !m_LoadedNoticeInfo.IsReadyNoticeSend)
            {
                if (m_LoadedNoticeInfo.ApplyDefaultNoticeType)
                {
                    mIDAsNotice = Pooling <Notice> .From();
                }
                else
                {
                    ApplyCustomNotice();
                }

                if (m_LoadedNoticeInfo.ApplyCallLate)
                {
                    UpdaterNotice.SceneCallLater(SendLoadedNoticeAndRelease);
                }
                else
                {
                    SendLoadedNoticeAndRelease(0);
                }
            }
            else
            {
            }
        }
コード例 #4
0
        /// <summary>
        /// 发送模块消息
        /// </summary>
        /// <param name="noticeName">消息名</param>
        /// <param name="param">消息体对象,如不为空,则不调用对应的生成器函数</param>
        /// <returns></returns>
        public INoticeBase <int> NotifyModular(int noticeName, INoticeBase <int> param = default)
        {
            BeforeNotifyModular(noticeName, ref param, out INoticeBase <int> notice);
            DuringNotifyModular(noticeName, ref notice);

            return(notice);
        }
コード例 #5
0
ファイル: ShipDockApp.cs プロジェクト: firefishes/ShipDock
        private void OnSceneUpdateReady(INoticeBase <int> time)
        {
            ShipDockConsts.NOTICE_SCENE_UPDATE_READY.Remove(OnSceneUpdateReady);

            IsSceneUpdateReady = true;
            SceneUpdaterReady?.Invoke();
        }
コード例 #6
0
        private void OnPlayerCardGenerateDecorate(int noticeName, INoticeBase <int> param)
        {
            CardNotice notice = param as CardNotice;

            notice.heroControllerFrom = mHeroNotice.heroController;
            mHeroNotice.ToPool();
        }
コード例 #7
0
ファイル: PlayerData.cs プロジェクト: firefishes/ShipDock
        private void OnApplicationClose(INoticeBase <int> obj)
        {
            IsKingClientInfo clientInfo = mLocalClient.ClientInfo;

            Heros.SyncHerosToClient(ref clientInfo);

            Save();
        }
コード例 #8
0
        private void OnStartBattle(INoticeBase <int> obj)
        {
            Consts.D_BATTLE.GetData <BattleData>().StartBattle();

            AssetBundles abs = ShipDockApp.Instance.ABs;
            GameObject   map = abs.GetAndQuote <GameObject>("is_king_map/mission_1", "Map", out AssetQuoteder quoteder);

            Consts.UIM_BATTLE.LoadAndOpenUI <UIBattleModular>(default, Consts.AB_UI_BATTLE);
コード例 #9
0
ファイル: BattleData.cs プロジェクト: firefishes/ShipDock
 private void OnEnemyBattleInfoEventHandler(INoticeBase <int> param)
 {
     switch (param.Name)
     {
     case Consts.N_INTELLIGENTAL_FINISHED:
         DataNotify(Consts.DN_ENEMY_INTELLIGENTAL_FINISHED);
         break;
     }
 }
コード例 #10
0
 private void NoticeHandler(INoticeBase <int> param)
 {
     if (param != default)
     {
         Dispatch(param);
     }
     else
     {
     }
 }
コード例 #11
0
ファイル: HotFixClient.cs プロジェクト: firefishes/ShipDock
 private void OnPlayBGM(INoticeBase <int> param)
 {
     if (param is IParamNotice <string> soundNotice)
     {
         Sounds.PlayBGM(soundNotice.ParamValue);
     }
     else
     {
     }
 }
コード例 #12
0
 protected override void UIModularHandler(INoticeBase <int> param)
 {
     switch (param.Name)
     {
     case N_UI_BATTLE_GRID_OPERATING:
         int operateType = (param as IParamNotice <int>).ParamValue;
         mEliminateData.SetOperatingGrid(operateType);
         break;
     }
 }
コード例 #13
0
ファイル: HotFixClient.cs プロジェクト: firefishes/ShipDock
 private void OnRemoveSounds(INoticeBase <int> param)
 {
     if (param is IParamNotice <int> soundNotice)
     {
         Sounds.RemoveSound(soundNotice.ParamValue);
     }
     else
     {
     }
 }
コード例 #14
0
        private void OnAIPlayerAICommit(INoticeBase <int> param)
        {
            Debug.Log("OnAIPlayerAICommit");

            mPlayerIntoBattleRatio.Execute();

            mHeroNotice                = param as HeroNotice;
            mHeroNotice.id             = mPlayerIntoBattleRatio.HeroID;
            mHeroNotice.heroController = mPlayerIntoBattleRatio.Hero;
        }
コード例 #15
0
        private void OnUIReady(INoticeBase <int> param)
        {
            int id = gameObject.GetInstanceID();

            id.Remove(OnUIReady);

            IParamNotice <MonoBehaviour> notice = param as IParamNotice <MonoBehaviour>;

            notice.ParamValue = this;
        }
コード例 #16
0
        private void OnSetGeneralIntoBattleRatio(INoticeBase <int> param)
        {
            Debug.Log("OnSetGeneralIntoBattleRatio 1");

            BattleData battleData = GetGameData <BattleData>(Consts.D_BATTLE);

            AIRatioNotice notice = param as AIRatioNotice;

            notice.Heros = battleData.GetIdleBattleHeros(notice.camp);
        }
コード例 #17
0
ファイル: HotFixClient.cs プロジェクト: firefishes/ShipDock
 private void OnStopSound(INoticeBase <int> param)
 {
     if (param is IParamNotice <string> soundNotice)
     {
         Sounds.StopSound(soundNotice.ParamValue);
     }
     else
     {
     }
 }
コード例 #18
0
        override protected void OnRoleNotices(INoticeBase <int> obj)
        {
            IParamNotice <int> notice = obj as IParamNotice <int>;

            switch (notice.ParamValue)
            {
            case FWConsts.NOTICE_PLAYER_ROLE_CHOOSEN:
                FWConsts.SERVER_FW_LENS.DeliveParam <FWCamerasServer, FWRoleComponent>("SetChoosenPlayer", "PlayerRoleChoosen", OnRoleChoosen);
                break;
            }
        }
コード例 #19
0
        private void OnAddCallLate(INoticeBase <int> param)
        {
            if (IsDisposed)
            {
                return;
            }

            ParamNotice <Action <int> > notice = param as ParamNotice <Action <int> >;

            mTicksLater.CallLater(notice.ParamValue);
        }
コード例 #20
0
        private void OnPlayerCardGenerateListener(INoticeBase <int> param)
        {
            Debug.Log("OnPlayerCardGenerateListener 1");
            CardNotice           notice         = param as CardNotice;
            BattleHeroController heroController = notice.heroControllerFrom;

            //heroController.
            //TODO 根据将领能力生成手牌

            notice.ToPool();
        }
コード例 #21
0
ファイル: HotFixClient.cs プロジェクト: firefishes/ShipDock
 private void OnAddSounds(INoticeBase <int> param)
 {
     if (param is IParamNotice <List <SoundItem> > soundNotice)
     {
         Sounds.SetPlayList(soundNotice.ParamValue.ToArray());
         soundNotice.ParamValue.Clear();
     }
     else
     {
     }
 }
コード例 #22
0
ファイル: BattleTroops.cs プロジェクト: firefishes/ShipDock
        protected override void OnUIHandler(INoticeBase <int> param)
        {
            base.OnUIHandler(param);

            switch (param.Name)
            {
            case UIBattleModular.UI_UPDATE_TROOPS:
                mTarget = (param as IParamNotice <Vector2Int>).ParamValue;
                break;
            }
        }
コード例 #23
0
        public void NotifyModularAndRelease(int noticeName, INoticeBase <int> param = default, bool isRelease = true)
        {
            INotice notice = NotifyModular(noticeName, param) as INotice;

            if (isRelease)
            {
                notice?.ToPool();
            }
            else
            {
            }
        }
コード例 #24
0
        private void BeforeNotifyModular(int noticeName, ref INoticeBase <int> param, out INoticeBase <int> notice)
        {
            CreatorHandler creater      = mCreators.GetHandler(noticeName);
            bool           applyCreater = param == default;

            notice = applyCreater ? creater?.Invoke(noticeName) : param;//调用消息体对象生成器函数

#if LOG_MODULARS
            "error".Log(param == default && creater == default, "Notice creater is null..".Append(" notice = ", noticeName.ToString()));
            "warning".Log(notice == default, "Brocast notice is null..".Append(" notice = ", noticeName.ToString()));
            "warning".Log(!mNoticeDecorator.ContainsKey(noticeName), string.Format("Notice {0} decorator is empty..", noticeName));
#endif
        }
コード例 #25
0
        private void OnAIChoosePlayerCardHero(INoticeBase <int> param)
        {
            Debug.Log("OnAIChoosePlayerCardHero 1");
            HeroNotice notice = param as HeroNotice;

            AIRatioNotice AIRatioNotice = Pooling <AIRatioNotice> .From();

            AIRatioNotice.camp = notice.camp;
            NotifyModular(Consts.N_SET_GENERAL_INTO_BATTLE_RATIO, AIRatioNotice);
            NotifyModular(Consts.N_COMMIT_PLAYER_AI, notice);

            AIRatioNotice.ToPool();
        }
コード例 #26
0
 /// <summary>移除一个需要刷帧的对象</summary>
 protected virtual void RemoveUpdate(INoticeBase <int> param)
 {
     mNoticeRemoved = param as UpdaterNotice;
     if (mNoticeRemoved != null ||
         mNoticeRemoved.ParamValue == null ||
         (mNoticeAdded.NotifcationSender != null && !mNoticeAdded.CheckSender(this)))
     {
         return;
     }
     mItemRemoved = mNoticeRemoved.ParamValue;
     RemoveUpdaterItem(0);
     mNoticeRemoved = null;
 }
コード例 #27
0
ファイル: UI.cs プロジェクト: firefishes/ShipDock
        /// <summary>
        /// UI 就绪的消息处理函数
        /// </summary>
        /// <param name="param"></param>
        private void OnUIReady(INoticeBase <int> param)
        {
            mInstanceID.Remove(OnUIReady);

            IParamNotice <MonoBehaviour> notice = param as IParamNotice <MonoBehaviour>;

            if (notice != default)
            {
                notice.ParamValue = GetUIReadyParam();
            }
            else
            {
            }
        }
コード例 #28
0
    public static void Broadcast(this int noticeName, INoticeBase <int> notice = default)
    {
        bool defaultNotice = notice == default;

        if (defaultNotice)
        {
            notice = new Notice();
        }
        notice.SetNoticeName(noticeName);
        ShipDockApp.Instance.Notificater?.Broadcast(notice);
        if (defaultNotice)
        {
            notice.Dispose();
        }
    }
コード例 #29
0
ファイル: BattleData.cs プロジェクト: firefishes/ShipDock
        private void OnPlayerBattleInfoEventHandler(INoticeBase <int> param)
        {
            switch (param.Name)
            {
            case Consts.N_INTELLIGENTAL_UPDATE:
                DataNotify(Consts.DN_PLAYER_INTELLIGENTAL_UPDATE);
                break;

            case Consts.N_INTELLIGENTAL_FINISHED:
                DataNotify(Consts.DN_PLAYER_INTELLIGENTAL_FINISHED);
                BattleCamp camp = GetCamp(Consts.CAMP_PLAYER);
                camp.BattleInfoController.ResetFinishCycleFlag();
                break;
            }
        }
コード例 #30
0
        private void OnRemoveItem(INoticeBase <int> param)
        {
            if (IsDisposed)
            {
                return;
            }

            UpdaterNotice notice = param as UpdaterNotice;
            IUpdate       target = notice.ParamValue;

            if (!mDeleted.Contains(target))
            {
                mDeleted.Add(target);
            }
        }