Ejemplo n.º 1
0
        //===================================================================
        //野外分线相关处理
        //===================================================================
        internal void RequestSceneRoomInfo(ulong guid)
        {
            UserProcessScheduler dataProcess = LobbyServer.Instance.UserProcessScheduler;
            UserInfo             user        = dataProcess.GetUserInfo(guid);

            if (null != user)
            {
                if (user.CurrentState == UserState.Room)
                {
                    RoomInfo room = user.Room;
                    if (null != room)
                    {
                        SceneRoomInfo info = m_LobbyInfo.GetSceneRoomInfo(room.SceneType, room.RoomId);
                        if (null != info)
                        {
                            string            chapterName;
                            TableConfig.Level cfg = TableConfig.LevelProvider.Instance.GetLevel(info.m_SceneId);
                            if (null != cfg)
                            {
                                chapterName = "unknown";
                            }
                            else
                            {
                                chapterName = "unknown";
                            }
                            LobbyServer.Instance.SendStoryMessage(user, "onroominfo", info.m_RoomIndex, info.m_UserCount, info.m_TotalUserCount, info.m_RoomId, info.m_SceneId, chapterName);
                        }
                    }
                }
            }
        }
 public void PreloadSceneStories()
 {
     TableConfig.Level cfg = TableConfig.LevelProvider.Instance.GetLevel(m_Scene.SceneResId);
     if (null != cfg)
     {
         string[] filePath;
         int      ct1 = cfg.SceneDslFile.Count;
         int      ct2 = cfg.RoomDslFile.Count;
         filePath = new string[ct1 + ct2];
         for (int i = 0; i < ct1; i++)
         {
             filePath[i] = HomePath.GetAbsolutePath(FilePathDefine_Server.C_DslPath + cfg.SceneDslFile[i]);
         }
         for (int i = 0; i < ct2; i++)
         {
             filePath[ct1 + i] = HomePath.GetAbsolutePath(FilePathDefine_Server.C_DslPath + cfg.RoomDslFile[i]);
         }
         StoryConfigManager.Instance.LoadStories(m_Scene.SceneResId, string.Empty, filePath);
         Dictionary <string, StoryInstance> stories = StoryConfigManager.Instance.GetStories(m_Scene.SceneResId);
         if (null != stories)
         {
             foreach (KeyValuePair <string, StoryInstance> pair in stories)
             {
                 AddStoryInstance(pair.Key, pair.Value.Clone());
             }
         }
     }
 }
Ejemplo n.º 3
0
        public void OnSceneLoaded(TableConfig.Level lvl)
        {
            m_SceneId = lvl.id;
            GfxStorySystem.Instance.SceneId = m_SceneId;
            Preload();

            if (lvl.type == (int)SceneTypeEnum.MainUi)
            {
                m_LastMainUiSceneId = m_SceneId;
                Utility.SendMessage("GameRoot", "OnLoadMainUiComplete", lvl.id);
            }
            else if (lvl.type == (int)SceneTypeEnum.Story)
            {
                Utility.SendMessage("GameRoot", "OnLoadBattleComplete", lvl.id);
            }
            else if (lvl.type == (int)SceneTypeEnum.Room)
            {
                Utility.SendMessage("GameRoot", "OnLoadBattleComplete", lvl.id);

                GameFrameworkMessage.Msg_CR_Enter build = new GameFrameworkMessage.Msg_CR_Enter();
                NetworkSystem.Instance.SendMessage(RoomMessageDefine.Msg_CR_Enter, build);
                LogSystem.Warn("send Msg_CR_Enter to roomserver");
            }
            m_IsSceneLoaded = true;
        }
        private bool IsPveScene(int sceneId)
        {
            bool ret = false;

            TableConfig.Level cfg = TableConfig.LevelProvider.Instance.GetLevel(sceneId);
            if (null != cfg && (int)SceneTypeEnum.Story == cfg.type)
            {
                ret = true;
            }
            return(ret);
        }
Ejemplo n.º 5
0
 internal void DelayChangeScene(int levelId)
 {
     TableConfig.Level cfg = TableConfig.LevelProvider.Instance.GetLevel(levelId);
     if (null != cfg && cfg.type == (int)SceneTypeEnum.Room)
     {
         UserNetworkSystem.Instance.EnterScene(levelId, 0);
     }
     else
     {
         QueueAction(ChangeScene, levelId);
     }
 }
 static public int get_id(IntPtr l)
 {
     try {
         TableConfig.Level self = (TableConfig.Level)checkSelf(l);
         pushValue(l, true);
         pushValue(l, self.id);
         return(2);
     }
     catch (Exception e) {
         return(error(l, e));
     }
 }
Ejemplo n.º 7
0
        public bool Init(string roomServerName)
        {
            m_Lock        = new object();
            m_ActiveRooms = new Dictionary <int, int>();
            m_UserPool.Init(m_UserPoolSize);

            // 初始化场景房间
            int startId = 1;
            MyDictionary <int, object> scenes = TableConfig.LevelProvider.Instance.LevelMgr.GetData();

            foreach (KeyValuePair <int, object> pair in scenes)
            {
                TableConfig.Level cfg = pair.Value as TableConfig.Level;
                if (null != cfg && cfg.type == (int)SceneTypeEnum.Story)
                {
                    foreach (string roomSvrName in cfg.RoomServer)
                    {
                        for (int ix = 0; ix < cfg.ThreadCountPerScene; ++ix)
                        {
                            if (0 == roomServerName.CompareTo(roomSvrName))
                            {
                                RoomThread fieldThread = new RoomThread(this);
                                fieldThread.Init(m_ThreadTickInterval, (uint)cfg.RoomCountPerThread, m_UserPool, m_Connector);
                                for (int rix = 0; rix < cfg.RoomCountPerThread; ++rix)
                                {
                                    fieldThread.ActiveFieldRoom(startId, cfg.id);
                                    AddActiveRoom(startId, m_FieldRoomthreadList.Count, true);
                                    AddFieldSceneRoomId(cfg.id, startId);
                                    ++startId;
                                }
                                m_FieldRoomthreadList.Add(fieldThread);
                            }
                            else
                            {
                                for (int rix = 0; rix < cfg.RoomCountPerThread; ++rix)
                                {
                                    ++startId;
                                }
                            }
                        }
                    }
                }
            }
            // 初始化房间线程
            for (int i = 0; i < m_ThreadAmount; ++i)
            {
                m_RoomThreadList[i] = new RoomThread(this);
                m_RoomThreadList[i].Init(m_ThreadTickInterval, m_RoomAmount, m_UserPool, m_Connector);
            }
            m_NextRoomId = startId;
            return(true);
        }
Ejemplo n.º 8
0
        internal bool Init(string roomServerName)
        {
            lock_obj_     = new object();
            active_rooms_ = new Dictionary <int, int>();
            user_pool_.Init(user_pool_size_);

            // 初始化场景房间
            int startId = 1;
            MyDictionary <int, object> scenes = TableConfig.LevelProvider.Instance.LevelMgr.GetData();

            foreach (KeyValuePair <int, object> pair in scenes)
            {
                TableConfig.Level cfg = pair.Value as TableConfig.Level;
                if (null != cfg && cfg.type == (int)SceneTypeEnum.Room)
                {
                    foreach (string roomSvrName in cfg.RoomServer)
                    {
                        for (int ix = 0; ix < cfg.ThreadCountPerScene; ++ix)
                        {
                            if (0 == roomServerName.CompareTo(roomSvrName))
                            {
                                RoomThread fieldThread = new RoomThread(this);
                                fieldThread.Init(thread_tick_interval_, (uint)cfg.RoomCountPerThread, user_pool_, connector_);
                                for (int rix = 0; rix < cfg.RoomCountPerThread; ++rix)
                                {
                                    fieldThread.ActiveFieldRoom(startId, cfg.id);
                                    AddActiveRoom(startId, field_roomthread_list_.Count, true);
                                    AddFieldSceneRoomId(cfg.id, startId);
                                    ++startId;
                                }
                                field_roomthread_list_.Add(fieldThread);
                            }
                            else
                            {
                                for (int rix = 0; rix < cfg.RoomCountPerThread; ++rix)
                                {
                                    ++startId;
                                }
                            }
                        }
                    }
                }
            }
            // 初始化房间线程
            for (int i = 0; i < thread_amount_; ++i)
            {
                roomthread_list_[i] = new RoomThread(this);
                roomthread_list_[i].Init(thread_tick_interval_, room_amount_, user_pool_, connector_);
            }
            next_room_id_ = startId;
            return(true);
        }
 static public int GetId(IntPtr l)
 {
     try {
         TableConfig.Level self = (TableConfig.Level)checkSelf(l);
         var ret = self.GetId();
         pushValue(l, true);
         pushValue(l, ret);
         return(2);
     }
     catch (Exception e) {
         return(error(l, e));
     }
 }
Ejemplo n.º 10
0
    private IEnumerator UnloadBattle(TableConfig.Level lvl)
    {
        LoadingManager.Instance.Show();
        yield return(null);

        LoadingManager.Instance.SetProgress(0.1f);
        UnityEngine.SceneManagement.SceneManager.UnloadSceneAsync(lvl.prefab);
        LoadingManager.Instance.SetProgress(0.9f);
        yield return(Resources.UnloadUnusedAssets());

        LoadingManager.Instance.SetProgress(1.0f);
        PluginFramework.Instance.OnBattleUnloaded(lvl);
    }
 static public int constructor(IntPtr l)
 {
     try {
         TableConfig.Level o;
         o = new TableConfig.Level();
         pushValue(l, true);
         pushValue(l, o);
         return(2);
     }
     catch (Exception e) {
         return(error(l, e));
     }
 }
 static public int WriteToBinary(IntPtr l)
 {
     try {
         TableConfig.Level         self = (TableConfig.Level)checkSelf(l);
         GameFramework.BinaryTable a1;
         checkType(l, 2, out a1);
         self.WriteToBinary(a1);
         pushValue(l, true);
         return(1);
     }
     catch (Exception e) {
         return(error(l, e));
     }
 }
 static public int set_EnterRadius(IntPtr l)
 {
     try {
         TableConfig.Level self = (TableConfig.Level)checkSelf(l);
         System.Single     v;
         checkType(l, 2, out v);
         self.EnterRadius = v;
         pushValue(l, true);
         return(1);
     }
     catch (Exception e) {
         return(error(l, e));
     }
 }
 static public int set_RoomServer(IntPtr l)
 {
     try {
         TableConfig.Level self = (TableConfig.Level)checkSelf(l);
         System.Collections.Generic.List <System.String> v;
         checkType(l, 2, out v);
         self.RoomServer = v;
         pushValue(l, true);
         return(1);
     }
     catch (Exception e) {
         return(error(l, e));
     }
 }
 static public int set_id(IntPtr l)
 {
     try {
         TableConfig.Level self = (TableConfig.Level)checkSelf(l);
         System.Int32      v;
         checkType(l, 2, out v);
         self.id = v;
         pushValue(l, true);
         return(1);
     }
     catch (Exception e) {
         return(error(l, e));
     }
 }
Ejemplo n.º 16
0
        internal void InitSceneRooms()
        {
            // 初始化野外场景房间
            MyDictionary <int, object> scenes = TableConfig.LevelProvider.Instance.LevelMgr.GetData();

            foreach (KeyValuePair <int, object> pair in scenes)
            {
                TableConfig.Level cfg = pair.Value as TableConfig.Level;
                if (null != cfg && cfg.type == (int)SceneTypeEnum.Room)
                {
                    SceneRoomsInfo fieldInfo;
                    if (!m_SceneInfos.TryGetValue(cfg.id, out fieldInfo))
                    {
                        fieldInfo           = new SceneRoomsInfo();
                        fieldInfo.m_SceneId = cfg.id;
                        m_SceneInfos.Add(cfg.id, fieldInfo);
                    }
                    foreach (string roomServerName in cfg.RoomServer)
                    {
                        for (int ix = 0; ix < cfg.ThreadCountPerScene; ++ix)
                        {
                            for (int rix = 0; rix < cfg.RoomCountPerThread; ++rix)
                            {
                                RoomInfo room = NewRoomInfo();
                                room.RoomId         = ++m_CurRoomId;
                                room.IsField        = true;
                                room.SceneType      = cfg.id;
                                room.RoomServerName = roomServerName;
                                room.TotalCount     = cfg.MaxUserCount;

                                if (!m_Rooms.ContainsKey(room.RoomId))
                                {
                                    m_Rooms.Add(room.RoomId, room);
                                }
                                else
                                {
                                    m_Rooms[room.RoomId] = room;
                                }
                                if (!fieldInfo.m_RoomIds.Contains(room.RoomId))
                                {
                                    fieldInfo.m_RoomIds.Add(room.RoomId);
                                }
                                room.Creator = 0;
                            }
                        }
                    }
                }
            }
        }
Ejemplo n.º 17
0
    private IEnumerator LoadBattle(TableConfig.Level lvl)
    {
        LoadingManager.Instance.Show();
        yield return(null);

        LoadingManager.Instance.SetProgress(0.1f);
        yield return(Resources.UnloadUnusedAssets());

        LoadingManager.Instance.SetProgress(0.2f);
        var asyncOper = UnityEngine.SceneManagement.SceneManager.LoadSceneAsync(lvl.prefab, UnityEngine.SceneManagement.LoadSceneMode.Additive);

        LoadingManager.Instance.SetAsync(asyncOper, 0.3f, 0.7f);
        yield return(asyncOper);

        PluginFramework.Instance.OnBattleLoaded(lvl);
    }
    public void OnLevelWasLoaded(TableConfig.Level level)
    {
        camera        = Camera.main;
        cameraSetting = camera.gameObject.GetComponent <SkillViewerCameraSetting>();
        if (cameraSetting == null)
        {
            cameraSetting = camera.gameObject.AddComponent <SkillViewerCameraSetting>();
        }
        //camera.transform.rotation = cameraSetting.GetRotation();// 注释掉,临时让摄像机设置不起作用 peterdou

        SetState(State.Lookat);
        followPose.pos = camera.transform.position;
        followPose.rot = camera.transform.rotation;
        fixPose.pos    = camera.transform.position;
        fixPose.rot    = camera.transform.rotation;
    }
 static public int ReadFromBinary(IntPtr l)
 {
     try {
         TableConfig.Level         self = (TableConfig.Level)checkSelf(l);
         GameFramework.BinaryTable a1;
         checkType(l, 2, out a1);
         System.Int32 a2;
         checkType(l, 3, out a2);
         var ret = self.ReadFromBinary(a1, a2);
         pushValue(l, true);
         pushValue(l, ret);
         return(2);
     }
     catch (Exception e) {
         return(error(l, e));
     }
 }
Ejemplo n.º 20
0
    private IEnumerator LoadLevel(TableConfig.Level lvl)
    {
        HighlightPromptManager.Instance.Release();
        BattleTopMenuManager.Instance.Release();
        SkillBarManager.Instance.Release();
        OverHeadBarManager.Instance.Release();
        m_CameraController = null;
        yield return(null);

        yield return(UnityEngine.SceneManagement.SceneManager.LoadSceneAsync("Loading"));

        yield return(Resources.UnloadUnusedAssets());

        yield return(UnityEngine.SceneManagement.SceneManager.LoadSceneAsync(lvl.prefab));

        ClientModule.Instance.OnSceneLoaded(lvl);
        Utility.EventSystem.Publish("loading_complete", "ui", null);
    }
Ejemplo n.º 21
0
 private void PreloadUiStories()
 {
     if (null != m_SceneInfo)
     {
         TableConfig.Level level = m_SceneInfo;
         int ct = level.SceneUi.Count;
         for (int ix = 0; ix < ct; ++ix)
         {
             int            uiId = level.SceneUi[ix];
             TableConfig.UI ui   = TableConfig.UIProvider.Instance.GetUI(uiId);
             if (null != ui)
             {
                 if (!string.IsNullOrEmpty(ui.dsl) && !string.IsNullOrEmpty(ui.name))
                 {
                     GfxStorySystem.Instance.PreloadNamespacedStory(ui.name, ui.dsl);
                 }
             }
         }
     }
 }
Ejemplo n.º 22
0
 private void LoadUi(int levelId)
 {
     TableConfig.Level level = TableConfig.LevelProvider.Instance.GetLevel(levelId);
     if (null != level)
     {
         int ct = level.SceneUi.Count;
         for (int i = 0; i < ct; ++i)
         {
             int            uiId = level.SceneUi[i];
             TableConfig.UI ui   = TableConfig.UIProvider.Instance.GetUI(uiId);
             if (null != ui)
             {
                 GameObject asset = UiResourceSystem.Instance.GetUiResource(ui.path) as GameObject;
                 if (null != asset)
                 {
                     GameObject uiObj = GameObject.Instantiate(asset);
                     if (null != uiObj)
                     {
                         uiObj.name = ui.name;
                         if (!string.IsNullOrEmpty(ui.dsl))
                         {
                             GameFramework.Story.UiStoryInitializer initer = uiObj.GetComponent <GameFramework.Story.UiStoryInitializer>();
                             if (null == initer)
                             {
                                 initer = uiObj.AddComponent <GameFramework.Story.UiStoryInitializer>();
                             }
                             if (null != initer)
                             {
                                 initer.WindowName = ui.name;
                                 initer.Init();
                             }
                         }
                     }
                 }
             }
         }
     }
 }
Ejemplo n.º 23
0
    private IEnumerator LoadScene(TableConfig.Level lvl)
    {
        LoadingManager.Instance.Show();
        TopMenuManager.Instance.Release();
        HighlightPromptManager.Instance.Release();
        OverHeadBarManager.Instance.Release();
        m_CameraController = null;
        yield return(null);

        LoadingManager.Instance.SetProgress(0.1f);
        yield return(UnityEngine.SceneManagement.SceneManager.LoadSceneAsync("Loading"));

        LoadingManager.Instance.SetProgress(0.2f);
        yield return(Resources.UnloadUnusedAssets());

        LoadingManager.Instance.SetProgress(0.3f);
        var asyncOper = UnityEngine.SceneManagement.SceneManager.LoadSceneAsync(lvl.prefab);

        LoadingManager.Instance.SetAsync(asyncOper, 0.3f, 0.7f);
        yield return(asyncOper);

        PluginFramework.Instance.OnSceneLoaded(lvl);
    }
        private void RequestEnterSceneRoom(UserInfo info, int roomId, int hp, int mp, float x, float y)
        {
            RoomInfo room = m_LobbyInfo.GetRoomByID(roomId);

            if (null != room)
            {
                int campId            = (int)CampIdEnum.Blue;
                TableConfig.Level cfg = TableConfig.LevelProvider.Instance.GetLevel(room.SceneType);
                if (null != cfg)
                {
                    campId = (int)CampIdEnum.FreedomCamp_Begin + info.WorldId;//room.GenNextCampId();
                }
                room.AddUsers(campId, info.Guid);
                Msg_LR_EnterScene enterSceneMsg = new Msg_LR_EnterScene();
                enterSceneMsg.UserGuid = info.Guid;
                enterSceneMsg.RoomID   = roomId;

                Msg_LR_RoomUserInfo ruiBuilder = info.RoomUserInfo;
                ruiBuilder.Key  = info.Key;
                ruiBuilder.Camp = info.CampId;
                if (hp > 0 && mp > 0)
                {
                    enterSceneMsg.HP = hp;
                    enterSceneMsg.MP = mp;
                }
                if (x > 0 && y > 0)
                {
                    ruiBuilder.EnterX = x;
                    ruiBuilder.EnterY = y;
                }
                enterSceneMsg.UserInfo = ruiBuilder;

                LobbyServer.Instance.RoomSvrChannel.Send(room.RoomServerName, enterSceneMsg);

                LogSys.Log(LOG_TYPE.DEBUG, "Request enter field, user {0} room {1}", info.Guid, roomId);
            }
        }
Ejemplo n.º 25
0
 private IEnumerator LoadLevel(TableConfig.Level lvl)
 {
     ClientModule.Instance.OnSceneLoaded(lvl);
     yield return(null);
 }
Ejemplo n.º 26
0
        internal void LoadData(int resId)
        {
            try {
                m_SceneResId = resId;
                m_SceneContext.SceneResId = resId;
                m_SceneContext.IsRunWithRoomServer = true;

                LogSys.Log(LOG_TYPE.DEBUG, "Scene {0} start Preloading.", resId);

                m_SceneConfig = TableConfig.LevelProvider.Instance.GetLevel(m_SceneResId);

                m_SceneState = SceneState.Preloading;
            } catch (Exception ex) {
                LogSystem.Error("Scene.LoadData throw exception:{0}\n{1}", ex.Message, ex.StackTrace);
            }
        }
        private StoryInstance NewStoryInstance(string storyId, string _namespace, bool logIfNotFound, params string[] overloadFiles)
        {
            if (!string.IsNullOrEmpty(_namespace))
            {
                storyId = string.Format("{0}:{1}", _namespace, storyId);
            }
            StoryInstance instance = GetStoryInstance(storyId);

            if (null == instance)
            {
                TableConfig.Level cfg = TableConfig.LevelProvider.Instance.GetLevel(m_Scene.SceneResId);
                if (null != cfg)
                {
                    string[] filePath;
                    if (overloadFiles.Length <= 0)
                    {
                        int ct1 = cfg.SceneDslFile.Count;
                        int ct2 = cfg.RoomDslFile.Count;
                        filePath = new string[ct1 + ct2];
                        for (int i = 0; i < ct1; i++)
                        {
                            filePath[i] = HomePath.GetAbsolutePath(FilePathDefine_Server.C_DslPath + cfg.SceneDslFile[i]);
                        }
                        for (int i = 0; i < ct2; i++)
                        {
                            filePath[ct1 + i] = HomePath.GetAbsolutePath(FilePathDefine_Server.C_DslPath + cfg.RoomDslFile[i]);
                        }
                    }
                    else
                    {
                        int ct = overloadFiles.Length;
                        filePath = new string[ct];
                        for (int i = 0; i < ct; i++)
                        {
                            filePath[i] = HomePath.GetAbsolutePath(FilePathDefine_Server.C_DslPath + overloadFiles[i]);
                        }
                    }
                    StoryConfigManager.Instance.LoadStories(m_Scene.SceneResId, _namespace, filePath);
                    instance = StoryConfigManager.Instance.NewStoryInstance(storyId, m_Scene.SceneResId);
                    if (instance == null)
                    {
                        if (logIfNotFound)
                        {
                            LogSystem.Error("Can't load story config, story:{0} scene:{1} !", storyId, m_Scene.SceneResId);
                        }
                        return(null);
                    }
                    for (int ix = 0; ix < filePath.Length; ++ix)
                    {
                        Dictionary <string, StoryInstance> stories = StoryConfigManager.Instance.GetStories(filePath[ix]);
                        if (null != stories)
                        {
                            foreach (KeyValuePair <string, StoryInstance> pair in stories)
                            {
                                if (pair.Key != storyId)
                                {
                                    AddStoryInstance(pair.Key, pair.Value.Clone());
                                }
                            }
                        }
                    }
                    AddStoryInstance(storyId, instance);
                    return(instance);
                }
                else
                {
                    if (logIfNotFound)
                    {
                        LogSystem.Error("Can't find story config, story:{0} scene:{1} !", storyId, m_Scene.SceneResId);
                    }
                    return(null);
                }
            }
            else
            {
                return(instance);
            }
        }
Ejemplo n.º 28
0
 private IEnumerator LoadLevel(TableConfig.Level lvl)
 {
     PluginFramework.Instance.OnSceneLoaded(lvl);
     yield return(null);
 }