Esempio n. 1
0
    protected override void OnBecameVisible(bool oldState, bool forward)
    {
        moduleGlobal.ShowGlobalLayerDefault(-1, false);
        base.OnBecameVisible(oldState, forward);
        m_startLoad     = false;
        m_tweenComplete = false;
        m_tween.onComplete.AddListener(b =>
        {
            m_timeStamp     = Time.realtimeSinceStartup;
            m_tweenComplete = true;
            m_timer.gameObject.SetActive(true);
        });

        var matchInfo = Window.GetWindowParam <Window_FactionStart>().param1 as ScMatchInfo;

        if (matchInfo == null)
        {
            return;
        }
        ShowModels(matchInfo);
        var index = moduleFactionBattle.factionMatchInfo.infos.FindIndex(item => item.faction == (byte)Module_FactionBattle.Faction.Red);

        m_redEntry.BindData(matchInfo.infoList[index], moduleFactionBattle.factionMatchInfo.infos[index]);
        index = moduleFactionBattle.factionMatchInfo.infos.FindIndex(item => item.faction == (byte)Module_FactionBattle.Faction.Blue);
        m_blueEntry.BindData(matchInfo.infoList[index], moduleFactionBattle.factionMatchInfo.infos[index]);

        moduleHome.DispatchEvent(Module_Home.EventSwitchCameraMode, Event_.Pop(CameraShowType.Pvp));
    }
Esempio n. 2
0
    // 玩家模块总是最优先捕获游戏货币变化消息
    void _Packet_999(ScRoleInfo p)
    {
        p.role.CopyTo(ref m_roleInfo);

        m_proto             = m_roleInfo.roleProto;
        m_gender            = m_roleInfo.gender;
        m_coinCount         = m_roleInfo.coin;
        m_gemCount          = m_roleInfo.diamond;
        m_wishCoinCount     = m_roleInfo.wishCoin;
        m_petSummonStone    = m_roleInfo.summonStone;
        m_heartSoul         = m_roleInfo.mind;
        m_friendPoint       = m_roleInfo.friendShipPoint;
        m_classAvatar       = Creature.GetClassAvatarName(proto);
        m_unionContribution = m_roleInfo.unionContribution;

        GetSignBanSate();

        var oa = m_avatar;

        m_avatar = m_roleInfo.avatar;
        if (oa != m_avatar)
        {
            DispatchModuleEvent(EventAvatarChanged, oa, m_avatar);
            DispatchEvent(EventAvatarChanged, Event_.Pop(oa, m_avatar));  // Used for external listeners
        }

        moduleStory.OnRecvRoleInfo();
    }
Esempio n. 3
0
 /// <summary>
 ///     当摄像机开始远离时
 /// </summary>
 public void OnCameraStartFarAway()
 {
     starRoot?.SafeSetActive(false);
     RemoveListener();
     Module_Awake.instance?.DispatchEvent(Module_Awake.Event_StartFarAwayNode, Event_.Pop(npcId));
     animEffect.SafeSetActive(false);
 }
Esempio n. 4
0
    private void OnGMLockClass(Event_ e)
    {
        var nc = proto;

        var c = (int)e.param1;
        var i = (int)e.param2;

        var ci = c > 0 ? ConfigManager.Get <CreatureInfo>(c) : null;

        m_lockedClass  = ci ? ci.ID : m_proto;
        m_lockedGender = ci ? ci.gender : m_gender;

        var w = m_lockedClass == m_proto && i < 1 ? null : WeaponInfo.GetWeapon(m_lockedClass, i);

        if (w == null || w.isEmpty)
        {
            m_lockedElementType = m_elementType;
        }
        else
        {
            var a = ConfigManager.Get <WeaponAttribute>(w.weaponItemId);
            m_lockedElementType = a == null ? m_elementType : (CreatureElementTypes)a.elementType;
        }

        Logger.LogDetail("Lock class <b><color=#66EECC>[weapon:{0}, gender:{1}, weaponItem:{2}, elementType:{3}]</color></b>", proto, gender, w != null && !w.isEmpty ? w.weaponItemId : -1, elementType);

        DispatchEvent("OnPostGmLockClass", Event_.Pop(nc == proto));
    }
Esempio n. 5
0
    protected override void OnEnterState(int oldMask, BattleStates state)
    {
        if (state == BattleStates.Ended)
        {
            PlayerPrefs.SetInt("FinishTrain", 1);

            m_loadTime = Time.realtimeSinceStartup - m_loadTime;

            DispatchEvent(Events.LAUNCH_PROCESS, Event_.Pop(LaunchProcess.ShowLevelEnd, 1));
            DispatchEvent(Events.LAUNCH_PROCESS, Event_.Pop(LaunchProcess.ShowLevelTime, m_loadTime));

            moduleStory.workOffline = false;

            DelayEvents.Add(() =>
            {
                moduleGlobal.FadeIn(1.0f, 1, false, () =>
                {
                    Root.instance.StartCoroutine(WaitLoginLoaded());
                });
            }, 1.5f);

            return;
        }
        base.OnEnterState(oldMask, state);
    }
Esempio n. 6
0
    protected override void OnBecameVisible(bool oldState, bool forward)
    {
        moduleGlobal.ShowGlobalLayerDefault(1, false);

        HideOthers();
        if (modulePVP.opType == OpenWhichPvP.LolPvP)
        {
            moduleHome.DispatchEvent(Module_Home.EventSwitchCameraMode, Event_.Pop(CameraShowType.Rank));
        }
        else
        {
            moduleHome.DispatchEvent(Module_Home.EventSwitchCameraMode, Event_.Pop(CameraShowType.Pvp));
        }

        m_roleName.text = modulePlayer.roleInfo.roleName;
        m_level.text    = Util.Format("LV:{0}", modulePlayer.roleInfo.level);
        state           = State.Normal;

        switch (modulePVP.opType)
        {
        case OpenWhichPvP.FreePvP: SetFreePvpState(state, OpenWhichPvP.FreePvP); break;

        case OpenWhichPvP.LolPvP: moduleMatch.RepareRankData(); break;

        case OpenWhichPvP.FriendPvP: InvationISsend(); break;

        default: break;
        }
    }
Esempio n. 7
0
    private void SwitchShot(ref ShotState shotState, bool checkCut = true, bool forceCut = false)
    {
        var cut = forceCut || shotState.forceCut || checkCut && m_prevShot.blend.blendType == CameraBlendType.Cut;

        m_prevShot = shotState;

        if (m_shotInfo)
        {
            m_nextShot = m_shotInfo.GetSortedShotState(m_shotIndex);
        }
        if (m_nextShot.isEmpty)
        {
            m_nextShot = m_prevShot.time < 1.0f ? m_initEndState : m_prevShot;
        }

        if (!m_creature.isForward)
        {
            m_prevShot.Inverse();
            m_nextShot.Inverse();
        }

        euler  = m_prevShot.euler;
        offset = m_prevShot.offset;

        m_overrideSmooth = m_prevShot.overrideSmooth;

        m_camera.fieldOfView = m_prevShot.fieldOfView;

        m_currentShot.Set(offset, euler, m_prevShot.blend.blendType);

        removeCameraEdge = m_prevShot.removeCameraEdge;
        if (!removeCameraEdge)
        {
            m_forceRecalculateEdge = true;
        }

        if (Level.ShowHideSceneObjects(!m_prevShot.hideScene) && !m_prevShot.hideScene && m_drawMask < 1)
        {
            m_fading    = true;
            m_fadeStart = 1.0f;
            m_fadeEnd   = 0;
            m_fadeTime  = 0;

            m_overrideFadeDuration = CombatConfig.smaskFadeDuration;

            if (m_maskMaterial)
            {
                m_maskMaterial.SetColor(m_colorID, Color.black);
            }
        }

        if (cut)
        {
            UpdatePosition(false);
            UpdateRotation(false);
        }

        Root.instance.DispatchEvent(Events.CAMERA_SHOT_UI_STATE, Event_.Pop(m_prevShot.hideCombatUI, m_prevShot.maskAsset, m_prevShot.maskDuration));
    }
Esempio n. 8
0
    public void EnterState(BattleStates state)
    {
        var mask = ((int)state).ToMask();

        if (mask == stateMask)
        {
            return;
        }

        var old = stateMask;

        if (state > BattleStates.Ended)
        {
            m_stateMask |= mask;
        }
        else
        {
            if (m_ns > 0)
            {
                QuitState(m_ns);
            }
            m_stateMask |= mask;

            m_ns = state;
        }

        if ((old & mask) == 0)
        {
            #if DEVELOPMENT_BUILD || UNITY_EDITOR
            Logger.LogInfo("[{3}], Level [{0}] enter state [{1}] from mask {2}.", name, state, old, levelTime);
            #endif

            m_stateTimers[(int)state] = 0;
            OnEnterState(old, state);

            if (state == BattleStates.Prepare)
            {
                DispatchEvent(LevelEvents.PREPARE, Event_.Pop(prepareEffect));
            }
            if (state == BattleStates.Fighting)
            {
                DispatchEvent(LevelEvents.START_FIGHT);
            }
            if (state == BattleStates.Ended)
            {
                DispatchEvent(LevelEvents.BATTLE_END);
            }
            if (state == BattleStates.Watch)
            {
                DispatchEvent(LevelEvents.BATTLE_ENTER_WATCH_STATE, Event_.Pop(true));

                var target = GetWatchTarget(player);
                if (target != null)
                {
                    Camera_Combat.current.SetFollowTransform(target.transform);
                }
            }
        }
    }
Esempio n. 9
0
    protected override void OnBecameVisible(bool oldState, bool forward)
    {
        moduleGlobal.ShowGlobalLayerDefault();

        moduleHome.DispatchEvent(Module_Home.EventSwitchCameraMode, Event_.Pop(CameraShowType.Awake));

        Refresh();
    }
Esempio n. 10
0
    protected override void OnLoadStart()
    {
        base.OnLoadStart();
        Module_Story.instance.workOffline = true;

        m_loadTime = 0;

        DispatchEvent(Events.LAUNCH_PROCESS, Event_.Pop(LaunchProcess.ShowLevelStart, 1));
    }
Esempio n. 11
0
    public static void ReloadConfig(string configName)
    {
        var config = UnityEditor.AssetDatabase.LoadAssetAtPath <Config>("Assets/Data/" + configName + ".asset");

        if (!config)
        {
            return;
        }

        m_configs.Set(config.hash, config);

        var keys = new List <long>(m_items.Keys);

        foreach (var key in keys)
        {
            if (key >> 32 == config.hash)
            {
                m_items.Remove(key);
            }
        }

        var items = config.GetItemsBase();

        foreach (var item in items)
        {
            item.hash = config.hash;
            item.OnLoad();

            var index = (item.hash & 0xFFFFFFFF) << 32 | item.ID & 0xFFFFFFFF;
            var old   = m_items.Get(index);
            if (old)
            {
                Logger.LogError("ConfigManager: Duplicated item index in <b><color={4}>[{0}:{1}]</color>, oldSource:<color={4}>[{2}]</color>, newSource:<color={4}>[{3}]</color></b>, ignored.", config.name, item.ID, GetSource(old.___source), GetSource(item.___source), "#00DDFF");
            }
            else
            {
                m_items.Add(index, item);
            }
        }

        if (items.Count > 0)
        {
            items[0].InitializeOnce();
        }
        foreach (var item in items)
        {
            item.Initialize();
        }

        Logger.LogInfo("Config [{0}] reloaded!", configName);

        if (Root.instance)
        {
            Root.instance.DispatchEvent("EditorReloadConfig", Event_.Pop(configName));
        }
    }
Esempio n. 12
0
    protected double _SetField(CreatureFields index, double value)
    {
        var negative = false;

        var idx    = (int)index;
        var oldVal = m_fields[idx];

        switch (index)
        {
        case CreatureFields.MaxHealth:         maxHealth = (int)value;   return(maxHealth - oldVal);

        case CreatureFields.Health:            health = (int)value;   return(health - oldVal);

        case CreatureFields.MaxRage:           maxRage = value;        return(maxRage - oldVal);

        case CreatureFields.Rage:              rage = value;        return(rage - oldVal);

        case CreatureFields.AttackSpeed:       speedAttack = value;        return(speedAttack - oldVal);

        case CreatureFields.MoveSpeed:         speedRun = value;        return(speedRun - oldVal);

        case CreatureFields.ColliderHeight:    colliderHeight = value;        return(colliderHeight - oldVal);

        case CreatureFields.ColliderOffset:    colliderOffset = value;        return(colliderOffset - oldVal);

        case CreatureFields.ColliderSize:      colliderSize = value;        return(colliderSize - oldVal);

        case CreatureFields.HitColliderOffset: hitColliderOffset = value;        return(hitColliderOffset - oldVal);

        case CreatureFields.HitColliderSize:   hitColliderSize = value;        return(hitColliderSize - oldVal);

        case CreatureFields.RegenRageMul:
        case CreatureFields.RegenHealthMul:
        case CreatureFields.AttackRageMul:
        case CreatureFields.AttackedRageMul:
        case CreatureFields.DamageIncrease:
        case CreatureFields.DamageReduce:     negative = true; break;

        default: break;
        }

        if (negative && value < 0)
        {
            value = 0;
        }

        if (oldVal == value)
        {
            return(0);
        }
        m_fields[idx] = value;

        DispatchEvent(CreatureEvents.FIELD_CHANGED, Event_.Pop(index, oldVal, value));

        return(value - oldVal);
    }
Esempio n. 13
0
    protected override void OnHide(bool forward)
    {
        moduleHome.DispatchEvent(Module_Home.EventSwitchCameraMode, Event_.Pop(CameraShowType.Home));

        if (awakeHandle)
        {
            awakeHandle.Destroy();
        }
        awakeHandle = null;
    }
Esempio n. 14
0
    private void OnApplicationPause(bool pauseStatus)
    {
        if (m_appPaused == pauseStatus)
        {
            return;
        }
        m_appPaused = pauseStatus;

        DispatchEvent(Events.APPLICATION_PAUSE_CHANGED, Event_.Pop(m_appPaused));
    }
Esempio n. 15
0
    private void OnApplicationFocus(bool focus)
    {
        if (m_appFocused == focus)
        {
            return;
        }
        m_appFocused = focus;

        DispatchEvent(Events.APPLICATION_FOCUS_CHANGED, Event_.Pop(m_appFocused));
    }
Esempio n. 16
0
    private void InitBuffIcon()
    {
        ClearBuffIcon();
        var buffs = m_creature.GetBuffList();

        foreach (var buff in buffs)
        {
            OnBuffCreate(Event_.Pop(buff));
        }
    }
Esempio n. 17
0
    public override void EnterState()
    {
        //服务器标记该任务真实完成
        Module_Task.instance.DispatchEvent(Module_Task.EventTaskFinishMessage, Event_.Pop(m_task.taskID, m_task));
#if GUIDE_LOG
        Logger.LogInfo("约会任务ID:{0}当前状态:{1}", m_task.taskID, m_taskState);
#endif
        Module_Guide.RemoveCondition(new NpcDatingCondition(m_task.taskID, false));
        Module_Guide.AddCondition(new NpcDatingCondition(m_task.taskID, true));
    }
Esempio n. 18
0
    private void UpdateMoveState(bool _moving)
    {
        if (m_moving == _moving)
        {
            return;
        }
        m_moving = _moving;

        Root.instance?.DispatchEvent(Events.COMBAT_CAMERA_MOVE_CHANGE, Event_.Pop(m_moving));
    }
 private void onToggleOn(Toggle rToggle)
 {
     foreach (var kv in _npcDict)
     {
         if (kv.Value == rToggle)
         {
             moduleNpc.DispatchEvent(Module_Npc.FocusNpcEvent, Event_.Pop(kv.Key));
         }
     }
 }
Esempio n. 20
0
    public override void EnterState()
    {
        //任务接成功了
#if GUIDE_LOG
        Logger.LogInfo("NPCID:{0}约会任务ID:{1}当前状态:{2}", (int)m_task.taskTargetID, m_task.taskID, m_taskState);
#endif
        Module_Guide.AddCondition(new NpcDatingCondition(m_task.taskID, false));
        Module_Guide.CheckTriggerGuide();
        Module_Task.instance.DispatchEvent(Module_Task.EventTaskBeginMessgage, Event_.Pop(m_task.taskID, m_task));

        m_taskSM.ChangeState("Run");
    }
Esempio n. 21
0
    private void CheckCamera_RealTimeMode()
    {
        if (!m_valid)
        {
            return;
        }

        if (!m_camera)
        {
            m_camera = m_isMainCamera ? Camera.main : Util.FindActivedCamera(m_cameraName);
            if (!m_camera)
            {
                return;
            }
            if (!m_camera.enabled)
            {
                m_camera.enabled = true;
            }

            m_cameraMask          = m_camera.cullingMask;
            m_camera.cullingMask &= ~m_excludeMask;

            m_dof = -1;
            var b = m_camera.GetComponent <UnityEngine.PostProcessing.PostProcessingBehaviour>();
            if (b && b.profile)
            {
                m_dof = b.profile.depthOfField.enabled ? 1 : 0;
                b.profile.depthOfField.enabled = false;
            }

            m_camera.rect = new Rect(0, 0, 1, 1);

            s_refs++;
            if (string.IsNullOrEmpty(sceneName))
            {
                Module_Home.instance.DispatchEvent(Module_Home.EventSetTexture, Event_.Pop(0, bg));
            }
            else
            {
                Module_Home.instance.DispatchEvent(Module_Home.EventSetScene, Event_.Pop(sceneName, true));
            }

            for (var i = 0; i < bg?.Length; i++)
            {
                bg[i].SafeSetActive(false);
            }
        }

        SetRenderTexture_RealTimeMode();
    }
Esempio n. 22
0
    protected override void OnDestroy()
    {
        base.OnDestroy();
        DispatchEvent(FOLLOW_EFFECT_DESTORY, Event_.Pop(conditionValue));

        FightRecordManager.RecordLog <LogEmpty>(log =>
        {
            log.tag = (byte)TagType.FollowEffectDestory;
        });

#if AI_LOG
        Module_AI.LogBattleMsg(source, "FollowTargetEffect[logId: {0}] destoryed with pos {0}", logId, position_);
#endif
    }
Esempio n. 23
0
    public Creature CreateNpc(int npcInfoId, Vector3 pos, Vector3 rot, Transform node, string name = "")
    {
        var npcInfo = ConfigManager.Get <NpcInfo>(npcInfoId);

        if (npcInfo == null)
        {
            return(null);
        }
        var i = ConfigManager.Get <CreatureInfo>(CREATURE_TEMPLATE).Clone <CreatureInfo>();

        i.models          = new string[] { npcInfo.mode };
        i.weaponID        = npcInfo.stateMachine;
        i.weaponItemID    = 0;
        i.offWeaponItemID = 0;
        i.gender          = 0;

        var npc = Creature.Create(i, pos, false, name, name);

        if (!npc)
        {
            return(null);
        }

        npc.transform.localEulerAngles = rot;

        var wt = npc.transform.Find("model/weapon");

        if (wt)
        {
            wt.gameObject.SetActive(false);
        }

        if (npcInfo.type == 1)
        {
            var _npc = moduleNpc.GetTargetNpc((NpcTypeID)npcInfoId);
            if (_npc != null)
            {
                CharacterEquip.ChangeNpcFashion(npc, _npc.mode);
                _npc.UpdateCurCreature(npc);
            }
        }
        Util.AddChild(node, npc.transform, true);

        DispatchEvent(EventLoadNpc, Event_.Pop(npc));

        return(npc);
    }
Esempio n. 24
0
    protected override void OnBecameVisible(bool oldState, bool forward)
    {
        //从服务器获取界面数据
        moduleNPCDating.SendOpenDatingWindow();

        moduleGlobal.ShowGlobalLayerDefault(1, false);

        Init();

        moduleNPCDating.SetCurDatingScene(EnumNPCDatingSceneType.DatingHall);

        if (m_levelHome.datingScence.GetComponentDefault <DatingMapCtrl>() == null)
        {
            m_levelHome.datingScence.gameObject.AddComponent <DatingMapCtrl>();
        }
        moduleHome.DispatchEvent(Module_Home.EventSwitchCameraMode, Event_.Pop(CameraShowType.Dating));
    }
Esempio n. 25
0
    private void UpdateCameraConfig_RealTimeMode()
    {
        if (!m_setCamera || !m_camera)
        {
            return;
        }

        m_camera.transform.localPosition    = m_cameraPosition;
        m_camera.transform.localEulerAngles = m_cameraRotation;
        m_camera.fieldOfView   = m_fov;
        m_camera.targetTexture = null;

        if (string.IsNullOrWhiteSpace(sceneName))
        {
            Module_Home.instance.DispatchEvent(Module_Home.EventUpdateMesh, Event_.Pop(0, m_camera));
        }
    }
Esempio n. 26
0
    private void RemoveInstance()
    {
        if (!m_camera)
        {
            return;
        }

        RemoveInstance(m_camera, GetInstanceID());

//        Logger.LogError(Util.GetHierarchy(gameObject));

        if (realTime)
        {
            s_refs--;
            if (string.IsNullOrEmpty(sceneName))
            {
                Module_Home.instance.DispatchEvent(Module_Home.EventSetTexture, Event_.Pop(0));
            }
            else
            {
                Module_Home.instance.DispatchEvent(Module_Home.EventSetScene, Event_.Pop(sceneName, false));
            }
        }

        if (m_cameraMask != 0 && camera.targetTexture == null && s_refs == 0)
        {
            m_camera.cullingMask = m_cameraMask;
        }
        m_cameraMask = 0;

        if (m_dof != -1 && camera.targetTexture == null)
        {
            var b = m_camera.GetComponent <UnityEngine.PostProcessing.PostProcessingBehaviour>();
            var p = b?.profile ?? null;
            if (p)
            {
                p.depthOfField.enabled = m_dof == 1;
            }
        }
        m_dof = -1;

        m_camera = null;

        m_image.texture = null;
        m_image.enabled = false;
    }
Esempio n. 27
0
    private void HideOthers()
    {
        var level = Level.current as Level_Home;

        if (level == null)
        {
            return;
        }
        if (!level.master)
        {
            level.rankCamera.cullingMask &= ~(Layers.MASK_MODEL | Layers.MASK_WEAPON | Layers.MASK_JEWELRY);
            level.pvpCamera.cullingMask  &= ~(Layers.MASK_MODEL | Layers.MASK_WEAPON | Layers.MASK_JEWELRY);
            return;
        }

        List <string> excludes = new List <string>();

        excludes.Add(Module_Home.FIGHTING_PET_OBJECT_NAME);
        excludes.Add(Module_Home.PLAYER_OBJECT_NAME);
        if (enemy != null)
        {
            excludes.Add(enemy.uiName);
        }
        if (enemyPet != null)
        {
            excludes.Add(enemyPet.uiName);
        }

        var info = ConfigManager.Get <ShowCreatureInfo>(11);

        ShowCreatureInfo.SizeAndPos size = null;
        if (info != null)
        {
            for (int i = 0; i < info.forData.Length; i++)
            {
                if (info.forData[i].index == modulePlayer.proto)
                {
                    size = info.forData[i].data[0];
                    break;
                }
            }
        }

        moduleHome.DispatchEvent(Module_Home.EventSetMasterPosition, Event_.Pop(size));
        moduleHome.HideOthersBut(excludes.ToArray());
    }
Esempio n. 28
0
    /// <summary>
    ///     当摄像机靠近时触发
    /// </summary>
    public void OnCameraCloseTo()
    {
        var watcher = TimeWatcher.Watch("OnCameraCloseTo");

        watcher.See("lineGray");
        RefreshStarState();
        watcher.See("RefreshStarState");
        starRoot?.SafeSetActive(true);
        AddListener();

        Module_Awake.instance?.DispatchEvent(Module_Awake.Event_CloseToNode, Event_.Pop(npcId));
        watcher.See("Event_CloseToNode");
        watcher.Stop();
        watcher.UnWatch();

        animEffect.SafeSetActive(true);
    }
Esempio n. 29
0
 private void ResponseSkillOpen(ScAwakeSkillOpen msg)
 {
     if (msg == null)
     {
         return;
     }
     if (msg.result != 0)
     {
         moduleGlobal.ShowMessage(9801, msg.result);
         return;
     }
     AudioManager.PlaySound(AudioInLogicInfo.audioConst.clickToSucc);
     awakeHandle.DispatchEvent(AwakeHandle.FocusPointChange, Event_.Pop(msg.lastAwakeSkill));
     if (_skillAwake.isInit)
     {
         _skillAwake.Refresh();
     }
 }
Esempio n. 30
0
    private void MarkScene(List <Task> tasks = null)
    {
        var listSceneIds = new List <int>();

        if (tasks != null)
        {
            for (int i = 0; i < tasks.Count; i++)
            {
                if (tasks[i].taskState == EnumTaskState.Begin || tasks[i].taskState == EnumTaskState.Runing)
                {
                    var tmpList = new List <int>(tasks[i].taskBelongScene);
                    listSceneIds.AddRange(tmpList);
                }
            }
            listSceneIds.Distinct();
        }

        moduleNPCDating.DispatchEvent(Module_NPCDating.EventNotifyDatingMapObject, Event_.Pop(EnumDatingNotifyType.RefreshRedDot, listSceneIds));
    }