Beispiel #1
0
        /// <summary> 构造函数 </summary>
        public MainFsm(Type typeBool, Type tyFloat)
        {
            triggerSet      = new HashSet <Enum>();
            boolDict        = new Dictionary <Enum, bool>();
            floatDict       = new Dictionary <Enum, float>();
            tempTriggerList = new List <Enum>();
            anyState        = new AnyState(this);
            intoState       = new IntoState(this, this);

            _currentNode = intoState;

            // ---------------------------------
            // 通过反射初始化FLoat和Bool对应的字典
            var boolFields = typeBool.GetFields(BindingFlags.Static | BindingFlags.Public);

            foreach (var item in boolFields)
            {
                boolDict.Add((EBoolCondition)item.GetValue(null), false);
            }
            var floatFields = tyFloat.GetFields(BindingFlags.Static | BindingFlags.Public);

            foreach (var item in floatFields)
            {
                floatDict.Add((EFloatCondition)item.GetValue(null), 0);
            }
        }
Beispiel #2
0
        // ----------------------
        /// <summary> 构造函数 供anystate调用 </summary>
        public StateTransition(AnyState anyState, IFsmNode to, MainFsm mainFsm, FsmBase fsmBelongTo = null)
        {
            if (anyState == null)
            {
                return;
            }
            if (from == to)
            {
                //Todo Error
                return;
            }
            this._mainFsm    = mainFsm;
            this.fsmBelongTo = fsmBelongTo ?? mainFsm;
            this.from        = null;
            this.to          = to;
            _conditionSet    = new HashSet <Func <bool> >();

            anyState.AddTransition(this);
        }