Beispiel #1
0
                public DirectionPlusButton()
                {
                    SetInfo(staleTime: 15, priorityValue: 1200);

                    button0   = FightingGameInputCodeBut.None;
                    direction = FightingGameAbsInputCodeDir.None;
                }
Beispiel #2
0
 public DirectionPlusButton Init(int frameTrigger, FightingGameInputCodeBut button0, FightingGameAbsInputCodeDir direction)
 {
     base.Init(frameTrigger);
     this.button0   = button0;
     this.direction = direction;
     return(this);
 }
Beispiel #3
0
 public DoubleTap Init(int frameEnd, int frameStart, FightingGameAbsInputCodeDir direction)
 {
     base.Init(frameEnd);
     this.direction  = direction;
     this.frameStart = frameStart;
     this.frameEnd   = frameEnd;
     return(this);
 }
Beispiel #4
0
 public void SetCurrentInputState(FightingGameAbsInputCodeDir dirInputCode = FightingGameAbsInputCodeDir.Neutral, int buttonInputCode = 0)
 {
     currState.direction = dirInputCode != FightingGameAbsInputCodeDir.None ? dirInputCode : FightingGameAbsInputCodeDir.Neutral;
     currState.butA      = (buttonInputCode & (int)FightingGameInputCodeBut.A) != 0;
     currState.butB      = (buttonInputCode & (int)FightingGameInputCodeBut.B) != 0;
     currState.butC      = (buttonInputCode & (int)FightingGameInputCodeBut.C) != 0;
     currState.butD      = (buttonInputCode & (int)FightingGameInputCodeBut.D) != 0;
     currState.butS      = (buttonInputCode & (int)FightingGameInputCodeBut.S) != 0;
 }
            public FightingGameInputCodeDir MapAbsoluteToRelative(FightingGameAbsInputCodeDir absInput)
            {
                //horizontal = ((((x - 1) mod 3) - 1) * orientation + 1);
                //vertical = floor((x - 1) / 3) * 3 + 1
                FightingGameInputCodeDir temp = (FightingGameInputCodeDir)(((int)absInput - 1) / 3 * 3 + 1 + (int)(((((int)absInput - 1) % 3) - 1) * screenOrientation.x + 1));

                //if (id == 0) Debug.Log((int) temp);
                return(temp);
            }
Beispiel #6
0
            public static int FindDirectionCurrent(InputBufferReader reader, Factory inputFactory, List <Combination> activeInputs)
            {
                int numFound = 0;

                reader.ResetCurrIndex();
                reader.SetReadIndex(-1);
                reader.ReadBuffer(out GameInputStruct curr);
                FightingGameAbsInputCodeDir direction = curr.direction;
                DirectionCurrent            input     = AddToActiveInputs <DirectionCurrent>(activeInputs, inputFactory, reader.currentFrame, newInput => {
                    numFound++;
                    newInput.Init(reader.currentFrame, direction);
                });

                //FightingGameInputCodeDir direction = (FightingGameInputCodeDir) int.Parse(buffer[buffer.Length - 1].ToString());
                return(numFound);
            }
Beispiel #7
0
            // regex = /(?<=([1-9]))(?=([^5]))(?!\1)/g
            public static int FindDirectionPresses(InputBufferReader reader, Factory inputFactory, List <Combination> activeInputs)
            {
                int numFound = 0;

                reader.ResetCurrIndex();

                FightingGameAbsInputCodeDir prevDir = FightingGameAbsInputCodeDir.None;

                while (reader.ReadyNext())
                {
                    int inputFrameIndex = reader.ReadBuffer(out GameInputStruct curr);

                    if (curr.direction != FightingGameAbsInputCodeDir.Neutral && prevDir != curr.direction)
                    {
                        AddToActiveInputs <DirectionPress>(activeInputs, inputFactory, reader.currentFrame, newInput => {
                            numFound++;
                            newInput.Init(inputFrameIndex, curr.direction);
                        });
                    }
                    prevDir = curr.direction;
                }
                return(numFound);
            }
Beispiel #8
0
            public static int FindQuarterCircles(InputBufferReader reader, Factory inputFactory, List <Combination> activeInputs)
            {
                int numFound = 0;

                reader.ResetCurrIndex();
                FightingGameAbsInputCodeDir currDir = FightingGameAbsInputCodeDir.None;

                while (reader.ReadyNext())
                {
                    int inputFrameIndex = reader.ReadBuffer(out GameInputStruct curr);

                    if (currDir != curr.direction)
                    {
                        currDir = curr.direction;
                        int lookAheadFrameIndex;

                        reader.ResetLookAhead();
                        if ((lookAheadFrameIndex = FindMotion(curr, reader, qcLeft, qcSearchLength)) >= 0)
                        {
                            QuarterCircle input = AddToActiveInputs <QuarterCircle>(activeInputs, inputFactory, reader.currentFrame, newInput => {
                                numFound++;
                                newInput.Init(lookAheadFrameIndex, FightingGameAbsInputCodeDir.Left);
                            });
                        }

                        reader.ResetLookAhead();
                        if ((lookAheadFrameIndex = FindMotion(curr, reader, qcRight, qcSearchLength)) >= 0)
                        {
                            QuarterCircle input = AddToActiveInputs <QuarterCircle>(activeInputs, inputFactory, reader.currentFrame, newInput => {
                                numFound++;
                                newInput.Init(lookAheadFrameIndex, FightingGameAbsInputCodeDir.Right);
                            });
                        }
                    }
                }
                return(numFound);
            }
Beispiel #9
0
 public QuarterCircleButtonPress Init(int frameTrigger, FightingGameAbsInputCodeDir endDirection, FightingGameInputCodeBut button0)
 {
     base.Init(frameTrigger, endDirection);
     this.button0 = button0;
     return(this);
 }
Beispiel #10
0
 public QuarterCircle Init(int frameTrigger, FightingGameAbsInputCodeDir endDirection)
 {
     base.Init(frameTrigger);
     this.endDirection = endDirection;
     return(this);
 }
Beispiel #11
0
                public QuarterCircle()
                {
                    SetInfo(staleTime: 24, priorityValue: 5000);

                    endDirection = FightingGameAbsInputCodeDir.None;
                }
Beispiel #12
0
            // regex = /(?<=([^5])[^5\1]{0,4}5{1,7})(?=[^5\1]{0,3}\1)/g
            public static int FindDoubleTaps(InputBufferReader reader, Factory inputFactory, List <Combination> activeInputs)
            {
                int numFound = 0;

                reader.ResetCurrIndex();
                FightingGameAbsInputCodeDir currDir = FightingGameAbsInputCodeDir.None;

                while (reader.ReadyNext())
                {
                    int inputFrameIndex = reader.ReadBuffer(out GameInputStruct curr);

                    if (currDir != curr.direction)
                    {
                        currDir = curr.direction;

                        FightingGameAbsInputCodeDir direction = FightingGameAbsInputCodeDir.None;
                        if (curr.direction != FightingGameAbsInputCodeDir.Neutral)
                        {
                            direction = curr.direction;

                            bool continueSearch = true;
                            int  n = 0;
                            //FightingGameInputCodeDir prevDir = direction;

                            n = 0;
                            while (continueSearch && reader.ReadyNextLookBehind())
                            {
                                if (n < 5)
                                {
                                    int lookBehindFrameIndex = reader.LookBehind(out GameInputStruct lb);

                                    if (lb.direction == FightingGameAbsInputCodeDir.Neutral)
                                    {
                                        break;
                                    }
                                    ++n;
                                }
                                else
                                {
                                    continueSearch = false;
                                    break;
                                }
                            }

                            n = 0;
                            while (continueSearch && reader.ReadyNextLookBehind())
                            {
                                if (n < 8)
                                {
                                    int lookBehindFrameIndex = reader.LookBehind(out GameInputStruct lb);

                                    if (lb.direction != FightingGameAbsInputCodeDir.Neutral)
                                    {
                                        break;
                                    }
                                    ++n;
                                }
                                else
                                {
                                    continueSearch = false;
                                    break;
                                }
                            }

                            n = 0;
                            while (continueSearch && reader.ReadyNextLookBehind())
                            {
                                if (n < 4)
                                {
                                    int lookBehindFrameIndex = reader.LookBehind(out GameInputStruct lb);

                                    if (lb.direction == direction)
                                    {
                                        DoubleTap input = AddToActiveInputs <DoubleTap>(activeInputs, inputFactory, reader.currentFrame, newInput => {
                                            numFound++;
                                            newInput.Init(inputFrameIndex, lookBehindFrameIndex, direction);
                                        });
                                    }
                                    ++n;
                                }
                                else
                                {
                                    continueSearch = false;
                                    break;
                                }
                            }
                        }
                    }
                }
                return(numFound);
            }
Beispiel #13
0
 public DirectionPress()
 {
     SetInfo(staleTime: 6, priorityValue: 100);
     this.direction = FightingGameAbsInputCodeDir.None;
 }
Beispiel #14
0
            public void FrameUpdate(int frameIndex)
            {
                FightingGameAbsInputCodeDir fgInputCodeDir = (FightingGameAbsInputCodeDir)((verticalInput + 1) * 3 + (horizontalInput + 1) + 1);

                inputBuffer.SetCurrentInputState(fgInputCodeDir, buttonInputCode);
            }
Beispiel #15
0
            public static int FindDirectionPlusButtons(InputBufferReader reader, Factory inputFactory, List <Combination> activeInputs)
            {
                int numFound = 0;

                reader.ResetCurrIndex();

                List <Combination> buttonPresses = activeInputs.FindAll(combo => {
                    return(combo.GetType() == typeof(ButtonPress));
                });

                foreach (ButtonPress bp in buttonPresses)
                {
                    bool continueSearch = false;
                    reader.SetReadIndex(-(reader.currentFrame - bp.GetFrame()));

                    int inputFrameIndex = reader.ReadBuffer(out GameInputStruct curr);

                    //for (int n = 0; n < 3 && reader.ReadyNextLookBehind(); ++n) {
                    //    // I'm NOT going to do a look behind for the direction. The frame of the button press is ALL that matters.
                    //}

                    for (int n = 0; n < 5 && reader.ReadyNextLookAhead(); ++n)
                    {
                        int lookAheadFrameIndex = reader.LookAhead(out GameInputStruct la);

                        if (la.direction != curr.direction)
                        {
                            continueSearch = true;
                            break;
                        }
                    }

                    if (!continueSearch && curr.direction != FightingGameAbsInputCodeDir.Neutral)
                    {
                        AddToActiveInputs <DirectionPlusButton>(activeInputs, inputFactory, reader.currentFrame, newInput => {
                            numFound++;
                            newInput.Init(bp.GetFrame(), bp.button0, curr.direction);
                        });
                    }
                    else
                    {
                        reader.ResetLookAhead();
                        int lookAheadFrameIndex             = bp.GetFrame();
                        int holdLength                      = 0;
                        FightingGameAbsInputCodeDir holdDir = curr.direction;
                        for (int n = 0; n < 15 && reader.ReadyNextLookAhead(); ++n)
                        {
                            lookAheadFrameIndex = reader.LookAhead(out GameInputStruct la);

                            if (la.direction == holdDir)
                            {
                                holdLength++;
                                if (holdLength >= 5)
                                {
                                    continueSearch = false;
                                    break;
                                }
                            }
                            else
                            {
                                holdDir    = la.direction;
                                holdLength = 0;
                            }
                        }

                        if (!continueSearch && holdDir != FightingGameAbsInputCodeDir.Neutral)
                        {
                            AddToActiveInputs <DirectionPlusButton>(activeInputs, inputFactory, reader.currentFrame, newInput => {
                                numFound++;
                                newInput.Init(lookAheadFrameIndex, bp.button0, holdDir);
                            });
                        }
                    }
                }
                return(numFound);
            }
Beispiel #16
0
 public DirectionCurrent()
 {
     SetInfo(staleTime: 0, priorityValue: 1);
     this.direction = FightingGameAbsInputCodeDir.None;
 }
Beispiel #17
0
 public virtual DirectionCurrent Init(int frameTrigger, FightingGameAbsInputCodeDir direction)
 {
     base.Init(frameTrigger);
     this.direction = direction;
     return(this);
 }
Beispiel #18
0
 public DirectionLongHold Init(int frameTrigger, FightingGameAbsInputCodeDir direction, int holdLength)
 {
     base.Init(frameTrigger, direction);
     this.holdLength = holdLength;
     return(this);
 }