public bool DrawConditionStateUI(IConditionState state, Color colr, bool showOperator)
    {
        bool needRemove = false;

        GUILayout.BeginHorizontal();
        if (GUILayout.Button("", "ToggleMixed", GUILayout.Width(20f), GUILayout.Height(16f)))
        {
            needRemove = true;
        }

        EditorsUtilities.BeginContentsColored(colr, internalIndent);

        //GUILayout.Label (state.state.GetType().Name);
        if (state.GetType() == typeof(QuestVarCondition))
        {
            DrawStateCondition(state as QuestVarCondition);
        }
        if (state.GetType() == typeof(CheckItemCondition))
        {
            DrawStateCondition(state as CheckItemCondition);
        }

        EditorsUtilities.EndContents();

        if (showOperator)
        {
            state.opr = (IConditionState.OperatorType)EditorGUILayout.Popup((int)state.opr, locConditionOperatorTypeNames, GUILayout.MinWidth(40f));
        }

        GUILayout.EndHorizontal();
        GUILayout.Space(5f);

        return(needRemove);
    }
Beispiel #2
0
        private IConditionState FindBestFittingConditionState(IConditionState defaultState, List <IConditionState> conditionStates, BitArray <ModelConditionFlag> flags)
        {
            var bestConditionState = defaultState;
            var bestIntersections  = 0;

            foreach (var conditionState in conditionStates)
            {
                var numStateBits        = conditionState.ConditionFlags.NumBitsSet;
                var numIntersectionBits = conditionState.ConditionFlags.CountIntersectionBits(flags);

                if (numIntersectionBits < bestIntersections ||
                    numStateBits > numIntersectionBits)
                {
                    continue;
                }

                bestConditionState = conditionState;
                bestIntersections  = numIntersectionBits;
            }

            return(bestConditionState);
        }
Beispiel #3
0
        public ISprite CreateSprite(IMovementState movement, IConditionState condition)
        {
            ISprite sprite = new DeadMarioSprite(marioSpriteSheet);
            Type    spriteType;
            string  code = "";

            if (movement != null && condition != null)
            {
                code = movement.GetType().ToString() + condition.GetType().ToString();
            }

            if (Mario.Instance != null && Mario.Instance.RowId != -1)
            {
                marioCostumeDictionary.TryGetValue(code, out spriteType);
                if (spriteType != null)
                {
                    ConstructorInfo[] constr = new ConstructorInfo[1];
                    constr = spriteType.GetConstructors();
                    sprite = (ISprite)constr[0].Invoke(new object[] { marioCostumeSpriteSheet });
                    CostumeSprite costSprite = (CostumeSprite)sprite;
                    costSprite.RowId = Mario.Instance.RowId;
                    sprite           = costSprite;
                }
            }
            else
            {
                marioDictionary.TryGetValue(code, out spriteType);
                if (spriteType != null)
                {
                    ConstructorInfo[] constr = new ConstructorInfo[1];
                    constr = spriteType.GetConstructors();
                    sprite = (ISprite)constr[0].Invoke(new object[] { marioSpriteSheet });
                }
            }
            return(sprite);
        }