Exemple #1
0
    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");
        }
    }
Exemple #2
0
    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);
    }
Exemple #3
0
 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);
 }
Exemple #4
0
 public LogoSceneLogo(PROCEDURE_TYPE type, GameScene gameScene)
     :
     base(type, gameScene)
 {
     mPreloadObjectDone = false;
     mPreloadObjectList = new Dictionary <string, bool>();
 }
Exemple #5
0
 public override void init()
 {
     base.init();
     mProcedure   = PROCEDURE_TYPE.PT_NONE;
     mIntent      = "";
     mPrepareTime = -1.0f;
 }
Exemple #6
0
 public bool atProcedure(PROCEDURE_TYPE type)
 {
     if (mCurProcedure == null)
     {
         return(false);
     }
     return(mCurProcedure.isThisOrParent(type));
 }
Exemple #7
0
 public SceneProcedure getChildProcedure(PROCEDURE_TYPE type)
 {
     if (mChildProcedureList.ContainsKey(type))
     {
         return(mChildProcedureList[type]);
     }
     return(null);
 }
Exemple #8
0
 // 是否在指定的流程,不考虑子流程
 public bool atSelfProcedure(PROCEDURE_TYPE type)
 {
     if (mCurProcedure == null)
     {
         return(false);
     }
     return(mCurProcedure.getProcedureType() == type);
 }
Exemple #9
0
    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));
 }
Exemple #11
0
 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));
 }
Exemple #13
0
    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);
    }
Exemple #14
0
    public void backToLastProcedure(string intend)
    {
        if (mLastProcedureList.Count == 0)
        {
            return;
        }
        // 获得上一次进入的流程
        PROCEDURE_TYPE lastType = getLastProcedureType();

        changeProcedure(lastType, intend, false);
        mLastProcedureList.RemoveAt(mLastProcedureList.Count - 1);
    }
Exemple #15
0
 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,
     };
 }
Exemple #16
0
 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      = "";
 }
Exemple #17
0
 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>();
 }
Exemple #18
0
 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);
 }
Exemple #19
0
 public bool isThisOrParent(PROCEDURE_TYPE type)
 {
     // 判断是否是自己的类型
     if (mProcedureType == type)
     {
         return(true);
     }
     // 判断是否为父节点的类型
     if (mParentProcedure != null)
     {
         return(mParentProcedure.isThisOrParent(type));
     }
     // 没有父节点,返回false
     return(false);
 }
Exemple #20
0
 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));
 }
Exemple #21
0
 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);
 }
Exemple #22
0
 public SceneProcedure getParent(PROCEDURE_TYPE type)
 {
     // 没有父节点,返回null
     if (mParentProcedure == null)
     {
         return(null);
     }
     // 有父节点,则判断类型是否匹配,匹配则返回父节点
     if (mParentProcedure.getProcedureType() == type)
     {
         return(mParentProcedure);
     }
     // 不匹配,则继续向上查找
     else
     {
         return(mParentProcedure.getParent(type));
     }
 }
Exemple #23
0
    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);
    }
Exemple #24
0
 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>();
     }
 }
Exemple #25
0
 public LogoSceneStartVideo(PROCEDURE_TYPE type, GameScene gameScene)
     :
     base(type, gameScene)
 {
     ;
 }
Exemple #26
0
 public MainSceneExit(PROCEDURE_TYPE type, GameScene gameScene)
     :
     base(type, gameScene)
 {
     ;
 }
Exemple #27
0
 public StartSceneSceneAdvanceEditor(PROCEDURE_TYPE type, GameScene gameScene)
     :
     base(type, gameScene)
 {
     ;
 }
Exemple #28
0
 public LoginSceneProcedureExit(PROCEDURE_TYPE type, GameScene gameScene)
     :
     base(type, gameScene)
 {
     ;
 }
Exemple #29
0
 public StartSceneSelectTrack(PROCEDURE_TYPE type, GameScene gameScene)
     :
     base(type, gameScene)
 {
     ;
 }
 public StartSceneMonsterSpriteEditor(PROCEDURE_TYPE type, GameScene gameScene)
     :
     base(type, gameScene)
 {
     ;
 }