Beispiel #1
0
 public void SetFloat_NoCondChk(FSM_LAYER_ID eLayer, TRANS_PARAM_ID paramID, float value)
 {
     if (CurLayerCheck(eLayer))
     {
         curFSM_EachLayer[(int)eLayer].SetFloat_NoCondChk(paramID, value);
     }
 }
Beispiel #2
0
        public void ChangeFSM(FSM_LAYER_ID eLayer, FSM_ID fsmID)
        {
            layerNum = (int)eLayer;

            if (!CurLayerCheck(eLayer))
            {
                UDL.LogWarning("Fail Change Layer : " + eLayer, nLogOption, warningLoglv);
                return;
            }

            if (!dicFSM_EachLayer[layerNum].TryGetValue(fsmID, out tFSMBuffer))
            {
                UDL.LogWarning(eLayer + " 에 " + fsmID + " 가 등록되어 있지 않습니다", nLogOption, warningLoglv);
                return;
            }

            if (CurLayerCheck(eLayer))
            {
                layerFSM_Buffer[layerNum] = curFSM_EachLayer[layerNum].fsmID;

                curFSM_EachLayer[layerNum].Pause();

                UnRegisterToFSM_ChangeLayerState(eLayer);

                curFSM_EachLayer[layerNum] = dicFSM_EachLayer[layerNum][fsmID];

                RegisterToFSM_ChangeLayerState(eLayer);

                curFSM_EachLayer[layerNum].Resume();
            }

            UDL.Log("(ChangeFSM) curFSM : " + curFSM_EachLayer[layerNum].fsmID.ToString(), nLogOption, logLv);
        }
Beispiel #3
0
 public void SetTrigger(FSM_LAYER_ID eLayer, TRANS_PARAM_ID paramID)
 {
     if (CurLayerCheck(eLayer))
     {
         curFSM_EachLayer[(int)eLayer].SetTrigger(paramID);
     }
 }
Beispiel #4
0
 public void SetBool(FSM_LAYER_ID eLayer, TRANS_PARAM_ID paramID, bool value)
 {
     if (CurLayerCheck(eLayer))
     {
         curFSM_EachLayer[(int)eLayer].SetBool(paramID, value);
     }
 }
Beispiel #5
0
 public void HistoryBack(FSM_LAYER_ID eLayer)
 {
     if (CurLayerCheck(eLayer))
     {
         curFSM_EachLayer[(int)eLayer].HistoryBack();
     }
 }
Beispiel #6
0
 public bool GetBool(FSM_LAYER_ID eLayer, TRANS_PARAM_ID paramID)
 {
     if (!CurLayerCheck(eLayer))
     {
         return(false);
     }
     return(curFSM_EachLayer[(int)eLayer].GetParamBool(paramID));
 }
Beispiel #7
0
 public float GetFloat(FSM_LAYER_ID eLayer, TRANS_PARAM_ID paramID)
 {
     if (!CurLayerCheck(eLayer))
     {
         return(0);
     }
     return(curFSM_EachLayer[(int)eLayer].GetParamFloat(paramID));
 }
Beispiel #8
0
        public FSM GetCurFSM(FSM_LAYER_ID eLayer)
        {
            if (!CurLayerCheck(eLayer))
            {
                return(null);
            }

            return(curFSM_EachLayer[(int)eLayer]);
        }
Beispiel #9
0
        public STATE_ID GetCurStateID(FSM_LAYER_ID eLayer)
        {
            layerNum = (int)eLayer;
            if (curFSM_EachLayer[layerNum] == null)
            {
                return(STATE_ID.None);
            }

            return(curFSM_EachLayer[layerNum].GetCurStateID());
        }
Beispiel #10
0
        public State GetCurState(FSM_LAYER_ID eLayer)
        {
            layerNum = (int)eLayer;
            if (curFSM_EachLayer[layerNum] == null)
            {
                return(null);
            }

            return(curFSM_EachLayer[layerNum].GetCurState());
        }
Beispiel #11
0
 bool CurLayerCheck(FSM_LAYER_ID eLayer)
 {
     if (curFSM_EachLayer[(int)eLayer] == null)
     {
         UDL.LogWarning(eLayer + " 지정한 레이어에 FSM이 지정되 있지 않음", nLogOption, warningLoglv);
         return(false);
     }
     else
     {
         return(true);
     }
 }
Beispiel #12
0
        public void Resume(FSM_LAYER_ID eLayer)
        {
            if (!CurLayerCheck(eLayer))
            {
                return;
            }

            curFSM_EachLayer[layerNum].Resume();

            if (EventLayerResume != null)
            {
                EventLayerResume(eLayer);
            }
        }
Beispiel #13
0
        public void ChangeFSM_Manual(FSM_LAYER_ID eLayer, FSM_ID fsmID)
        {
            layerNum = (int)eLayer;
            if (CurLayerCheck(eLayer))
            {
                layerFSM_Buffer[layerNum] = curFSM_EachLayer[layerNum].fsmID;

                UnRegisterToFSM_ChangeLayerState(eLayer);

                curFSM_EachLayer[layerNum] = dicFSM_EachLayer[layerNum][fsmID];

                RegisterToFSM_ChangeLayerState(eLayer);
            }
        }
    FSM RegistFSM(FSM_LAYER_ID layer, FSM_ID id)
    {
        FSM tFSM = FileManager.Inst.ResourceLoad("FSMData/" + id.ToString()) as FSM;

        if (tFSM == null)
        {
            Debug.LogWarning("No FSM Data " + id.ToString());
            return(null);
        }

        tFSM.InitNonSerializedField();

        FSM_Layer.Inst.AddFSM(layer, tFSM, id);

        return(tFSM);
    }
Beispiel #15
0
        public void RemoveFSM(FSM_LAYER_ID eLayer, FSM_ID id)
        {
            layerNum = (int)eLayer;
            if (dicFSM_EachLayer[layerNum].ContainsKey(id))
            {
                dicFSM_EachLayer[layerNum].Remove(id);
            }
            else
            {
                UDL.LogWarning("가지고 있지 않은 FSM을 삭제하려 함", nLogOption, warningLoglv);
            }

            if (curFSM_EachLayer[layerNum].fsmID == id)
            {
                curFSM_EachLayer[layerNum] = null;
            }
        }
Beispiel #16
0
        public void UnRegisterChangeLayerState(FSM_LAYER_ID eLayer, deleStateTransEvent _deleFunc)
        {
            if (!dicLayerChangeState.ContainsKey(eLayer))
            {
                return;
            }

            dicLayerChangeState[eLayer].Remove(_deleFunc);


            foreach (Dictionary <FSM_ID, FSM> dic in dicFSM_EachLayer)
            {
                foreach (FSM fsm in dic.Values)
                {
                    fsm.EventStateChange -= _deleFunc;
                }
            }
        }
Beispiel #17
0
        public void AddFSM(FSM_LAYER_ID eLayer, FSM newFSM, FSM_ID id = FSM_ID.NONE)
        {
            layerNum = (int)eLayer;
            if (dicFSM_EachLayer.Length <= layerNum)
            {
                UDL.LogError("할당되지 않은 레이어를 호출하고 있습니다 Layer 및 iMaxLayer를 확인해주세요", nLogOption, errorLoglv);
                return;
            }

            if (dicFSM_EachLayer[layerNum] == null)
            {
                dicFSM_EachLayer[layerNum] = new Dictionary <FSM_ID, FSM>();
            }

            if (id != FSM_ID.NONE)
            {
                if (dicFSM_EachLayer[layerNum].ContainsKey(id))
                {
                    UDL.LogWarning("동일 레이어에 중복된 FSM ID 를 등록하려함!", nLogOption, warningLoglv);
                }
                else
                {
                    newFSM.SetFSMID(id);
                }
            }

            dicFSM_EachLayer[layerNum].Add(newFSM.fsmID, newFSM);

            UDL.Log(eLayer + " // add : " + newFSM.fsmID, nLogOption, logLv);

            if (curFSM_EachLayer[layerNum] == null)
            {
                curFSM_EachLayer[layerNum] = newFSM;

                RegisterToFSM_ChangeLayerState(eLayer);

                curFSM_EachLayer[layerNum].Resume();
            }
            else
            {
                ChangeFSM(eLayer, newFSM.fsmID);
            }
        }
Beispiel #18
0
        private int UnRegisterToFSM_ChangeLayerState(FSM_LAYER_ID eLayer)
        {
            if (!CurLayerCheck(eLayer))
            {
                return(1);
            }

            if (!dicLayerChangeState.ContainsKey(eLayer))
            {
                return(2);
            }

            for (int idx = 0; idx < dicLayerChangeState[eLayer].Count; idx++)
            {
                curFSM_EachLayer[layerNum].EventStateChange -= dicLayerChangeState[eLayer][idx];
            }

            return(0);
        }
Beispiel #19
0
        public State GetState(FSM_LAYER_ID eLayer, FSM_ID fsmID, STATE_ID stateID)
        {
            layerNum = (int)eLayer;
            if (dicFSM_EachLayer == null)
            {
                return(null);
            }

            if (dicFSM_EachLayer[layerNum] == null)
            {
                UDL.LogError("지정한 레이어에 FSM이 지정되 있지 않음 ", nLogOption, errorLoglv);
                return(null);
            }

            if (!dicFSM_EachLayer[layerNum].TryGetValue(fsmID, out tFSMBuffer))
            {
                UDL.LogError(fsmID.ToString() + " FSM 이 등록되어 있지 않음", nLogOption, errorLoglv);
                return(null);
            }

            return(tFSMBuffer.GetState(stateID));
        }
Beispiel #20
0
        private int RegisterToFSM_ChangeLayerState(FSM_LAYER_ID eLayer)
        {
            layerNum = (int)eLayer;
            if (!CurLayerCheck(eLayer))
            {
                return(1);
            }

            UnRegisterToFSM_ChangeLayerState(eLayer);//중복등록을 방지하기 위해 호출한다.

            if (!dicLayerChangeState.ContainsKey(eLayer))
            {
                return(2);
            }

            for (int idx = 0; idx < dicLayerChangeState[eLayer].Count; idx++)
            {
                curFSM_EachLayer[layerNum].EventStateChange += dicLayerChangeState[eLayer][idx];
            }

            return(0);
        }
Beispiel #21
0
        public void RegisterEventChangeLayerState(FSM_LAYER_ID eLayer, deleStateTransEvent _deleFunc)
        {
            layerNum = (int)eLayer;
            if (layerNum >= iMaxLayer)
            {
                UDL.LogError("할당 되지 않은 레이어를 호출했습니다", nLogOption, errorLoglv);
                return;
            }

            if (!dicLayerChangeState.ContainsKey(eLayer))
            {
                dicLayerChangeState.Add(eLayer, new List <deleStateTransEvent>());
            }

            dicLayerChangeState[eLayer].Add(_deleFunc);

            int result = RegisterToFSM_ChangeLayerState(eLayer);

            if (result == 1)
            {
                UDL.LogWarning(eLayer + " " + errMsgAbout_Register_ChangeLayerState[result] + " // 이 후 해당 레이어에 ChangeFSM이 호출 될 때 반영될 수 있습니다. ", nLogOption, warningLoglv);
            }
        }
Beispiel #22
0
 public void ReleaseLayer(FSM_LAYER_ID eLayer)
 {
     dicFSM_EachLayer[layerNum].Clear();
     curFSM_EachLayer[layerNum] = null;
 }
Beispiel #23
0
 public void ChangeFSM_BufferBack(FSM_LAYER_ID eLayer)
 {
     ChangeFSM(eLayer, layerFSM_Buffer[layerNum]);
 }