示例#1
0
    public int this[FlagTypes flag]
    {
        //I tried doing this with an array of generic enums but it caused problems so its a switch statement for now
        get
        {
            switch (flag)
            {
            case FlagTypes.CommonFlags:
                return((int)commonFlags);

            case FlagTypes.ValueFlags:
                return((int)valueFlags);

            default:
                return(0);
            }
        }
        set
        {
            switch (flag)
            {
            case FlagTypes.CommonFlags:
                commonFlags = (CommonFlags)value;
                break;

            case FlagTypes.ValueFlags:
                valueFlags = (ValueFlags)value;
                break;
            }
        }
    }
示例#2
0
 //ONLY real purporse of this class, to mark types, fields or methods
 //data stored directly inside assembly files
 public EventHandlerMark(CommonFlags a)
 {
 }
示例#3
0
 public bool CheckCommonFlag(CommonFlags flag)
 {
     return((flagData.commonFlags & flag) != CommonFlags.None);
 }
示例#4
0
 public void TurnCommonFlagsOn(CommonFlags flags)
 {
     flagData.commonFlags |= flags;
 }
示例#5
0
 public void TurnCommonFlagsOff(CommonFlags flags)
 {
     flagData.commonFlags &= ~flags;
 }
示例#6
0
 public FlagData(CommonFlags cf, ValueFlags vf)
 {
     commonFlags = cf;
     valueFlags  = vf;
 }
示例#7
0
 public void TurnCommonFlagsOn(CommonFlags flags)
 {
     flagHandler.TurnCommonFlagsOn(flags);
 }
示例#8
0
    private void LateUpdate()
    {
        if (currentMove != null)
        {
            FlagData flagData = flagHandler.Flags;
            moveTime = moveTime == -1 ? 0 : moveTime + Time.deltaTime;
            //get the state of the flags tracked by the move
            CommonFlags moveFlags = (CommonFlags)currentMove.GetActiveFlags(moveTime, FlagTypes.CommonFlags);
            //activate the flags that are active according to the move
            //controllerFlags |= moveFlags;
            flagData.commonFlags |= moveFlags;
            //in the moveflags variable activate all flags not tracked by the move
            moveFlags |= (CommonFlags) ~currentMove.GetTrackedFlags(FlagTypes.CommonFlags);
            //turn off all flags not active acording to the move while leaving those not tracked by the move in their original state
            //controllerFlags &= moveFlags;
            flagData.commonFlags &= moveFlags;

            flagData.valueFlags = (ValueFlags)currentMove.GetActiveFlags(moveTime, FlagTypes.ValueFlags);

            flagHandler.Flags = flagData;
            if (entityController != null && flagHandler.ValueFlags != ValueFlags.None)
            {
                float gravityMod = 1.0f;
                if (!GetValue(ValueFlags.GravityModifier, out gravityMod))
                {
                    gravityMod = 1.0f;
                }
                entityController.GravityModifier = gravityMod;
            }
            if (listenToMoveMotion && entityController != null && flagHandler.ValueFlags != ValueFlags.None)
            {
                Vector2 targetVelocity = entityController.TargetVelocity;
                float   val            = 0;
                if (GetValue(ValueFlags.xVelocity, out val))
                {
                    targetVelocity.x = val * entityController.Facing;
                }
                if (GetValue(ValueFlags.yVelocity, out val))
                {
                    targetVelocity.y = val;
                }
                entityController.TargetVelocity = targetVelocity;
            }
            if (currentMove.EndMove(moveTime))
            {
                bool exitConditions = true;
                foreach (LinkCondition c in currentMove.ExitConditions)
                {
                    if (!CheckCondition(c))
                    {
                        exitConditions = false;
                        break;
                    }
                }
                if (exitConditions)
                {
                    StartMove(currentMove.ExitMove);
                    //EnterGenericState();
                }
            }
        }
        if (entityController != null)
        {
            entityController.AllowEntityCollision = (flagHandler.CommonFlags & CommonFlags.Dodgeing) == CommonFlags.None;
        }
    }
示例#9
0
 //ONLY real purporse of this class, to mark types, fields or methods
 //data stored directly inside assembly files
 public EventHandlerMark(CommonFlags a)
 {
 }