internal bool Init(int room_id, int scene_type, UserPool userpool, Connector conn) { LogSys.Log(LOG_TYPE.INFO, "[0] Room.Init {0} scene {1}", room_id, scene_type); cur_room_id_ = room_id; user_pool_ = userpool; connector_ = conn; can_close_time_ = 0; m_ActiveScene = m_ScenePool.NewScene(); LogSys.Log(LOG_TYPE.INFO, "[1] Room.Init {0} scene {1}", room_id, scene_type); m_ActiveScene.SetRoom(this); //场景数据加载由加载线程执行(注:场景没有加载完成,场景状态仍然是sleep,Scene.Tick不会有实际的动作) SceneLoadThread.Instance.QueueAction(m_ActiveScene.LoadData, scene_type); m_ActiveTime = TimeUtility.GetLocalMicroseconds(); CurrentState = RoomState.Active; m_CanFinish = false; LogSys.Log(LOG_TYPE.DEBUG, "Room Initialize: {0} Scene: {1}", room_id, scene_type); return true; }
internal void ChangeScene(int scene_type) { m_ActiveScene.Reset(); m_ScenePool.RecycleScene(m_ActiveScene); m_ActiveScene = null; foreach (User us in room_users_) { us.IsEntered = false; } can_close_time_ = 0; m_ActiveScene = m_ScenePool.NewScene(); m_ActiveScene.SetRoom(this); //场景数据加载由加载线程执行(注:场景没有加载完成,场景状态仍然是sleep,Scene.Tick不会有实际的动作) SceneLoadThread.Instance.QueueAction(m_ActiveScene.LoadData, scene_type); Msg_RC_ChangeScene msg = new Msg_RC_ChangeScene(); msg.target_scene_id = scene_type; foreach (User us in room_users_) { us.SendMessage(RoomMessageDefine.Msg_RC_ChangeScene, msg); } LogSys.Log(LOG_TYPE.INFO, "Room.ChangeScene {0} scene {1}", cur_room_id_, scene_type); }