/// <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 { } }
private void ActiveCollider(INoticeBase <int> param) { if (param.Name == m_ActiveColliderNoticeName && param is IParamNotice <bool> ) { m_IsNotificational = (param as IParamNotice <bool>).ParamValue; } }
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 { } }
/// <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); }
private void OnSceneUpdateReady(INoticeBase <int> time) { ShipDockConsts.NOTICE_SCENE_UPDATE_READY.Remove(OnSceneUpdateReady); IsSceneUpdateReady = true; SceneUpdaterReady?.Invoke(); }
private void OnPlayerCardGenerateDecorate(int noticeName, INoticeBase <int> param) { CardNotice notice = param as CardNotice; notice.heroControllerFrom = mHeroNotice.heroController; mHeroNotice.ToPool(); }
private void OnApplicationClose(INoticeBase <int> obj) { IsKingClientInfo clientInfo = mLocalClient.ClientInfo; Heros.SyncHerosToClient(ref clientInfo); Save(); }
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);
private void OnEnemyBattleInfoEventHandler(INoticeBase <int> param) { switch (param.Name) { case Consts.N_INTELLIGENTAL_FINISHED: DataNotify(Consts.DN_ENEMY_INTELLIGENTAL_FINISHED); break; } }
private void NoticeHandler(INoticeBase <int> param) { if (param != default) { Dispatch(param); } else { } }
private void OnPlayBGM(INoticeBase <int> param) { if (param is IParamNotice <string> soundNotice) { Sounds.PlayBGM(soundNotice.ParamValue); } else { } }
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; } }
private void OnRemoveSounds(INoticeBase <int> param) { if (param is IParamNotice <int> soundNotice) { Sounds.RemoveSound(soundNotice.ParamValue); } else { } }
private void OnAIPlayerAICommit(INoticeBase <int> param) { Debug.Log("OnAIPlayerAICommit"); mPlayerIntoBattleRatio.Execute(); mHeroNotice = param as HeroNotice; mHeroNotice.id = mPlayerIntoBattleRatio.HeroID; mHeroNotice.heroController = mPlayerIntoBattleRatio.Hero; }
private void OnUIReady(INoticeBase <int> param) { int id = gameObject.GetInstanceID(); id.Remove(OnUIReady); IParamNotice <MonoBehaviour> notice = param as IParamNotice <MonoBehaviour>; notice.ParamValue = this; }
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); }
private void OnStopSound(INoticeBase <int> param) { if (param is IParamNotice <string> soundNotice) { Sounds.StopSound(soundNotice.ParamValue); } else { } }
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; } }
private void OnAddCallLate(INoticeBase <int> param) { if (IsDisposed) { return; } ParamNotice <Action <int> > notice = param as ParamNotice <Action <int> >; mTicksLater.CallLater(notice.ParamValue); }
private void OnPlayerCardGenerateListener(INoticeBase <int> param) { Debug.Log("OnPlayerCardGenerateListener 1"); CardNotice notice = param as CardNotice; BattleHeroController heroController = notice.heroControllerFrom; //heroController. //TODO 根据将领能力生成手牌 notice.ToPool(); }
private void OnAddSounds(INoticeBase <int> param) { if (param is IParamNotice <List <SoundItem> > soundNotice) { Sounds.SetPlayList(soundNotice.ParamValue.ToArray()); soundNotice.ParamValue.Clear(); } else { } }
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; } }
public void NotifyModularAndRelease(int noticeName, INoticeBase <int> param = default, bool isRelease = true) { INotice notice = NotifyModular(noticeName, param) as INotice; if (isRelease) { notice?.ToPool(); } else { } }
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 }
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(); }
/// <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; }
/// <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 { } }
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(); } }
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; } }
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); } }