public DirectionPlusButton() { SetInfo(staleTime: 15, priorityValue: 1200); button0 = FightingGameInputCodeBut.None; direction = FightingGameAbsInputCodeDir.None; }
public DirectionPlusButton Init(int frameTrigger, FightingGameInputCodeBut button0, FightingGameAbsInputCodeDir direction) { base.Init(frameTrigger); this.button0 = button0; this.direction = direction; return(this); }
public DoubleTap Init(int frameEnd, int frameStart, FightingGameAbsInputCodeDir direction) { base.Init(frameEnd); this.direction = direction; this.frameStart = frameStart; this.frameEnd = frameEnd; return(this); }
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); }
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); }
// 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); }
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); }
public QuarterCircleButtonPress Init(int frameTrigger, FightingGameAbsInputCodeDir endDirection, FightingGameInputCodeBut button0) { base.Init(frameTrigger, endDirection); this.button0 = button0; return(this); }
public QuarterCircle Init(int frameTrigger, FightingGameAbsInputCodeDir endDirection) { base.Init(frameTrigger); this.endDirection = endDirection; return(this); }
public QuarterCircle() { SetInfo(staleTime: 24, priorityValue: 5000); endDirection = FightingGameAbsInputCodeDir.None; }
// 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); }
public DirectionPress() { SetInfo(staleTime: 6, priorityValue: 100); this.direction = FightingGameAbsInputCodeDir.None; }
public void FrameUpdate(int frameIndex) { FightingGameAbsInputCodeDir fgInputCodeDir = (FightingGameAbsInputCodeDir)((verticalInput + 1) * 3 + (horizontalInput + 1) + 1); inputBuffer.SetCurrentInputState(fgInputCodeDir, buttonInputCode); }
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); }
public DirectionCurrent() { SetInfo(staleTime: 0, priorityValue: 1); this.direction = FightingGameAbsInputCodeDir.None; }
public virtual DirectionCurrent Init(int frameTrigger, FightingGameAbsInputCodeDir direction) { base.Init(frameTrigger); this.direction = direction; return(this); }
public DirectionLongHold Init(int frameTrigger, FightingGameAbsInputCodeDir direction, int holdLength) { base.Init(frameTrigger, direction); this.holdLength = holdLength; return(this); }