示例#1
0
 public bool changeProcedure(Type procedureType, string intent, bool addToLastList = true)
 {
     if (!mSceneProcedureList.TryGetValue(procedureType, out SceneProcedure targetProcedure))
     {
         logError("can not find scene procedure : " + procedureType);
         return(false);
     }
     // 将上一个流程记录到返回列表中
     if (mCurProcedure != null && addToLastList)
     {
         mLastProcedureList.Add(mCurProcedure);
         if (mLastProcedureList.Count > mMaxLastProcedureCount)
         {
             mLastProcedureList.RemoveAt(0);
         }
     }
     if (mCurProcedure == null || mCurProcedure.getType() != procedureType)
     {
         // 如果当前已经在一个流程中了,则要先退出当前流程,但是不要销毁流程
         if (mCurProcedure != null)
         {
             // 需要找到共同的父节点,退到该父节点时则不再退出
             mCurProcedure.exit(mCurProcedure.getSameParent(targetProcedure), targetProcedure);
         }
         SceneProcedure lastProcedure = mCurProcedure;
         mCurProcedure = targetProcedure;
         mCurProcedure.init(lastProcedure, intent);
     }
     return(true);
 }
示例#2
0
文件: GameScene.cs 项目: microxw/MaQ
 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);
 }
示例#3
0
文件: GameScene.cs 项目: microxw/MaQ
    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");
        }
    }
示例#4
0
 // 由GameScene调用
 // 进入流程
 public void init(SceneProcedure lastProcedure, string intent)
 {
     // 如果父节点还没有初始化,则先初始化父节点
     if (mParentProcedure != null && !mParentProcedure.mInited)
     {
         mParentProcedure.init(lastProcedure, intent);
     }
     // 再初始化自己
     onInit(lastProcedure, intent);
     mInited = true;
 }
示例#5
0
 // 由GameScene调用
 // 进入流程
 public void init(SceneProcedure lastProcedure, string intent)
 {
     // 如果父节点还没有初始化,则先初始化父节点
     if (mParentProcedure != null && !mParentProcedure.mInited)
     {
         mParentProcedure.init(lastProcedure, intent);
     }
     // 再初始化自己,如果是从子节点返回到父节点,则需要调用另外一个初始化函数
     if (lastProcedure != null && lastProcedure.isThisOrParent(mProcedureType))
     {
         onInitFromChild(lastProcedure, intent);
     }
     else
     {
         onInit(lastProcedure, intent);
     }
     mInited = true;
 }
示例#6
0
 public bool changeProcedure(Type procedure, string intent, bool addToLastList = true)
 {
     if (mSceneProcedureList.ContainsKey(procedure))
     {
         // 将上一个流程记录到返回列表中
         if (mCurProcedure != null && addToLastList)
         {
             mLastProcedureList.Add(mCurProcedure);
             if (mLastProcedureList.Count > mMaxLastProcedureCount)
             {
                 mLastProcedureList.RemoveAt(0);
             }
         }
         if (mCurProcedure == null || mCurProcedure.getProcedureType() != 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;
             mCurProcedure.init(lastProcedure, intent);
         }
         return(true);
     }
     else
     {
         logError("can not find scene procedure : " + procedure);
     }
     return(false);
 }