public void backToLastProcedure(string intend) { if (mLastProcedureList.Count == 0) { return; } // 获得上一次进入的流程 PROCEDURE_TYPE lastType = mLastProcedureList[mLastProcedureList.Count - 1]; if (mSceneProcedureList.ContainsKey(lastType)) { SceneProcedure targetProcedure = mSceneProcedureList[lastType]; // 先返回到当前流程进入之前的状态 // 需要找到共同的父节点,退到该父节点时则不再退出 SceneProcedure exitTo = mCurProcedure.getSameParent(targetProcedure); mCurProcedure.back(exitTo); SceneProcedure lastProcedure = mCurProcedure; mCurProcedure = targetProcedure; mCurProcedure.init(lastProcedure, intend); // 进入上一次的流程后,将流程从返回列表中删除 mLastProcedureList.RemoveAt(mLastProcedureList.Count - 1); } else { UnityUtility.logError("error : can not back scene procedure"); } }
public static SceneProcedure createProcedure <T>(GameScene gameScene, PROCEDURE_TYPE type) where T : SceneProcedure, new() { object[] procedureParams = new object[] { type, gameScene }; T procedure = UnityUtility.createInstance <T>(typeof(T), procedureParams); return(procedure); }
public bool changeProcedure(PROCEDURE_TYPE procedure, string intent) { if (mSceneProcedureList.ContainsKey(procedure)) { // 将上一个流程记录到返回列表中 if (mCurProcedure != null) { mLastProcedureList.Add(mCurProcedure.getType()); } if (mCurProcedure == null || mCurProcedure.getType() != procedure) { SceneProcedure targetProcedure = mSceneProcedureList[procedure]; // 如果当前已经在一个流程中了,则要先退出当前流程,但是不要销毁流程 if (mCurProcedure != null) { // 需要找到共同的父节点,退到该父节点时则不再退出 SceneProcedure exitTo = mCurProcedure.getSameParent(targetProcedure); SceneProcedure nextPro = targetProcedure; mCurProcedure.exit(exitTo, nextPro); } SceneProcedure lastProcedure = mCurProcedure; mCurProcedure = targetProcedure; if (mCurProcedure != null) { mCurProcedure.init(lastProcedure, intent); } } return(true); } else { UnityUtility.logError("error : can not find scene procedure : " + procedure); } return(false); }
public LogoSceneLogo(PROCEDURE_TYPE type, GameScene gameScene) : base(type, gameScene) { mPreloadObjectDone = false; mPreloadObjectList = new Dictionary <string, bool>(); }
public override void init() { base.init(); mProcedure = PROCEDURE_TYPE.PT_NONE; mIntent = ""; mPrepareTime = -1.0f; }
public bool atProcedure(PROCEDURE_TYPE type) { if (mCurProcedure == null) { return(false); } return(mCurProcedure.isThisOrParent(type)); }
public SceneProcedure getChildProcedure(PROCEDURE_TYPE type) { if (mChildProcedureList.ContainsKey(type)) { return(mChildProcedureList[type]); } return(null); }
// 是否在指定的流程,不考虑子流程 public bool atSelfProcedure(PROCEDURE_TYPE type) { if (mCurProcedure == null) { return(false); } return(mCurProcedure.getProcedureType() == type); }
public void Update() { SceneProcedure sceneProcedure = mGameScene.getCurSceneProcedure(); if (sceneProcedure != null) { mCurProcedure = sceneProcedure.getProcedureType(); } }
public LogoSceneLoading(PROCEDURE_TYPE type, GameScene gameScene) : base(type, gameScene) { mLoadInfo = new Dictionary <LAYOUT_TYPE, LayoutLoadInfo>(); mLoadInfo.Add(LAYOUT_TYPE.LT_LOGIN, new LayoutLoadInfo(LAYOUT_TYPE.LT_LOGIN, 0)); mLoadInfo.Add(LAYOUT_TYPE.LT_REGISTER, new LayoutLoadInfo(LAYOUT_TYPE.LT_REGISTER, 0)); // 由于使用了较多的NGUI控件,所以禁用全局触摸检测,只加载不显示 mLoadInfo.Add(LAYOUT_TYPE.LT_GLOBAL_TOUCH, new LayoutLoadInfo(LAYOUT_TYPE.LT_GLOBAL_TOUCH, 100)); }
public SceneProcedure(PROCEDURE_TYPE type, GameScene gameScene) { mInited = false; mProcedureType = type; mGameScene = gameScene; mParentProcedure = null; mCurChildProcedure = null; mDelayCmdList = new List <int>(); mChildProcedureList = new Dictionary <PROCEDURE_TYPE, SceneProcedure>(); }
public MainSceneLoading(PROCEDURE_TYPE type, GameScene gameScene) : base(type, gameScene) { mLoadInfo = new Dictionary <LAYOUT_TYPE, LayoutLoadInfo>(); mLoadInfo.Add(LAYOUT_TYPE.LT_MAIN_FRAME, new LayoutLoadInfo(LAYOUT_TYPE.LT_MAIN_FRAME, 0)); mLoadInfo.Add(LAYOUT_TYPE.LT_CHARACTER, new LayoutLoadInfo(LAYOUT_TYPE.LT_CHARACTER, 1)); mLoadInfo.Add(LAYOUT_TYPE.LT_BILLBOARD, new LayoutLoadInfo(LAYOUT_TYPE.LT_BILLBOARD, 1)); mLoadInfo.Add(LAYOUT_TYPE.LT_ROOM_MENU, new LayoutLoadInfo(LAYOUT_TYPE.LT_ROOM_MENU, 1)); mLoadInfo.Add(LAYOUT_TYPE.LT_JOIN_ROOM_DIALOG, new LayoutLoadInfo(LAYOUT_TYPE.LT_JOIN_ROOM_DIALOG, 2)); }
public T addProcedure <T>(PROCEDURE_TYPE type, SceneProcedure parent = null) where T : SceneProcedure { SceneProcedure procedure = createProcedure <T>(this, type); if (parent != null) { parent.addChildProcedure(procedure); } mSceneProcedureList.Add(procedure.getProcedureType(), procedure); return(procedure as T); }
public void backToLastProcedure(string intend) { if (mLastProcedureList.Count == 0) { return; } // 获得上一次进入的流程 PROCEDURE_TYPE lastType = getLastProcedureType(); changeProcedure(lastType, intend, false); mLastProcedureList.RemoveAt(mLastProcedureList.Count - 1); }
public MainSceneGaming(PROCEDURE_TYPE type, GameScene gameScene) : base(type, gameScene) { mRaceMusicList = new SOUND_DEFINE[] { SOUND_DEFINE.SD_RACE_BACKGROUND0, SOUND_DEFINE.SD_RACE_BACKGROUND1, SOUND_DEFINE.SD_RACE_BACKGROUND2, SOUND_DEFINE.SD_RACE_BACKGROUND3, }; }
public SceneProcedure(PROCEDURE_TYPE type, GameScene gameScene) { mInited = false; mProcedureType = type; mGameScene = gameScene; mParentProcedure = null; mCurChildProcedure = null; mDelayCmdList = new List <int>(); mChildProcedureList = new Dictionary <PROCEDURE_TYPE, SceneProcedure>(); mCurPrepareTime = -1.0f; mExitTime = -1.0f; mPrepareNext = null; mPrepareIntent = ""; }
public GameScene(GAME_SCENE_TYPE type, string name) : base(name) { mSceneType = type; mCurProcedure = null; mDestroyEngineScene = true; mLastProcedureType = PROCEDURE_TYPE.PT_NONE; mDestroyEngineScene = false; mSceneProcedureList = new Dictionary <PROCEDURE_TYPE, SceneProcedure>(); mLastProcedureList = new List <SceneProcedure>(); // 创建场景对应的物体,并挂接到场景管理器下 mSceneObject = UnityUtility.createObject(name, mGameSceneManager.getManagerObject()); mAudioSource = mSceneObject.GetComponent <AudioSource>(); }
public MainSceneLoading(PROCEDURE_TYPE type, GameScene gameScene) : base(type, gameScene) { mLoadInfo = new Dictionary <LAYOUT_TYPE, LayoutLoadInfo>(); addLoadInfo(LAYOUT_TYPE.LT_MAIN_FRAME, 0); addLoadInfo(LAYOUT_TYPE.LT_CHARACTER, 1); addLoadInfo(LAYOUT_TYPE.LT_BILLBOARD, 1); addLoadInfo(LAYOUT_TYPE.LT_ROOM_MENU, 1); addLoadInfo(LAYOUT_TYPE.LT_JOIN_ROOM_DIALOG, 2); addLoadInfo(LAYOUT_TYPE.LT_FREE_MATCH_TIP, 5); addLoadInfo(LAYOUT_TYPE.LT_BACK_TO_MAIN_HALL, 1); addLoadInfo(LAYOUT_TYPE.LT_MAIN_FRAME_BACK, -1); addLoadInfo(LAYOUT_TYPE.LT_ROOM_LIST, 1); }
public bool isThisOrParent(PROCEDURE_TYPE type) { // 判断是否是自己的类型 if (mProcedureType == type) { return(true); } // 判断是否为父节点的类型 if (mParentProcedure != null) { return(mParentProcedure.isThisOrParent(type)); } // 没有父节点,返回false return(false); }
public MahjongSceneLoading(PROCEDURE_TYPE type, GameScene gameScene) : base(type, gameScene) { mLoadInfo = new Dictionary <LAYOUT_TYPE, LayoutLoadInfo>(); mLoadInfo.Add(LAYOUT_TYPE.LT_ALL_CHARACTER_INFO, new LayoutLoadInfo(LAYOUT_TYPE.LT_ALL_CHARACTER_INFO, 2)); mLoadInfo.Add(LAYOUT_TYPE.LT_MAHJONG_BACK_FRAME, new LayoutLoadInfo(LAYOUT_TYPE.LT_MAHJONG_BACK_FRAME, 0)); mLoadInfo.Add(LAYOUT_TYPE.LT_MAHJONG_DROP, new LayoutLoadInfo(LAYOUT_TYPE.LT_MAHJONG_DROP, 1)); mLoadInfo.Add(LAYOUT_TYPE.LT_MAHJONG_HAND_IN, new LayoutLoadInfo(LAYOUT_TYPE.LT_MAHJONG_HAND_IN, 1)); mLoadInfo.Add(LAYOUT_TYPE.LT_DICE, new LayoutLoadInfo(LAYOUT_TYPE.LT_DICE, 3)); mLoadInfo.Add(LAYOUT_TYPE.LT_PLAYER_ACTION, new LayoutLoadInfo(LAYOUT_TYPE.LT_PLAYER_ACTION, 2)); mLoadInfo.Add(LAYOUT_TYPE.LT_GAME_ENDING, new LayoutLoadInfo(LAYOUT_TYPE.LT_GAME_ENDING, 2)); mLoadInfo.Add(LAYOUT_TYPE.LT_ADD_PLAYER, new LayoutLoadInfo(LAYOUT_TYPE.LT_ADD_PLAYER, 4)); mLoadInfo.Add(LAYOUT_TYPE.LT_MAHJONG_FRAME, new LayoutLoadInfo(LAYOUT_TYPE.LT_MAHJONG_FRAME, 4)); }
public T getThisOrParent <T>(PROCEDURE_TYPE type) where T : SceneProcedure { if (mProcedureType == type) { return(this as T); } else { SceneProcedure parent = getParent(type); if (parent != null) { return(parent as T); } } return(null); }
public SceneProcedure getParent(PROCEDURE_TYPE type) { // 没有父节点,返回null if (mParentProcedure == null) { return(null); } // 有父节点,则判断类型是否匹配,匹配则返回父节点 if (mParentProcedure.getProcedureType() == type) { return(mParentProcedure); } // 不匹配,则继续向上查找 else { return(mParentProcedure.getParent(type)); } }
public T addProcedure <T>(PROCEDURE_TYPE type, PROCEDURE_TYPE parent = PROCEDURE_TYPE.PT_NONE) where T : SceneProcedure { SceneProcedure procedure = createProcedure <T>(this, type); if (parent != PROCEDURE_TYPE.PT_NONE) { SceneProcedure parentProcedure = getSceneProcedure(parent); if (parentProcedure != null) { parentProcedure.addChildProcedure(procedure); } else { logError("invalid parent procedure, procedure:" + type); } } mSceneProcedureList.Add(procedure.getProcedureType(), procedure); return(procedure as T); }
public GameScene(GAME_SCENE_TYPE type, string name) : base(name) { mType = type; mCurProcedure = null; mDestroyEngineScene = true; mLastProcedureType = PROCEDURE_TYPE.PT_NONE; mDestroyEngineScene = false; mSceneProcedureList = new Dictionary <PROCEDURE_TYPE, SceneProcedure>(); mLastProcedureList = new List <PROCEDURE_TYPE>(); // 创建场景对应的物体,并挂接到场景管理器下 mSceneObject = new GameObject(name); mSceneObject.transform.parent = mGameSceneManager.getManagerObject().transform; mAudioSource = mSceneObject.GetComponent <AudioSource>(); if (mAudioSource == null) { mAudioSource = mSceneObject.AddComponent <AudioSource>(); } }
public LogoSceneStartVideo(PROCEDURE_TYPE type, GameScene gameScene) : base(type, gameScene) { ; }
public MainSceneExit(PROCEDURE_TYPE type, GameScene gameScene) : base(type, gameScene) { ; }
public StartSceneSceneAdvanceEditor(PROCEDURE_TYPE type, GameScene gameScene) : base(type, gameScene) { ; }
public LoginSceneProcedureExit(PROCEDURE_TYPE type, GameScene gameScene) : base(type, gameScene) { ; }
public StartSceneSelectTrack(PROCEDURE_TYPE type, GameScene gameScene) : base(type, gameScene) { ; }
public StartSceneMonsterSpriteEditor(PROCEDURE_TYPE type, GameScene gameScene) : base(type, gameScene) { ; }