Beispiel #1
0
    public static smTransitionResult DoTransition(this Ism sm, IsmParameter parameter)
    {
        switch (sm.State.UnionCase)
        {
        case smState.UnionCases.a:
        {
            switch (parameter.Trigger.UnionCase)
            {
            case smTrigger.UnionCases.atob:
                return(new smTransition(sm, ((asm)sm).atob((smParameters.atob)parameter), parameter));

            default:
                return(new smInvalidTrigger(sm, parameter));
            }
        }

        case smState.UnionCases.b:
        {
            switch (parameter.Trigger.UnionCase)
            {
            default:
                return(new smInvalidTrigger(sm, parameter));
            }
        }

        default:
            throw new ArgumentException($"Unknown type implementing Ism: {sm.GetType().Name}");
        }
    }
Beispiel #2
0
        public void Update(Ism entitySM)
        {
            this._delay = Environment.TickCount;
            if (Delay - LastCalled < MIN_DELAY)
            {
                return;// no time yet for change state
            }
            this._lastcalled = _delay;

            switch (currentstate)
            {
            case State.ATTACK:
                entitySM.Attack();
                break;

            case State.RUN:
                entitySM.Run();
                break;

            case State.STAND:
                entitySM.Stand();
                break;

            case State.WONDER:
                entitySM.Wonder();
                break;

            default:
                break;
            }
        }
Beispiel #3
0
    public static async Task <T> Match <T>(this Ism sm, Func <asm, Task <T> > a, Func <bsm, Task <T> > b)
    {
        switch (sm.State.UnionCase)
        {
        case smState.UnionCases.a:
            return(await a((asm)sm).ConfigureAwait(false));

        case smState.UnionCases.b:
            return(await b((bsm)sm).ConfigureAwait(false));

        default:
            throw new ArgumentException($"Unknown type derived from Ism: {sm.GetType().Name}");
        }
    }
Beispiel #4
0
    public static T Match <T>(this Ism sm, Func <asm, T> a, Func <bsm, T> b)
    {
        switch (sm.State.UnionCase)
        {
        case smState.UnionCases.a:
            return(a((asm)sm));

        case smState.UnionCases.b:
            return(b((bsm)sm));

        default:
            throw new ArgumentException($"Unknown type derived from Ism: {sm.GetType().Name}");
        }
    }
Beispiel #5
0
        private void Change_Click(object sender, EventArgs e)
        {
            Ism.Clear();
            StringBuilder strb = new StringBuilder(Isn.Text);
            char          buf;

            if (strb.Length == 0)
            {
                return;
            }
            for (int i = 0; i + 2 <= strb.Length; i += 2)
            {
                buf         = strb[i];
                strb[i]     = strb[i + 1];
                strb[i + 1] = buf;
            }
            Ism.Text = strb.ToString();
        }
Beispiel #6
0
 void Ism.Update(Ism entityIsm)
 {
     if (!IsKilled)
     {
         cSM.Update(entityIsm);
         if (moving)
         {
             Goto();
         }
     }
     else
     {
         if (despawnTimer == null)
         {
             OnBehead(null);
         }
         //Despawn(null);
     }
 }
Beispiel #7
0
 void Ism.Update(Ism entityIsm)
 {
     Goto();
 }
Beispiel #8
0
 public smInvalidTrigger(Ism source, IsmParameter trigger)
 {
     Source = source; Trigger = trigger;
 }
Beispiel #9
0
 public smTransition(Ism source, Ism destination, IsmParameter trigger)
 {
     Source = source; Destination = destination; Trigger = trigger;
 }