Skip to content

Instantly share code, notes, and snippets.

@feo52
Created May 30, 2021 04:00
Show Gist options
  • Save feo52/8e922e9ff2768b8f0d6c9320a9fe2127 to your computer and use it in GitHub Desktop.
Save feo52/8e922e9ff2768b8f0d6c9320a9fe2127 to your computer and use it in GitHub Desktop.
Hadoken Code
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using UnityEngine;
using UnityEngine.Profiling;
public class script : MonoBehaviour
{
// References
// https://dic.nicovideo.jp/a/%E8%8B%B1%E8%AA%9E%E3%81%AE%E6%A0%BC%E9%97%98%E3%82%B2%E3%83%BC%E3%83%A0%E7%94%A8%E8%AA%9E
// ULTRA STREET FIGHTER IV COMMAND LIST
// http://usf4.nesica.net/command-list.html
// List of moves
// https://streetfighter.fandom.com/wiki/Category:Move_Lists
// List of moves in Ultra Street Fighter IV A-G
// https://streetfighter.fandom.com/wiki/List_of_moves_in_Ultra_Street_Fighter_IV_A-G
// List of moves in Ultra Street Fighter IV H-Z
// https://streetfighter.fandom.com/wiki/List_of_moves_in_Ultra_Street_Fighter_IV_H-Z
// HYPER STREET FIGHTER II input frame of moves
// http://www8.plala.or.jp/ichirou/hypersf2/input.htm
// http://www8.plala.or.jp/ichirou/hypersf2/ps2hyper1.htm#char
/// <summary>技の固有番号</summary>
private enum MoveID
{
Zero = 0,
Senkuzan, // https://youtu.be/voauuv5tmry?t=340
Soukeiha, // https://youtu.be/sfb5oplmowm?t=385
Kattouha, // https://youtu.be/ugutz3jkfgm?t=297
Koekyaku, // https://youtu.be/ugutz3jkfgm?t=319
HadokenLP,
HadokenMP,
HadokenHP,
ShoryukenLP,
ShoryukenMP,
ShoryukenHP,
TatsumakisenpukyakuLK,
TatsumakisenpukyakuMK,
TatsumakisenpukyakuHK,
ShinkuHadokenSC,
TigerGenocideSC,
HaruichibanSC,
MetsuHadokenUC,
MetsuShoryukenUC,
ShitenketsuUC,
HaruranmanUC,
OldTenchisokaigenUC,
NewTenchisokaigenUC,
ShungokusatsuSC,
HyakuretsukyakuLK,
HyakuretsukyakuMK,
HyakuretsukyakuHK,
HundredhandSlapLP,
HundredhandSlapMP,
HundredhandSlapHP,
OldYogaFlameLP,
OldYogaFlameMP,
OldYogaFlameHP,
NewYogaFlameLP,
NewYogaFlameMP,
NewYogaFlameHP,
OldYogaBlastLK,
OldYogaBlastMK,
OldYogaBlastHK,
NewYogaBlastLK,
NewYogaBlastMK,
NewYogaBlastHK,
SonicBoomLP,
SonicBoomMP,
SonicBoomHP,
SomersaultKickLK,
SomersaultKickMK,
SomersaultKickHK,
SonicHurricaneUC,
SobatCarnivalSC,
SobatFestivalUC,
SomersaultExplosionUC,
SpinningPileDriverLP,
SpinningPileDriverMP,
SpinningPileDriverHP,
FlyingPowerBombLK,
FlyingPowerBombMK,
FlyingPowerBombHK,
UltimateAtomicBusterUC,
SiberianBlizzardUC,
DoubleLariatPPP,
DoubleLariatKKK,
TurnPunchPPPlv1,
TurnPunchPPPlv2,
TurnPunchPPPlv3,
TurnPunchPPPlv4,
TurnPunchPPPlv5,
TurnPunchPPPlv6,
TurnPunchPPPlv7,
TurnPunchPPPlv8,
TurnPunchPPPlv9,
TurnPunchPPPfinal,
TurnPunchKKKlv1,
TurnPunchKKKlv2,
TurnPunchKKKlv3,
TurnPunchKKKlv4,
TurnPunchKKKlv5,
TurnPunchKKKlv6,
TurnPunchKKKlv7,
TurnPunchKKKlv8,
TurnPunchKKKlv9,
TurnPunchKKKfinal,
}
/// <summary>指の状態</summary>
private enum Finger
{
Zero = 0,
/// <summary>押している</summary>
Hold,
/// <summary>離している</summary>
Free,
/// <summary>押した</summary>
Pressed,
/// <summary>離した</summary>
Release,
/// <summary>数フレーム以内に押した</summary>
PressedMoment,
/// <summary>数フレーム以内に離した</summary>
ReleaseMoment,
}
/// <summary>キーの指定</summary>
[Flags]
private enum Key
{
Zero = 0,
/// <summary>十字キー左下方向</summary>
J1 = 0x00000001,
/// <summary>十字キー↓方向</summary>
J2 = 0x00000002,
/// <summary>十字キー右下方向</summary>
J3 = 0x00000004,
/// <summary>十字キー←方向</summary>
J4 = 0x00000010,
/// <summary>十字キー真ん中</summary>
J5 = 0x00000020,
/// <summary>十字キー→方向</summary>
J6 = 0x00000040,
/// <summary>十字キー左上方向</summary>
J7 = 0x00000100,
/// <summary>十字キー↑方向</summary>
J8 = 0x00000200,
/// <summary>十字キー右上方向</summary>
J9 = 0x00000400,
/// <summary>十字キー上要素方向(Top)</summary>
JT = 0x00001000,
/// <summary>十字キー左要素方向(Left)</summary>
JL = 0x00002000,
/// <summary>十字キー右要素方向(Right)</summary>
JR = 0x00004000,
/// <summary>十字キー下要素方向(Bottom)</summary>
JB = 0x00008000,
/// <summary>弱パンチ(ライトパンチ)</summary>
LP = 0x00010000,
/// <summary>中パンチ(ミドルパンチ)</summary>
MP = 0x00020000,
/// <summary>強パンチ(ハードパンチ)</summary>
HP = 0x00040000,
/// <summary>弱キック(ライトキック)</summary>
LK = 0x00100000,
/// <summary>中キック(ミドルキック)</summary>
MK = 0x00200000,
/// <summary>強キック(ハードキック)</summary>
HK = 0x00400000,
/// <summary>(簡略表記)弱パンチ&弱キック</summary>
LPK = 0x00110000,
/// <summary>(簡略表記)中パンチ&中キック</summary>
MPK = 0x00220000,
/// <summary>(簡略表記)強パンチ&強キック</summary>
HPK = 0x00440000,
/// <summary>(簡略表記)弱パンチ&中パンチ&強パンチ</summary>
PPP = 0x00070000,
/// <summary>(簡略表記)弱キック&中キック&強キック</summary>
KKK = 0x00700000,
}
/// <summary>入力トリガー猶予期間</summary>
private static readonly int MoveCommonSettingsMomentFrame = 3;
/// <summary>技の受付後の冷却期間</summary>
private static int MoveCommonSettingsCoolFrame = 15;
/// <summary>入力判定難易度ランク(1=Normal/2=Easy/3=VeryEasy/4=SuperEasy/5=HyperEasy/6=UltraEasy</summary>
private static int MoveCommonSettingsSkillRank = 2;
/// <summary>技の各種情報保持用</summary>
private class MoveInformation
{
/// <summary>技名</summary>
public string MoveName;
/// <summary>冷却時間(入力受付後一定時間再入力受付不可)</summary>
public int CoolTime;
/// <summary>入力受付承認フレーム</summary>
public int AcceptFrame;
/// <summary>入力受付否認フレーム</summary>
public int RejectFrame;
/// <summary>入力受付承認時処理時間</summary>
public long AcceptProcessingTime;
/// <summary>入力受付否認時処理時間</summary>
public long RejectProcessingTime;
}
/// <summary>技のコマンド保持用</summary>
private class MoveCommand
{
/// <summary>技の固有番号(enum MoveID)</summary>
public MoveID Id;
/// <summary>入力コマンドキー(enum Finger)</summary>
public Finger DoFinger;
/// <summary>入力コマンドキー(enum Key)</summary>
public Key InputKey;
/// <summary>入力コマンドキー継続必要時間(Holdのみ)</summary>
public int HoldTime;
/// <summary>次のコマンドキー受付猶予時間(最終コマンドは必ず0にすること)</summary>
public int NextTime;
/// <summary>次のコマンドキー同時押し可否(最終コマンドは必ず0にすること)0はThisFrame判定 1はNextFrame判定</summary>
public int SlipTime;
}
/// <summary>GC Alloc 対策用</summary>
private static MoveID StaticMoveId;
private static Key StaticInputKey;
private static int StaticHoldTime;
private static int StaticNextTime;
private static int StaticSlipTime;
private static int StaticFrameCount;
/// <summary>技の固有番号をキーとした各種情報を保持した連想配列</summary>
private Dictionary<MoveID, MoveInformation> MoveInformationMap = new Dictionary<MoveID, MoveInformation>()
{
{ MoveID.Senkuzan, new MoveInformation { MoveName = "旋空斬?天空斬?" } },
{ MoveID.Soukeiha, new MoveInformation { MoveName = "双勁破" } },
{ MoveID.Kattouha, new MoveInformation { MoveName = "滑刀波" } },
{ MoveID.Koekyaku, new MoveInformation { MoveName = "虎影脚" } },
{ MoveID.HadokenLP, new MoveInformation { MoveName = "波動拳(弱)" } },
{ MoveID.HadokenMP, new MoveInformation { MoveName = "波動拳(中)" } },
{ MoveID.HadokenHP, new MoveInformation { MoveName = "波動拳(強)" } },
{ MoveID.ShoryukenLP, new MoveInformation { MoveName = "昇龍拳(弱)" } },
{ MoveID.ShoryukenMP, new MoveInformation { MoveName = "昇龍拳(中)" } },
{ MoveID.ShoryukenHP, new MoveInformation { MoveName = "昇龍拳(強)" } },
{ MoveID.TatsumakisenpukyakuLK, new MoveInformation { MoveName = "竜巻旋風脚(弱)" } },
{ MoveID.TatsumakisenpukyakuMK, new MoveInformation { MoveName = "竜巻旋風脚(中)" } },
{ MoveID.TatsumakisenpukyakuHK, new MoveInformation { MoveName = "竜巻旋風脚(強)" } },
{ MoveID.ShinkuHadokenSC, new MoveInformation { MoveName = "真空波動拳" } },
{ MoveID.TigerGenocideSC, new MoveInformation { MoveName = "タイガージェノサイド" } },
{ MoveID.HaruichibanSC, new MoveInformation { MoveName = "春一番" } },
{ MoveID.MetsuHadokenUC, new MoveInformation { MoveName = "滅・波動拳" } },
{ MoveID.MetsuShoryukenUC, new MoveInformation { MoveName = "滅・昇龍拳" } },
{ MoveID.ShitenketsuUC, new MoveInformation { MoveName = "死点穴" } },
{ MoveID.HaruranmanUC, new MoveInformation { MoveName = "春爛漫" } },
{ MoveID.OldTenchisokaigenUC, new MoveInformation { MoveName = "(旧)天地双潰掀" } },
{ MoveID.NewTenchisokaigenUC, new MoveInformation { MoveName = "(現)天地双潰掀" } },
{ MoveID.ShungokusatsuSC, new MoveInformation { MoveName = "瞬獄殺" } },
{ MoveID.HyakuretsukyakuLK, new MoveInformation { MoveName = "百裂脚(弱)" } },
{ MoveID.HyakuretsukyakuMK, new MoveInformation { MoveName = "百裂脚(中)" } },
{ MoveID.HyakuretsukyakuHK, new MoveInformation { MoveName = "百裂脚(強)" } },
{ MoveID.HundredhandSlapLP, new MoveInformation { MoveName = "百裂張り手(弱)" } },
{ MoveID.HundredhandSlapMP, new MoveInformation { MoveName = "百裂張り手(中)" } },
{ MoveID.HundredhandSlapHP, new MoveInformation { MoveName = "百裂張り手(強)" } },
{ MoveID.OldYogaFlameLP, new MoveInformation { MoveName = "(旧)ヨガフレイム(弱)" } },
{ MoveID.OldYogaFlameMP, new MoveInformation { MoveName = "(旧)ヨガフレイム(中)" } },
{ MoveID.OldYogaFlameHP, new MoveInformation { MoveName = "(旧)ヨガフレイム(強)" } },
{ MoveID.NewYogaFlameLP, new MoveInformation { MoveName = "(現)ヨガフレイム(弱)" } },
{ MoveID.NewYogaFlameMP, new MoveInformation { MoveName = "(現)ヨガフレイム(中)" } },
{ MoveID.NewYogaFlameHP, new MoveInformation { MoveName = "(現)ヨガフレイム(強)" } },
{ MoveID.OldYogaBlastLK, new MoveInformation { MoveName = "(旧)ヨガブラスト(弱)" } },
{ MoveID.OldYogaBlastMK, new MoveInformation { MoveName = "(旧)ヨガブラスト(中)" } },
{ MoveID.OldYogaBlastHK, new MoveInformation { MoveName = "(旧)ヨガブラスト(強)" } },
{ MoveID.NewYogaBlastLK, new MoveInformation { MoveName = "(現)ヨガブラスト(弱)" } },
{ MoveID.NewYogaBlastMK, new MoveInformation { MoveName = "(現)ヨガブラスト(中)" } },
{ MoveID.NewYogaBlastHK, new MoveInformation { MoveName = "(現)ヨガブラスト(強)" } },
{ MoveID.SonicBoomLP, new MoveInformation { MoveName = "ソニックブーム(弱)" } },
{ MoveID.SonicBoomMP, new MoveInformation { MoveName = "ソニックブーム(中)" } },
{ MoveID.SonicBoomHP, new MoveInformation { MoveName = "ソニックブーム(強)" } },
{ MoveID.SomersaultKickLK, new MoveInformation { MoveName = "サマーソルトキック(弱)" } },
{ MoveID.SomersaultKickMK, new MoveInformation { MoveName = "サマーソルトキック(中)" } },
{ MoveID.SomersaultKickHK, new MoveInformation { MoveName = "サマーソルトキック(強)" } },
{ MoveID.SonicHurricaneUC, new MoveInformation { MoveName = "ソニックハリケーン" } },
{ MoveID.SobatCarnivalSC, new MoveInformation { MoveName = "ソバットカーニバル" } },
{ MoveID.SobatFestivalUC, new MoveInformation { MoveName = "ソバットフェスティバル" } },
{ MoveID.SomersaultExplosionUC, new MoveInformation { MoveName = "サマーソルトエクスプロージョン" } },
{ MoveID.SpinningPileDriverLP, new MoveInformation { MoveName = "スクリューパイルドライバー(弱)" } },
{ MoveID.SpinningPileDriverMP, new MoveInformation { MoveName = "スクリューパイルドライバー(中)" } },
{ MoveID.SpinningPileDriverHP, new MoveInformation { MoveName = "スクリューパイルドライバー(強)" } },
{ MoveID.FlyingPowerBombLK, new MoveInformation { MoveName = "フライングパワーボム(弱)" } },
{ MoveID.FlyingPowerBombMK, new MoveInformation { MoveName = "フライングパワーボム(中)" } },
{ MoveID.FlyingPowerBombHK, new MoveInformation { MoveName = "フライングパワーボム(強)" } },
{ MoveID.UltimateAtomicBusterUC, new MoveInformation { MoveName = "アルティメットアトミックバスター" } },
{ MoveID.SiberianBlizzardUC, new MoveInformation { MoveName = "シベリアンブリザード" } },
{ MoveID.DoubleLariatPPP, new MoveInformation { MoveName = "ダブルラリアット" } },
{ MoveID.DoubleLariatKKK, new MoveInformation { MoveName = "クイックダブルラリアット" } },
{ MoveID.TurnPunchPPPlv1, new MoveInformation { MoveName = "ターンパンチPPP-Lv1" } },
{ MoveID.TurnPunchPPPlv2, new MoveInformation { MoveName = "ターンパンチPPP-Lv2" } },
{ MoveID.TurnPunchPPPlv3, new MoveInformation { MoveName = "ターンパンチPPP-Lv3" } },
{ MoveID.TurnPunchPPPlv4, new MoveInformation { MoveName = "ターンパンチPPP-Lv4" } },
{ MoveID.TurnPunchPPPlv5, new MoveInformation { MoveName = "ターンパンチPPP-Lv5" } },
{ MoveID.TurnPunchPPPlv6, new MoveInformation { MoveName = "ターンパンチPPP-Lv6" } },
{ MoveID.TurnPunchPPPlv7, new MoveInformation { MoveName = "ターンパンチPPP-Lv7" } },
{ MoveID.TurnPunchPPPlv8, new MoveInformation { MoveName = "ターンパンチPPP-Lv8" } },
{ MoveID.TurnPunchPPPlv9, new MoveInformation { MoveName = "ターンパンチPPP-Lv9" } },
{ MoveID.TurnPunchPPPfinal, new MoveInformation { MoveName = "ターンパンチPPP-LFINAL" } },
{ MoveID.TurnPunchKKKlv1, new MoveInformation { MoveName = "ターンパンチKKK-Lv1" } },
{ MoveID.TurnPunchKKKlv2, new MoveInformation { MoveName = "ターンパンチKKK-Lv2" } },
{ MoveID.TurnPunchKKKlv3, new MoveInformation { MoveName = "ターンパンチKKK-Lv3" } },
{ MoveID.TurnPunchKKKlv4, new MoveInformation { MoveName = "ターンパンチKKK-Lv4" } },
{ MoveID.TurnPunchKKKlv5, new MoveInformation { MoveName = "ターンパンチKKK-Lv5" } },
{ MoveID.TurnPunchKKKlv6, new MoveInformation { MoveName = "ターンパンチKKK-Lv6" } },
{ MoveID.TurnPunchKKKlv7, new MoveInformation { MoveName = "ターンパンチKKK-Lv7" } },
{ MoveID.TurnPunchKKKlv8, new MoveInformation { MoveName = "ターンパンチKKK-Lv8" } },
{ MoveID.TurnPunchKKKlv9, new MoveInformation { MoveName = "ターンパンチKKK-Lv9" } },
{ MoveID.TurnPunchKKKfinal, new MoveInformation { MoveName = "ターンパンチKKK-LFINAL" } },
};
/// <summary>技のコマンドリスト(二次元リスト)</summary>
private List<List<MoveCommand>> MoveCommandList = new List<List<MoveCommand>>()
{
new List<MoveCommand>()
{
new MoveCommand { Id = MoveID.Senkuzan, DoFinger = Finger.PressedMoment, InputKey = Key.HPK, HoldTime = 1, NextTime = 0, SlipTime = 0 },
},
new List<MoveCommand>()
{
new MoveCommand { Id = MoveID.Soukeiha, DoFinger = Finger.Hold, InputKey = Key.HP, HoldTime = 30, NextTime = 1, SlipTime = 1 },
new MoveCommand { Id = MoveID.Soukeiha, DoFinger = Finger.Release, InputKey = Key.HP, HoldTime = 1, NextTime = 0, SlipTime = 0 },
},
//new List<MoveCommand>() //コマンドが簡単な為に入力受付しまくるのでコメントアウト
//{
// new MoveCommand { Id = MoveID.Kattouha, DoFinger = Finger.Pressed, InputKey = Key.J6, HoldTime = 1, NextTime = 6, SlipTime = 1 },
// new MoveCommand { Id = MoveID.Kattouha, DoFinger = Finger.Pressed, InputKey = Key.J6, HoldTime = 1, NextTime = 0, SlipTime = 0 },
//},
new List<MoveCommand>()
{
new MoveCommand { Id = MoveID.Koekyaku, DoFinger = Finger.Hold, InputKey = Key.J2, HoldTime = 1, NextTime = 6, SlipTime = 1 },
new MoveCommand { Id = MoveID.Koekyaku, DoFinger = Finger.Hold, InputKey = Key.J8, HoldTime = 1, NextTime = 10, SlipTime = 0 },
new MoveCommand { Id = MoveID.Koekyaku, DoFinger = Finger.Pressed, InputKey = Key.HK, HoldTime = 1, NextTime = 0, SlipTime = 0 },
},
new List<MoveCommand>()
{
new MoveCommand { Id = MoveID.HadokenLP, DoFinger = Finger.Hold, InputKey = Key.J2, HoldTime = 1, NextTime = 6, SlipTime = 1 },
new MoveCommand { Id = MoveID.HadokenLP, DoFinger = Finger.Hold, InputKey = Key.J3, HoldTime = 1, NextTime = 6, SlipTime = 1 },
new MoveCommand { Id = MoveID.HadokenLP, DoFinger = Finger.Hold, InputKey = Key.J6, HoldTime = 1, NextTime = 10, SlipTime = 0 },
new MoveCommand { Id = MoveID.HadokenLP, DoFinger = Finger.Pressed, InputKey = Key.LP, HoldTime = 1, NextTime = 0, SlipTime = 0 },
},
new List<MoveCommand>()
{
new MoveCommand { Id = MoveID.HadokenMP, DoFinger = Finger.Hold, InputKey = Key.J2, HoldTime = 1, NextTime = 6, SlipTime = 1 },
new MoveCommand { Id = MoveID.HadokenMP, DoFinger = Finger.Hold, InputKey = Key.J3, HoldTime = 1, NextTime = 6, SlipTime = 1 },
new MoveCommand { Id = MoveID.HadokenMP, DoFinger = Finger.Hold, InputKey = Key.J6, HoldTime = 1, NextTime = 9, SlipTime = 0 },
new MoveCommand { Id = MoveID.HadokenMP, DoFinger = Finger.Pressed, InputKey = Key.MP, HoldTime = 1, NextTime = 0, SlipTime = 0 },
},
new List<MoveCommand>()
{
new MoveCommand { Id = MoveID.HadokenHP, DoFinger = Finger.Hold, InputKey = Key.J2, HoldTime = 1, NextTime = 6, SlipTime = 1 },
new MoveCommand { Id = MoveID.HadokenHP, DoFinger = Finger.Hold, InputKey = Key.J3, HoldTime = 1, NextTime = 6, SlipTime = 1 },
new MoveCommand { Id = MoveID.HadokenHP, DoFinger = Finger.Hold, InputKey = Key.J6, HoldTime = 1, NextTime = 7, SlipTime = 0 },
new MoveCommand { Id = MoveID.HadokenHP, DoFinger = Finger.Pressed, InputKey = Key.HP, HoldTime = 1, NextTime = 0, SlipTime = 0 },
},
new List<MoveCommand>()
{
new MoveCommand { Id = MoveID.ShoryukenLP, DoFinger = Finger.Hold, InputKey = Key.J6, HoldTime = 1, NextTime = 6, SlipTime = 1 },
new MoveCommand { Id = MoveID.ShoryukenLP, DoFinger = Finger.Hold, InputKey = Key.J2, HoldTime = 1, NextTime = 6, SlipTime = 1 },
new MoveCommand { Id = MoveID.ShoryukenLP, DoFinger = Finger.Hold, InputKey = Key.J3, HoldTime = 1, NextTime = 10, SlipTime = 0 },
new MoveCommand { Id = MoveID.ShoryukenLP, DoFinger = Finger.Pressed, InputKey = Key.LP, HoldTime = 1, NextTime = 0, SlipTime = 0 },
},
new List<MoveCommand>()
{
new MoveCommand { Id = MoveID.ShoryukenMP, DoFinger = Finger.Hold, InputKey = Key.J6, HoldTime = 1, NextTime = 6, SlipTime = 1 },
new MoveCommand { Id = MoveID.ShoryukenMP, DoFinger = Finger.Hold, InputKey = Key.J2, HoldTime = 1, NextTime = 6, SlipTime = 1 },
new MoveCommand { Id = MoveID.ShoryukenMP, DoFinger = Finger.Hold, InputKey = Key.J3, HoldTime = 1, NextTime = 9, SlipTime = 0 },
new MoveCommand { Id = MoveID.ShoryukenMP, DoFinger = Finger.Pressed, InputKey = Key.MP, HoldTime = 1, NextTime = 0, SlipTime = 0 },
},
new List<MoveCommand>()
{
new MoveCommand { Id = MoveID.ShoryukenHP, DoFinger = Finger.Hold, InputKey = Key.J6, HoldTime = 1, NextTime = 6, SlipTime = 1 },
new MoveCommand { Id = MoveID.ShoryukenHP, DoFinger = Finger.Hold, InputKey = Key.J2, HoldTime = 1, NextTime = 6, SlipTime = 1 },
new MoveCommand { Id = MoveID.ShoryukenHP, DoFinger = Finger.Hold, InputKey = Key.J3, HoldTime = 1, NextTime = 7, SlipTime = 0 },
new MoveCommand { Id = MoveID.ShoryukenHP, DoFinger = Finger.Pressed, InputKey = Key.HP, HoldTime = 1, NextTime = 0, SlipTime = 0 },
},
new List<MoveCommand>()
{
new MoveCommand { Id = MoveID.TatsumakisenpukyakuLK, DoFinger = Finger.Hold, InputKey = Key.J2, HoldTime = 1, NextTime = 6, SlipTime = 1 },
new MoveCommand { Id = MoveID.TatsumakisenpukyakuLK, DoFinger = Finger.Hold, InputKey = Key.J1, HoldTime = 1, NextTime = 6, SlipTime = 1 },
new MoveCommand { Id = MoveID.TatsumakisenpukyakuLK, DoFinger = Finger.Hold, InputKey = Key.J4, HoldTime = 1, NextTime = 10, SlipTime = 0 },
new MoveCommand { Id = MoveID.TatsumakisenpukyakuLK, DoFinger = Finger.Pressed, InputKey = Key.LK, HoldTime = 1, NextTime = 0, SlipTime = 0 },
},
new List<MoveCommand>()
{
new MoveCommand { Id = MoveID.TatsumakisenpukyakuMK, DoFinger = Finger.Hold, InputKey = Key.J2, HoldTime = 1, NextTime = 6, SlipTime = 1 },
new MoveCommand { Id = MoveID.TatsumakisenpukyakuMK, DoFinger = Finger.Hold, InputKey = Key.J1, HoldTime = 1, NextTime = 6, SlipTime = 1 },
new MoveCommand { Id = MoveID.TatsumakisenpukyakuMK, DoFinger = Finger.Hold, InputKey = Key.J4, HoldTime = 1, NextTime = 9, SlipTime = 0 },
new MoveCommand { Id = MoveID.TatsumakisenpukyakuMK, DoFinger = Finger.Pressed, InputKey = Key.MK, HoldTime = 1, NextTime = 0, SlipTime = 0 },
},
new List<MoveCommand>()
{
new MoveCommand { Id = MoveID.TatsumakisenpukyakuHK, DoFinger = Finger.Hold, InputKey = Key.J2, HoldTime = 1, NextTime = 6, SlipTime = 1 },
new MoveCommand { Id = MoveID.TatsumakisenpukyakuHK, DoFinger = Finger.Hold, InputKey = Key.J1, HoldTime = 1, NextTime = 6, SlipTime = 1 },
new MoveCommand { Id = MoveID.TatsumakisenpukyakuHK, DoFinger = Finger.Hold, InputKey = Key.J4, HoldTime = 1, NextTime = 7, SlipTime = 0 },
new MoveCommand { Id = MoveID.TatsumakisenpukyakuHK, DoFinger = Finger.Pressed, InputKey = Key.HK, HoldTime = 1, NextTime = 0, SlipTime = 0 },
},
new List<MoveCommand>()
{
new MoveCommand { Id = MoveID.ShinkuHadokenSC, DoFinger = Finger.Hold, InputKey = Key.J2, HoldTime = 1, NextTime = 14, SlipTime = 1 },
new MoveCommand { Id = MoveID.ShinkuHadokenSC, DoFinger = Finger.Hold, InputKey = Key.J3, HoldTime = 1, NextTime = 14, SlipTime = 1 },
new MoveCommand { Id = MoveID.ShinkuHadokenSC, DoFinger = Finger.Hold, InputKey = Key.J6, HoldTime = 1, NextTime = 14, SlipTime = 1 },
new MoveCommand { Id = MoveID.ShinkuHadokenSC, DoFinger = Finger.Hold, InputKey = Key.J2, HoldTime = 1, NextTime = 14, SlipTime = 1 },
new MoveCommand { Id = MoveID.ShinkuHadokenSC, DoFinger = Finger.Hold, InputKey = Key.J3, HoldTime = 1, NextTime = 14, SlipTime = 1 },
new MoveCommand { Id = MoveID.ShinkuHadokenSC, DoFinger = Finger.Hold, InputKey = Key.J6, HoldTime = 1, NextTime = 9, SlipTime = 0 },
new MoveCommand { Id = MoveID.ShinkuHadokenSC, DoFinger = Finger.Pressed, InputKey = Key.LP, HoldTime = 1, NextTime = 0, SlipTime = 0 },
},
new List<MoveCommand>()
{
new MoveCommand { Id = MoveID.ShinkuHadokenSC, DoFinger = Finger.Hold, InputKey = Key.J2, HoldTime = 1, NextTime = 14, SlipTime = 1 },
new MoveCommand { Id = MoveID.ShinkuHadokenSC, DoFinger = Finger.Hold, InputKey = Key.J3, HoldTime = 1, NextTime = 14, SlipTime = 1 },
new MoveCommand { Id = MoveID.ShinkuHadokenSC, DoFinger = Finger.Hold, InputKey = Key.J6, HoldTime = 1, NextTime = 14, SlipTime = 1 },
new MoveCommand { Id = MoveID.ShinkuHadokenSC, DoFinger = Finger.Hold, InputKey = Key.J2, HoldTime = 1, NextTime = 14, SlipTime = 1 },
new MoveCommand { Id = MoveID.ShinkuHadokenSC, DoFinger = Finger.Hold, InputKey = Key.J3, HoldTime = 1, NextTime = 14, SlipTime = 1 },
new MoveCommand { Id = MoveID.ShinkuHadokenSC, DoFinger = Finger.Hold, InputKey = Key.J6, HoldTime = 1, NextTime = 9, SlipTime = 0 },
new MoveCommand { Id = MoveID.ShinkuHadokenSC, DoFinger = Finger.Pressed, InputKey = Key.MP, HoldTime = 1, NextTime = 0, SlipTime = 0 },
},
new List<MoveCommand>()
{
new MoveCommand { Id = MoveID.ShinkuHadokenSC, DoFinger = Finger.Hold, InputKey = Key.J2, HoldTime = 1, NextTime = 14, SlipTime = 1 },
new MoveCommand { Id = MoveID.ShinkuHadokenSC, DoFinger = Finger.Hold, InputKey = Key.J3, HoldTime = 1, NextTime = 14, SlipTime = 1 },
new MoveCommand { Id = MoveID.ShinkuHadokenSC, DoFinger = Finger.Hold, InputKey = Key.J6, HoldTime = 1, NextTime = 14, SlipTime = 1 },
new MoveCommand { Id = MoveID.ShinkuHadokenSC, DoFinger = Finger.Hold, InputKey = Key.J2, HoldTime = 1, NextTime = 14, SlipTime = 1 },
new MoveCommand { Id = MoveID.ShinkuHadokenSC, DoFinger = Finger.Hold, InputKey = Key.J3, HoldTime = 1, NextTime = 14, SlipTime = 1 },
new MoveCommand { Id = MoveID.ShinkuHadokenSC, DoFinger = Finger.Hold, InputKey = Key.J6, HoldTime = 1, NextTime = 9, SlipTime = 0 },
new MoveCommand { Id = MoveID.ShinkuHadokenSC, DoFinger = Finger.Pressed, InputKey = Key.HP, HoldTime = 1, NextTime = 0, SlipTime = 0 },
},
new List<MoveCommand>()
{
new MoveCommand { Id = MoveID.TigerGenocideSC, DoFinger = Finger.Hold, InputKey = Key.J2, HoldTime = 1, NextTime = 14, SlipTime = 1 },
new MoveCommand { Id = MoveID.TigerGenocideSC, DoFinger = Finger.Hold, InputKey = Key.J3, HoldTime = 1, NextTime = 14, SlipTime = 1 },
new MoveCommand { Id = MoveID.TigerGenocideSC, DoFinger = Finger.Hold, InputKey = Key.J6, HoldTime = 1, NextTime = 14, SlipTime = 1 },
new MoveCommand { Id = MoveID.TigerGenocideSC, DoFinger = Finger.Hold, InputKey = Key.J2, HoldTime = 1, NextTime = 14, SlipTime = 1 },
new MoveCommand { Id = MoveID.TigerGenocideSC, DoFinger = Finger.Hold, InputKey = Key.J3, HoldTime = 1, NextTime = 14, SlipTime = 1 },
new MoveCommand { Id = MoveID.TigerGenocideSC, DoFinger = Finger.Hold, InputKey = Key.J6, HoldTime = 1, NextTime = 9, SlipTime = 0 },
new MoveCommand { Id = MoveID.TigerGenocideSC, DoFinger = Finger.Pressed, InputKey = Key.LK, HoldTime = 1, NextTime = 0, SlipTime = 0 },
},
new List<MoveCommand>()
{
new MoveCommand { Id = MoveID.TigerGenocideSC, DoFinger = Finger.Hold, InputKey = Key.J2, HoldTime = 1, NextTime = 14, SlipTime = 1 },
new MoveCommand { Id = MoveID.TigerGenocideSC, DoFinger = Finger.Hold, InputKey = Key.J3, HoldTime = 1, NextTime = 14, SlipTime = 1 },
new MoveCommand { Id = MoveID.TigerGenocideSC, DoFinger = Finger.Hold, InputKey = Key.J6, HoldTime = 1, NextTime = 14, SlipTime = 1 },
new MoveCommand { Id = MoveID.TigerGenocideSC, DoFinger = Finger.Hold, InputKey = Key.J2, HoldTime = 1, NextTime = 14, SlipTime = 1 },
new MoveCommand { Id = MoveID.TigerGenocideSC, DoFinger = Finger.Hold, InputKey = Key.J3, HoldTime = 1, NextTime = 14, SlipTime = 1 },
new MoveCommand { Id = MoveID.TigerGenocideSC, DoFinger = Finger.Hold, InputKey = Key.J6, HoldTime = 1, NextTime = 9, SlipTime = 0 },
new MoveCommand { Id = MoveID.TigerGenocideSC, DoFinger = Finger.Pressed, InputKey = Key.MK, HoldTime = 1, NextTime = 0, SlipTime = 0 },
},
new List<MoveCommand>()
{
new MoveCommand { Id = MoveID.TigerGenocideSC, DoFinger = Finger.Hold, InputKey = Key.J2, HoldTime = 1, NextTime = 14, SlipTime = 1 },
new MoveCommand { Id = MoveID.TigerGenocideSC, DoFinger = Finger.Hold, InputKey = Key.J3, HoldTime = 1, NextTime = 14, SlipTime = 1 },
new MoveCommand { Id = MoveID.TigerGenocideSC, DoFinger = Finger.Hold, InputKey = Key.J6, HoldTime = 1, NextTime = 14, SlipTime = 1 },
new MoveCommand { Id = MoveID.TigerGenocideSC, DoFinger = Finger.Hold, InputKey = Key.J2, HoldTime = 1, NextTime = 14, SlipTime = 1 },
new MoveCommand { Id = MoveID.TigerGenocideSC, DoFinger = Finger.Hold, InputKey = Key.J3, HoldTime = 1, NextTime = 14, SlipTime = 1 },
new MoveCommand { Id = MoveID.TigerGenocideSC, DoFinger = Finger.Hold, InputKey = Key.J6, HoldTime = 1, NextTime = 9, SlipTime = 0 },
new MoveCommand { Id = MoveID.TigerGenocideSC, DoFinger = Finger.Pressed, InputKey = Key.HK, HoldTime = 1, NextTime = 0, SlipTime = 0 },
},
new List<MoveCommand>()
{
new MoveCommand { Id = MoveID.HaruichibanSC, DoFinger = Finger.Hold, InputKey = Key.J2, HoldTime = 1, NextTime = 6, SlipTime = 1 },
new MoveCommand { Id = MoveID.HaruichibanSC, DoFinger = Finger.Hold, InputKey = Key.J1, HoldTime = 1, NextTime = 6, SlipTime = 1 },
new MoveCommand { Id = MoveID.HaruichibanSC, DoFinger = Finger.Hold, InputKey = Key.J4, HoldTime = 1, NextTime = 6, SlipTime = 1 },
new MoveCommand { Id = MoveID.HaruichibanSC, DoFinger = Finger.Hold, InputKey = Key.J2, HoldTime = 1, NextTime = 6, SlipTime = 1 },
new MoveCommand { Id = MoveID.HaruichibanSC, DoFinger = Finger.Hold, InputKey = Key.J1, HoldTime = 1, NextTime = 6, SlipTime = 1 },
new MoveCommand { Id = MoveID.HaruichibanSC, DoFinger = Finger.Hold, InputKey = Key.J4, HoldTime = 1, NextTime = 10, SlipTime = 0 },
new MoveCommand { Id = MoveID.HaruichibanSC, DoFinger = Finger.Pressed, InputKey = Key.LK, HoldTime = 1, NextTime = 0, SlipTime = 0 },
},
new List<MoveCommand>()
{
new MoveCommand { Id = MoveID.HaruichibanSC, DoFinger = Finger.Hold, InputKey = Key.J2, HoldTime = 1, NextTime = 6, SlipTime = 1 },
new MoveCommand { Id = MoveID.HaruichibanSC, DoFinger = Finger.Hold, InputKey = Key.J1, HoldTime = 1, NextTime = 6, SlipTime = 1 },
new MoveCommand { Id = MoveID.HaruichibanSC, DoFinger = Finger.Hold, InputKey = Key.J4, HoldTime = 1, NextTime = 6, SlipTime = 1 },
new MoveCommand { Id = MoveID.HaruichibanSC, DoFinger = Finger.Hold, InputKey = Key.J2, HoldTime = 1, NextTime = 6, SlipTime = 1 },
new MoveCommand { Id = MoveID.HaruichibanSC, DoFinger = Finger.Hold, InputKey = Key.J1, HoldTime = 1, NextTime = 6, SlipTime = 1 },
new MoveCommand { Id = MoveID.HaruichibanSC, DoFinger = Finger.Hold, InputKey = Key.J4, HoldTime = 1, NextTime = 9, SlipTime = 0 },
new MoveCommand { Id = MoveID.HaruichibanSC, DoFinger = Finger.Pressed, InputKey = Key.MK, HoldTime = 1, NextTime = 0, SlipTime = 0 },
},
new List<MoveCommand>()
{
new MoveCommand { Id = MoveID.HaruichibanSC, DoFinger = Finger.Hold, InputKey = Key.J2, HoldTime = 1, NextTime = 6, SlipTime = 1 },
new MoveCommand { Id = MoveID.HaruichibanSC, DoFinger = Finger.Hold, InputKey = Key.J1, HoldTime = 1, NextTime = 6, SlipTime = 1 },
new MoveCommand { Id = MoveID.HaruichibanSC, DoFinger = Finger.Hold, InputKey = Key.J4, HoldTime = 1, NextTime = 6, SlipTime = 1 },
new MoveCommand { Id = MoveID.HaruichibanSC, DoFinger = Finger.Hold, InputKey = Key.J2, HoldTime = 1, NextTime = 6, SlipTime = 1 },
new MoveCommand { Id = MoveID.HaruichibanSC, DoFinger = Finger.Hold, InputKey = Key.J1, HoldTime = 1, NextTime = 6, SlipTime = 1 },
new MoveCommand { Id = MoveID.HaruichibanSC, DoFinger = Finger.Hold, InputKey = Key.J4, HoldTime = 1, NextTime = 7, SlipTime = 0 },
new MoveCommand { Id = MoveID.HaruichibanSC, DoFinger = Finger.Pressed, InputKey = Key.HK, HoldTime = 1, NextTime = 0, SlipTime = 0 },
},
new List<MoveCommand>()
{
new MoveCommand { Id = MoveID.MetsuHadokenUC, DoFinger = Finger.Hold, InputKey = Key.J2, HoldTime = 1, NextTime = 14, SlipTime = 1 },
new MoveCommand { Id = MoveID.MetsuHadokenUC, DoFinger = Finger.Hold, InputKey = Key.J3, HoldTime = 1, NextTime = 14, SlipTime = 1 },
new MoveCommand { Id = MoveID.MetsuHadokenUC, DoFinger = Finger.Hold, InputKey = Key.J6, HoldTime = 1, NextTime = 14, SlipTime = 1 },
new MoveCommand { Id = MoveID.MetsuHadokenUC, DoFinger = Finger.Hold, InputKey = Key.J2, HoldTime = 1, NextTime = 14, SlipTime = 1 },
new MoveCommand { Id = MoveID.MetsuHadokenUC, DoFinger = Finger.Hold, InputKey = Key.J3, HoldTime = 1, NextTime = 14, SlipTime = 1 },
new MoveCommand { Id = MoveID.MetsuHadokenUC, DoFinger = Finger.Hold, InputKey = Key.J6, HoldTime = 1, NextTime = 9, SlipTime = 0 },
new MoveCommand { Id = MoveID.MetsuHadokenUC, DoFinger = Finger.PressedMoment, InputKey = Key.PPP, HoldTime = 1, NextTime = 0, SlipTime = 0 },
},
new List<MoveCommand>()
{
new MoveCommand { Id = MoveID.MetsuShoryukenUC, DoFinger = Finger.Hold, InputKey = Key.J2, HoldTime = 1, NextTime = 14, SlipTime = 1 },
new MoveCommand { Id = MoveID.MetsuShoryukenUC, DoFinger = Finger.Hold, InputKey = Key.J3, HoldTime = 1, NextTime = 14, SlipTime = 1 },
new MoveCommand { Id = MoveID.MetsuShoryukenUC, DoFinger = Finger.Hold, InputKey = Key.J6, HoldTime = 1, NextTime = 14, SlipTime = 1 },
new MoveCommand { Id = MoveID.MetsuShoryukenUC, DoFinger = Finger.Hold, InputKey = Key.J2, HoldTime = 1, NextTime = 14, SlipTime = 1 },
new MoveCommand { Id = MoveID.MetsuShoryukenUC, DoFinger = Finger.Hold, InputKey = Key.J3, HoldTime = 1, NextTime = 14, SlipTime = 1 },
new MoveCommand { Id = MoveID.MetsuShoryukenUC, DoFinger = Finger.Hold, InputKey = Key.J6, HoldTime = 1, NextTime = 9, SlipTime = 0 },
new MoveCommand { Id = MoveID.MetsuShoryukenUC, DoFinger = Finger.PressedMoment, InputKey = Key.KKK, HoldTime = 1, NextTime = 0, SlipTime = 0 },
},
new List<MoveCommand>()
{
new MoveCommand { Id = MoveID.ShitenketsuUC, DoFinger = Finger.Hold, InputKey = Key.J2, HoldTime = 1, NextTime = 14, SlipTime = 1 },
new MoveCommand { Id = MoveID.ShitenketsuUC, DoFinger = Finger.Hold, InputKey = Key.J1, HoldTime = 1, NextTime = 14, SlipTime = 1 },
new MoveCommand { Id = MoveID.ShitenketsuUC, DoFinger = Finger.Hold, InputKey = Key.J4, HoldTime = 1, NextTime = 14, SlipTime = 1 },
new MoveCommand { Id = MoveID.ShitenketsuUC, DoFinger = Finger.Hold, InputKey = Key.J2, HoldTime = 1, NextTime = 14, SlipTime = 1 },
new MoveCommand { Id = MoveID.ShitenketsuUC, DoFinger = Finger.Hold, InputKey = Key.J1, HoldTime = 1, NextTime = 14, SlipTime = 1 },
new MoveCommand { Id = MoveID.ShitenketsuUC, DoFinger = Finger.Hold, InputKey = Key.J4, HoldTime = 1, NextTime = 9, SlipTime = 0 },
new MoveCommand { Id = MoveID.ShitenketsuUC, DoFinger = Finger.PressedMoment, InputKey = Key.PPP, HoldTime = 1, NextTime = 0, SlipTime = 0 },
},
new List<MoveCommand>()
{
new MoveCommand { Id = MoveID.HaruranmanUC, DoFinger = Finger.Hold, InputKey = Key.J2, HoldTime = 1, NextTime = 14, SlipTime = 1 },
new MoveCommand { Id = MoveID.HaruranmanUC, DoFinger = Finger.Hold, InputKey = Key.J1, HoldTime = 1, NextTime = 14, SlipTime = 1 },
new MoveCommand { Id = MoveID.HaruranmanUC, DoFinger = Finger.Hold, InputKey = Key.J4, HoldTime = 1, NextTime = 14, SlipTime = 1 },
new MoveCommand { Id = MoveID.HaruranmanUC, DoFinger = Finger.Hold, InputKey = Key.J2, HoldTime = 1, NextTime = 14, SlipTime = 1 },
new MoveCommand { Id = MoveID.HaruranmanUC, DoFinger = Finger.Hold, InputKey = Key.J1, HoldTime = 1, NextTime = 14, SlipTime = 1 },
new MoveCommand { Id = MoveID.HaruranmanUC, DoFinger = Finger.Hold, InputKey = Key.J4, HoldTime = 1, NextTime = 9, SlipTime = 0 },
new MoveCommand { Id = MoveID.HaruranmanUC, DoFinger = Finger.PressedMoment, InputKey = Key.KKK, HoldTime = 1, NextTime = 0, SlipTime = 0 },
},
new List<MoveCommand>()
{
new MoveCommand { Id = MoveID.OldTenchisokaigenUC, DoFinger = Finger.Hold, InputKey = Key.J4, HoldTime = 1, NextTime = 14, SlipTime = 1 },
new MoveCommand { Id = MoveID.OldTenchisokaigenUC, DoFinger = Finger.Hold, InputKey = Key.J1, HoldTime = 1, NextTime = 14, SlipTime = 1 },
new MoveCommand { Id = MoveID.OldTenchisokaigenUC, DoFinger = Finger.Hold, InputKey = Key.J2, HoldTime = 1, NextTime = 14, SlipTime = 1 },
new MoveCommand { Id = MoveID.OldTenchisokaigenUC, DoFinger = Finger.Hold, InputKey = Key.J3, HoldTime = 1, NextTime = 14, SlipTime = 1 },
new MoveCommand { Id = MoveID.OldTenchisokaigenUC, DoFinger = Finger.Hold, InputKey = Key.J6, HoldTime = 1, NextTime = 14, SlipTime = 1 },
new MoveCommand { Id = MoveID.OldTenchisokaigenUC, DoFinger = Finger.Hold, InputKey = Key.J4, HoldTime = 1, NextTime = 14, SlipTime = 1 },
new MoveCommand { Id = MoveID.OldTenchisokaigenUC, DoFinger = Finger.Hold, InputKey = Key.J1, HoldTime = 1, NextTime = 14, SlipTime = 1 },
new MoveCommand { Id = MoveID.OldTenchisokaigenUC, DoFinger = Finger.Hold, InputKey = Key.J2, HoldTime = 1, NextTime = 14, SlipTime = 1 },
new MoveCommand { Id = MoveID.OldTenchisokaigenUC, DoFinger = Finger.Hold, InputKey = Key.J3, HoldTime = 1, NextTime = 14, SlipTime = 1 },
new MoveCommand { Id = MoveID.OldTenchisokaigenUC, DoFinger = Finger.Hold, InputKey = Key.J6, HoldTime = 1, NextTime = 9, SlipTime = 0 },
new MoveCommand { Id = MoveID.OldTenchisokaigenUC, DoFinger = Finger.PressedMoment, InputKey = Key.PPP, HoldTime = 1, NextTime = 0, SlipTime = 0 },
},
new List<MoveCommand>()
{
new MoveCommand { Id = MoveID.NewTenchisokaigenUC, DoFinger = Finger.Hold, InputKey = Key.J6, HoldTime = 1, NextTime = 14, SlipTime = 1 },
new MoveCommand { Id = MoveID.NewTenchisokaigenUC, DoFinger = Finger.Hold, InputKey = Key.J3, HoldTime = 1, NextTime = 14, SlipTime = 1 },
new MoveCommand { Id = MoveID.NewTenchisokaigenUC, DoFinger = Finger.Hold, InputKey = Key.J2, HoldTime = 1, NextTime = 14, SlipTime = 1 },
new MoveCommand { Id = MoveID.NewTenchisokaigenUC, DoFinger = Finger.Hold, InputKey = Key.J1, HoldTime = 1, NextTime = 14, SlipTime = 1 },
new MoveCommand { Id = MoveID.NewTenchisokaigenUC, DoFinger = Finger.Hold, InputKey = Key.J4, HoldTime = 1, NextTime = 14, SlipTime = 1 },
new MoveCommand { Id = MoveID.NewTenchisokaigenUC, DoFinger = Finger.Hold, InputKey = Key.J6, HoldTime = 1, NextTime = 14, SlipTime = 1 },
new MoveCommand { Id = MoveID.NewTenchisokaigenUC, DoFinger = Finger.Hold, InputKey = Key.J3, HoldTime = 1, NextTime = 14, SlipTime = 1 },
new MoveCommand { Id = MoveID.NewTenchisokaigenUC, DoFinger = Finger.Hold, InputKey = Key.J2, HoldTime = 1, NextTime = 14, SlipTime = 1 },
new MoveCommand { Id = MoveID.NewTenchisokaigenUC, DoFinger = Finger.Hold, InputKey = Key.J1, HoldTime = 1, NextTime = 14, SlipTime = 1 },
new MoveCommand { Id = MoveID.NewTenchisokaigenUC, DoFinger = Finger.Hold, InputKey = Key.J4, HoldTime = 1, NextTime = 9, SlipTime = 0 },
new MoveCommand { Id = MoveID.NewTenchisokaigenUC, DoFinger = Finger.PressedMoment, InputKey = Key.PPP, HoldTime = 1, NextTime = 0, SlipTime = 0 },
},
new List<MoveCommand>()
{
new MoveCommand { Id = MoveID.ShungokusatsuSC, DoFinger = Finger.Pressed, InputKey = Key.LP, HoldTime = 1, NextTime = 14, SlipTime = 1 },
new MoveCommand { Id = MoveID.ShungokusatsuSC, DoFinger = Finger.Pressed, InputKey = Key.LP, HoldTime = 1, NextTime = 14, SlipTime = 1 },
new MoveCommand { Id = MoveID.ShungokusatsuSC, DoFinger = Finger.Pressed, InputKey = Key.J6, HoldTime = 1, NextTime = 14, SlipTime = 1 },
new MoveCommand { Id = MoveID.ShungokusatsuSC, DoFinger = Finger.Pressed, InputKey = Key.LK, HoldTime = 1, NextTime = 14, SlipTime = 1 },
new MoveCommand { Id = MoveID.ShungokusatsuSC, DoFinger = Finger.Pressed, InputKey = Key.HP, HoldTime = 1, NextTime = 0, SlipTime = 0 },
},
new List<MoveCommand>()
{
new MoveCommand { Id = MoveID.HyakuretsukyakuLK, DoFinger = Finger.Pressed, InputKey = Key.LK, HoldTime = 1, NextTime = 15, SlipTime = 1 },
new MoveCommand { Id = MoveID.HyakuretsukyakuLK, DoFinger = Finger.Pressed, InputKey = Key.LK, HoldTime = 1, NextTime = 15, SlipTime = 1 },
new MoveCommand { Id = MoveID.HyakuretsukyakuLK, DoFinger = Finger.Pressed, InputKey = Key.LK, HoldTime = 1, NextTime = 15, SlipTime = 1 },
new MoveCommand { Id = MoveID.HyakuretsukyakuLK, DoFinger = Finger.Pressed, InputKey = Key.LK, HoldTime = 1, NextTime = 0, SlipTime = 0 },
},
new List<MoveCommand>()
{
new MoveCommand { Id = MoveID.HyakuretsukyakuMK, DoFinger = Finger.Pressed, InputKey = Key.MK, HoldTime = 1, NextTime = 12, SlipTime = 1 },
new MoveCommand { Id = MoveID.HyakuretsukyakuMK, DoFinger = Finger.Pressed, InputKey = Key.MK, HoldTime = 1, NextTime = 12, SlipTime = 1 },
new MoveCommand { Id = MoveID.HyakuretsukyakuMK, DoFinger = Finger.Pressed, InputKey = Key.MK, HoldTime = 1, NextTime = 12, SlipTime = 1 },
new MoveCommand { Id = MoveID.HyakuretsukyakuMK, DoFinger = Finger.Pressed, InputKey = Key.MK, HoldTime = 1, NextTime = 12, SlipTime = 1 },
new MoveCommand { Id = MoveID.HyakuretsukyakuMK, DoFinger = Finger.Pressed, InputKey = Key.MK, HoldTime = 1, NextTime = 0, SlipTime = 0 },
},
new List<MoveCommand>()
{
new MoveCommand { Id = MoveID.HyakuretsukyakuHK, DoFinger = Finger.Pressed, InputKey = Key.HK, HoldTime = 1, NextTime = 9, SlipTime = 1 },
new MoveCommand { Id = MoveID.HyakuretsukyakuHK, DoFinger = Finger.Pressed, InputKey = Key.HK, HoldTime = 1, NextTime = 9, SlipTime = 1 },
new MoveCommand { Id = MoveID.HyakuretsukyakuHK, DoFinger = Finger.Pressed, InputKey = Key.HK, HoldTime = 1, NextTime = 9, SlipTime = 1 },
new MoveCommand { Id = MoveID.HyakuretsukyakuHK, DoFinger = Finger.Pressed, InputKey = Key.HK, HoldTime = 1, NextTime = 9, SlipTime = 1 },
new MoveCommand { Id = MoveID.HyakuretsukyakuHK, DoFinger = Finger.Pressed, InputKey = Key.HK, HoldTime = 1, NextTime = 9, SlipTime = 1 },
new MoveCommand { Id = MoveID.HyakuretsukyakuHK, DoFinger = Finger.Pressed, InputKey = Key.HK, HoldTime = 1, NextTime = 9, SlipTime = 1 },
new MoveCommand { Id = MoveID.HyakuretsukyakuHK, DoFinger = Finger.Pressed, InputKey = Key.HK, HoldTime = 1, NextTime = 0, SlipTime = 0 },
},
new List<MoveCommand>()
{
new MoveCommand { Id = MoveID.HundredhandSlapLP, DoFinger = Finger.Pressed, InputKey = Key.LP, HoldTime = 1, NextTime = 15, SlipTime = 1 },
new MoveCommand { Id = MoveID.HundredhandSlapLP, DoFinger = Finger.Pressed, InputKey = Key.LP, HoldTime = 1, NextTime = 15, SlipTime = 1 },
new MoveCommand { Id = MoveID.HundredhandSlapLP, DoFinger = Finger.Pressed, InputKey = Key.LP, HoldTime = 1, NextTime = 15, SlipTime = 1 },
new MoveCommand { Id = MoveID.HundredhandSlapLP, DoFinger = Finger.Pressed, InputKey = Key.LP, HoldTime = 1, NextTime = 0, SlipTime = 0 },
},
new List<MoveCommand>()
{
new MoveCommand { Id = MoveID.HundredhandSlapMP, DoFinger = Finger.Pressed, InputKey = Key.MP, HoldTime = 1, NextTime = 12, SlipTime = 1 },
new MoveCommand { Id = MoveID.HundredhandSlapMP, DoFinger = Finger.Pressed, InputKey = Key.MP, HoldTime = 1, NextTime = 12, SlipTime = 1 },
new MoveCommand { Id = MoveID.HundredhandSlapMP, DoFinger = Finger.Pressed, InputKey = Key.MP, HoldTime = 1, NextTime = 12, SlipTime = 1 },
new MoveCommand { Id = MoveID.HundredhandSlapMP, DoFinger = Finger.Pressed, InputKey = Key.MP, HoldTime = 1, NextTime = 12, SlipTime = 1 },
new MoveCommand { Id = MoveID.HundredhandSlapMP, DoFinger = Finger.Pressed, InputKey = Key.MP, HoldTime = 1, NextTime = 0, SlipTime = 0 },
},
new List<MoveCommand>()
{
new MoveCommand { Id = MoveID.HundredhandSlapHP, DoFinger = Finger.Pressed, InputKey = Key.HP, HoldTime = 1, NextTime = 9, SlipTime = 1 },
new MoveCommand { Id = MoveID.HundredhandSlapHP, DoFinger = Finger.Pressed, InputKey = Key.HP, HoldTime = 1, NextTime = 9, SlipTime = 1 },
new MoveCommand { Id = MoveID.HundredhandSlapHP, DoFinger = Finger.Pressed, InputKey = Key.HP, HoldTime = 1, NextTime = 9, SlipTime = 1 },
new MoveCommand { Id = MoveID.HundredhandSlapHP, DoFinger = Finger.Pressed, InputKey = Key.HP, HoldTime = 1, NextTime = 9, SlipTime = 1 },
new MoveCommand { Id = MoveID.HundredhandSlapHP, DoFinger = Finger.Pressed, InputKey = Key.HP, HoldTime = 1, NextTime = 9, SlipTime = 1 },
new MoveCommand { Id = MoveID.HundredhandSlapHP, DoFinger = Finger.Pressed, InputKey = Key.HP, HoldTime = 1, NextTime = 9, SlipTime = 1 },
new MoveCommand { Id = MoveID.HundredhandSlapHP, DoFinger = Finger.Pressed, InputKey = Key.HP, HoldTime = 1, NextTime = 0, SlipTime = 0 },
},
new List<MoveCommand>()
{
new MoveCommand { Id = MoveID.OldYogaFlameLP, DoFinger = Finger.Hold, InputKey = Key.J4, HoldTime = 1, NextTime = 6, SlipTime = 1 },
new MoveCommand { Id = MoveID.OldYogaFlameLP, DoFinger = Finger.Hold, InputKey = Key.J1, HoldTime = 1, NextTime = 6, SlipTime = 1 },
new MoveCommand { Id = MoveID.OldYogaFlameLP, DoFinger = Finger.Hold, InputKey = Key.J2, HoldTime = 1, NextTime = 6, SlipTime = 1 },
new MoveCommand { Id = MoveID.OldYogaFlameLP, DoFinger = Finger.Hold, InputKey = Key.J3, HoldTime = 1, NextTime = 6, SlipTime = 1 },
new MoveCommand { Id = MoveID.OldYogaFlameLP, DoFinger = Finger.Hold, InputKey = Key.J6, HoldTime = 1, NextTime = 10, SlipTime = 0 },
new MoveCommand { Id = MoveID.OldYogaFlameLP, DoFinger = Finger.Pressed, InputKey = Key.LP, HoldTime = 1, NextTime = 0, SlipTime = 0 },
},
new List<MoveCommand>()
{
new MoveCommand { Id = MoveID.OldYogaFlameMP, DoFinger = Finger.Hold, InputKey = Key.J4, HoldTime = 1, NextTime = 6, SlipTime = 1 },
new MoveCommand { Id = MoveID.OldYogaFlameMP, DoFinger = Finger.Hold, InputKey = Key.J1, HoldTime = 1, NextTime = 6, SlipTime = 1 },
new MoveCommand { Id = MoveID.OldYogaFlameMP, DoFinger = Finger.Hold, InputKey = Key.J2, HoldTime = 1, NextTime = 6, SlipTime = 1 },
new MoveCommand { Id = MoveID.OldYogaFlameMP, DoFinger = Finger.Hold, InputKey = Key.J3, HoldTime = 1, NextTime = 6, SlipTime = 1 },
new MoveCommand { Id = MoveID.OldYogaFlameMP, DoFinger = Finger.Hold, InputKey = Key.J6, HoldTime = 1, NextTime = 9, SlipTime = 0 },
new MoveCommand { Id = MoveID.OldYogaFlameMP, DoFinger = Finger.Pressed, InputKey = Key.MP, HoldTime = 1, NextTime = 0, SlipTime = 0 },
},
new List<MoveCommand>()
{
new MoveCommand { Id = MoveID.OldYogaFlameHP, DoFinger = Finger.Hold, InputKey = Key.J4, HoldTime = 1, NextTime = 6, SlipTime = 1 },
new MoveCommand { Id = MoveID.OldYogaFlameHP, DoFinger = Finger.Hold, InputKey = Key.J1, HoldTime = 1, NextTime = 6, SlipTime = 1 },
new MoveCommand { Id = MoveID.OldYogaFlameHP, DoFinger = Finger.Hold, InputKey = Key.J2, HoldTime = 1, NextTime = 6, SlipTime = 1 },
new MoveCommand { Id = MoveID.OldYogaFlameHP, DoFinger = Finger.Hold, InputKey = Key.J3, HoldTime = 1, NextTime = 6, SlipTime = 1 },
new MoveCommand { Id = MoveID.OldYogaFlameHP, DoFinger = Finger.Hold, InputKey = Key.J6, HoldTime = 1, NextTime = 7, SlipTime = 0 },
new MoveCommand { Id = MoveID.OldYogaFlameHP, DoFinger = Finger.Pressed, InputKey = Key.HP, HoldTime = 1, NextTime = 0, SlipTime = 0 },
},
new List<MoveCommand>()
{
new MoveCommand { Id = MoveID.NewYogaFlameLP, DoFinger = Finger.Hold, InputKey = Key.J6, HoldTime = 1, NextTime = 6, SlipTime = 1 },
new MoveCommand { Id = MoveID.NewYogaFlameLP, DoFinger = Finger.Hold, InputKey = Key.J3, HoldTime = 1, NextTime = 6, SlipTime = 1 },
new MoveCommand { Id = MoveID.NewYogaFlameLP, DoFinger = Finger.Hold, InputKey = Key.J2, HoldTime = 1, NextTime = 6, SlipTime = 1 },
new MoveCommand { Id = MoveID.NewYogaFlameLP, DoFinger = Finger.Hold, InputKey = Key.J1, HoldTime = 1, NextTime = 6, SlipTime = 1 },
new MoveCommand { Id = MoveID.NewYogaFlameLP, DoFinger = Finger.Hold, InputKey = Key.J4, HoldTime = 1, NextTime = 10, SlipTime = 0 },
new MoveCommand { Id = MoveID.NewYogaFlameLP, DoFinger = Finger.Pressed, InputKey = Key.LP, HoldTime = 1, NextTime = 0, SlipTime = 0 },
},
new List<MoveCommand>()
{
new MoveCommand { Id = MoveID.NewYogaFlameMP, DoFinger = Finger.Hold, InputKey = Key.J6, HoldTime = 1, NextTime = 6, SlipTime = 1 },
new MoveCommand { Id = MoveID.NewYogaFlameMP, DoFinger = Finger.Hold, InputKey = Key.J3, HoldTime = 1, NextTime = 6, SlipTime = 1 },
new MoveCommand { Id = MoveID.NewYogaFlameMP, DoFinger = Finger.Hold, InputKey = Key.J2, HoldTime = 1, NextTime = 6, SlipTime = 1 },
new MoveCommand { Id = MoveID.NewYogaFlameMP, DoFinger = Finger.Hold, InputKey = Key.J1, HoldTime = 1, NextTime = 6, SlipTime = 1 },
new MoveCommand { Id = MoveID.NewYogaFlameMP, DoFinger = Finger.Hold, InputKey = Key.J4, HoldTime = 1, NextTime = 9, SlipTime = 0 },
new MoveCommand { Id = MoveID.NewYogaFlameMP, DoFinger = Finger.Pressed, InputKey = Key.MP, HoldTime = 1, NextTime = 0, SlipTime = 0 },
},
new List<MoveCommand>()
{
new MoveCommand { Id = MoveID.NewYogaFlameHP, DoFinger = Finger.Hold, InputKey = Key.J6, HoldTime = 1, NextTime = 6, SlipTime = 1 },
new MoveCommand { Id = MoveID.NewYogaFlameHP, DoFinger = Finger.Hold, InputKey = Key.J3, HoldTime = 1, NextTime = 6, SlipTime = 1 },
new MoveCommand { Id = MoveID.NewYogaFlameHP, DoFinger = Finger.Hold, InputKey = Key.J2, HoldTime = 1, NextTime = 6, SlipTime = 1 },
new MoveCommand { Id = MoveID.NewYogaFlameHP, DoFinger = Finger.Hold, InputKey = Key.J1, HoldTime = 1, NextTime = 6, SlipTime = 1 },
new MoveCommand { Id = MoveID.NewYogaFlameHP, DoFinger = Finger.Hold, InputKey = Key.J4, HoldTime = 1, NextTime = 7, SlipTime = 0 },
new MoveCommand { Id = MoveID.NewYogaFlameHP, DoFinger = Finger.Pressed, InputKey = Key.HP, HoldTime = 1, NextTime = 0, SlipTime = 0 },
},
new List<MoveCommand>()
{
new MoveCommand { Id = MoveID.OldYogaBlastLK, DoFinger = Finger.Hold, InputKey = Key.J4, HoldTime = 1, NextTime = 6, SlipTime = 1 },
new MoveCommand { Id = MoveID.OldYogaBlastLK, DoFinger = Finger.Hold, InputKey = Key.J1, HoldTime = 1, NextTime = 6, SlipTime = 1 },
new MoveCommand { Id = MoveID.OldYogaBlastLK, DoFinger = Finger.Hold, InputKey = Key.J2, HoldTime = 1, NextTime = 6, SlipTime = 1 },
new MoveCommand { Id = MoveID.OldYogaBlastLK, DoFinger = Finger.Hold, InputKey = Key.J3, HoldTime = 1, NextTime = 6, SlipTime = 1 },
new MoveCommand { Id = MoveID.OldYogaBlastLK, DoFinger = Finger.Hold, InputKey = Key.J6, HoldTime = 1, NextTime = 10, SlipTime = 0 },
new MoveCommand { Id = MoveID.OldYogaBlastLK, DoFinger = Finger.Pressed, InputKey = Key.LK, HoldTime = 1, NextTime = 0, SlipTime = 0 },
},
new List<MoveCommand>()
{
new MoveCommand { Id = MoveID.OldYogaBlastMK, DoFinger = Finger.Hold, InputKey = Key.J4, HoldTime = 1, NextTime = 6, SlipTime = 1 },
new MoveCommand { Id = MoveID.OldYogaBlastMK, DoFinger = Finger.Hold, InputKey = Key.J1, HoldTime = 1, NextTime = 6, SlipTime = 1 },
new MoveCommand { Id = MoveID.OldYogaBlastMK, DoFinger = Finger.Hold, InputKey = Key.J2, HoldTime = 1, NextTime = 6, SlipTime = 1 },
new MoveCommand { Id = MoveID.OldYogaBlastMK, DoFinger = Finger.Hold, InputKey = Key.J3, HoldTime = 1, NextTime = 6, SlipTime = 1 },
new MoveCommand { Id = MoveID.OldYogaBlastMK, DoFinger = Finger.Hold, InputKey = Key.J6, HoldTime = 1, NextTime = 9, SlipTime = 0 },
new MoveCommand { Id = MoveID.OldYogaBlastMK, DoFinger = Finger.Pressed, InputKey = Key.MK, HoldTime = 1, NextTime = 0, SlipTime = 0 },
},
new List<MoveCommand>()
{
new MoveCommand { Id = MoveID.OldYogaBlastHK, DoFinger = Finger.Hold, InputKey = Key.J4, HoldTime = 1, NextTime = 6, SlipTime = 1 },
new MoveCommand { Id = MoveID.OldYogaBlastHK, DoFinger = Finger.Hold, InputKey = Key.J1, HoldTime = 1, NextTime = 6, SlipTime = 1 },
new MoveCommand { Id = MoveID.OldYogaBlastHK, DoFinger = Finger.Hold, InputKey = Key.J2, HoldTime = 1, NextTime = 6, SlipTime = 1 },
new MoveCommand { Id = MoveID.OldYogaBlastHK, DoFinger = Finger.Hold, InputKey = Key.J3, HoldTime = 1, NextTime = 6, SlipTime = 1 },
new MoveCommand { Id = MoveID.OldYogaBlastHK, DoFinger = Finger.Hold, InputKey = Key.J6, HoldTime = 1, NextTime = 7, SlipTime = 0 },
new MoveCommand { Id = MoveID.OldYogaBlastHK, DoFinger = Finger.Pressed, InputKey = Key.HK, HoldTime = 1, NextTime = 0, SlipTime = 0 },
},
new List<MoveCommand>()
{
new MoveCommand { Id = MoveID.NewYogaBlastLK, DoFinger = Finger.Hold, InputKey = Key.J6, HoldTime = 1, NextTime = 6, SlipTime = 1 },
new MoveCommand { Id = MoveID.NewYogaBlastLK, DoFinger = Finger.Hold, InputKey = Key.J3, HoldTime = 1, NextTime = 6, SlipTime = 1 },
new MoveCommand { Id = MoveID.NewYogaBlastLK, DoFinger = Finger.Hold, InputKey = Key.J2, HoldTime = 1, NextTime = 6, SlipTime = 1 },
new MoveCommand { Id = MoveID.NewYogaBlastLK, DoFinger = Finger.Hold, InputKey = Key.J1, HoldTime = 1, NextTime = 6, SlipTime = 1 },
new MoveCommand { Id = MoveID.NewYogaBlastLK, DoFinger = Finger.Hold, InputKey = Key.J4, HoldTime = 1, NextTime = 10, SlipTime = 0 },
new MoveCommand { Id = MoveID.NewYogaBlastLK, DoFinger = Finger.Pressed, InputKey = Key.LK, HoldTime = 1, NextTime = 0, SlipTime = 0 },
},
new List<MoveCommand>()
{
new MoveCommand { Id = MoveID.NewYogaBlastMK, DoFinger = Finger.Hold, InputKey = Key.J6, HoldTime = 1, NextTime = 6, SlipTime = 1 },
new MoveCommand { Id = MoveID.NewYogaBlastMK, DoFinger = Finger.Hold, InputKey = Key.J3, HoldTime = 1, NextTime = 6, SlipTime = 1 },
new MoveCommand { Id = MoveID.NewYogaBlastMK, DoFinger = Finger.Hold, InputKey = Key.J2, HoldTime = 1, NextTime = 6, SlipTime = 1 },
new MoveCommand { Id = MoveID.NewYogaBlastMK, DoFinger = Finger.Hold, InputKey = Key.J1, HoldTime = 1, NextTime = 6, SlipTime = 1 },
new MoveCommand { Id = MoveID.NewYogaBlastMK, DoFinger = Finger.Hold, InputKey = Key.J4, HoldTime = 1, NextTime = 9, SlipTime = 0 },
new MoveCommand { Id = MoveID.NewYogaBlastMK, DoFinger = Finger.Pressed, InputKey = Key.MK, HoldTime = 1, NextTime = 0, SlipTime = 0 },
},
new List<MoveCommand>()
{
new MoveCommand { Id = MoveID.NewYogaBlastHK, DoFinger = Finger.Hold, InputKey = Key.J6, HoldTime = 1, NextTime = 6, SlipTime = 1 },
new MoveCommand { Id = MoveID.NewYogaBlastHK, DoFinger = Finger.Hold, InputKey = Key.J3, HoldTime = 1, NextTime = 6, SlipTime = 1 },
new MoveCommand { Id = MoveID.NewYogaBlastHK, DoFinger = Finger.Hold, InputKey = Key.J2, HoldTime = 1, NextTime = 6, SlipTime = 1 },
new MoveCommand { Id = MoveID.NewYogaBlastHK, DoFinger = Finger.Hold, InputKey = Key.J1, HoldTime = 1, NextTime = 6, SlipTime = 1 },
new MoveCommand { Id = MoveID.NewYogaBlastHK, DoFinger = Finger.Hold, InputKey = Key.J4, HoldTime = 1, NextTime = 7, SlipTime = 0 },
new MoveCommand { Id = MoveID.NewYogaBlastHK, DoFinger = Finger.Pressed, InputKey = Key.HK, HoldTime = 1, NextTime = 0, SlipTime = 0 },
},
new List<MoveCommand>()
{
new MoveCommand { Id = MoveID.SonicBoomLP, DoFinger = Finger.Hold, InputKey = Key.JL, HoldTime = 60, NextTime = 7, SlipTime = 1 },
new MoveCommand { Id = MoveID.SonicBoomLP, DoFinger = Finger.Hold, InputKey = Key.J6, HoldTime = 1, NextTime = 11, SlipTime = 0 },
new MoveCommand { Id = MoveID.SonicBoomLP, DoFinger = Finger.Pressed, InputKey = Key.LP, HoldTime = 1, NextTime = 0, SlipTime = 0 },
},
new List<MoveCommand>()
{
new MoveCommand { Id = MoveID.SonicBoomMP, DoFinger = Finger.Hold, InputKey = Key.JL, HoldTime = 60, NextTime = 7, SlipTime = 1 },
new MoveCommand { Id = MoveID.SonicBoomMP, DoFinger = Finger.Hold, InputKey = Key.J6, HoldTime = 1, NextTime = 9, SlipTime = 0 },
new MoveCommand { Id = MoveID.SonicBoomMP, DoFinger = Finger.Pressed, InputKey = Key.MP, HoldTime = 1, NextTime = 0, SlipTime = 0 },
},
new List<MoveCommand>()
{
new MoveCommand { Id = MoveID.SonicBoomHP, DoFinger = Finger.Hold, InputKey = Key.JL, HoldTime = 60, NextTime = 7, SlipTime = 1 },
new MoveCommand { Id = MoveID.SonicBoomHP, DoFinger = Finger.Hold, InputKey = Key.J6, HoldTime = 1, NextTime = 7, SlipTime = 0 },
new MoveCommand { Id = MoveID.SonicBoomHP, DoFinger = Finger.Pressed, InputKey = Key.HP, HoldTime = 1, NextTime = 0, SlipTime = 0 },
},
new List<MoveCommand>()
{
new MoveCommand { Id = MoveID.SomersaultKickLK, DoFinger = Finger.Hold, InputKey = Key.JB, HoldTime = 60, NextTime = 7, SlipTime = 1 },
new MoveCommand { Id = MoveID.SomersaultKickLK, DoFinger = Finger.Hold, InputKey = Key.JT, HoldTime = 1, NextTime = 11, SlipTime = 0 },
new MoveCommand { Id = MoveID.SomersaultKickLK, DoFinger = Finger.Pressed, InputKey = Key.LK, HoldTime = 1, NextTime = 0, SlipTime = 0 },
},
new List<MoveCommand>()
{
new MoveCommand { Id = MoveID.SomersaultKickMK, DoFinger = Finger.Hold, InputKey = Key.JB, HoldTime = 60, NextTime = 7, SlipTime = 1 },
new MoveCommand { Id = MoveID.SomersaultKickMK, DoFinger = Finger.Hold, InputKey = Key.JT, HoldTime = 1, NextTime = 9, SlipTime = 0 },
new MoveCommand { Id = MoveID.SomersaultKickMK, DoFinger = Finger.Pressed, InputKey = Key.MK, HoldTime = 1, NextTime = 0, SlipTime = 0 },
},
new List<MoveCommand>()
{
new MoveCommand { Id = MoveID.SomersaultKickHK, DoFinger = Finger.Hold, InputKey = Key.JB, HoldTime = 60, NextTime = 7, SlipTime = 1 },
new MoveCommand { Id = MoveID.SomersaultKickHK, DoFinger = Finger.Hold, InputKey = Key.JT, HoldTime = 1, NextTime = 7, SlipTime = 0 },
new MoveCommand { Id = MoveID.SomersaultKickHK, DoFinger = Finger.Pressed, InputKey = Key.HK, HoldTime = 1, NextTime = 0, SlipTime = 0 },
},
new List<MoveCommand>()
{
new MoveCommand { Id = MoveID.SonicHurricaneUC, DoFinger = Finger.Hold, InputKey = Key.JL, HoldTime = 60, NextTime = 12, SlipTime = 1 },
new MoveCommand { Id = MoveID.SonicHurricaneUC, DoFinger = Finger.Hold, InputKey = Key.JR, HoldTime = 1, NextTime = 12, SlipTime = 1 },
new MoveCommand { Id = MoveID.SonicHurricaneUC, DoFinger = Finger.Hold, InputKey = Key.JL, HoldTime = 1, NextTime = 12, SlipTime = 1 },
new MoveCommand { Id = MoveID.SonicHurricaneUC, DoFinger = Finger.Hold, InputKey = Key.J6, HoldTime = 1, NextTime = 12, SlipTime = 0 },
new MoveCommand { Id = MoveID.SonicHurricaneUC, DoFinger = Finger.PressedMoment, InputKey = Key.PPP, HoldTime = 1, NextTime = 0, SlipTime = 0 },
},
new List<MoveCommand>()
{
new MoveCommand { Id = MoveID.SobatCarnivalSC, DoFinger = Finger.Hold, InputKey = Key.JL, HoldTime = 60, NextTime = 12, SlipTime = 1 },
new MoveCommand { Id = MoveID.SobatCarnivalSC, DoFinger = Finger.Hold, InputKey = Key.JR, HoldTime = 1, NextTime = 12, SlipTime = 1 },
new MoveCommand { Id = MoveID.SobatCarnivalSC, DoFinger = Finger.Hold, InputKey = Key.JL, HoldTime = 1, NextTime = 12, SlipTime = 1 },
new MoveCommand { Id = MoveID.SobatCarnivalSC, DoFinger = Finger.Hold, InputKey = Key.J6, HoldTime = 1, NextTime = 12, SlipTime = 0 },
new MoveCommand { Id = MoveID.SobatCarnivalSC, DoFinger = Finger.Pressed, InputKey = Key.LK, HoldTime = 1, NextTime = 0, SlipTime = 0 },
},
new List<MoveCommand>()
{
new MoveCommand { Id = MoveID.SobatCarnivalSC, DoFinger = Finger.Hold, InputKey = Key.JL, HoldTime = 60, NextTime = 12, SlipTime = 1 },
new MoveCommand { Id = MoveID.SobatCarnivalSC, DoFinger = Finger.Hold, InputKey = Key.JR, HoldTime = 1, NextTime = 12, SlipTime = 1 },
new MoveCommand { Id = MoveID.SobatCarnivalSC, DoFinger = Finger.Hold, InputKey = Key.JL, HoldTime = 1, NextTime = 12, SlipTime = 1 },
new MoveCommand { Id = MoveID.SobatCarnivalSC, DoFinger = Finger.Hold, InputKey = Key.J6, HoldTime = 1, NextTime = 12, SlipTime = 0 },
new MoveCommand { Id = MoveID.SobatCarnivalSC, DoFinger = Finger.Pressed, InputKey = Key.MK, HoldTime = 1, NextTime = 0, SlipTime = 0 },
},
new List<MoveCommand>()
{
new MoveCommand { Id = MoveID.SobatCarnivalSC, DoFinger = Finger.Hold, InputKey = Key.JL, HoldTime = 60, NextTime = 12, SlipTime = 1 },
new MoveCommand { Id = MoveID.SobatCarnivalSC, DoFinger = Finger.Hold, InputKey = Key.JR, HoldTime = 1, NextTime = 12, SlipTime = 1 },
new MoveCommand { Id = MoveID.SobatCarnivalSC, DoFinger = Finger.Hold, InputKey = Key.JL, HoldTime = 1, NextTime = 12, SlipTime = 1 },
new MoveCommand { Id = MoveID.SobatCarnivalSC, DoFinger = Finger.Hold, InputKey = Key.J6, HoldTime = 1, NextTime = 12, SlipTime = 0 },
new MoveCommand { Id = MoveID.SobatCarnivalSC, DoFinger = Finger.Pressed, InputKey = Key.HK, HoldTime = 1, NextTime = 0, SlipTime = 0 },
},
new List<MoveCommand>()
{
new MoveCommand { Id = MoveID.SobatFestivalUC, DoFinger = Finger.Hold, InputKey = Key.JL, HoldTime = 60, NextTime = 12, SlipTime = 1 },
new MoveCommand { Id = MoveID.SobatFestivalUC, DoFinger = Finger.Hold, InputKey = Key.JR, HoldTime = 1, NextTime = 12, SlipTime = 1 },
new MoveCommand { Id = MoveID.SobatFestivalUC, DoFinger = Finger.Hold, InputKey = Key.JL, HoldTime = 1, NextTime = 12, SlipTime = 1 },
new MoveCommand { Id = MoveID.SobatFestivalUC, DoFinger = Finger.Hold, InputKey = Key.J6, HoldTime = 1, NextTime = 12, SlipTime = 0 },
new MoveCommand { Id = MoveID.SobatFestivalUC, DoFinger = Finger.PressedMoment, InputKey = Key.KKK, HoldTime = 1, NextTime = 0, SlipTime = 0 },
},
new List<MoveCommand>()
{
new MoveCommand { Id = MoveID.SomersaultExplosionUC, DoFinger = Finger.Hold, InputKey = Key.J1, HoldTime = 60, NextTime = 12, SlipTime = 1 },
new MoveCommand { Id = MoveID.SomersaultExplosionUC, DoFinger = Finger.Hold, InputKey = Key.J3, HoldTime = 1, NextTime = 12, SlipTime = 1 },
new MoveCommand { Id = MoveID.SomersaultExplosionUC, DoFinger = Finger.Hold, InputKey = Key.J1, HoldTime = 1, NextTime = 12, SlipTime = 1 },
new MoveCommand { Id = MoveID.SomersaultExplosionUC, DoFinger = Finger.Hold, InputKey = Key.J9, HoldTime = 1, NextTime = 12, SlipTime = 0 },
new MoveCommand { Id = MoveID.SomersaultExplosionUC, DoFinger = Finger.PressedMoment, InputKey = Key.KKK, HoldTime = 1, NextTime = 0, SlipTime = 0 },
},
new List<MoveCommand>()
{
new MoveCommand { Id = MoveID.SpinningPileDriverLP, DoFinger = Finger.Hold, InputKey = Key.J6, HoldTime = 1, NextTime = 6, SlipTime = 1 },
new MoveCommand { Id = MoveID.SpinningPileDriverLP, DoFinger = Finger.Hold, InputKey = Key.J2, HoldTime = 1, NextTime = 6, SlipTime = 1 },
new MoveCommand { Id = MoveID.SpinningPileDriverLP, DoFinger = Finger.Hold, InputKey = Key.J4, HoldTime = 1, NextTime = 6, SlipTime = 1 },
new MoveCommand { Id = MoveID.SpinningPileDriverLP, DoFinger = Finger.Hold, InputKey = Key.J8, HoldTime = 1, NextTime = 12, SlipTime = 0 },
new MoveCommand { Id = MoveID.SpinningPileDriverLP, DoFinger = Finger.Pressed, InputKey = Key.LP, HoldTime = 1, NextTime = 0, SlipTime = 0 },
},
new List<MoveCommand>()
{
new MoveCommand { Id = MoveID.SpinningPileDriverMP, DoFinger = Finger.Hold, InputKey = Key.J6, HoldTime = 1, NextTime = 6, SlipTime = 1 },
new MoveCommand { Id = MoveID.SpinningPileDriverMP, DoFinger = Finger.Hold, InputKey = Key.J2, HoldTime = 1, NextTime = 6, SlipTime = 1 },
new MoveCommand { Id = MoveID.SpinningPileDriverMP, DoFinger = Finger.Hold, InputKey = Key.J4, HoldTime = 1, NextTime = 6, SlipTime = 1 },
new MoveCommand { Id = MoveID.SpinningPileDriverMP, DoFinger = Finger.Hold, InputKey = Key.J8, HoldTime = 1, NextTime = 9, SlipTime = 0 },
new MoveCommand { Id = MoveID.SpinningPileDriverMP, DoFinger = Finger.Pressed, InputKey = Key.MP, HoldTime = 1, NextTime = 0, SlipTime = 0 },
},
new List<MoveCommand>()
{
new MoveCommand { Id = MoveID.SpinningPileDriverHP, DoFinger = Finger.Hold, InputKey = Key.J6, HoldTime = 1, NextTime = 6, SlipTime = 1 },
new MoveCommand { Id = MoveID.SpinningPileDriverHP, DoFinger = Finger.Hold, InputKey = Key.J2, HoldTime = 1, NextTime = 6, SlipTime = 1 },
new MoveCommand { Id = MoveID.SpinningPileDriverHP, DoFinger = Finger.Hold, InputKey = Key.J4, HoldTime = 1, NextTime = 6, SlipTime = 1 },
new MoveCommand { Id = MoveID.SpinningPileDriverHP, DoFinger = Finger.Hold, InputKey = Key.J8, HoldTime = 1, NextTime = 7, SlipTime = 0 },
new MoveCommand { Id = MoveID.SpinningPileDriverHP, DoFinger = Finger.Pressed, InputKey = Key.HP, HoldTime = 1, NextTime = 0, SlipTime = 0 },
},
new List<MoveCommand>()
{
new MoveCommand { Id = MoveID.FlyingPowerBombLK, DoFinger = Finger.Hold, InputKey = Key.J6, HoldTime = 1, NextTime = 6, SlipTime = 1 },
new MoveCommand { Id = MoveID.FlyingPowerBombLK, DoFinger = Finger.Hold, InputKey = Key.J2, HoldTime = 1, NextTime = 6, SlipTime = 1 },
new MoveCommand { Id = MoveID.FlyingPowerBombLK, DoFinger = Finger.Hold, InputKey = Key.J4, HoldTime = 1, NextTime = 6, SlipTime = 1 },
new MoveCommand { Id = MoveID.FlyingPowerBombLK, DoFinger = Finger.Hold, InputKey = Key.J8, HoldTime = 1, NextTime = 12, SlipTime = 0 },
new MoveCommand { Id = MoveID.FlyingPowerBombLK, DoFinger = Finger.Pressed, InputKey = Key.LK, HoldTime = 1, NextTime = 0, SlipTime = 0 },
},
new List<MoveCommand>()
{
new MoveCommand { Id = MoveID.FlyingPowerBombMK, DoFinger = Finger.Hold, InputKey = Key.J6, HoldTime = 1, NextTime = 6, SlipTime = 1 },
new MoveCommand { Id = MoveID.FlyingPowerBombMK, DoFinger = Finger.Hold, InputKey = Key.J2, HoldTime = 1, NextTime = 6, SlipTime = 1 },
new MoveCommand { Id = MoveID.FlyingPowerBombMK, DoFinger = Finger.Hold, InputKey = Key.J4, HoldTime = 1, NextTime = 6, SlipTime = 1 },
new MoveCommand { Id = MoveID.FlyingPowerBombMK, DoFinger = Finger.Hold, InputKey = Key.J8, HoldTime = 1, NextTime = 9, SlipTime = 0 },
new MoveCommand { Id = MoveID.FlyingPowerBombMK, DoFinger = Finger.Pressed, InputKey = Key.MK, HoldTime = 1, NextTime = 0, SlipTime = 0 },
},
new List<MoveCommand>()
{
new MoveCommand { Id = MoveID.FlyingPowerBombHK, DoFinger = Finger.Hold, InputKey = Key.J6, HoldTime = 1, NextTime = 6, SlipTime = 1 },
new MoveCommand { Id = MoveID.FlyingPowerBombHK, DoFinger = Finger.Hold, InputKey = Key.J2, HoldTime = 1, NextTime = 6, SlipTime = 1 },
new MoveCommand { Id = MoveID.FlyingPowerBombHK, DoFinger = Finger.Hold, InputKey = Key.J4, HoldTime = 1, NextTime = 6, SlipTime = 1 },
new MoveCommand { Id = MoveID.FlyingPowerBombHK, DoFinger = Finger.Hold, InputKey = Key.J8, HoldTime = 1, NextTime = 7, SlipTime = 0 },
new MoveCommand { Id = MoveID.FlyingPowerBombHK, DoFinger = Finger.Pressed, InputKey = Key.HK, HoldTime = 1, NextTime = 0, SlipTime = 0 },
},
new List<MoveCommand>()
{
new MoveCommand { Id = MoveID.UltimateAtomicBusterUC, DoFinger = Finger.Hold, InputKey = Key.J6, HoldTime = 1, NextTime = 14, SlipTime = 1 },
new MoveCommand { Id = MoveID.UltimateAtomicBusterUC, DoFinger = Finger.Hold, InputKey = Key.J2, HoldTime = 1, NextTime = 14, SlipTime = 1 },
new MoveCommand { Id = MoveID.UltimateAtomicBusterUC, DoFinger = Finger.Hold, InputKey = Key.J4, HoldTime = 1, NextTime = 14, SlipTime = 1 },
new MoveCommand { Id = MoveID.UltimateAtomicBusterUC, DoFinger = Finger.Hold, InputKey = Key.J8, HoldTime = 1, NextTime = 14, SlipTime = 1 },
new MoveCommand { Id = MoveID.UltimateAtomicBusterUC, DoFinger = Finger.Hold, InputKey = Key.J6, HoldTime = 1, NextTime = 14, SlipTime = 1 },
new MoveCommand { Id = MoveID.UltimateAtomicBusterUC, DoFinger = Finger.Hold, InputKey = Key.J2, HoldTime = 1, NextTime = 14, SlipTime = 1 },
new MoveCommand { Id = MoveID.UltimateAtomicBusterUC, DoFinger = Finger.Hold, InputKey = Key.J4, HoldTime = 1, NextTime = 14, SlipTime = 1 },
new MoveCommand { Id = MoveID.UltimateAtomicBusterUC, DoFinger = Finger.Hold, InputKey = Key.J8, HoldTime = 1, NextTime = 14, SlipTime = 0 },
new MoveCommand { Id = MoveID.UltimateAtomicBusterUC, DoFinger = Finger.PressedMoment, InputKey = Key.PPP, HoldTime = 1, NextTime = 0, SlipTime = 0 },
},
new List<MoveCommand>()
{
new MoveCommand { Id = MoveID.SiberianBlizzardUC, DoFinger = Finger.Hold, InputKey = Key.J6, HoldTime = 1, NextTime = 14, SlipTime = 1 },
new MoveCommand { Id = MoveID.SiberianBlizzardUC, DoFinger = Finger.Hold, InputKey = Key.J2, HoldTime = 1, NextTime = 14, SlipTime = 1 },
new MoveCommand { Id = MoveID.SiberianBlizzardUC, DoFinger = Finger.Hold, InputKey = Key.J4, HoldTime = 1, NextTime = 14, SlipTime = 1 },
new MoveCommand { Id = MoveID.SiberianBlizzardUC, DoFinger = Finger.Hold, InputKey = Key.J8, HoldTime = 1, NextTime = 14, SlipTime = 1 },
new MoveCommand { Id = MoveID.SiberianBlizzardUC, DoFinger = Finger.Hold, InputKey = Key.J6, HoldTime = 1, NextTime = 14, SlipTime = 1 },
new MoveCommand { Id = MoveID.SiberianBlizzardUC, DoFinger = Finger.Hold, InputKey = Key.J2, HoldTime = 1, NextTime = 14, SlipTime = 1 },
new MoveCommand { Id = MoveID.SiberianBlizzardUC, DoFinger = Finger.Hold, InputKey = Key.J4, HoldTime = 1, NextTime = 14, SlipTime = 1 },
new MoveCommand { Id = MoveID.SiberianBlizzardUC, DoFinger = Finger.Hold, InputKey = Key.J8, HoldTime = 1, NextTime = 14, SlipTime = 0 },
new MoveCommand { Id = MoveID.SiberianBlizzardUC, DoFinger = Finger.PressedMoment, InputKey = Key.KKK, HoldTime = 1, NextTime = 0, SlipTime = 0 },
},
new List<MoveCommand>()
{
new MoveCommand { Id = MoveID.DoubleLariatPPP, DoFinger = Finger.PressedMoment, InputKey = Key.PPP, HoldTime = 1, NextTime = 0, SlipTime = 0 },
},
new List<MoveCommand>()
{
new MoveCommand { Id = MoveID.DoubleLariatKKK, DoFinger = Finger.PressedMoment, InputKey = Key.KKK, HoldTime = 1, NextTime = 0, SlipTime = 0 },
},
new List<MoveCommand>()
{
new MoveCommand { Id = MoveID.TurnPunchPPPlv1, DoFinger = Finger.Hold, InputKey = Key.PPP, HoldTime = 1, NextTime = MoveCommonSettingsMomentFrame, SlipTime = 0 },
new MoveCommand { Id = MoveID.TurnPunchPPPlv1, DoFinger = Finger.ReleaseMoment, InputKey = Key.PPP, HoldTime = 1, NextTime = 0, SlipTime = 0 },
},
new List<MoveCommand>()
{
new MoveCommand { Id = MoveID.TurnPunchPPPlv2, DoFinger = Finger.Hold, InputKey = Key.PPP, HoldTime = 2*60, NextTime = MoveCommonSettingsMomentFrame, SlipTime = 0 },
new MoveCommand { Id = MoveID.TurnPunchPPPlv2, DoFinger = Finger.ReleaseMoment, InputKey = Key.PPP, HoldTime = 1, NextTime = 0, SlipTime = 0 },
},
new List<MoveCommand>()
{
new MoveCommand { Id = MoveID.TurnPunchPPPlv3, DoFinger = Finger.Hold, InputKey = Key.PPP, HoldTime = 4*60, NextTime = MoveCommonSettingsMomentFrame, SlipTime = 0 },
new MoveCommand { Id = MoveID.TurnPunchPPPlv3, DoFinger = Finger.ReleaseMoment, InputKey = Key.PPP, HoldTime = 1, NextTime = 0, SlipTime = 0 },
},
new List<MoveCommand>()
{
new MoveCommand { Id = MoveID.TurnPunchPPPlv4, DoFinger = Finger.Hold, InputKey = Key.PPP, HoldTime = 8*60, NextTime = MoveCommonSettingsMomentFrame, SlipTime = 0 },
new MoveCommand { Id = MoveID.TurnPunchPPPlv4, DoFinger = Finger.ReleaseMoment, InputKey = Key.PPP, HoldTime = 1, NextTime = 0, SlipTime = 0 },
},
new List<MoveCommand>()
{
new MoveCommand { Id = MoveID.TurnPunchPPPlv5, DoFinger = Finger.Hold, InputKey = Key.PPP, HoldTime = 16*60, NextTime = MoveCommonSettingsMomentFrame, SlipTime = 0 },
new MoveCommand { Id = MoveID.TurnPunchPPPlv5, DoFinger = Finger.ReleaseMoment, InputKey = Key.PPP, HoldTime = 1, NextTime = 0, SlipTime = 0 },
},
new List<MoveCommand>()
{
new MoveCommand { Id = MoveID.TurnPunchPPPlv6, DoFinger = Finger.Hold, InputKey = Key.PPP, HoldTime = 24*60, NextTime = MoveCommonSettingsMomentFrame, SlipTime = 0 },
new MoveCommand { Id = MoveID.TurnPunchPPPlv6, DoFinger = Finger.ReleaseMoment, InputKey = Key.PPP, HoldTime = 1, NextTime = 0, SlipTime = 0 },
},
new List<MoveCommand>()
{
new MoveCommand { Id = MoveID.TurnPunchPPPlv7, DoFinger = Finger.Hold, InputKey = Key.PPP, HoldTime = 32*60, NextTime = MoveCommonSettingsMomentFrame, SlipTime = 0 },
new MoveCommand { Id = MoveID.TurnPunchPPPlv7, DoFinger = Finger.ReleaseMoment, InputKey = Key.PPP, HoldTime = 1, NextTime = 0, SlipTime = 0 },
},
new List<MoveCommand>()
{
new MoveCommand { Id = MoveID.TurnPunchPPPlv8, DoFinger = Finger.Hold, InputKey = Key.PPP, HoldTime = 40*60, NextTime = MoveCommonSettingsMomentFrame, SlipTime = 0 },
new MoveCommand { Id = MoveID.TurnPunchPPPlv8, DoFinger = Finger.ReleaseMoment, InputKey = Key.PPP, HoldTime = 1, NextTime = 0, SlipTime = 0 },
},
new List<MoveCommand>()
{
new MoveCommand { Id = MoveID.TurnPunchPPPlv9, DoFinger = Finger.Hold, InputKey = Key.PPP, HoldTime = 48*60, NextTime = MoveCommonSettingsMomentFrame, SlipTime = 0 },
new MoveCommand { Id = MoveID.TurnPunchPPPlv9, DoFinger = Finger.ReleaseMoment, InputKey = Key.PPP, HoldTime = 1, NextTime = 0, SlipTime = 0 },
},
new List<MoveCommand>()
{
new MoveCommand { Id = MoveID.TurnPunchPPPfinal, DoFinger = Finger.Hold, InputKey = Key.PPP, HoldTime = 56*60, NextTime = MoveCommonSettingsMomentFrame, SlipTime = 0 },
new MoveCommand { Id = MoveID.TurnPunchPPPfinal, DoFinger = Finger.ReleaseMoment, InputKey = Key.PPP, HoldTime = 1, NextTime = 0, SlipTime = 0 },
},
new List<MoveCommand>()
{
new MoveCommand { Id = MoveID.TurnPunchKKKlv1, DoFinger = Finger.Hold, InputKey = Key.KKK, HoldTime = 1, NextTime = MoveCommonSettingsMomentFrame, SlipTime = 0 },
new MoveCommand { Id = MoveID.TurnPunchKKKlv1, DoFinger = Finger.ReleaseMoment, InputKey = Key.KKK, HoldTime = 1, NextTime = 0, SlipTime = 0 },
},
new List<MoveCommand>()
{
new MoveCommand { Id = MoveID.TurnPunchKKKlv2, DoFinger = Finger.Hold, InputKey = Key.KKK, HoldTime = 2*60, NextTime = MoveCommonSettingsMomentFrame, SlipTime = 0 },
new MoveCommand { Id = MoveID.TurnPunchKKKlv2, DoFinger = Finger.ReleaseMoment, InputKey = Key.KKK, HoldTime = 1, NextTime = 0, SlipTime = 0 },
},
new List<MoveCommand>()
{
new MoveCommand { Id = MoveID.TurnPunchKKKlv3, DoFinger = Finger.Hold, InputKey = Key.KKK, HoldTime = 4*60, NextTime = MoveCommonSettingsMomentFrame, SlipTime = 0 },
new MoveCommand { Id = MoveID.TurnPunchKKKlv3, DoFinger = Finger.ReleaseMoment, InputKey = Key.KKK, HoldTime = 1, NextTime = 0, SlipTime = 0 },
},
new List<MoveCommand>()
{
new MoveCommand { Id = MoveID.TurnPunchKKKlv4, DoFinger = Finger.Hold, InputKey = Key.KKK, HoldTime = 8*60, NextTime = MoveCommonSettingsMomentFrame, SlipTime = 0 },
new MoveCommand { Id = MoveID.TurnPunchKKKlv4, DoFinger = Finger.ReleaseMoment, InputKey = Key.KKK, HoldTime = 1, NextTime = 0, SlipTime = 0 },
},
new List<MoveCommand>()
{
new MoveCommand { Id = MoveID.TurnPunchKKKlv5, DoFinger = Finger.Hold, InputKey = Key.KKK, HoldTime = 16*60, NextTime = MoveCommonSettingsMomentFrame, SlipTime = 0 },
new MoveCommand { Id = MoveID.TurnPunchKKKlv5, DoFinger = Finger.ReleaseMoment, InputKey = Key.KKK, HoldTime = 1, NextTime = 0, SlipTime = 0 },
},
new List<MoveCommand>()
{
new MoveCommand { Id = MoveID.TurnPunchKKKlv6, DoFinger = Finger.Hold, InputKey = Key.KKK, HoldTime = 24*60, NextTime = MoveCommonSettingsMomentFrame, SlipTime = 0 },
new MoveCommand { Id = MoveID.TurnPunchKKKlv6, DoFinger = Finger.ReleaseMoment, InputKey = Key.KKK, HoldTime = 1, NextTime = 0, SlipTime = 0 },
},
new List<MoveCommand>()
{
new MoveCommand { Id = MoveID.TurnPunchKKKlv7, DoFinger = Finger.Hold, InputKey = Key.KKK, HoldTime = 32*60, NextTime = MoveCommonSettingsMomentFrame, SlipTime = 0 },
new MoveCommand { Id = MoveID.TurnPunchKKKlv7, DoFinger = Finger.ReleaseMoment, InputKey = Key.KKK, HoldTime = 1, NextTime = 0, SlipTime = 0 },
},
new List<MoveCommand>()
{
new MoveCommand { Id = MoveID.TurnPunchKKKlv8, DoFinger = Finger.Hold, InputKey = Key.KKK, HoldTime = 40*60, NextTime = MoveCommonSettingsMomentFrame, SlipTime = 0 },
new MoveCommand { Id = MoveID.TurnPunchKKKlv8, DoFinger = Finger.ReleaseMoment, InputKey = Key.KKK, HoldTime = 1, NextTime = 0, SlipTime = 0 },
},
new List<MoveCommand>()
{
new MoveCommand { Id = MoveID.TurnPunchKKKlv9, DoFinger = Finger.Hold, InputKey = Key.KKK, HoldTime = 48*60, NextTime = MoveCommonSettingsMomentFrame, SlipTime = 0 },
new MoveCommand { Id = MoveID.TurnPunchKKKlv9, DoFinger = Finger.ReleaseMoment, InputKey = Key.KKK, HoldTime = 1, NextTime = 0, SlipTime = 0 },
},
new List<MoveCommand>()
{
new MoveCommand { Id = MoveID.TurnPunchKKKfinal, DoFinger = Finger.Hold, InputKey = Key.KKK, HoldTime = 56*60, NextTime = MoveCommonSettingsMomentFrame, SlipTime = 0 },
new MoveCommand { Id = MoveID.TurnPunchKKKfinal, DoFinger = Finger.ReleaseMoment, InputKey = Key.KKK, HoldTime = 1, NextTime = 0, SlipTime = 0 },
},
};
/// <summary>
/// InputGetKeyData追加処理。
/// Config()を最初にどこかでキーコンフィグのために1回呼ぶ。
/// Update()を毎フレームにてキー情報の更新のために1回呼ぶ。
/// </summary>
///
/// Config()メソッド
/// パンチとキックのキーコンフィグ
/// 引数:KeyCode lp (弱パンチ)(初期値 KeyCode.None)
/// 引数:KeyCode mp (中パンチ)(初期値 KeyCode.None)
/// 引数:KeyCode hp (強パンチ)(初期値 KeyCode.None)
/// 引数:KeyCode lk (弱キック)(初期値 KeyCode.None)
/// 引数:KeyCode mk (中キック)(初期値 KeyCode.None)
/// 引数:KeyCode hk (強キック)(初期値 KeyCode.None)
/// 設定可能な値:KeyCode.A~KeyCode.Z
///
/// Update()メソッド
/// 毎フレームにてキー情報の更新
/// 引数:bool flip(保持するキーを左右反転する)
/// 設定可能な値:反転なし⇒false
/// 設定可能な値:反転あり⇒true
///
/// 下記プロパティに各種状態を保持(読み取り専用)
/// 設定される数値は enum Key 参照
/// Hold = Input.GetKey
/// Free = !Input.GetKey
/// Pressed = Input.GetKeyDown
/// Release = Input.GetKeyUp
/// PressedMoment = Input.GetKeyDownのtrueから数フレーム間、trueになる。
/// ReleaseMoment = Input.GetKeyUp のtrueから数フレーム間、trueになる。
/// 何フレームまでtrueと判定するかはMoveCommonSettingsMomentFrameの数値で設定。
///
/// 文字の説明
/// _A ~ _Z:キーボードのA~Z ↖ ↑ ↗   789
/// J1 ~ J9:十字キーの位置 ←・→ ⇒ 456
/// JT:十字キー上要素の789(JujiKey Top) ↙ ↓ ↘   123
/// JL:十字キー左要素の147(JujiKey Left)
/// JR:十字キー右要素の369(JujiKey Right)
/// JB:十字キー下要素の123(JujiKey Bottom)
/// LP:弱パンチ(ライトパンチ)
/// MP:中パンチ(ミドルパンチ)
/// HP:強パンチ(ハードパンチ)
/// LK:弱キック(ライトキック)
/// MK:中キック(ミドルキック)
/// HK:強キック(ハードキック)
///
private class InputGetKeyDataForMoveCommand
{
public Key Hold { get; private set; } = Key.Zero;
public Key Free { get; private set; } = Key.Zero;
public Key Pressed { get; private set; } = Key.Zero;
public Key Release { get; private set; } = Key.Zero;
public Key PressedMoment { get; private set; } = Key.Zero;
public Key ReleaseMoment { get; private set; } = Key.Zero;
public int HoldTimeLP { get; private set; } = 0;
public int HoldTimeMP { get; private set; } = 0;
public int HoldTimeHP { get; private set; } = 0;
public int HoldTimeLK { get; private set; } = 0;
public int HoldTimeMK { get; private set; } = 0;
public int HoldTimeHK { get; private set; } = 0;
public int HoldTimeJ1 { get; private set; } = 0;
public int HoldTimeJ2 { get; private set; } = 0;
public int HoldTimeJ3 { get; private set; } = 0;
public int HoldTimeJ4 { get; private set; } = 0;
public int HoldTimeJ5 { get; private set; } = 0;
public int HoldTimeJ6 { get; private set; } = 0;
public int HoldTimeJ7 { get; private set; } = 0;
public int HoldTimeJ8 { get; private set; } = 0;
public int HoldTimeJ9 { get; private set; } = 0;
public int HoldTimeJT { get; private set; } = 0;
public int HoldTimeJL { get; private set; } = 0;
public int HoldTimeJR { get; private set; } = 0;
public int HoldTimeJB { get; private set; } = 0;
public int FreeTimeLP { get; private set; } = 0;
public int FreeTimeMP { get; private set; } = 0;
public int FreeTimeHP { get; private set; } = 0;
public int FreeTimeLK { get; private set; } = 0;
public int FreeTimeMK { get; private set; } = 0;
public int FreeTimeHK { get; private set; } = 0;
public int FreeTimeJ1 { get; private set; } = 0;
public int FreeTimeJ2 { get; private set; } = 0;
public int FreeTimeJ3 { get; private set; } = 0;
public int FreeTimeJ4 { get; private set; } = 0;
public int FreeTimeJ5 { get; private set; } = 0;
public int FreeTimeJ6 { get; private set; } = 0;
public int FreeTimeJ7 { get; private set; } = 0;
public int FreeTimeJ8 { get; private set; } = 0;
public int FreeTimeJ9 { get; private set; } = 0;
public int FreeTimeJT { get; private set; } = 0;
public int FreeTimeJL { get; private set; } = 0;
public int FreeTimeJR { get; private set; } = 0;
public int FreeTimeJB { get; private set; } = 0;
private int HoldTime_A, FreeTime_A;
private int HoldTime_B, FreeTime_B;
private int HoldTime_C, FreeTime_C;
private int HoldTime_D, FreeTime_D;
private int HoldTime_E, FreeTime_E;
private int HoldTime_F, FreeTime_F;
private int HoldTime_G, FreeTime_G;
private int HoldTime_H, FreeTime_H;
private int HoldTime_I, FreeTime_I;
private int HoldTime_J, FreeTime_J;
private int HoldTime_K, FreeTime_K;
private int HoldTime_L, FreeTime_L;
private int HoldTime_M, FreeTime_M;
private int HoldTime_N, FreeTime_N;
private int HoldTime_O, FreeTime_O;
private int HoldTime_P, FreeTime_P;
private int HoldTime_Q, FreeTime_Q;
private int HoldTime_R, FreeTime_R;
private int HoldTime_S, FreeTime_S;
private int HoldTime_T, FreeTime_T;
private int HoldTime_U, FreeTime_U;
private int HoldTime_V, FreeTime_V;
private int HoldTime_W, FreeTime_W;
private int HoldTime_X, FreeTime_X;
private int HoldTime_Y, FreeTime_Y;
private int HoldTime_Z, FreeTime_Z;
private bool Hold_A, Free_A, Pressed_A, Release_A;
private bool Hold_B, Free_B, Pressed_B, Release_B;
private bool Hold_C, Free_C, Pressed_C, Release_C;
private bool Hold_D, Free_D, Pressed_D, Release_D;
private bool Hold_E, Free_E, Pressed_E, Release_E;
private bool Hold_F, Free_F, Pressed_F, Release_F;
private bool Hold_G, Free_G, Pressed_G, Release_G;
private bool Hold_H, Free_H, Pressed_H, Release_H;
private bool Hold_I, Free_I, Pressed_I, Release_I;
private bool Hold_J, Free_J, Pressed_J, Release_J;
private bool Hold_K, Free_K, Pressed_K, Release_K;
private bool Hold_L, Free_L, Pressed_L, Release_L;
private bool Hold_M, Free_M, Pressed_M, Release_M;
private bool Hold_N, Free_N, Pressed_N, Release_N;
private bool Hold_O, Free_O, Pressed_O, Release_O;
private bool Hold_P, Free_P, Pressed_P, Release_P;
private bool Hold_Q, Free_Q, Pressed_Q, Release_Q;
private bool Hold_R, Free_R, Pressed_R, Release_R;
private bool Hold_S, Free_S, Pressed_S, Release_S;
private bool Hold_T, Free_T, Pressed_T, Release_T;
private bool Hold_U, Free_U, Pressed_U, Release_U;
private bool Hold_V, Free_V, Pressed_V, Release_V;
private bool Hold_W, Free_W, Pressed_W, Release_W;
private bool Hold_X, Free_X, Pressed_X, Release_X;
private bool Hold_Y, Free_Y, Pressed_Y, Release_Y;
private bool Hold_Z, Free_Z, Pressed_Z, Release_Z;
private bool HoldLP, FreeLP, PressedLP, ReleaseLP, PressedMomentLP, ReleaseMomentLP;
private bool HoldMP, FreeMP, PressedMP, ReleaseMP, PressedMomentMP, ReleaseMomentMP;
private bool HoldHP, FreeHP, PressedHP, ReleaseHP, PressedMomentHP, ReleaseMomentHP;
private bool HoldLK, FreeLK, PressedLK, ReleaseLK, PressedMomentLK, ReleaseMomentLK;
private bool HoldMK, FreeMK, PressedMK, ReleaseMK, PressedMomentMK, ReleaseMomentMK;
private bool HoldHK, FreeHK, PressedHK, ReleaseHK, PressedMomentHK, ReleaseMomentHK;
private bool HoldJ1, FreeJ1, PressedJ1, ReleaseJ1, PressedMomentJ1, ReleaseMomentJ1, HoldPreviousJ1;
private bool HoldJ2, FreeJ2, PressedJ2, ReleaseJ2, PressedMomentJ2, ReleaseMomentJ2, HoldPreviousJ2;
private bool HoldJ3, FreeJ3, PressedJ3, ReleaseJ3, PressedMomentJ3, ReleaseMomentJ3, HoldPreviousJ3;
private bool HoldJ4, FreeJ4, PressedJ4, ReleaseJ4, PressedMomentJ4, ReleaseMomentJ4, HoldPreviousJ4;
private bool HoldJ5, FreeJ5, PressedJ5, ReleaseJ5, PressedMomentJ5, ReleaseMomentJ5, HoldPreviousJ5 = true;
private bool HoldJ6, FreeJ6, PressedJ6, ReleaseJ6, PressedMomentJ6, ReleaseMomentJ6, HoldPreviousJ6;
private bool HoldJ7, FreeJ7, PressedJ7, ReleaseJ7, PressedMomentJ7, ReleaseMomentJ7, HoldPreviousJ7;
private bool HoldJ8, FreeJ8, PressedJ8, ReleaseJ8, PressedMomentJ8, ReleaseMomentJ8, HoldPreviousJ8;
private bool HoldJ9, FreeJ9, PressedJ9, ReleaseJ9, PressedMomentJ9, ReleaseMomentJ9, HoldPreviousJ9;
private bool HoldJT, FreeJT, PressedJT, ReleaseJT, PressedMomentJT, ReleaseMomentJT, HoldPreviousJT;
private bool HoldJL, FreeJL, PressedJL, ReleaseJL, PressedMomentJL, ReleaseMomentJL, HoldPreviousJL;
private bool HoldJR, FreeJR, PressedJR, ReleaseJR, PressedMomentJR, ReleaseMomentJR, HoldPreviousJR;
private bool HoldJB, FreeJB, PressedJB, ReleaseJB, PressedMomentJB, ReleaseMomentJB, HoldPreviousJB;
private List<bool> PressedHistoryLP = new List<bool>(MoveCommonSettingsMomentFrame);
private List<bool> PressedHistoryMP = new List<bool>(MoveCommonSettingsMomentFrame);
private List<bool> PressedHistoryHP = new List<bool>(MoveCommonSettingsMomentFrame);
private List<bool> PressedHistoryLK = new List<bool>(MoveCommonSettingsMomentFrame);
private List<bool> PressedHistoryMK = new List<bool>(MoveCommonSettingsMomentFrame);
private List<bool> PressedHistoryHK = new List<bool>(MoveCommonSettingsMomentFrame);
private List<bool> PressedHistoryJ1 = new List<bool>(MoveCommonSettingsMomentFrame);
private List<bool> PressedHistoryJ2 = new List<bool>(MoveCommonSettingsMomentFrame);
private List<bool> PressedHistoryJ3 = new List<bool>(MoveCommonSettingsMomentFrame);
private List<bool> PressedHistoryJ4 = new List<bool>(MoveCommonSettingsMomentFrame);
private List<bool> PressedHistoryJ5 = new List<bool>(MoveCommonSettingsMomentFrame);
private List<bool> PressedHistoryJ6 = new List<bool>(MoveCommonSettingsMomentFrame);
private List<bool> PressedHistoryJ7 = new List<bool>(MoveCommonSettingsMomentFrame);
private List<bool> PressedHistoryJ8 = new List<bool>(MoveCommonSettingsMomentFrame);
private List<bool> PressedHistoryJ9 = new List<bool>(MoveCommonSettingsMomentFrame);
private List<bool> PressedHistoryJT = new List<bool>(MoveCommonSettingsMomentFrame);
private List<bool> PressedHistoryJL = new List<bool>(MoveCommonSettingsMomentFrame);
private List<bool> PressedHistoryJR = new List<bool>(MoveCommonSettingsMomentFrame);
private List<bool> PressedHistoryJB = new List<bool>(MoveCommonSettingsMomentFrame);
private List<bool> ReleaseHistoryLP = new List<bool>(MoveCommonSettingsMomentFrame);
private List<bool> ReleaseHistoryMP = new List<bool>(MoveCommonSettingsMomentFrame);
private List<bool> ReleaseHistoryHP = new List<bool>(MoveCommonSettingsMomentFrame);
private List<bool> ReleaseHistoryLK = new List<bool>(MoveCommonSettingsMomentFrame);
private List<bool> ReleaseHistoryMK = new List<bool>(MoveCommonSettingsMomentFrame);
private List<bool> ReleaseHistoryHK = new List<bool>(MoveCommonSettingsMomentFrame);
private List<bool> ReleaseHistoryJ1 = new List<bool>(MoveCommonSettingsMomentFrame);
private List<bool> ReleaseHistoryJ2 = new List<bool>(MoveCommonSettingsMomentFrame);
private List<bool> ReleaseHistoryJ3 = new List<bool>(MoveCommonSettingsMomentFrame);
private List<bool> ReleaseHistoryJ4 = new List<bool>(MoveCommonSettingsMomentFrame);
private List<bool> ReleaseHistoryJ5 = new List<bool>(MoveCommonSettingsMomentFrame);
private List<bool> ReleaseHistoryJ6 = new List<bool>(MoveCommonSettingsMomentFrame);
private List<bool> ReleaseHistoryJ7 = new List<bool>(MoveCommonSettingsMomentFrame);
private List<bool> ReleaseHistoryJ8 = new List<bool>(MoveCommonSettingsMomentFrame);
private List<bool> ReleaseHistoryJ9 = new List<bool>(MoveCommonSettingsMomentFrame);
private List<bool> ReleaseHistoryJT = new List<bool>(MoveCommonSettingsMomentFrame);
private List<bool> ReleaseHistoryJL = new List<bool>(MoveCommonSettingsMomentFrame);
private List<bool> ReleaseHistoryJR = new List<bool>(MoveCommonSettingsMomentFrame);
private List<bool> ReleaseHistoryJB = new List<bool>(MoveCommonSettingsMomentFrame);
public KeyCode ConfigLP { get; private set; } = KeyCode.None;
public KeyCode ConfigMP { get; private set; } = KeyCode.None;
public KeyCode ConfigHP { get; private set; } = KeyCode.None;
public KeyCode ConfigLK { get; private set; } = KeyCode.None;
public KeyCode ConfigMK { get; private set; } = KeyCode.None;
public KeyCode ConfigHK { get; private set; } = KeyCode.None;
public void Config(KeyCode lp = KeyCode.None, KeyCode mp = KeyCode.None, KeyCode hp = KeyCode.None, KeyCode lk = KeyCode.None, KeyCode mk = KeyCode.None, KeyCode hk = KeyCode.None)
{
if (lp != KeyCode.None) ConfigLP = lp;
if (mp != KeyCode.None) ConfigMP = mp;
if (hp != KeyCode.None) ConfigHP = hp;
if (lk != KeyCode.None) ConfigLK = lk;
if (mk != KeyCode.None) ConfigMK = mk;
if (hk != KeyCode.None) ConfigHK = hk;
}
public void Update(bool flip = false)
{
float x = Input.GetAxisRaw("Horizontal");
float y = Input.GetAxisRaw("Vertical");
int joyStick = 5;
joyStick += (int)x * (flip ? -1 : 1);
joyStick += (int)y * 3;
Hold_A = Input.GetKey(KeyCode.A);
Hold_B = Input.GetKey(KeyCode.B);
Hold_C = Input.GetKey(KeyCode.C);
Hold_D = Input.GetKey(KeyCode.D);
Hold_E = Input.GetKey(KeyCode.E);
Hold_F = Input.GetKey(KeyCode.F);
Hold_G = Input.GetKey(KeyCode.G);
Hold_H = Input.GetKey(KeyCode.H);
Hold_I = Input.GetKey(KeyCode.I);
Hold_J = Input.GetKey(KeyCode.J);
Hold_K = Input.GetKey(KeyCode.K);
Hold_L = Input.GetKey(KeyCode.L);
Hold_M = Input.GetKey(KeyCode.M);
Hold_N = Input.GetKey(KeyCode.N);
Hold_O = Input.GetKey(KeyCode.O);
Hold_P = Input.GetKey(KeyCode.P);
Hold_Q = Input.GetKey(KeyCode.Q);
Hold_R = Input.GetKey(KeyCode.R);
Hold_S = Input.GetKey(KeyCode.S);
Hold_T = Input.GetKey(KeyCode.T);
Hold_U = Input.GetKey(KeyCode.U);
Hold_V = Input.GetKey(KeyCode.V);
Hold_W = Input.GetKey(KeyCode.W);
Hold_X = Input.GetKey(KeyCode.X);
Hold_Y = Input.GetKey(KeyCode.Y);
Hold_Z = Input.GetKey(KeyCode.Z);
HoldJ1 = (joyStick == 1);
HoldJ2 = (joyStick == 2);
HoldJ3 = (joyStick == 3);
HoldJ4 = (joyStick == 4);
HoldJ5 = (joyStick == 5);
HoldJ6 = (joyStick == 6);
HoldJ7 = (joyStick == 7);
HoldJ8 = (joyStick == 8);
HoldJ9 = (joyStick == 9);
HoldJT = (y > 0);
HoldJL = (x < 0);
HoldJR = (x > 0);
HoldJB = (y < 0);
Free_A = !Input.GetKey(KeyCode.A);
Free_B = !Input.GetKey(KeyCode.B);
Free_C = !Input.GetKey(KeyCode.C);
Free_D = !Input.GetKey(KeyCode.D);
Free_E = !Input.GetKey(KeyCode.E);
Free_F = !Input.GetKey(KeyCode.F);
Free_G = !Input.GetKey(KeyCode.G);
Free_H = !Input.GetKey(KeyCode.H);
Free_I = !Input.GetKey(KeyCode.I);
Free_J = !Input.GetKey(KeyCode.J);
Free_K = !Input.GetKey(KeyCode.K);
Free_L = !Input.GetKey(KeyCode.L);
Free_M = !Input.GetKey(KeyCode.M);
Free_N = !Input.GetKey(KeyCode.N);
Free_O = !Input.GetKey(KeyCode.O);
Free_P = !Input.GetKey(KeyCode.P);
Free_Q = !Input.GetKey(KeyCode.Q);
Free_R = !Input.GetKey(KeyCode.R);
Free_S = !Input.GetKey(KeyCode.S);
Free_T = !Input.GetKey(KeyCode.T);
Free_U = !Input.GetKey(KeyCode.U);
Free_V = !Input.GetKey(KeyCode.V);
Free_W = !Input.GetKey(KeyCode.W);
Free_X = !Input.GetKey(KeyCode.X);
Free_Y = !Input.GetKey(KeyCode.Y);
Free_Z = !Input.GetKey(KeyCode.Z);
FreeJ1 = !(joyStick == 1);
FreeJ2 = !(joyStick == 2);
FreeJ3 = !(joyStick == 3);
FreeJ4 = !(joyStick == 4);
FreeJ5 = !(joyStick == 5);
FreeJ6 = !(joyStick == 6);
FreeJ7 = !(joyStick == 7);
FreeJ8 = !(joyStick == 8);
FreeJ9 = !(joyStick == 9);
FreeJT = !(y > 0);
FreeJL = !(x < 0);
FreeJR = !(x > 0);
FreeJB = !(y < 0);
Pressed_A = Input.GetKeyDown(KeyCode.A);
Pressed_B = Input.GetKeyDown(KeyCode.B);
Pressed_C = Input.GetKeyDown(KeyCode.C);
Pressed_D = Input.GetKeyDown(KeyCode.D);
Pressed_E = Input.GetKeyDown(KeyCode.E);
Pressed_F = Input.GetKeyDown(KeyCode.F);
Pressed_G = Input.GetKeyDown(KeyCode.G);
Pressed_H = Input.GetKeyDown(KeyCode.H);
Pressed_I = Input.GetKeyDown(KeyCode.I);
Pressed_J = Input.GetKeyDown(KeyCode.J);
Pressed_K = Input.GetKeyDown(KeyCode.K);
Pressed_L = Input.GetKeyDown(KeyCode.L);
Pressed_M = Input.GetKeyDown(KeyCode.M);
Pressed_N = Input.GetKeyDown(KeyCode.N);
Pressed_O = Input.GetKeyDown(KeyCode.O);
Pressed_P = Input.GetKeyDown(KeyCode.P);
Pressed_Q = Input.GetKeyDown(KeyCode.Q);
Pressed_R = Input.GetKeyDown(KeyCode.R);
Pressed_S = Input.GetKeyDown(KeyCode.S);
Pressed_T = Input.GetKeyDown(KeyCode.T);
Pressed_U = Input.GetKeyDown(KeyCode.U);
Pressed_V = Input.GetKeyDown(KeyCode.V);
Pressed_W = Input.GetKeyDown(KeyCode.W);
Pressed_X = Input.GetKeyDown(KeyCode.X);
Pressed_Y = Input.GetKeyDown(KeyCode.Y);
Pressed_Z = Input.GetKeyDown(KeyCode.Z);
PressedJ1 = HoldJ1 && !HoldPreviousJ1;
PressedJ2 = HoldJ2 && !HoldPreviousJ2;
PressedJ3 = HoldJ3 && !HoldPreviousJ3;
PressedJ4 = HoldJ4 && !HoldPreviousJ4;
PressedJ5 = HoldJ5 && !HoldPreviousJ5;
PressedJ6 = HoldJ6 && !HoldPreviousJ6;
PressedJ7 = HoldJ7 && !HoldPreviousJ7;
PressedJ8 = HoldJ8 && !HoldPreviousJ8;
PressedJ9 = HoldJ9 && !HoldPreviousJ9;
PressedJT = HoldJT && !HoldPreviousJT;
PressedJL = HoldJL && !HoldPreviousJL;
PressedJR = HoldJR && !HoldPreviousJR;
PressedJB = HoldJB && !HoldPreviousJB;
Release_A = Input.GetKeyUp(KeyCode.A);
Release_B = Input.GetKeyUp(KeyCode.B);
Release_C = Input.GetKeyUp(KeyCode.C);
Release_D = Input.GetKeyUp(KeyCode.D);
Release_E = Input.GetKeyUp(KeyCode.E);
Release_F = Input.GetKeyUp(KeyCode.F);
Release_G = Input.GetKeyUp(KeyCode.G);
Release_H = Input.GetKeyUp(KeyCode.H);
Release_I = Input.GetKeyUp(KeyCode.I);
Release_J = Input.GetKeyUp(KeyCode.J);
Release_K = Input.GetKeyUp(KeyCode.K);
Release_L = Input.GetKeyUp(KeyCode.L);
Release_M = Input.GetKeyUp(KeyCode.M);
Release_N = Input.GetKeyUp(KeyCode.N);
Release_O = Input.GetKeyUp(KeyCode.O);
Release_P = Input.GetKeyUp(KeyCode.P);
Release_Q = Input.GetKeyUp(KeyCode.Q);
Release_R = Input.GetKeyUp(KeyCode.R);
Release_S = Input.GetKeyUp(KeyCode.S);
Release_T = Input.GetKeyUp(KeyCode.T);
Release_U = Input.GetKeyUp(KeyCode.U);
Release_V = Input.GetKeyUp(KeyCode.V);
Release_W = Input.GetKeyUp(KeyCode.W);
Release_X = Input.GetKeyUp(KeyCode.X);
Release_Y = Input.GetKeyUp(KeyCode.Y);
Release_Z = Input.GetKeyUp(KeyCode.Z);
ReleaseJ1 = FreeJ1 && HoldPreviousJ1;
ReleaseJ2 = FreeJ2 && HoldPreviousJ2;
ReleaseJ3 = FreeJ3 && HoldPreviousJ3;
ReleaseJ4 = FreeJ4 && HoldPreviousJ4;
ReleaseJ5 = FreeJ5 && HoldPreviousJ5;
ReleaseJ6 = FreeJ6 && HoldPreviousJ6;
ReleaseJ7 = FreeJ7 && HoldPreviousJ7;
ReleaseJ8 = FreeJ8 && HoldPreviousJ8;
ReleaseJ9 = FreeJ9 && HoldPreviousJ9;
ReleaseJT = FreeJT && HoldPreviousJT;
ReleaseJL = FreeJL && HoldPreviousJL;
ReleaseJR = FreeJR && HoldPreviousJR;
ReleaseJB = FreeJB && HoldPreviousJB;
HoldPreviousJ1 = HoldJ1;
HoldPreviousJ2 = HoldJ2;
HoldPreviousJ3 = HoldJ3;
HoldPreviousJ4 = HoldJ4;
HoldPreviousJ5 = HoldJ5;
HoldPreviousJ6 = HoldJ6;
HoldPreviousJ7 = HoldJ7;
HoldPreviousJ8 = HoldJ8;
HoldPreviousJ9 = HoldJ9;
HoldPreviousJT = HoldJT;
HoldPreviousJL = HoldJL;
HoldPreviousJR = HoldJR;
HoldPreviousJB = HoldJB;
HoldTime_A = Hold_A ? (HoldTime_A == int.MaxValue ? int.MaxValue : HoldTime_A + 1) : 0;
HoldTime_B = Hold_B ? (HoldTime_B == int.MaxValue ? int.MaxValue : HoldTime_B + 1) : 0;
HoldTime_C = Hold_C ? (HoldTime_C == int.MaxValue ? int.MaxValue : HoldTime_C + 1) : 0;
HoldTime_D = Hold_D ? (HoldTime_D == int.MaxValue ? int.MaxValue : HoldTime_D + 1) : 0;
HoldTime_E = Hold_E ? (HoldTime_E == int.MaxValue ? int.MaxValue : HoldTime_E + 1) : 0;
HoldTime_F = Hold_F ? (HoldTime_F == int.MaxValue ? int.MaxValue : HoldTime_F + 1) : 0;
HoldTime_G = Hold_G ? (HoldTime_G == int.MaxValue ? int.MaxValue : HoldTime_G + 1) : 0;
HoldTime_H = Hold_H ? (HoldTime_H == int.MaxValue ? int.MaxValue : HoldTime_H + 1) : 0;
HoldTime_I = Hold_I ? (HoldTime_I == int.MaxValue ? int.MaxValue : HoldTime_I + 1) : 0;
HoldTime_J = Hold_J ? (HoldTime_J == int.MaxValue ? int.MaxValue : HoldTime_J + 1) : 0;
HoldTime_K = Hold_K ? (HoldTime_K == int.MaxValue ? int.MaxValue : HoldTime_K + 1) : 0;
HoldTime_L = Hold_L ? (HoldTime_L == int.MaxValue ? int.MaxValue : HoldTime_L + 1) : 0;
HoldTime_M = Hold_M ? (HoldTime_M == int.MaxValue ? int.MaxValue : HoldTime_M + 1) : 0;
HoldTime_N = Hold_N ? (HoldTime_N == int.MaxValue ? int.MaxValue : HoldTime_N + 1) : 0;
HoldTime_O = Hold_O ? (HoldTime_O == int.MaxValue ? int.MaxValue : HoldTime_O + 1) : 0;
HoldTime_P = Hold_P ? (HoldTime_P == int.MaxValue ? int.MaxValue : HoldTime_P + 1) : 0;
HoldTime_Q = Hold_Q ? (HoldTime_Q == int.MaxValue ? int.MaxValue : HoldTime_Q + 1) : 0;
HoldTime_R = Hold_R ? (HoldTime_R == int.MaxValue ? int.MaxValue : HoldTime_R + 1) : 0;
HoldTime_S = Hold_S ? (HoldTime_S == int.MaxValue ? int.MaxValue : HoldTime_S + 1) : 0;
HoldTime_T = Hold_T ? (HoldTime_T == int.MaxValue ? int.MaxValue : HoldTime_T + 1) : 0;
HoldTime_U = Hold_U ? (HoldTime_U == int.MaxValue ? int.MaxValue : HoldTime_U + 1) : 0;
HoldTime_V = Hold_V ? (HoldTime_V == int.MaxValue ? int.MaxValue : HoldTime_V + 1) : 0;
HoldTime_W = Hold_W ? (HoldTime_W == int.MaxValue ? int.MaxValue : HoldTime_W + 1) : 0;
HoldTime_X = Hold_X ? (HoldTime_X == int.MaxValue ? int.MaxValue : HoldTime_X + 1) : 0;
HoldTime_Y = Hold_Y ? (HoldTime_Y == int.MaxValue ? int.MaxValue : HoldTime_Y + 1) : 0;
HoldTime_Z = Hold_Z ? (HoldTime_Z == int.MaxValue ? int.MaxValue : HoldTime_Z + 1) : 0;
HoldTimeJ1 = HoldJ1 ? (HoldTimeJ1 == int.MaxValue ? int.MaxValue : HoldTimeJ1 + 1) : 0;
HoldTimeJ2 = HoldJ2 ? (HoldTimeJ2 == int.MaxValue ? int.MaxValue : HoldTimeJ2 + 1) : 0;
HoldTimeJ3 = HoldJ3 ? (HoldTimeJ3 == int.MaxValue ? int.MaxValue : HoldTimeJ3 + 1) : 0;
HoldTimeJ4 = HoldJ4 ? (HoldTimeJ4 == int.MaxValue ? int.MaxValue : HoldTimeJ4 + 1) : 0;
HoldTimeJ5 = HoldJ5 ? (HoldTimeJ5 == int.MaxValue ? int.MaxValue : HoldTimeJ5 + 1) : 0;
HoldTimeJ6 = HoldJ6 ? (HoldTimeJ6 == int.MaxValue ? int.MaxValue : HoldTimeJ6 + 1) : 0;
HoldTimeJ7 = HoldJ7 ? (HoldTimeJ7 == int.MaxValue ? int.MaxValue : HoldTimeJ7 + 1) : 0;
HoldTimeJ8 = HoldJ8 ? (HoldTimeJ8 == int.MaxValue ? int.MaxValue : HoldTimeJ8 + 1) : 0;
HoldTimeJ9 = HoldJ9 ? (HoldTimeJ9 == int.MaxValue ? int.MaxValue : HoldTimeJ9 + 1) : 0;
HoldTimeJT = HoldJT ? (HoldTimeJT == int.MaxValue ? int.MaxValue : HoldTimeJT + 1) : 0;
HoldTimeJL = HoldJL ? (HoldTimeJL == int.MaxValue ? int.MaxValue : HoldTimeJL + 1) : 0;
HoldTimeJR = HoldJR ? (HoldTimeJR == int.MaxValue ? int.MaxValue : HoldTimeJR + 1) : 0;
HoldTimeJB = HoldJB ? (HoldTimeJB == int.MaxValue ? int.MaxValue : HoldTimeJB + 1) : 0;
FreeTime_A = Free_A ? (FreeTime_A == int.MaxValue ? int.MaxValue : FreeTime_A + 1) : 0;
FreeTime_B = Free_B ? (FreeTime_B == int.MaxValue ? int.MaxValue : FreeTime_B + 1) : 0;
FreeTime_C = Free_C ? (FreeTime_C == int.MaxValue ? int.MaxValue : FreeTime_C + 1) : 0;
FreeTime_D = Free_D ? (FreeTime_D == int.MaxValue ? int.MaxValue : FreeTime_D + 1) : 0;
FreeTime_E = Free_E ? (FreeTime_E == int.MaxValue ? int.MaxValue : FreeTime_E + 1) : 0;
FreeTime_F = Free_F ? (FreeTime_F == int.MaxValue ? int.MaxValue : FreeTime_F + 1) : 0;
FreeTime_G = Free_G ? (FreeTime_G == int.MaxValue ? int.MaxValue : FreeTime_G + 1) : 0;
FreeTime_H = Free_H ? (FreeTime_H == int.MaxValue ? int.MaxValue : FreeTime_H + 1) : 0;
FreeTime_I = Free_I ? (FreeTime_I == int.MaxValue ? int.MaxValue : FreeTime_I + 1) : 0;
FreeTime_J = Free_J ? (FreeTime_J == int.MaxValue ? int.MaxValue : FreeTime_J + 1) : 0;
FreeTime_K = Free_K ? (FreeTime_K == int.MaxValue ? int.MaxValue : FreeTime_K + 1) : 0;
FreeTime_L = Free_L ? (FreeTime_L == int.MaxValue ? int.MaxValue : FreeTime_L + 1) : 0;
FreeTime_M = Free_M ? (FreeTime_M == int.MaxValue ? int.MaxValue : FreeTime_M + 1) : 0;
FreeTime_N = Free_N ? (FreeTime_N == int.MaxValue ? int.MaxValue : FreeTime_N + 1) : 0;
FreeTime_O = Free_O ? (FreeTime_O == int.MaxValue ? int.MaxValue : FreeTime_O + 1) : 0;
FreeTime_P = Free_P ? (FreeTime_P == int.MaxValue ? int.MaxValue : FreeTime_P + 1) : 0;
FreeTime_Q = Free_Q ? (FreeTime_Q == int.MaxValue ? int.MaxValue : FreeTime_Q + 1) : 0;
FreeTime_R = Free_R ? (FreeTime_R == int.MaxValue ? int.MaxValue : FreeTime_R + 1) : 0;
FreeTime_S = Free_S ? (FreeTime_S == int.MaxValue ? int.MaxValue : FreeTime_S + 1) : 0;
FreeTime_T = Free_T ? (FreeTime_T == int.MaxValue ? int.MaxValue : FreeTime_T + 1) : 0;
FreeTime_U = Free_U ? (FreeTime_U == int.MaxValue ? int.MaxValue : FreeTime_U + 1) : 0;
FreeTime_V = Free_V ? (FreeTime_V == int.MaxValue ? int.MaxValue : FreeTime_V + 1) : 0;
FreeTime_W = Free_W ? (FreeTime_W == int.MaxValue ? int.MaxValue : FreeTime_W + 1) : 0;
FreeTime_X = Free_X ? (FreeTime_X == int.MaxValue ? int.MaxValue : FreeTime_X + 1) : 0;
FreeTime_Y = Free_Y ? (FreeTime_Y == int.MaxValue ? int.MaxValue : FreeTime_Y + 1) : 0;
FreeTime_Z = Free_Z ? (FreeTime_Z == int.MaxValue ? int.MaxValue : FreeTime_Z + 1) : 0;
FreeTimeJ1 = FreeJ1 ? (FreeTimeJ1 == int.MaxValue ? int.MaxValue : FreeTimeJ1 + 1) : 0;
FreeTimeJ2 = FreeJ2 ? (FreeTimeJ2 == int.MaxValue ? int.MaxValue : FreeTimeJ2 + 1) : 0;
FreeTimeJ3 = FreeJ3 ? (FreeTimeJ3 == int.MaxValue ? int.MaxValue : FreeTimeJ3 + 1) : 0;
FreeTimeJ4 = FreeJ4 ? (FreeTimeJ4 == int.MaxValue ? int.MaxValue : FreeTimeJ4 + 1) : 0;
FreeTimeJ5 = FreeJ5 ? (FreeTimeJ5 == int.MaxValue ? int.MaxValue : FreeTimeJ5 + 1) : 0;
FreeTimeJ6 = FreeJ6 ? (FreeTimeJ6 == int.MaxValue ? int.MaxValue : FreeTimeJ6 + 1) : 0;
FreeTimeJ7 = FreeJ7 ? (FreeTimeJ7 == int.MaxValue ? int.MaxValue : FreeTimeJ7 + 1) : 0;
FreeTimeJ8 = FreeJ8 ? (FreeTimeJ8 == int.MaxValue ? int.MaxValue : FreeTimeJ8 + 1) : 0;
FreeTimeJ9 = FreeJ9 ? (FreeTimeJ9 == int.MaxValue ? int.MaxValue : FreeTimeJ9 + 1) : 0;
FreeTimeJT = FreeJT ? (FreeTimeJT == int.MaxValue ? int.MaxValue : FreeTimeJT + 1) : 0;
FreeTimeJL = FreeJL ? (FreeTimeJL == int.MaxValue ? int.MaxValue : FreeTimeJL + 1) : 0;
FreeTimeJR = FreeJR ? (FreeTimeJR == int.MaxValue ? int.MaxValue : FreeTimeJR + 1) : 0;
FreeTimeJB = FreeJB ? (FreeTimeJB == int.MaxValue ? int.MaxValue : FreeTimeJB + 1) : 0;
if (ConfigLP == KeyCode.A) { HoldLP = Hold_A; FreeLP = Free_A; PressedLP = Pressed_A; ReleaseLP = Release_A; HoldTimeLP = HoldTime_A; FreeTimeLP = FreeTime_A; }
if (ConfigLP == KeyCode.B) { HoldLP = Hold_B; FreeLP = Free_B; PressedLP = Pressed_B; ReleaseLP = Release_B; HoldTimeLP = HoldTime_B; FreeTimeLP = FreeTime_B; }
if (ConfigLP == KeyCode.C) { HoldLP = Hold_C; FreeLP = Free_C; PressedLP = Pressed_C; ReleaseLP = Release_C; HoldTimeLP = HoldTime_C; FreeTimeLP = FreeTime_C; }
if (ConfigLP == KeyCode.D) { HoldLP = Hold_D; FreeLP = Free_D; PressedLP = Pressed_D; ReleaseLP = Release_D; HoldTimeLP = HoldTime_D; FreeTimeLP = FreeTime_D; }
if (ConfigLP == KeyCode.E) { HoldLP = Hold_E; FreeLP = Free_E; PressedLP = Pressed_E; ReleaseLP = Release_E; HoldTimeLP = HoldTime_E; FreeTimeLP = FreeTime_E; }
if (ConfigLP == KeyCode.F) { HoldLP = Hold_F; FreeLP = Free_F; PressedLP = Pressed_F; ReleaseLP = Release_F; HoldTimeLP = HoldTime_F; FreeTimeLP = FreeTime_F; }
if (ConfigLP == KeyCode.G) { HoldLP = Hold_G; FreeLP = Free_G; PressedLP = Pressed_G; ReleaseLP = Release_G; HoldTimeLP = HoldTime_G; FreeTimeLP = FreeTime_G; }
if (ConfigLP == KeyCode.H) { HoldLP = Hold_H; FreeLP = Free_H; PressedLP = Pressed_H; ReleaseLP = Release_H; HoldTimeLP = HoldTime_H; FreeTimeLP = FreeTime_H; }
if (ConfigLP == KeyCode.I) { HoldLP = Hold_I; FreeLP = Free_I; PressedLP = Pressed_I; ReleaseLP = Release_I; HoldTimeLP = HoldTime_I; FreeTimeLP = FreeTime_I; }
if (ConfigLP == KeyCode.J) { HoldLP = Hold_J; FreeLP = Free_J; PressedLP = Pressed_J; ReleaseLP = Release_J; HoldTimeLP = HoldTime_J; FreeTimeLP = FreeTime_J; }
if (ConfigLP == KeyCode.K) { HoldLP = Hold_K; FreeLP = Free_K; PressedLP = Pressed_K; ReleaseLP = Release_K; HoldTimeLP = HoldTime_K; FreeTimeLP = FreeTime_K; }
if (ConfigLP == KeyCode.L) { HoldLP = Hold_L; FreeLP = Free_L; PressedLP = Pressed_L; ReleaseLP = Release_L; HoldTimeLP = HoldTime_L; FreeTimeLP = FreeTime_L; }
if (ConfigLP == KeyCode.M) { HoldLP = Hold_M; FreeLP = Free_M; PressedLP = Pressed_M; ReleaseLP = Release_M; HoldTimeLP = HoldTime_M; FreeTimeLP = FreeTime_M; }
if (ConfigLP == KeyCode.N) { HoldLP = Hold_N; FreeLP = Free_N; PressedLP = Pressed_N; ReleaseLP = Release_N; HoldTimeLP = HoldTime_N; FreeTimeLP = FreeTime_N; }
if (ConfigLP == KeyCode.O) { HoldLP = Hold_O; FreeLP = Free_O; PressedLP = Pressed_O; ReleaseLP = Release_O; HoldTimeLP = HoldTime_O; FreeTimeLP = FreeTime_O; }
if (ConfigLP == KeyCode.P) { HoldLP = Hold_P; FreeLP = Free_P; PressedLP = Pressed_P; ReleaseLP = Release_P; HoldTimeLP = HoldTime_P; FreeTimeLP = FreeTime_P; }
if (ConfigLP == KeyCode.Q) { HoldLP = Hold_Q; FreeLP = Free_Q; PressedLP = Pressed_Q; ReleaseLP = Release_Q; HoldTimeLP = HoldTime_Q; FreeTimeLP = FreeTime_Q; }
if (ConfigLP == KeyCode.R) { HoldLP = Hold_R; FreeLP = Free_R; PressedLP = Pressed_R; ReleaseLP = Release_R; HoldTimeLP = HoldTime_R; FreeTimeLP = FreeTime_R; }
if (ConfigLP == KeyCode.S) { HoldLP = Hold_S; FreeLP = Free_S; PressedLP = Pressed_S; ReleaseLP = Release_S; HoldTimeLP = HoldTime_S; FreeTimeLP = FreeTime_S; }
if (ConfigLP == KeyCode.T) { HoldLP = Hold_T; FreeLP = Free_T; PressedLP = Pressed_T; ReleaseLP = Release_T; HoldTimeLP = HoldTime_T; FreeTimeLP = FreeTime_T; }
if (ConfigLP == KeyCode.U) { HoldLP = Hold_U; FreeLP = Free_U; PressedLP = Pressed_U; ReleaseLP = Release_U; HoldTimeLP = HoldTime_U; FreeTimeLP = FreeTime_U; }
if (ConfigLP == KeyCode.V) { HoldLP = Hold_V; FreeLP = Free_V; PressedLP = Pressed_V; ReleaseLP = Release_V; HoldTimeLP = HoldTime_V; FreeTimeLP = FreeTime_V; }
if (ConfigLP == KeyCode.W) { HoldLP = Hold_W; FreeLP = Free_W; PressedLP = Pressed_W; ReleaseLP = Release_W; HoldTimeLP = HoldTime_W; FreeTimeLP = FreeTime_W; }
if (ConfigLP == KeyCode.X) { HoldLP = Hold_X; FreeLP = Free_X; PressedLP = Pressed_X; ReleaseLP = Release_X; HoldTimeLP = HoldTime_X; FreeTimeLP = FreeTime_X; }
if (ConfigLP == KeyCode.Y) { HoldLP = Hold_Y; FreeLP = Free_Y; PressedLP = Pressed_Y; ReleaseLP = Release_Y; HoldTimeLP = HoldTime_Y; FreeTimeLP = FreeTime_Y; }
if (ConfigLP == KeyCode.Z) { HoldLP = Hold_Z; FreeLP = Free_Z; PressedLP = Pressed_Z; ReleaseLP = Release_Z; HoldTimeLP = HoldTime_Z; FreeTimeLP = FreeTime_Z; }
if (ConfigMP == KeyCode.A) { HoldMP = Hold_A; FreeMP = Free_A; PressedMP = Pressed_A; ReleaseMP = Release_A; HoldTimeMP = HoldTime_A; FreeTimeMP = FreeTime_A; }
if (ConfigMP == KeyCode.B) { HoldMP = Hold_B; FreeMP = Free_B; PressedMP = Pressed_B; ReleaseMP = Release_B; HoldTimeMP = HoldTime_B; FreeTimeMP = FreeTime_B; }
if (ConfigMP == KeyCode.C) { HoldMP = Hold_C; FreeMP = Free_C; PressedMP = Pressed_C; ReleaseMP = Release_C; HoldTimeMP = HoldTime_C; FreeTimeMP = FreeTime_C; }
if (ConfigMP == KeyCode.D) { HoldMP = Hold_D; FreeMP = Free_D; PressedMP = Pressed_D; ReleaseMP = Release_D; HoldTimeMP = HoldTime_D; FreeTimeMP = FreeTime_D; }
if (ConfigMP == KeyCode.E) { HoldMP = Hold_E; FreeMP = Free_E; PressedMP = Pressed_E; ReleaseMP = Release_E; HoldTimeMP = HoldTime_E; FreeTimeMP = FreeTime_E; }
if (ConfigMP == KeyCode.F) { HoldMP = Hold_F; FreeMP = Free_F; PressedMP = Pressed_F; ReleaseMP = Release_F; HoldTimeMP = HoldTime_F; FreeTimeMP = FreeTime_F; }
if (ConfigMP == KeyCode.G) { HoldMP = Hold_G; FreeMP = Free_G; PressedMP = Pressed_G; ReleaseMP = Release_G; HoldTimeMP = HoldTime_G; FreeTimeMP = FreeTime_G; }
if (ConfigMP == KeyCode.H) { HoldMP = Hold_H; FreeMP = Free_H; PressedMP = Pressed_H; ReleaseMP = Release_H; HoldTimeMP = HoldTime_H; FreeTimeMP = FreeTime_H; }
if (ConfigMP == KeyCode.I) { HoldMP = Hold_I; FreeMP = Free_I; PressedMP = Pressed_I; ReleaseMP = Release_I; HoldTimeMP = HoldTime_I; FreeTimeMP = FreeTime_I; }
if (ConfigMP == KeyCode.J) { HoldMP = Hold_J; FreeMP = Free_J; PressedMP = Pressed_J; ReleaseMP = Release_J; HoldTimeMP = HoldTime_J; FreeTimeMP = FreeTime_J; }
if (ConfigMP == KeyCode.K) { HoldMP = Hold_K; FreeMP = Free_K; PressedMP = Pressed_K; ReleaseMP = Release_K; HoldTimeMP = HoldTime_K; FreeTimeMP = FreeTime_K; }
if (ConfigMP == KeyCode.L) { HoldMP = Hold_L; FreeMP = Free_L; PressedMP = Pressed_L; ReleaseMP = Release_L; HoldTimeMP = HoldTime_L; FreeTimeMP = FreeTime_L; }
if (ConfigMP == KeyCode.M) { HoldMP = Hold_M; FreeMP = Free_M; PressedMP = Pressed_M; ReleaseMP = Release_M; HoldTimeMP = HoldTime_M; FreeTimeMP = FreeTime_M; }
if (ConfigMP == KeyCode.N) { HoldMP = Hold_N; FreeMP = Free_N; PressedMP = Pressed_N; ReleaseMP = Release_N; HoldTimeMP = HoldTime_N; FreeTimeMP = FreeTime_N; }
if (ConfigMP == KeyCode.O) { HoldMP = Hold_O; FreeMP = Free_O; PressedMP = Pressed_O; ReleaseMP = Release_O; HoldTimeMP = HoldTime_O; FreeTimeMP = FreeTime_O; }
if (ConfigMP == KeyCode.P) { HoldMP = Hold_P; FreeMP = Free_P; PressedMP = Pressed_P; ReleaseMP = Release_P; HoldTimeMP = HoldTime_P; FreeTimeMP = FreeTime_P; }
if (ConfigMP == KeyCode.Q) { HoldMP = Hold_Q; FreeMP = Free_Q; PressedMP = Pressed_Q; ReleaseMP = Release_Q; HoldTimeMP = HoldTime_Q; FreeTimeMP = FreeTime_Q; }
if (ConfigMP == KeyCode.R) { HoldMP = Hold_R; FreeMP = Free_R; PressedMP = Pressed_R; ReleaseMP = Release_R; HoldTimeMP = HoldTime_R; FreeTimeMP = FreeTime_R; }
if (ConfigMP == KeyCode.S) { HoldMP = Hold_S; FreeMP = Free_S; PressedMP = Pressed_S; ReleaseMP = Release_S; HoldTimeMP = HoldTime_S; FreeTimeMP = FreeTime_S; }
if (ConfigMP == KeyCode.T) { HoldMP = Hold_T; FreeMP = Free_T; PressedMP = Pressed_T; ReleaseMP = Release_T; HoldTimeMP = HoldTime_T; FreeTimeMP = FreeTime_T; }
if (ConfigMP == KeyCode.U) { HoldMP = Hold_U; FreeMP = Free_U; PressedMP = Pressed_U; ReleaseMP = Release_U; HoldTimeMP = HoldTime_U; FreeTimeMP = FreeTime_U; }
if (ConfigMP == KeyCode.V) { HoldMP = Hold_V; FreeMP = Free_V; PressedMP = Pressed_V; ReleaseMP = Release_V; HoldTimeMP = HoldTime_V; FreeTimeMP = FreeTime_V; }
if (ConfigMP == KeyCode.W) { HoldMP = Hold_W; FreeMP = Free_W; PressedMP = Pressed_W; ReleaseMP = Release_W; HoldTimeMP = HoldTime_W; FreeTimeMP = FreeTime_W; }
if (ConfigMP == KeyCode.X) { HoldMP = Hold_X; FreeMP = Free_X; PressedMP = Pressed_X; ReleaseMP = Release_X; HoldTimeMP = HoldTime_X; FreeTimeMP = FreeTime_X; }
if (ConfigMP == KeyCode.Y) { HoldMP = Hold_Y; FreeMP = Free_Y; PressedMP = Pressed_Y; ReleaseMP = Release_Y; HoldTimeMP = HoldTime_Y; FreeTimeMP = FreeTime_Y; }
if (ConfigMP == KeyCode.Z) { HoldMP = Hold_Z; FreeMP = Free_Z; PressedMP = Pressed_Z; ReleaseMP = Release_Z; HoldTimeMP = HoldTime_Z; FreeTimeMP = FreeTime_Z; }
if (ConfigHP == KeyCode.A) { HoldHP = Hold_A; FreeHP = Free_A; PressedHP = Pressed_A; ReleaseHP = Release_A; HoldTimeHP = HoldTime_A; FreeTimeHP = FreeTime_A; }
if (ConfigHP == KeyCode.B) { HoldHP = Hold_B; FreeHP = Free_B; PressedHP = Pressed_B; ReleaseHP = Release_B; HoldTimeHP = HoldTime_B; FreeTimeHP = FreeTime_B; }
if (ConfigHP == KeyCode.C) { HoldHP = Hold_C; FreeHP = Free_C; PressedHP = Pressed_C; ReleaseHP = Release_C; HoldTimeHP = HoldTime_C; FreeTimeHP = FreeTime_C; }
if (ConfigHP == KeyCode.D) { HoldHP = Hold_D; FreeHP = Free_D; PressedHP = Pressed_D; ReleaseHP = Release_D; HoldTimeHP = HoldTime_D; FreeTimeHP = FreeTime_D; }
if (ConfigHP == KeyCode.E) { HoldHP = Hold_E; FreeHP = Free_E; PressedHP = Pressed_E; ReleaseHP = Release_E; HoldTimeHP = HoldTime_E; FreeTimeHP = FreeTime_E; }
if (ConfigHP == KeyCode.F) { HoldHP = Hold_F; FreeHP = Free_F; PressedHP = Pressed_F; ReleaseHP = Release_F; HoldTimeHP = HoldTime_F; FreeTimeHP = FreeTime_F; }
if (ConfigHP == KeyCode.G) { HoldHP = Hold_G; FreeHP = Free_G; PressedHP = Pressed_G; ReleaseHP = Release_G; HoldTimeHP = HoldTime_G; FreeTimeHP = FreeTime_G; }
if (ConfigHP == KeyCode.H) { HoldHP = Hold_H; FreeHP = Free_H; PressedHP = Pressed_H; ReleaseHP = Release_H; HoldTimeHP = HoldTime_H; FreeTimeHP = FreeTime_H; }
if (ConfigHP == KeyCode.I) { HoldHP = Hold_I; FreeHP = Free_I; PressedHP = Pressed_I; ReleaseHP = Release_I; HoldTimeHP = HoldTime_I; FreeTimeHP = FreeTime_I; }
if (ConfigHP == KeyCode.J) { HoldHP = Hold_J; FreeHP = Free_J; PressedHP = Pressed_J; ReleaseHP = Release_J; HoldTimeHP = HoldTime_J; FreeTimeHP = FreeTime_J; }
if (ConfigHP == KeyCode.K) { HoldHP = Hold_K; FreeHP = Free_K; PressedHP = Pressed_K; ReleaseHP = Release_K; HoldTimeHP = HoldTime_K; FreeTimeHP = FreeTime_K; }
if (ConfigHP == KeyCode.L) { HoldHP = Hold_L; FreeHP = Free_L; PressedHP = Pressed_L; ReleaseHP = Release_L; HoldTimeHP = HoldTime_L; FreeTimeHP = FreeTime_L; }
if (ConfigHP == KeyCode.M) { HoldHP = Hold_M; FreeHP = Free_M; PressedHP = Pressed_M; ReleaseHP = Release_M; HoldTimeHP = HoldTime_M; FreeTimeHP = FreeTime_M; }
if (ConfigHP == KeyCode.N) { HoldHP = Hold_N; FreeHP = Free_N; PressedHP = Pressed_N; ReleaseHP = Release_N; HoldTimeHP = HoldTime_N; FreeTimeHP = FreeTime_N; }
if (ConfigHP == KeyCode.O) { HoldHP = Hold_O; FreeHP = Free_O; PressedHP = Pressed_O; ReleaseHP = Release_O; HoldTimeHP = HoldTime_O; FreeTimeHP = FreeTime_O; }
if (ConfigHP == KeyCode.P) { HoldHP = Hold_P; FreeHP = Free_P; PressedHP = Pressed_P; ReleaseHP = Release_P; HoldTimeHP = HoldTime_P; FreeTimeHP = FreeTime_P; }
if (ConfigHP == KeyCode.Q) { HoldHP = Hold_Q; FreeHP = Free_Q; PressedHP = Pressed_Q; ReleaseHP = Release_Q; HoldTimeHP = HoldTime_Q; FreeTimeHP = FreeTime_Q; }
if (ConfigHP == KeyCode.R) { HoldHP = Hold_R; FreeHP = Free_R; PressedHP = Pressed_R; ReleaseHP = Release_R; HoldTimeHP = HoldTime_R; FreeTimeHP = FreeTime_R; }
if (ConfigHP == KeyCode.S) { HoldHP = Hold_S; FreeHP = Free_S; PressedHP = Pressed_S; ReleaseHP = Release_S; HoldTimeHP = HoldTime_S; FreeTimeHP = FreeTime_S; }
if (ConfigHP == KeyCode.T) { HoldHP = Hold_T; FreeHP = Free_T; PressedHP = Pressed_T; ReleaseHP = Release_T; HoldTimeHP = HoldTime_T; FreeTimeHP = FreeTime_T; }
if (ConfigHP == KeyCode.U) { HoldHP = Hold_U; FreeHP = Free_U; PressedHP = Pressed_U; ReleaseHP = Release_U; HoldTimeHP = HoldTime_U; FreeTimeHP = FreeTime_U; }
if (ConfigHP == KeyCode.V) { HoldHP = Hold_V; FreeHP = Free_V; PressedHP = Pressed_V; ReleaseHP = Release_V; HoldTimeHP = HoldTime_V; FreeTimeHP = FreeTime_V; }
if (ConfigHP == KeyCode.W) { HoldHP = Hold_W; FreeHP = Free_W; PressedHP = Pressed_W; ReleaseHP = Release_W; HoldTimeHP = HoldTime_W; FreeTimeHP = FreeTime_W; }
if (ConfigHP == KeyCode.X) { HoldHP = Hold_X; FreeHP = Free_X; PressedHP = Pressed_X; ReleaseHP = Release_X; HoldTimeHP = HoldTime_X; FreeTimeHP = FreeTime_X; }
if (ConfigHP == KeyCode.Y) { HoldHP = Hold_Y; FreeHP = Free_Y; PressedHP = Pressed_Y; ReleaseHP = Release_Y; HoldTimeHP = HoldTime_Y; FreeTimeHP = FreeTime_Y; }
if (ConfigHP == KeyCode.Z) { HoldHP = Hold_Z; FreeHP = Free_Z; PressedHP = Pressed_Z; ReleaseHP = Release_Z; HoldTimeHP = HoldTime_Z; FreeTimeHP = FreeTime_Z; }
if (ConfigLK == KeyCode.A) { HoldLK = Hold_A; FreeLK = Free_A; PressedLK = Pressed_A; ReleaseLK = Release_A; HoldTimeLK = HoldTime_A; FreeTimeLK = FreeTime_A; }
if (ConfigLK == KeyCode.B) { HoldLK = Hold_B; FreeLK = Free_B; PressedLK = Pressed_B; ReleaseLK = Release_B; HoldTimeLK = HoldTime_B; FreeTimeLK = FreeTime_B; }
if (ConfigLK == KeyCode.C) { HoldLK = Hold_C; FreeLK = Free_C; PressedLK = Pressed_C; ReleaseLK = Release_C; HoldTimeLK = HoldTime_C; FreeTimeLK = FreeTime_C; }
if (ConfigLK == KeyCode.D) { HoldLK = Hold_D; FreeLK = Free_D; PressedLK = Pressed_D; ReleaseLK = Release_D; HoldTimeLK = HoldTime_D; FreeTimeLK = FreeTime_D; }
if (ConfigLK == KeyCode.E) { HoldLK = Hold_E; FreeLK = Free_E; PressedLK = Pressed_E; ReleaseLK = Release_E; HoldTimeLK = HoldTime_E; FreeTimeLK = FreeTime_E; }
if (ConfigLK == KeyCode.F) { HoldLK = Hold_F; FreeLK = Free_F; PressedLK = Pressed_F; ReleaseLK = Release_F; HoldTimeLK = HoldTime_F; FreeTimeLK = FreeTime_F; }
if (ConfigLK == KeyCode.G) { HoldLK = Hold_G; FreeLK = Free_G; PressedLK = Pressed_G; ReleaseLK = Release_G; HoldTimeLK = HoldTime_G; FreeTimeLK = FreeTime_G; }
if (ConfigLK == KeyCode.H) { HoldLK = Hold_H; FreeLK = Free_H; PressedLK = Pressed_H; ReleaseLK = Release_H; HoldTimeLK = HoldTime_H; FreeTimeLK = FreeTime_H; }
if (ConfigLK == KeyCode.I) { HoldLK = Hold_I; FreeLK = Free_I; PressedLK = Pressed_I; ReleaseLK = Release_I; HoldTimeLK = HoldTime_I; FreeTimeLK = FreeTime_I; }
if (ConfigLK == KeyCode.J) { HoldLK = Hold_J; FreeLK = Free_J; PressedLK = Pressed_J; ReleaseLK = Release_J; HoldTimeLK = HoldTime_J; FreeTimeLK = FreeTime_J; }
if (ConfigLK == KeyCode.K) { HoldLK = Hold_K; FreeLK = Free_K; PressedLK = Pressed_K; ReleaseLK = Release_K; HoldTimeLK = HoldTime_K; FreeTimeLK = FreeTime_K; }
if (ConfigLK == KeyCode.L) { HoldLK = Hold_L; FreeLK = Free_L; PressedLK = Pressed_L; ReleaseLK = Release_L; HoldTimeLK = HoldTime_L; FreeTimeLK = FreeTime_L; }
if (ConfigLK == KeyCode.M) { HoldLK = Hold_M; FreeLK = Free_M; PressedLK = Pressed_M; ReleaseLK = Release_M; HoldTimeLK = HoldTime_M; FreeTimeLK = FreeTime_M; }
if (ConfigLK == KeyCode.N) { HoldLK = Hold_N; FreeLK = Free_N; PressedLK = Pressed_N; ReleaseLK = Release_N; HoldTimeLK = HoldTime_N; FreeTimeLK = FreeTime_N; }
if (ConfigLK == KeyCode.O) { HoldLK = Hold_O; FreeLK = Free_O; PressedLK = Pressed_O; ReleaseLK = Release_O; HoldTimeLK = HoldTime_O; FreeTimeLK = FreeTime_O; }
if (ConfigLK == KeyCode.P) { HoldLK = Hold_P; FreeLK = Free_P; PressedLK = Pressed_P; ReleaseLK = Release_P; HoldTimeLK = HoldTime_P; FreeTimeLK = FreeTime_P; }
if (ConfigLK == KeyCode.Q) { HoldLK = Hold_Q; FreeLK = Free_Q; PressedLK = Pressed_Q; ReleaseLK = Release_Q; HoldTimeLK = HoldTime_Q; FreeTimeLK = FreeTime_Q; }
if (ConfigLK == KeyCode.R) { HoldLK = Hold_R; FreeLK = Free_R; PressedLK = Pressed_R; ReleaseLK = Release_R; HoldTimeLK = HoldTime_R; FreeTimeLK = FreeTime_R; }
if (ConfigLK == KeyCode.S) { HoldLK = Hold_S; FreeLK = Free_S; PressedLK = Pressed_S; ReleaseLK = Release_S; HoldTimeLK = HoldTime_S; FreeTimeLK = FreeTime_S; }
if (ConfigLK == KeyCode.T) { HoldLK = Hold_T; FreeLK = Free_T; PressedLK = Pressed_T; ReleaseLK = Release_T; HoldTimeLK = HoldTime_T; FreeTimeLK = FreeTime_T; }
if (ConfigLK == KeyCode.U) { HoldLK = Hold_U; FreeLK = Free_U; PressedLK = Pressed_U; ReleaseLK = Release_U; HoldTimeLK = HoldTime_U; FreeTimeLK = FreeTime_U; }
if (ConfigLK == KeyCode.V) { HoldLK = Hold_V; FreeLK = Free_V; PressedLK = Pressed_V; ReleaseLK = Release_V; HoldTimeLK = HoldTime_V; FreeTimeLK = FreeTime_V; }
if (ConfigLK == KeyCode.W) { HoldLK = Hold_W; FreeLK = Free_W; PressedLK = Pressed_W; ReleaseLK = Release_W; HoldTimeLK = HoldTime_W; FreeTimeLK = FreeTime_W; }
if (ConfigLK == KeyCode.X) { HoldLK = Hold_X; FreeLK = Free_X; PressedLK = Pressed_X; ReleaseLK = Release_X; HoldTimeLK = HoldTime_X; FreeTimeLK = FreeTime_X; }
if (ConfigLK == KeyCode.Y) { HoldLK = Hold_Y; FreeLK = Free_Y; PressedLK = Pressed_Y; ReleaseLK = Release_Y; HoldTimeLK = HoldTime_Y; FreeTimeLK = FreeTime_Y; }
if (ConfigLK == KeyCode.Z) { HoldLK = Hold_Z; FreeLK = Free_Z; PressedLK = Pressed_Z; ReleaseLK = Release_Z; HoldTimeLK = HoldTime_Z; FreeTimeLK = FreeTime_Z; }
if (ConfigMK == KeyCode.A) { HoldMK = Hold_A; FreeMK = Free_A; PressedMK = Pressed_A; ReleaseMK = Release_A; HoldTimeMK = HoldTime_A; FreeTimeMK = FreeTime_A; }
if (ConfigMK == KeyCode.B) { HoldMK = Hold_B; FreeMK = Free_B; PressedMK = Pressed_B; ReleaseMK = Release_B; HoldTimeMK = HoldTime_B; FreeTimeMK = FreeTime_B; }
if (ConfigMK == KeyCode.C) { HoldMK = Hold_C; FreeMK = Free_C; PressedMK = Pressed_C; ReleaseMK = Release_C; HoldTimeMK = HoldTime_C; FreeTimeMK = FreeTime_C; }
if (ConfigMK == KeyCode.D) { HoldMK = Hold_D; FreeMK = Free_D; PressedMK = Pressed_D; ReleaseMK = Release_D; HoldTimeMK = HoldTime_D; FreeTimeMK = FreeTime_D; }
if (ConfigMK == KeyCode.E) { HoldMK = Hold_E; FreeMK = Free_E; PressedMK = Pressed_E; ReleaseMK = Release_E; HoldTimeMK = HoldTime_E; FreeTimeMK = FreeTime_E; }
if (ConfigMK == KeyCode.F) { HoldMK = Hold_F; FreeMK = Free_F; PressedMK = Pressed_F; ReleaseMK = Release_F; HoldTimeMK = HoldTime_F; FreeTimeMK = FreeTime_F; }
if (ConfigMK == KeyCode.G) { HoldMK = Hold_G; FreeMK = Free_G; PressedMK = Pressed_G; ReleaseMK = Release_G; HoldTimeMK = HoldTime_G; FreeTimeMK = FreeTime_G; }
if (ConfigMK == KeyCode.H) { HoldMK = Hold_H; FreeMK = Free_H; PressedMK = Pressed_H; ReleaseMK = Release_H; HoldTimeMK = HoldTime_H; FreeTimeMK = FreeTime_H; }
if (ConfigMK == KeyCode.I) { HoldMK = Hold_I; FreeMK = Free_I; PressedMK = Pressed_I; ReleaseMK = Release_I; HoldTimeMK = HoldTime_I; FreeTimeMK = FreeTime_I; }
if (ConfigMK == KeyCode.J) { HoldMK = Hold_J; FreeMK = Free_J; PressedMK = Pressed_J; ReleaseMK = Release_J; HoldTimeMK = HoldTime_J; FreeTimeMK = FreeTime_J; }
if (ConfigMK == KeyCode.K) { HoldMK = Hold_K; FreeMK = Free_K; PressedMK = Pressed_K; ReleaseMK = Release_K; HoldTimeMK = HoldTime_K; FreeTimeMK = FreeTime_K; }
if (ConfigMK == KeyCode.L) { HoldMK = Hold_L; FreeMK = Free_L; PressedMK = Pressed_L; ReleaseMK = Release_L; HoldTimeMK = HoldTime_L; FreeTimeMK = FreeTime_L; }
if (ConfigMK == KeyCode.M) { HoldMK = Hold_M; FreeMK = Free_M; PressedMK = Pressed_M; ReleaseMK = Release_M; HoldTimeMK = HoldTime_M; FreeTimeMK = FreeTime_M; }
if (ConfigMK == KeyCode.N) { HoldMK = Hold_N; FreeMK = Free_N; PressedMK = Pressed_N; ReleaseMK = Release_N; HoldTimeMK = HoldTime_N; FreeTimeMK = FreeTime_N; }
if (ConfigMK == KeyCode.O) { HoldMK = Hold_O; FreeMK = Free_O; PressedMK = Pressed_O; ReleaseMK = Release_O; HoldTimeMK = HoldTime_O; FreeTimeMK = FreeTime_O; }
if (ConfigMK == KeyCode.P) { HoldMK = Hold_P; FreeMK = Free_P; PressedMK = Pressed_P; ReleaseMK = Release_P; HoldTimeMK = HoldTime_P; FreeTimeMK = FreeTime_P; }
if (ConfigMK == KeyCode.Q) { HoldMK = Hold_Q; FreeMK = Free_Q; PressedMK = Pressed_Q; ReleaseMK = Release_Q; HoldTimeMK = HoldTime_Q; FreeTimeMK = FreeTime_Q; }
if (ConfigMK == KeyCode.R) { HoldMK = Hold_R; FreeMK = Free_R; PressedMK = Pressed_R; ReleaseMK = Release_R; HoldTimeMK = HoldTime_R; FreeTimeMK = FreeTime_R; }
if (ConfigMK == KeyCode.S) { HoldMK = Hold_S; FreeMK = Free_S; PressedMK = Pressed_S; ReleaseMK = Release_S; HoldTimeMK = HoldTime_S; FreeTimeMK = FreeTime_S; }
if (ConfigMK == KeyCode.T) { HoldMK = Hold_T; FreeMK = Free_T; PressedMK = Pressed_T; ReleaseMK = Release_T; HoldTimeMK = HoldTime_T; FreeTimeMK = FreeTime_T; }
if (ConfigMK == KeyCode.U) { HoldMK = Hold_U; FreeMK = Free_U; PressedMK = Pressed_U; ReleaseMK = Release_U; HoldTimeMK = HoldTime_U; FreeTimeMK = FreeTime_U; }
if (ConfigMK == KeyCode.V) { HoldMK = Hold_V; FreeMK = Free_V; PressedMK = Pressed_V; ReleaseMK = Release_V; HoldTimeMK = HoldTime_V; FreeTimeMK = FreeTime_V; }
if (ConfigMK == KeyCode.W) { HoldMK = Hold_W; FreeMK = Free_W; PressedMK = Pressed_W; ReleaseMK = Release_W; HoldTimeMK = HoldTime_W; FreeTimeMK = FreeTime_W; }
if (ConfigMK == KeyCode.X) { HoldMK = Hold_X; FreeMK = Free_X; PressedMK = Pressed_X; ReleaseMK = Release_X; HoldTimeMK = HoldTime_X; FreeTimeMK = FreeTime_X; }
if (ConfigMK == KeyCode.Y) { HoldMK = Hold_Y; FreeMK = Free_Y; PressedMK = Pressed_Y; ReleaseMK = Release_Y; HoldTimeMK = HoldTime_Y; FreeTimeMK = FreeTime_Y; }
if (ConfigMK == KeyCode.Z) { HoldMK = Hold_Z; FreeMK = Free_Z; PressedMK = Pressed_Z; ReleaseMK = Release_Z; HoldTimeMK = HoldTime_Z; FreeTimeMK = FreeTime_Z; }
if (ConfigHK == KeyCode.A) { HoldHK = Hold_A; FreeHK = Free_A; PressedHK = Pressed_A; ReleaseHK = Release_A; HoldTimeHK = HoldTime_A; FreeTimeHK = FreeTime_A; }
if (ConfigHK == KeyCode.B) { HoldHK = Hold_B; FreeHK = Free_B; PressedHK = Pressed_B; ReleaseHK = Release_B; HoldTimeHK = HoldTime_B; FreeTimeHK = FreeTime_B; }
if (ConfigHK == KeyCode.C) { HoldHK = Hold_C; FreeHK = Free_C; PressedHK = Pressed_C; ReleaseHK = Release_C; HoldTimeHK = HoldTime_C; FreeTimeHK = FreeTime_C; }
if (ConfigHK == KeyCode.D) { HoldHK = Hold_D; FreeHK = Free_D; PressedHK = Pressed_D; ReleaseHK = Release_D; HoldTimeHK = HoldTime_D; FreeTimeHK = FreeTime_D; }
if (ConfigHK == KeyCode.E) { HoldHK = Hold_E; FreeHK = Free_E; PressedHK = Pressed_E; ReleaseHK = Release_E; HoldTimeHK = HoldTime_E; FreeTimeHK = FreeTime_E; }
if (ConfigHK == KeyCode.F) { HoldHK = Hold_F; FreeHK = Free_F; PressedHK = Pressed_F; ReleaseHK = Release_F; HoldTimeHK = HoldTime_F; FreeTimeHK = FreeTime_F; }
if (ConfigHK == KeyCode.G) { HoldHK = Hold_G; FreeHK = Free_G; PressedHK = Pressed_G; ReleaseHK = Release_G; HoldTimeHK = HoldTime_G; FreeTimeHK = FreeTime_G; }
if (ConfigHK == KeyCode.H) { HoldHK = Hold_H; FreeHK = Free_H; PressedHK = Pressed_H; ReleaseHK = Release_H; HoldTimeHK = HoldTime_H; FreeTimeHK = FreeTime_H; }
if (ConfigHK == KeyCode.I) { HoldHK = Hold_I; FreeHK = Free_I; PressedHK = Pressed_I; ReleaseHK = Release_I; HoldTimeHK = HoldTime_I; FreeTimeHK = FreeTime_I; }
if (ConfigHK == KeyCode.J) { HoldHK = Hold_J; FreeHK = Free_J; PressedHK = Pressed_J; ReleaseHK = Release_J; HoldTimeHK = HoldTime_J; FreeTimeHK = FreeTime_J; }
if (ConfigHK == KeyCode.K) { HoldHK = Hold_K; FreeHK = Free_K; PressedHK = Pressed_K; ReleaseHK = Release_K; HoldTimeHK = HoldTime_K; FreeTimeHK = FreeTime_K; }
if (ConfigHK == KeyCode.L) { HoldHK = Hold_L; FreeHK = Free_L; PressedHK = Pressed_L; ReleaseHK = Release_L; HoldTimeHK = HoldTime_L; FreeTimeHK = FreeTime_L; }
if (ConfigHK == KeyCode.M) { HoldHK = Hold_M; FreeHK = Free_M; PressedHK = Pressed_M; ReleaseHK = Release_M; HoldTimeHK = HoldTime_M; FreeTimeHK = FreeTime_M; }
if (ConfigHK == KeyCode.N) { HoldHK = Hold_N; FreeHK = Free_N; PressedHK = Pressed_N; ReleaseHK = Release_N; HoldTimeHK = HoldTime_N; FreeTimeHK = FreeTime_N; }
if (ConfigHK == KeyCode.O) { HoldHK = Hold_O; FreeHK = Free_O; PressedHK = Pressed_O; ReleaseHK = Release_O; HoldTimeHK = HoldTime_O; FreeTimeHK = FreeTime_O; }
if (ConfigHK == KeyCode.P) { HoldHK = Hold_P; FreeHK = Free_P; PressedHK = Pressed_P; ReleaseHK = Release_P; HoldTimeHK = HoldTime_P; FreeTimeHK = FreeTime_P; }
if (ConfigHK == KeyCode.Q) { HoldHK = Hold_Q; FreeHK = Free_Q; PressedHK = Pressed_Q; ReleaseHK = Release_Q; HoldTimeHK = HoldTime_Q; FreeTimeHK = FreeTime_Q; }
if (ConfigHK == KeyCode.R) { HoldHK = Hold_R; FreeHK = Free_R; PressedHK = Pressed_R; ReleaseHK = Release_R; HoldTimeHK = HoldTime_R; FreeTimeHK = FreeTime_R; }
if (ConfigHK == KeyCode.S) { HoldHK = Hold_S; FreeHK = Free_S; PressedHK = Pressed_S; ReleaseHK = Release_S; HoldTimeHK = HoldTime_S; FreeTimeHK = FreeTime_S; }
if (ConfigHK == KeyCode.T) { HoldHK = Hold_T; FreeHK = Free_T; PressedHK = Pressed_T; ReleaseHK = Release_T; HoldTimeHK = HoldTime_T; FreeTimeHK = FreeTime_T; }
if (ConfigHK == KeyCode.U) { HoldHK = Hold_U; FreeHK = Free_U; PressedHK = Pressed_U; ReleaseHK = Release_U; HoldTimeHK = HoldTime_U; FreeTimeHK = FreeTime_U; }
if (ConfigHK == KeyCode.V) { HoldHK = Hold_V; FreeHK = Free_V; PressedHK = Pressed_V; ReleaseHK = Release_V; HoldTimeHK = HoldTime_V; FreeTimeHK = FreeTime_V; }
if (ConfigHK == KeyCode.W) { HoldHK = Hold_W; FreeHK = Free_W; PressedHK = Pressed_W; ReleaseHK = Release_W; HoldTimeHK = HoldTime_W; FreeTimeHK = FreeTime_W; }
if (ConfigHK == KeyCode.X) { HoldHK = Hold_X; FreeHK = Free_X; PressedHK = Pressed_X; ReleaseHK = Release_X; HoldTimeHK = HoldTime_X; FreeTimeHK = FreeTime_X; }
if (ConfigHK == KeyCode.Y) { HoldHK = Hold_Y; FreeHK = Free_Y; PressedHK = Pressed_Y; ReleaseHK = Release_Y; HoldTimeHK = HoldTime_Y; FreeTimeHK = FreeTime_Y; }
if (ConfigHK == KeyCode.Z) { HoldHK = Hold_Z; FreeHK = Free_Z; PressedHK = Pressed_Z; ReleaseHK = Release_Z; HoldTimeHK = HoldTime_Z; FreeTimeHK = FreeTime_Z; }
while (PressedHistoryLP.Count >= MoveCommonSettingsMomentFrame) PressedHistoryLP.RemoveAt(0);
while (PressedHistoryMP.Count >= MoveCommonSettingsMomentFrame) PressedHistoryMP.RemoveAt(0);
while (PressedHistoryHP.Count >= MoveCommonSettingsMomentFrame) PressedHistoryHP.RemoveAt(0);
while (PressedHistoryLK.Count >= MoveCommonSettingsMomentFrame) PressedHistoryLK.RemoveAt(0);
while (PressedHistoryMK.Count >= MoveCommonSettingsMomentFrame) PressedHistoryMK.RemoveAt(0);
while (PressedHistoryHK.Count >= MoveCommonSettingsMomentFrame) PressedHistoryHK.RemoveAt(0);
while (PressedHistoryJ1.Count >= MoveCommonSettingsMomentFrame) PressedHistoryJ1.RemoveAt(0);
while (PressedHistoryJ2.Count >= MoveCommonSettingsMomentFrame) PressedHistoryJ2.RemoveAt(0);
while (PressedHistoryJ3.Count >= MoveCommonSettingsMomentFrame) PressedHistoryJ3.RemoveAt(0);
while (PressedHistoryJ4.Count >= MoveCommonSettingsMomentFrame) PressedHistoryJ4.RemoveAt(0);
while (PressedHistoryJ5.Count >= MoveCommonSettingsMomentFrame) PressedHistoryJ5.RemoveAt(0);
while (PressedHistoryJ6.Count >= MoveCommonSettingsMomentFrame) PressedHistoryJ6.RemoveAt(0);
while (PressedHistoryJ7.Count >= MoveCommonSettingsMomentFrame) PressedHistoryJ7.RemoveAt(0);
while (PressedHistoryJ8.Count >= MoveCommonSettingsMomentFrame) PressedHistoryJ8.RemoveAt(0);
while (PressedHistoryJ9.Count >= MoveCommonSettingsMomentFrame) PressedHistoryJ9.RemoveAt(0);
while (PressedHistoryJT.Count >= MoveCommonSettingsMomentFrame) PressedHistoryJT.RemoveAt(0);
while (PressedHistoryJL.Count >= MoveCommonSettingsMomentFrame) PressedHistoryJL.RemoveAt(0);
while (PressedHistoryJR.Count >= MoveCommonSettingsMomentFrame) PressedHistoryJR.RemoveAt(0);
while (PressedHistoryJB.Count >= MoveCommonSettingsMomentFrame) PressedHistoryJB.RemoveAt(0);
while (ReleaseHistoryLP.Count >= MoveCommonSettingsMomentFrame) ReleaseHistoryLP.RemoveAt(0);
while (ReleaseHistoryMP.Count >= MoveCommonSettingsMomentFrame) ReleaseHistoryMP.RemoveAt(0);
while (ReleaseHistoryHP.Count >= MoveCommonSettingsMomentFrame) ReleaseHistoryHP.RemoveAt(0);
while (ReleaseHistoryLK.Count >= MoveCommonSettingsMomentFrame) ReleaseHistoryLK.RemoveAt(0);
while (ReleaseHistoryMK.Count >= MoveCommonSettingsMomentFrame) ReleaseHistoryMK.RemoveAt(0);
while (ReleaseHistoryHK.Count >= MoveCommonSettingsMomentFrame) ReleaseHistoryHK.RemoveAt(0);
while (ReleaseHistoryJ1.Count >= MoveCommonSettingsMomentFrame) ReleaseHistoryJ1.RemoveAt(0);
while (ReleaseHistoryJ2.Count >= MoveCommonSettingsMomentFrame) ReleaseHistoryJ2.RemoveAt(0);
while (ReleaseHistoryJ3.Count >= MoveCommonSettingsMomentFrame) ReleaseHistoryJ3.RemoveAt(0);
while (ReleaseHistoryJ4.Count >= MoveCommonSettingsMomentFrame) ReleaseHistoryJ4.RemoveAt(0);
while (ReleaseHistoryJ5.Count >= MoveCommonSettingsMomentFrame) ReleaseHistoryJ5.RemoveAt(0);
while (ReleaseHistoryJ6.Count >= MoveCommonSettingsMomentFrame) ReleaseHistoryJ6.RemoveAt(0);
while (ReleaseHistoryJ7.Count >= MoveCommonSettingsMomentFrame) ReleaseHistoryJ7.RemoveAt(0);
while (ReleaseHistoryJ8.Count >= MoveCommonSettingsMomentFrame) ReleaseHistoryJ8.RemoveAt(0);
while (ReleaseHistoryJ9.Count >= MoveCommonSettingsMomentFrame) ReleaseHistoryJ9.RemoveAt(0);
while (ReleaseHistoryJT.Count >= MoveCommonSettingsMomentFrame) ReleaseHistoryJT.RemoveAt(0);
while (ReleaseHistoryJL.Count >= MoveCommonSettingsMomentFrame) ReleaseHistoryJL.RemoveAt(0);
while (ReleaseHistoryJR.Count >= MoveCommonSettingsMomentFrame) ReleaseHistoryJR.RemoveAt(0);
while (ReleaseHistoryJB.Count >= MoveCommonSettingsMomentFrame) ReleaseHistoryJB.RemoveAt(0);
PressedHistoryLP.Add(PressedLP);
PressedHistoryMP.Add(PressedMP);
PressedHistoryHP.Add(PressedHP);
PressedHistoryLK.Add(PressedLK);
PressedHistoryMK.Add(PressedMK);
PressedHistoryHK.Add(PressedHK);
PressedHistoryJ1.Add(PressedJ1);
PressedHistoryJ2.Add(PressedJ2);
PressedHistoryJ3.Add(PressedJ3);
PressedHistoryJ4.Add(PressedJ4);
PressedHistoryJ5.Add(PressedJ5);
PressedHistoryJ6.Add(PressedJ6);
PressedHistoryJ7.Add(PressedJ7);
PressedHistoryJ8.Add(PressedJ8);
PressedHistoryJ9.Add(PressedJ9);
PressedHistoryJT.Add(PressedJT);
PressedHistoryJL.Add(PressedJL);
PressedHistoryJR.Add(PressedJR);
PressedHistoryJB.Add(PressedJB);
ReleaseHistoryLP.Add(ReleaseLP);
ReleaseHistoryMP.Add(ReleaseMP);
ReleaseHistoryHP.Add(ReleaseHP);
ReleaseHistoryLK.Add(ReleaseLK);
ReleaseHistoryMK.Add(ReleaseMK);
ReleaseHistoryHK.Add(ReleaseHK);
ReleaseHistoryJ1.Add(ReleaseJ1);
ReleaseHistoryJ2.Add(ReleaseJ2);
ReleaseHistoryJ3.Add(ReleaseJ3);
ReleaseHistoryJ4.Add(ReleaseJ4);
ReleaseHistoryJ5.Add(ReleaseJ5);
ReleaseHistoryJ6.Add(ReleaseJ6);
ReleaseHistoryJ7.Add(ReleaseJ7);
ReleaseHistoryJ8.Add(ReleaseJ8);
ReleaseHistoryJ9.Add(ReleaseJ9);
ReleaseHistoryJT.Add(ReleaseJT);
ReleaseHistoryJL.Add(ReleaseJL);
ReleaseHistoryJR.Add(ReleaseJR);
ReleaseHistoryJB.Add(ReleaseJB);
PressedMomentLP = PressedHistoryLP.Contains(true);
PressedMomentMP = PressedHistoryMP.Contains(true);
PressedMomentHP = PressedHistoryHP.Contains(true);
PressedMomentLK = PressedHistoryLK.Contains(true);
PressedMomentMK = PressedHistoryMK.Contains(true);
PressedMomentHK = PressedHistoryHK.Contains(true);
PressedMomentJ1 = PressedHistoryJ1.Contains(true);
PressedMomentJ2 = PressedHistoryJ2.Contains(true);
PressedMomentJ3 = PressedHistoryJ3.Contains(true);
PressedMomentJ4 = PressedHistoryJ4.Contains(true);
PressedMomentJ5 = PressedHistoryJ5.Contains(true);
PressedMomentJ6 = PressedHistoryJ6.Contains(true);
PressedMomentJ7 = PressedHistoryJ7.Contains(true);
PressedMomentJ8 = PressedHistoryJ8.Contains(true);
PressedMomentJ9 = PressedHistoryJ9.Contains(true);
PressedMomentJT = PressedHistoryJT.Contains(true);
PressedMomentJL = PressedHistoryJL.Contains(true);
PressedMomentJR = PressedHistoryJR.Contains(true);
PressedMomentJB = PressedHistoryJB.Contains(true);
ReleaseMomentLP = ReleaseHistoryLP.Contains(true);
ReleaseMomentMP = ReleaseHistoryMP.Contains(true);
ReleaseMomentHP = ReleaseHistoryHP.Contains(true);
ReleaseMomentLK = ReleaseHistoryLK.Contains(true);
ReleaseMomentMK = ReleaseHistoryMK.Contains(true);
ReleaseMomentHK = ReleaseHistoryHK.Contains(true);
ReleaseMomentJ1 = ReleaseHistoryJ1.Contains(true);
ReleaseMomentJ2 = ReleaseHistoryJ2.Contains(true);
ReleaseMomentJ3 = ReleaseHistoryJ3.Contains(true);
ReleaseMomentJ4 = ReleaseHistoryJ4.Contains(true);
ReleaseMomentJ5 = ReleaseHistoryJ5.Contains(true);
ReleaseMomentJ6 = ReleaseHistoryJ6.Contains(true);
ReleaseMomentJ7 = ReleaseHistoryJ7.Contains(true);
ReleaseMomentJ8 = ReleaseHistoryJ8.Contains(true);
ReleaseMomentJ9 = ReleaseHistoryJ9.Contains(true);
ReleaseMomentJT = ReleaseHistoryJT.Contains(true);
ReleaseMomentJL = ReleaseHistoryJL.Contains(true);
ReleaseMomentJR = ReleaseHistoryJR.Contains(true);
ReleaseMomentJB = ReleaseHistoryJB.Contains(true);
Hold = Key.Zero;
if (HoldJ1) Hold |= Key.J1;
if (HoldJ2) Hold |= Key.J2;
if (HoldJ3) Hold |= Key.J3;
if (HoldJ4) Hold |= Key.J4;
if (HoldJ5) Hold |= Key.J5;
if (HoldJ6) Hold |= Key.J6;
if (HoldJ7) Hold |= Key.J7;
if (HoldJ8) Hold |= Key.J8;
if (HoldJ9) Hold |= Key.J9;
if (HoldJT) Hold |= Key.JT;
if (HoldJL) Hold |= Key.JL;
if (HoldJR) Hold |= Key.JR;
if (HoldJB) Hold |= Key.JB;
if (HoldLP) Hold |= Key.LP;
if (HoldMP) Hold |= Key.MP;
if (HoldHP) Hold |= Key.HP;
if (HoldLK) Hold |= Key.LK;
if (HoldMK) Hold |= Key.MK;
if (HoldHK) Hold |= Key.HK;
Free = Key.Zero;
if (FreeJ1) Free |= Key.J1;
if (FreeJ2) Free |= Key.J2;
if (FreeJ3) Free |= Key.J3;
if (FreeJ4) Free |= Key.J4;
if (FreeJ5) Free |= Key.J5;
if (FreeJ6) Free |= Key.J6;
if (FreeJ7) Free |= Key.J7;
if (FreeJ8) Free |= Key.J8;
if (FreeJ9) Free |= Key.J9;
if (FreeJT) Free |= Key.JT;
if (FreeJL) Free |= Key.JL;
if (FreeJR) Free |= Key.JR;
if (FreeJB) Free |= Key.JB;
if (FreeLP) Free |= Key.LP;
if (FreeMP) Free |= Key.MP;
if (FreeHP) Free |= Key.HP;
if (FreeLK) Free |= Key.LK;
if (FreeMK) Free |= Key.MK;
if (FreeHK) Free |= Key.HK;
Pressed = Key.Zero;
if (PressedJ1) Pressed |= Key.J1;
if (PressedJ2) Pressed |= Key.J2;
if (PressedJ3) Pressed |= Key.J3;
if (PressedJ4) Pressed |= Key.J4;
if (PressedJ5) Pressed |= Key.J5;
if (PressedJ6) Pressed |= Key.J6;
if (PressedJ7) Pressed |= Key.J7;
if (PressedJ8) Pressed |= Key.J8;
if (PressedJ9) Pressed |= Key.J9;
if (PressedJT) Pressed |= Key.JT;
if (PressedJL) Pressed |= Key.JL;
if (PressedJR) Pressed |= Key.JR;
if (PressedJB) Pressed |= Key.JB;
if (PressedLP) Pressed |= Key.LP;
if (PressedMP) Pressed |= Key.MP;
if (PressedHP) Pressed |= Key.HP;
if (PressedLK) Pressed |= Key.LK;
if (PressedMK) Pressed |= Key.MK;
if (PressedHK) Pressed |= Key.HK;
Release = Key.Zero;
if (ReleaseJ1) Release |= Key.J1;
if (ReleaseJ2) Release |= Key.J2;
if (ReleaseJ3) Release |= Key.J3;
if (ReleaseJ4) Release |= Key.J4;
if (ReleaseJ5) Release |= Key.J5;
if (ReleaseJ6) Release |= Key.J6;
if (ReleaseJ7) Release |= Key.J7;
if (ReleaseJ8) Release |= Key.J8;
if (ReleaseJ9) Release |= Key.J9;
if (ReleaseJT) Release |= Key.JT;
if (ReleaseJL) Release |= Key.JL;
if (ReleaseJR) Release |= Key.JR;
if (ReleaseJB) Release |= Key.JB;
if (ReleaseLP) Release |= Key.LP;
if (ReleaseMP) Release |= Key.MP;
if (ReleaseHP) Release |= Key.HP;
if (ReleaseLK) Release |= Key.LK;
if (ReleaseMK) Release |= Key.MK;
if (ReleaseHK) Release |= Key.HK;
PressedMoment = Key.Zero;
if (PressedMomentJ1) PressedMoment |= Key.J1;
if (PressedMomentJ2) PressedMoment |= Key.J2;
if (PressedMomentJ3) PressedMoment |= Key.J3;
if (PressedMomentJ4) PressedMoment |= Key.J4;
if (PressedMomentJ5) PressedMoment |= Key.J5;
if (PressedMomentJ6) PressedMoment |= Key.J6;
if (PressedMomentJ7) PressedMoment |= Key.J7;
if (PressedMomentJ8) PressedMoment |= Key.J8;
if (PressedMomentJ9) PressedMoment |= Key.J9;
if (PressedMomentJT) PressedMoment |= Key.JT;
if (PressedMomentJL) PressedMoment |= Key.JL;
if (PressedMomentJR) PressedMoment |= Key.JR;
if (PressedMomentJB) PressedMoment |= Key.JB;
if (PressedMomentLP) PressedMoment |= Key.LP;
if (PressedMomentMP) PressedMoment |= Key.MP;
if (PressedMomentHP) PressedMoment |= Key.HP;
if (PressedMomentLK) PressedMoment |= Key.LK;
if (PressedMomentMK) PressedMoment |= Key.MK;
if (PressedMomentHK) PressedMoment |= Key.HK;
ReleaseMoment = Key.Zero;
if (ReleaseMomentJ1) ReleaseMoment |= Key.J1;
if (ReleaseMomentJ2) ReleaseMoment |= Key.J2;
if (ReleaseMomentJ3) ReleaseMoment |= Key.J3;
if (ReleaseMomentJ4) ReleaseMoment |= Key.J4;
if (ReleaseMomentJ5) ReleaseMoment |= Key.J5;
if (ReleaseMomentJ6) ReleaseMoment |= Key.J6;
if (ReleaseMomentJ7) ReleaseMoment |= Key.J7;
if (ReleaseMomentJ8) ReleaseMoment |= Key.J8;
if (ReleaseMomentJ9) ReleaseMoment |= Key.J9;
if (ReleaseMomentJT) ReleaseMoment |= Key.JT;
if (ReleaseMomentJL) ReleaseMoment |= Key.JL;
if (ReleaseMomentJR) ReleaseMoment |= Key.JR;
if (ReleaseMomentJB) ReleaseMoment |= Key.JB;
if (ReleaseMomentLP) ReleaseMoment |= Key.LP;
if (ReleaseMomentMP) ReleaseMoment |= Key.MP;
if (ReleaseMomentHP) ReleaseMoment |= Key.HP;
if (ReleaseMomentLK) ReleaseMoment |= Key.LK;
if (ReleaseMomentMK) ReleaseMoment |= Key.MK;
if (ReleaseMomentHK) ReleaseMoment |= Key.HK;
}
}
/// <summary>InputGetKeyData追加処理用</summary>
private InputGetKeyDataForMoveCommand InputGetKeyData = new InputGetKeyDataForMoveCommand();
/// <summary>
/// InputGetKeyDataの履歴保持用(極小版)
/// </summary>
/// 以下を保持。
/// 何フレーム目の情報か
/// どのキーを押しているか
/// どのキーを押したか
private class InputGetKeyTinyHistory
{
public int FrameCount;
public Key Hold;
public Key Pressed;
}
/// <summary>
/// InputGetKeyDataの履歴保持用(縮小版)
/// </summary>
/// 以下を保持。
/// 何フレーム目の情報か
/// どのキーを押しているか
/// どのキーを離しているか
/// どのキーを押したか
/// どのキーを離したか
/// どのキーを数フレーム以内に押したか
/// どのキーを数フレーム以内に離したか
private class InputGetKeyMiniHistory
{
public int FrameCount;
public Key Hold;
public Key Free;
public Key Pressed;
public Key Release;
public Key PressedMoment;
public Key ReleaseMoment;
}
/// <summary>
/// InputGetKeyDataの履歴保持用(通常版)
/// </summary>
/// 以下を保持。
/// 何フレーム目の情報か
/// どのキーを押しているか
/// どのキーを離しているか
/// どのキーを押したか
/// どのキーを離したか
/// どのキーを数フレーム以内に押したか
/// どのキーを数フレーム以内に離したか
/// 各種キーの押している時間
private class InputGetKeyDataHistory
{
public int FrameCount;
public Key Hold;
public Key Free;
public Key Pressed;
public Key Release;
public Key PressedMoment;
public Key ReleaseMoment;
public int HoldTimeJ1;
public int HoldTimeJ2;
public int HoldTimeJ3;
public int HoldTimeJ4;
public int HoldTimeJ5;
public int HoldTimeJ6;
public int HoldTimeJ7;
public int HoldTimeJ8;
public int HoldTimeJ9;
public int HoldTimeJT;
public int HoldTimeJL;
public int HoldTimeJR;
public int HoldTimeJB;
public int HoldTimeLP;
public int HoldTimeMP;
public int HoldTimeHP;
public int HoldTimeLK;
public int HoldTimeMK;
public int HoldTimeHK;
}
/// <summary>InputGetKeyDataの履歴保持最大フレーム数</summary>
private static readonly int InputGetKeyDataHistoryMax = 150;
/// <summary>InputGetKeyDataの履歴保持用(極小版)</summary>
private List<InputGetKeyTinyHistory> InputGetKeyTinyHistoryList = new List<InputGetKeyTinyHistory>(InputGetKeyDataHistoryMax);
private InputGetKeyTinyHistory[] InputGetKeyTinyHistoryData = new InputGetKeyTinyHistory[InputGetKeyDataHistoryMax];
private InputGetKeyTinyHistory InputGetKeyTinyHistoryDataRow = null;
/// <summary>InputGetKeyDataの履歴保持用(縮小版)</summary>
private List<InputGetKeyMiniHistory> InputGetKeyMiniHistoryList = new List<InputGetKeyMiniHistory>(InputGetKeyDataHistoryMax);
private InputGetKeyMiniHistory[] InputGetKeyMiniHistoryData = new InputGetKeyMiniHistory[InputGetKeyDataHistoryMax];
private InputGetKeyMiniHistory InputGetKeyMiniHistoryDataRow = null;
/// <summary>InputGetKeyDataの履歴保持用(通常版)</summary>
private List<InputGetKeyDataHistory> InputGetKeyDataHistoryList = new List<InputGetKeyDataHistory>(InputGetKeyDataHistoryMax);
private InputGetKeyDataHistory[] InputGetKeyDataHistoryData = new InputGetKeyDataHistory[InputGetKeyDataHistoryMax];
private InputGetKeyDataHistory InputGetKeyDataHistoryDataRow = null;
/// <summary>右向き(1P側)か左向き(2P側)かのフラグ</summary>
[SerializeField] private bool PlayerFlip = false;
/// <summary>UnityのInspectorでデバッグ表示用:フレームカウント</summary>
[SerializeField] private int DebugFrameCount = 0;
/// <summary>UnityのInspectorでデバッグ表示用:処理時間(ミリ秒)</summary>
[SerializeField] private long DebugProcessingTime;
/// <summary>UnityのInspectorでデバッグ表示用:処理時間(ミリ秒)(2フレーム以降)</summary>
[SerializeField] private long DebugProcessingAverageTime;
/// <summary>UnityのInspectorでデバッグ表示用:処理時間(ミリ秒)(2フレーム以降)</summary>
[SerializeField] private long DebugProcessingTotalTime;
/// <summary>UnityのGameViewでデバッグ表示用</summary>
private static readonly bool DebugPrintGui = true;
private static readonly int DebugPrintGap = 22;
private static readonly int DebugFontSize = 20;
private static readonly long DebugSpikeNum = 2L * (System.Diagnostics.Stopwatch.Frequency / 1000L);
private int DebugLineSize = DebugFontSize; // 仮設定
private int DebugLinesMax = (int)((Screen.height - DebugPrintGap * 2) / DebugFontSize); // 仮設定
private int DebugGuiCount = 0;
private List<string> DebugStringList = new List<string>();
private List<string> FrameStringList = new List<string>();
private List<string> SpikeStringList = new List<string>();
private List<string> UsageStringList = new List<string>();
private bool UsageStringFlag = true;
private bool DebugRejectFlag = false;
private StringBuilder sb = new StringBuilder(1024);
/// <summary>処理時間計測用のストップウォッチ</summary>
private System.Diagnostics.Stopwatch DebugStopwatch1 = new System.Diagnostics.Stopwatch();
private System.Diagnostics.Stopwatch DebugStopwatch2 = new System.Diagnostics.Stopwatch();
private System.Diagnostics.Stopwatch DebugStopwatch3 = new System.Diagnostics.Stopwatch();
void Start()
{
// ストップウォッチの解像度等
// Debug.Log($"Stopwatch HighReso {System.Diagnostics.Stopwatch.IsHighResolution}");
// Debug.Log($"Stopwatch.Frequency {System.Diagnostics.Stopwatch.Frequency}");
// 技のコマンドリストの順序を反転
// 例えば波動拳は↓ ↘ → P だが、
// 実際の処理順はP → ↘ ↓の順序で判定を行なうため反転。
foreach (List<MoveCommand> MoveCommandData in MoveCommandList) MoveCommandData.Reverse();
// InputGetKeyData追加処理キーコンフィグ設定
InputGetKeyData.Config(lp: KeyCode.I, mp: KeyCode.O, hp: KeyCode.P, lk: KeyCode.J, mk: KeyCode.K, hk: KeyCode.L);
// InputGetKeyDataの履歴保持用のインスタンス作成
for (int i = 0; i < InputGetKeyDataHistoryMax; ++i)
{
InputGetKeyTinyHistoryData[i] = new InputGetKeyTinyHistory();
InputGetKeyMiniHistoryData[i] = new InputGetKeyMiniHistory();
InputGetKeyDataHistoryData[i] = new InputGetKeyDataHistory();
}
// フレームレートの設定
Application.targetFrameRate = 60;
}
void Update()
{
// GC Alloc 等確認用プロファイラースタート
Profiler.BeginSample("check_GC_Alloc");
// 処理時間計測用のストップウォッチスタート
DebugStopwatch1.Restart();
DebugStopwatch1.Start();
// キーボードのMキーで1P側と2P側をフリップ
if (Input.GetKeyDown(KeyCode.M))
{
PlayerFlip = PlayerFlip ? false : true;
if (!PlayerFlip) DebugStringList.Insert(0, "[ 1P MODE ]");
if ( PlayerFlip) DebugStringList.Insert(0, "[ 2P MODE ]");
}
// InputGetKeyData追加処理更新
InputGetKeyData.Update(PlayerFlip);
// InputGetKeyDataの履歴保持用に今回のフレームのキー情報を取得
int i = Time.frameCount % InputGetKeyDataHistoryMax;
InputGetKeyTinyHistoryData[i].FrameCount = Time.frameCount;
InputGetKeyMiniHistoryData[i].FrameCount = Time.frameCount;
InputGetKeyDataHistoryData[i].FrameCount = Time.frameCount;
InputGetKeyTinyHistoryData[i].Hold = InputGetKeyData.Hold;
InputGetKeyMiniHistoryData[i].Hold = InputGetKeyData.Hold;
InputGetKeyDataHistoryData[i].Hold = InputGetKeyData.Hold;
InputGetKeyMiniHistoryData[i].Free = InputGetKeyData.Free;
InputGetKeyDataHistoryData[i].Free = InputGetKeyData.Free;
InputGetKeyTinyHistoryData[i].Pressed = InputGetKeyData.Pressed;
InputGetKeyMiniHistoryData[i].Pressed = InputGetKeyData.Pressed;
InputGetKeyDataHistoryData[i].Pressed = InputGetKeyData.Pressed;
InputGetKeyMiniHistoryData[i].Release = InputGetKeyData.Release;
InputGetKeyDataHistoryData[i].Release = InputGetKeyData.Release;
InputGetKeyMiniHistoryData[i].PressedMoment = InputGetKeyData.PressedMoment;
InputGetKeyDataHistoryData[i].PressedMoment = InputGetKeyData.PressedMoment;
InputGetKeyMiniHistoryData[i].ReleaseMoment = InputGetKeyData.ReleaseMoment;
InputGetKeyDataHistoryData[i].ReleaseMoment = InputGetKeyData.ReleaseMoment;
InputGetKeyDataHistoryData[i].HoldTimeJ1 = InputGetKeyData.HoldTimeJ1;
InputGetKeyDataHistoryData[i].HoldTimeJ2 = InputGetKeyData.HoldTimeJ2;
InputGetKeyDataHistoryData[i].HoldTimeJ3 = InputGetKeyData.HoldTimeJ3;
InputGetKeyDataHistoryData[i].HoldTimeJ4 = InputGetKeyData.HoldTimeJ4;
InputGetKeyDataHistoryData[i].HoldTimeJ5 = InputGetKeyData.HoldTimeJ5;
InputGetKeyDataHistoryData[i].HoldTimeJ6 = InputGetKeyData.HoldTimeJ6;
InputGetKeyDataHistoryData[i].HoldTimeJ7 = InputGetKeyData.HoldTimeJ7;
InputGetKeyDataHistoryData[i].HoldTimeJ8 = InputGetKeyData.HoldTimeJ8;
InputGetKeyDataHistoryData[i].HoldTimeJ9 = InputGetKeyData.HoldTimeJ9;
InputGetKeyDataHistoryData[i].HoldTimeJT = InputGetKeyData.HoldTimeJT;
InputGetKeyDataHistoryData[i].HoldTimeJL = InputGetKeyData.HoldTimeJL;
InputGetKeyDataHistoryData[i].HoldTimeJR = InputGetKeyData.HoldTimeJR;
InputGetKeyDataHistoryData[i].HoldTimeJB = InputGetKeyData.HoldTimeJB;
InputGetKeyDataHistoryData[i].HoldTimeLP = InputGetKeyData.HoldTimeLP;
InputGetKeyDataHistoryData[i].HoldTimeMP = InputGetKeyData.HoldTimeMP;
InputGetKeyDataHistoryData[i].HoldTimeHP = InputGetKeyData.HoldTimeHP;
InputGetKeyDataHistoryData[i].HoldTimeLK = InputGetKeyData.HoldTimeLK;
InputGetKeyDataHistoryData[i].HoldTimeMK = InputGetKeyData.HoldTimeMK;
InputGetKeyDataHistoryData[i].HoldTimeHK = InputGetKeyData.HoldTimeHK;
// InputGetKeyDataの履歴保持用Listが最大数以上の場合には先頭から順次削除
while (InputGetKeyTinyHistoryList.Count >= InputGetKeyDataHistoryMax) InputGetKeyTinyHistoryList.RemoveAt(0);
while (InputGetKeyMiniHistoryList.Count >= InputGetKeyDataHistoryMax) InputGetKeyMiniHistoryList.RemoveAt(0);
while (InputGetKeyDataHistoryList.Count >= InputGetKeyDataHistoryMax) InputGetKeyDataHistoryList.RemoveAt(0);
// InputGetKeyDataの履歴保持用Listの末尾に今回のフレームのキー情報を追加
InputGetKeyTinyHistoryList.Add(InputGetKeyTinyHistoryData[i]);
InputGetKeyMiniHistoryList.Add(InputGetKeyMiniHistoryData[i]);
InputGetKeyDataHistoryList.Add(InputGetKeyDataHistoryData[i]);
// 技の入力受付直後の場合は冷却期間用の数値をマイナス1
foreach (MoveID id in MoveInformationMap.Keys)
{
if (MoveInformationMap[id].CoolTime > 0)
{
MoveInformationMap[id].CoolTime--;
}
}
// 技のコマンドリストを順次判定処理
foreach (List<MoveCommand> MoveCommandData in MoveCommandList)
{
bool allow = false;
int index = 0;
StaticMoveId = MoveID.Zero;
StaticFrameCount = Time.frameCount;
// 処理時間計測用のストップウォッチスタート
DebugStopwatch2.Restart();
DebugStopwatch2.Start();
// 技のコマンドのひとつひとつを順次判定処理
foreach (MoveCommand record in MoveCommandData)
{
StaticMoveId = record.Id;
// GC Alloc 対策
StaticInputKey = record.InputKey;
StaticHoldTime = record.HoldTime;
StaticNextTime = record.NextTime;
StaticSlipTime = record.SlipTime;
// 処理時間計測用のストップウォッチスタート
DebugStopwatch3.Restart();
DebugStopwatch3.Start();
InputGetKeyTinyHistoryDataRow = null;
InputGetKeyMiniHistoryDataRow = null;
InputGetKeyDataHistoryDataRow = null;
// 技の入力受付直後の場合は入力受付拒否
if (MoveInformationMap[StaticMoveId].CoolTime > 0) break;
if (index == 0)
{
// -----------------------------------------------------------------
// ①事前処理
// -----------------------------------------------------------------
// コマンド最終の入力が成立しているか確認。
// コマンド最終の入力が成立していなければ、
// 入力キー履歴情報を辿る必要無し。
// -----------------------------------------------------------------
// 例)
// 波動拳は236+Pだが、Pが今フレームで押されていなければ、
// 波動拳の236+Pが成立しているか、
// 入力キーの過去履歴を辿る必要が無い。
// -----------------------------------------------------------------
// record(=MoveCommand)=コマンドリストのコマンドの1行分のデータ。
// InputGetKeyData=今フレームのデータ。
// recordとInputGetKeyDataが条件に合っているか確認して判定。
// -----------------------------------------------------------------
allow = false;
allow = record.DoFinger switch
{
Finger.Hold => ((InputGetKeyData.Hold & StaticInputKey) == StaticInputKey),
Finger.Free => ((InputGetKeyData.Free & StaticInputKey) == StaticInputKey),
Finger.Pressed => ((InputGetKeyData.Pressed & StaticInputKey) == StaticInputKey),
Finger.Release => ((InputGetKeyData.Release & StaticInputKey) == StaticInputKey),
Finger.PressedMoment => ((InputGetKeyData.PressedMoment & StaticInputKey) == StaticInputKey),
Finger.ReleaseMoment => ((InputGetKeyData.ReleaseMoment & StaticInputKey) == StaticInputKey),
_ => false
};
if (!allow) break;
allow = false;
// -----------------------------------------------------------------
// ①事前処理(ターンパンチ専用)
// -----------------------------------------------------------------
// ターンパンチは、
// Lv1~FINALまで10回の判定があるが、
// Lv1の判定が不成立であれば、
// Lv2の判定も不成立になる為、
// 入力キー履歴情報を辿る必要無し。
// Lv3の判定以降も同様。
// -----------------------------------------------------------------
allow = false;
allow = record.Id switch
{
MoveID.TurnPunchPPPlv2 => (MoveInformationMap[MoveID.TurnPunchPPPlv1].AcceptFrame == Time.frameCount),
MoveID.TurnPunchPPPlv3 => (MoveInformationMap[MoveID.TurnPunchPPPlv2].AcceptFrame == Time.frameCount),
MoveID.TurnPunchPPPlv4 => (MoveInformationMap[MoveID.TurnPunchPPPlv3].AcceptFrame == Time.frameCount),
MoveID.TurnPunchPPPlv5 => (MoveInformationMap[MoveID.TurnPunchPPPlv4].AcceptFrame == Time.frameCount),
MoveID.TurnPunchPPPlv6 => (MoveInformationMap[MoveID.TurnPunchPPPlv5].AcceptFrame == Time.frameCount),
MoveID.TurnPunchPPPlv7 => (MoveInformationMap[MoveID.TurnPunchPPPlv6].AcceptFrame == Time.frameCount),
MoveID.TurnPunchPPPlv8 => (MoveInformationMap[MoveID.TurnPunchPPPlv7].AcceptFrame == Time.frameCount),
MoveID.TurnPunchPPPlv9 => (MoveInformationMap[MoveID.TurnPunchPPPlv8].AcceptFrame == Time.frameCount),
MoveID.TurnPunchPPPfinal => (MoveInformationMap[MoveID.TurnPunchPPPlv9].AcceptFrame == Time.frameCount),
MoveID.TurnPunchKKKlv2 => (MoveInformationMap[MoveID.TurnPunchKKKlv1].AcceptFrame == Time.frameCount),
MoveID.TurnPunchKKKlv3 => (MoveInformationMap[MoveID.TurnPunchKKKlv2].AcceptFrame == Time.frameCount),
MoveID.TurnPunchKKKlv4 => (MoveInformationMap[MoveID.TurnPunchKKKlv3].AcceptFrame == Time.frameCount),
MoveID.TurnPunchKKKlv5 => (MoveInformationMap[MoveID.TurnPunchKKKlv4].AcceptFrame == Time.frameCount),
MoveID.TurnPunchKKKlv6 => (MoveInformationMap[MoveID.TurnPunchKKKlv5].AcceptFrame == Time.frameCount),
MoveID.TurnPunchKKKlv7 => (MoveInformationMap[MoveID.TurnPunchKKKlv6].AcceptFrame == Time.frameCount),
MoveID.TurnPunchKKKlv8 => (MoveInformationMap[MoveID.TurnPunchKKKlv7].AcceptFrame == Time.frameCount),
MoveID.TurnPunchKKKlv9 => (MoveInformationMap[MoveID.TurnPunchKKKlv8].AcceptFrame == Time.frameCount),
MoveID.TurnPunchKKKfinal => (MoveInformationMap[MoveID.TurnPunchKKKlv9].AcceptFrame == Time.frameCount),
_ => true
};
if (!allow) break;
allow = false;
}
/*
if (record.HoldTime >= 0 && record.HoldTime <= 1 && (record.DoFinger == Finger.Hold || record.DoFinger == Finger.Pressed))
{
// -----------------------------------------------------------------
// ②InputGetKeyDataの履歴保持用(極小版)による判定処理
// -----------------------------------------------------------------
// 極小版入力キー履歴情報は、
// 何フレーム目、押している、押した、
// だけしか保持していないので以下の判定は出来ない。
// ・溜め時間の判定が必要なコマンド(ソニックブーム等)
// ・離した事の判定が必要なコマンド(ターンパンチ)
// -----------------------------------------------------------------
// 例)
// 波動拳の236+P、
// Pを離したか、
// 2を何秒間押し続けたか、などの、
// 入力キーの過去履歴を辿る必要が無いので判定可能。
// -----------------------------------------------------------------
// record(=MoveCommand)=コマンドリストのコマンドの1行分のデータ。
// row(=InputGetKeyTinyHistory)=履歴情報の1フレーム分のデータ。
// recordとrowが条件に合っているか確認して判定。
// -----------------------------------------------------------------
InputGetKeyTinyHistoryDataRow = record.DoFinger switch
{
Finger.Hold => InputGetKeyTinyHistoryList.FindLast(row => ((StaticFrameCount - StaticNextTime * MoveCommonSettingsSkillRank) <= row.FrameCount) && (row.FrameCount <= (StaticFrameCount - StaticSlipTime)) && ((row.Hold & StaticInputKey) == StaticInputKey)),
Finger.Pressed => InputGetKeyTinyHistoryList.FindLast(row => ((StaticFrameCount - StaticNextTime * MoveCommonSettingsSkillRank) <= row.FrameCount) && (row.FrameCount <= (StaticFrameCount - StaticSlipTime)) && ((row.Pressed & StaticInputKey) == StaticInputKey)),
_ => null
};
// if (DebugStopwatch3.IsRunning) DebugStopwatch3.Stop();
// Debug.Log($"②InputGetKeyDataの履歴保持用(極小版)による判定処理 {DebugStopwatch3.ElapsedTicks,6:D}ticks, {MoveInformationMap[StaticMoveId].MoveName}");
}
else
if (record.HoldTime >= 0 && record.HoldTime <= 1)
{
// -----------------------------------------------------------------
// ③InputGetKeyDataの履歴保持用(縮小版)による判定処理
// -----------------------------------------------------------------
// 縮小版入力キー履歴情報は、
// 各種キーの入力時間を保持していないので以下の判定は出来ない。
// ・溜め時間の判定が必要なコマンド(ソニックブーム等)
// -----------------------------------------------------------------
// 例)
// 滅・波動拳の236236+PPP、
// Pを何秒間押し続けたか、
// 2を何秒間押し続けたか、などの、
// 入力キーの過去履歴を辿る必要が無いので判定可能。
// -----------------------------------------------------------------
// record(=MoveCommand)=コマンドリストのコマンドの1行分のデータ。
// row(=InputGetKeyMiniHistory)=履歴情報の1フレーム分のデータ。
// recordとrowが条件に合っているか確認して判定。
// -----------------------------------------------------------------
InputGetKeyMiniHistoryDataRow = record.DoFinger switch
{
Finger.Hold => InputGetKeyMiniHistoryList.FindLast(row => ((StaticFrameCount - StaticNextTime * MoveCommonSettingsSkillRank) <= row.FrameCount) && (row.FrameCount <= (StaticFrameCount - StaticSlipTime)) && ((row.Hold & StaticInputKey) == StaticInputKey)),
Finger.Free => InputGetKeyMiniHistoryList.FindLast(row => ((StaticFrameCount - StaticNextTime * MoveCommonSettingsSkillRank) <= row.FrameCount) && (row.FrameCount <= (StaticFrameCount - StaticSlipTime)) && ((row.Free & StaticInputKey) == StaticInputKey)),
Finger.Pressed => InputGetKeyMiniHistoryList.FindLast(row => ((StaticFrameCount - StaticNextTime * MoveCommonSettingsSkillRank) <= row.FrameCount) && (row.FrameCount <= (StaticFrameCount - StaticSlipTime)) && ((row.Pressed & StaticInputKey) == StaticInputKey)),
Finger.Release => InputGetKeyMiniHistoryList.FindLast(row => ((StaticFrameCount - StaticNextTime * MoveCommonSettingsSkillRank) <= row.FrameCount) && (row.FrameCount <= (StaticFrameCount - StaticSlipTime)) && ((row.Release & StaticInputKey) == StaticInputKey)),
Finger.PressedMoment => InputGetKeyMiniHistoryList.FindLast(row => ((StaticFrameCount - StaticNextTime * MoveCommonSettingsSkillRank) <= row.FrameCount) && (row.FrameCount <= (StaticFrameCount - StaticSlipTime)) && ((row.PressedMoment & StaticInputKey) == StaticInputKey)),
Finger.ReleaseMoment => InputGetKeyMiniHistoryList.FindLast(row => ((StaticFrameCount - StaticNextTime * MoveCommonSettingsSkillRank) <= row.FrameCount) && (row.FrameCount <= (StaticFrameCount - StaticSlipTime)) && ((row.ReleaseMoment & StaticInputKey) == StaticInputKey)),
_ => null
};
// if (DebugStopwatch3.IsRunning) DebugStopwatch3.Stop();
// Debug.Log($"③InputGetKeyDataの履歴保持用(縮小版)による判定処理 {DebugStopwatch3.ElapsedTicks,6:D}ticks, {MoveInformationMap[StaticMoveId].MoveName}");
}
else
*/
if (record.HoldTime >= 0 && (record.InputKey == Key.J1 || record.InputKey == Key.J2 || record.InputKey == Key.J3 || record.InputKey == Key.J4 || record.InputKey == Key.J5 || record.InputKey == Key.J6 || record.InputKey == Key.J7 || record.InputKey == Key.J8 || record.InputKey == Key.J9 || record.InputKey == Key.JT || record.InputKey == Key.JL || record.InputKey == Key.JR || record.InputKey == Key.JB || record.InputKey == Key.LP || record.InputKey == Key.MP || record.InputKey == Key.HP || record.InputKey == Key.LK || record.InputKey == Key.MK || record.InputKey == Key.HK || record.InputKey == Key.LPK || record.InputKey == Key.MPK || record.InputKey == Key.HPK || record.InputKey == Key.PPP || record.InputKey == Key.KKK))
{
// -----------------------------------------------------------------
// ④InputGetKeyDataの履歴保持用(通常版)による判定処理
// -----------------------------------------------------------------
// ⑤はLINQのWhereを使用しているので、
// ④はLINQのWhereを使用せずに、
// 入力時間の判定が必要なコマンドも判定可能な判定処理。
// -----------------------------------------------------------------
// record(=MoveCommand)=コマンドリストのコマンドの1行分のデータ。
// row(=InputGetKeyDataHistory)=履歴情報の1フレーム分のデータ。
// recordとrowが条件に合っているか確認して判定。
// -----------------------------------------------------------------
InputGetKeyDataHistoryDataRow = (record.DoFinger, record.InputKey) switch
{
(Finger.Hold, Key.J1) => InputGetKeyDataHistoryList.FindLast(row => ((StaticFrameCount - StaticNextTime * MoveCommonSettingsSkillRank) <= row.FrameCount) && (row.FrameCount <= (StaticFrameCount - StaticSlipTime)) && (row.HoldTimeJ1 >= StaticHoldTime)),
(Finger.Hold, Key.J2) => InputGetKeyDataHistoryList.FindLast(row => ((StaticFrameCount - StaticNextTime * MoveCommonSettingsSkillRank) <= row.FrameCount) && (row.FrameCount <= (StaticFrameCount - StaticSlipTime)) && (row.HoldTimeJ2 >= StaticHoldTime)),
(Finger.Hold, Key.J3) => InputGetKeyDataHistoryList.FindLast(row => ((StaticFrameCount - StaticNextTime * MoveCommonSettingsSkillRank) <= row.FrameCount) && (row.FrameCount <= (StaticFrameCount - StaticSlipTime)) && (row.HoldTimeJ3 >= StaticHoldTime)),
(Finger.Hold, Key.J4) => InputGetKeyDataHistoryList.FindLast(row => ((StaticFrameCount - StaticNextTime * MoveCommonSettingsSkillRank) <= row.FrameCount) && (row.FrameCount <= (StaticFrameCount - StaticSlipTime)) && (row.HoldTimeJ4 >= StaticHoldTime)),
(Finger.Hold, Key.J5) => InputGetKeyDataHistoryList.FindLast(row => ((StaticFrameCount - StaticNextTime * MoveCommonSettingsSkillRank) <= row.FrameCount) && (row.FrameCount <= (StaticFrameCount - StaticSlipTime)) && (row.HoldTimeJ5 >= StaticHoldTime)),
(Finger.Hold, Key.J6) => InputGetKeyDataHistoryList.FindLast(row => ((StaticFrameCount - StaticNextTime * MoveCommonSettingsSkillRank) <= row.FrameCount) && (row.FrameCount <= (StaticFrameCount - StaticSlipTime)) && (row.HoldTimeJ6 >= StaticHoldTime)),
(Finger.Hold, Key.J7) => InputGetKeyDataHistoryList.FindLast(row => ((StaticFrameCount - StaticNextTime * MoveCommonSettingsSkillRank) <= row.FrameCount) && (row.FrameCount <= (StaticFrameCount - StaticSlipTime)) && (row.HoldTimeJ7 >= StaticHoldTime)),
(Finger.Hold, Key.J8) => InputGetKeyDataHistoryList.FindLast(row => ((StaticFrameCount - StaticNextTime * MoveCommonSettingsSkillRank) <= row.FrameCount) && (row.FrameCount <= (StaticFrameCount - StaticSlipTime)) && (row.HoldTimeJ8 >= StaticHoldTime)),
(Finger.Hold, Key.J9) => InputGetKeyDataHistoryList.FindLast(row => ((StaticFrameCount - StaticNextTime * MoveCommonSettingsSkillRank) <= row.FrameCount) && (row.FrameCount <= (StaticFrameCount - StaticSlipTime)) && (row.HoldTimeJ9 >= StaticHoldTime)),
(Finger.Hold, Key.JT) => InputGetKeyDataHistoryList.FindLast(row => ((StaticFrameCount - StaticNextTime * MoveCommonSettingsSkillRank) <= row.FrameCount) && (row.FrameCount <= (StaticFrameCount - StaticSlipTime)) && (row.HoldTimeJT >= StaticHoldTime)),
(Finger.Hold, Key.JL) => InputGetKeyDataHistoryList.FindLast(row => ((StaticFrameCount - StaticNextTime * MoveCommonSettingsSkillRank) <= row.FrameCount) && (row.FrameCount <= (StaticFrameCount - StaticSlipTime)) && (row.HoldTimeJL >= StaticHoldTime)),
(Finger.Hold, Key.JR) => InputGetKeyDataHistoryList.FindLast(row => ((StaticFrameCount - StaticNextTime * MoveCommonSettingsSkillRank) <= row.FrameCount) && (row.FrameCount <= (StaticFrameCount - StaticSlipTime)) && (row.HoldTimeJR >= StaticHoldTime)),
(Finger.Hold, Key.JB) => InputGetKeyDataHistoryList.FindLast(row => ((StaticFrameCount - StaticNextTime * MoveCommonSettingsSkillRank) <= row.FrameCount) && (row.FrameCount <= (StaticFrameCount - StaticSlipTime)) && (row.HoldTimeJB >= StaticHoldTime)),
(Finger.Hold, Key.LP) => InputGetKeyDataHistoryList.FindLast(row => ((StaticFrameCount - StaticNextTime * MoveCommonSettingsSkillRank) <= row.FrameCount) && (row.FrameCount <= (StaticFrameCount - StaticSlipTime)) && (row.HoldTimeLP >= StaticHoldTime)),
(Finger.Hold, Key.MP) => InputGetKeyDataHistoryList.FindLast(row => ((StaticFrameCount - StaticNextTime * MoveCommonSettingsSkillRank) <= row.FrameCount) && (row.FrameCount <= (StaticFrameCount - StaticSlipTime)) && (row.HoldTimeMP >= StaticHoldTime)),
(Finger.Hold, Key.HP) => InputGetKeyDataHistoryList.FindLast(row => ((StaticFrameCount - StaticNextTime * MoveCommonSettingsSkillRank) <= row.FrameCount) && (row.FrameCount <= (StaticFrameCount - StaticSlipTime)) && (row.HoldTimeHP >= StaticHoldTime)),
(Finger.Hold, Key.LK) => InputGetKeyDataHistoryList.FindLast(row => ((StaticFrameCount - StaticNextTime * MoveCommonSettingsSkillRank) <= row.FrameCount) && (row.FrameCount <= (StaticFrameCount - StaticSlipTime)) && (row.HoldTimeLK >= StaticHoldTime)),
(Finger.Hold, Key.MK) => InputGetKeyDataHistoryList.FindLast(row => ((StaticFrameCount - StaticNextTime * MoveCommonSettingsSkillRank) <= row.FrameCount) && (row.FrameCount <= (StaticFrameCount - StaticSlipTime)) && (row.HoldTimeMK >= StaticHoldTime)),
(Finger.Hold, Key.HK) => InputGetKeyDataHistoryList.FindLast(row => ((StaticFrameCount - StaticNextTime * MoveCommonSettingsSkillRank) <= row.FrameCount) && (row.FrameCount <= (StaticFrameCount - StaticSlipTime)) && (row.HoldTimeHK >= StaticHoldTime)),
(Finger.Hold, Key.LPK) => InputGetKeyDataHistoryList.FindLast(row => ((StaticFrameCount - StaticNextTime * MoveCommonSettingsSkillRank) <= row.FrameCount) && (row.FrameCount <= (StaticFrameCount - StaticSlipTime)) && (row.HoldTimeLP >= StaticHoldTime) && (row.HoldTimeLK >= StaticHoldTime)),
(Finger.Hold, Key.MPK) => InputGetKeyDataHistoryList.FindLast(row => ((StaticFrameCount - StaticNextTime * MoveCommonSettingsSkillRank) <= row.FrameCount) && (row.FrameCount <= (StaticFrameCount - StaticSlipTime)) && (row.HoldTimeMP >= StaticHoldTime) && (row.HoldTimeMK >= StaticHoldTime)),
(Finger.Hold, Key.HPK) => InputGetKeyDataHistoryList.FindLast(row => ((StaticFrameCount - StaticNextTime * MoveCommonSettingsSkillRank) <= row.FrameCount) && (row.FrameCount <= (StaticFrameCount - StaticSlipTime)) && (row.HoldTimeHP >= StaticHoldTime) && (row.HoldTimeHK >= StaticHoldTime)),
(Finger.Hold, Key.PPP) => InputGetKeyDataHistoryList.FindLast(row => ((StaticFrameCount - StaticNextTime * MoveCommonSettingsSkillRank) <= row.FrameCount) && (row.FrameCount <= (StaticFrameCount - StaticSlipTime)) && (row.HoldTimeLP >= StaticHoldTime) && (row.HoldTimeMP >= StaticHoldTime) && (row.HoldTimeHP >= StaticHoldTime)),
(Finger.Hold, Key.KKK) => InputGetKeyDataHistoryList.FindLast(row => ((StaticFrameCount - StaticNextTime * MoveCommonSettingsSkillRank) <= row.FrameCount) && (row.FrameCount <= (StaticFrameCount - StaticSlipTime)) && (row.HoldTimeLK >= StaticHoldTime) && (row.HoldTimeMK >= StaticHoldTime) && (row.HoldTimeHK >= StaticHoldTime)),
(Finger.Free, _) => InputGetKeyDataHistoryList.FindLast(row => ((StaticFrameCount - StaticNextTime * MoveCommonSettingsSkillRank) <= row.FrameCount) && (row.FrameCount <= (StaticFrameCount - StaticSlipTime)) && ((row.Free & StaticInputKey) == StaticInputKey)),
(Finger.Pressed, _) => InputGetKeyDataHistoryList.FindLast(row => ((StaticFrameCount - StaticNextTime * MoveCommonSettingsSkillRank) <= row.FrameCount) && (row.FrameCount <= (StaticFrameCount - StaticSlipTime)) && ((row.Pressed & StaticInputKey) == StaticInputKey)),
(Finger.Release, _) => InputGetKeyDataHistoryList.FindLast(row => ((StaticFrameCount - StaticNextTime * MoveCommonSettingsSkillRank) <= row.FrameCount) && (row.FrameCount <= (StaticFrameCount - StaticSlipTime)) && ((row.Release & StaticInputKey) == StaticInputKey)),
(Finger.PressedMoment, _) => InputGetKeyDataHistoryList.FindLast(row => ((StaticFrameCount - StaticNextTime * MoveCommonSettingsSkillRank) <= row.FrameCount) && (row.FrameCount <= (StaticFrameCount - StaticSlipTime)) && ((row.PressedMoment & StaticInputKey) == StaticInputKey)),
(Finger.ReleaseMoment, _) => InputGetKeyDataHistoryList.FindLast(row => ((StaticFrameCount - StaticNextTime * MoveCommonSettingsSkillRank) <= row.FrameCount) && (row.FrameCount <= (StaticFrameCount - StaticSlipTime)) && ((row.ReleaseMoment & StaticInputKey) == StaticInputKey)),
(_, _) => null
};
// if (DebugStopwatch3.IsRunning) DebugStopwatch3.Stop();
// Debug.Log($"④InputGetKeyDataの履歴保持用(通常版)による判定処理 {DebugStopwatch3.ElapsedTicks,6:D}ticks, {MoveInformationMap[StaticMoveId].MoveName}");
}
/*
else
{
// -----------------------------------------------------------------
// ⑤InputGetKeyDataの履歴保持用(通常版)による判定処理(LINQ)
// -----------------------------------------------------------------
// LINQを使用した判定処理。重い。
// 冒頭のMoveCommandListであれば、
// 前述までの処理で判定出来るため、
// この判定までくるコマンドは無いのでコメントアウト。
// -----------------------------------------------------------------
// record(=MoveCommand)=コマンドリストのコマンドの1行分のデータ。
// row(=InputGetKeyDataHistory)=履歴情報の1フレーム分のデータ。
// recordとrowが条件に合っているか確認して判定。
// -----------------------------------------------------------------
IEnumerable<InputGetKeyDataHistory> ie = InputGetKeyDataHistoryList.AsEnumerable();
ie = ie.Where(row => ((StaticFrameCount - StaticNextTime * MoveCommonSettingsSkillRank) <= row.FrameCount) && (row.FrameCount <= (StaticFrameCount - StaticSlipTime)));
if (record.DoFinger == Finger.Hold)
{
if ((record.InputKey & Key.J1) > 0) ie = ie.Where(row => row.HoldTimeJ1 >= record.HoldTime);
if ((record.InputKey & Key.J2) > 0) ie = ie.Where(row => row.HoldTimeJ2 >= record.HoldTime);
if ((record.InputKey & Key.J3) > 0) ie = ie.Where(row => row.HoldTimeJ3 >= record.HoldTime);
if ((record.InputKey & Key.J4) > 0) ie = ie.Where(row => row.HoldTimeJ4 >= record.HoldTime);
if ((record.InputKey & Key.J5) > 0) ie = ie.Where(row => row.HoldTimeJ5 >= record.HoldTime);
if ((record.InputKey & Key.J6) > 0) ie = ie.Where(row => row.HoldTimeJ6 >= record.HoldTime);
if ((record.InputKey & Key.J7) > 0) ie = ie.Where(row => row.HoldTimeJ7 >= record.HoldTime);
if ((record.InputKey & Key.J8) > 0) ie = ie.Where(row => row.HoldTimeJ8 >= record.HoldTime);
if ((record.InputKey & Key.J9) > 0) ie = ie.Where(row => row.HoldTimeJ9 >= record.HoldTime);
if ((record.InputKey & Key.JT) > 0) ie = ie.Where(row => row.HoldTimeJT >= record.HoldTime);
if ((record.InputKey & Key.JL) > 0) ie = ie.Where(row => row.HoldTimeJL >= record.HoldTime);
if ((record.InputKey & Key.JR) > 0) ie = ie.Where(row => row.HoldTimeJR >= record.HoldTime);
if ((record.InputKey & Key.JB) > 0) ie = ie.Where(row => row.HoldTimeJB >= record.HoldTime);
if ((record.InputKey & Key.LP) > 0) ie = ie.Where(row => row.HoldTimeLP >= record.HoldTime);
if ((record.InputKey & Key.MP) > 0) ie = ie.Where(row => row.HoldTimeMP >= record.HoldTime);
if ((record.InputKey & Key.HP) > 0) ie = ie.Where(row => row.HoldTimeHP >= record.HoldTime);
if ((record.InputKey & Key.LK) > 0) ie = ie.Where(row => row.HoldTimeLK >= record.HoldTime);
if ((record.InputKey & Key.MK) > 0) ie = ie.Where(row => row.HoldTimeMK >= record.HoldTime);
if ((record.InputKey & Key.HK) > 0) ie = ie.Where(row => row.HoldTimeHK >= record.HoldTime);
}
if (record.DoFinger == Finger.Free)
{
if ((record.InputKey & Key.J1) > 0) ie = ie.Where(row => (row.Free & Key.J1) > 0);
if ((record.InputKey & Key.J2) > 0) ie = ie.Where(row => (row.Free & Key.J2) > 0);
if ((record.InputKey & Key.J3) > 0) ie = ie.Where(row => (row.Free & Key.J3) > 0);
if ((record.InputKey & Key.J4) > 0) ie = ie.Where(row => (row.Free & Key.J4) > 0);
if ((record.InputKey & Key.J5) > 0) ie = ie.Where(row => (row.Free & Key.J5) > 0);
if ((record.InputKey & Key.J6) > 0) ie = ie.Where(row => (row.Free & Key.J6) > 0);
if ((record.InputKey & Key.J7) > 0) ie = ie.Where(row => (row.Free & Key.J7) > 0);
if ((record.InputKey & Key.J8) > 0) ie = ie.Where(row => (row.Free & Key.J8) > 0);
if ((record.InputKey & Key.J9) > 0) ie = ie.Where(row => (row.Free & Key.J9) > 0);
if ((record.InputKey & Key.JT) > 0) ie = ie.Where(row => (row.Free & Key.JT) > 0);
if ((record.InputKey & Key.JL) > 0) ie = ie.Where(row => (row.Free & Key.JL) > 0);
if ((record.InputKey & Key.JR) > 0) ie = ie.Where(row => (row.Free & Key.JR) > 0);
if ((record.InputKey & Key.JB) > 0) ie = ie.Where(row => (row.Free & Key.JB) > 0);
if ((record.InputKey & Key.LP) > 0) ie = ie.Where(row => (row.Free & Key.LP) > 0);
if ((record.InputKey & Key.MP) > 0) ie = ie.Where(row => (row.Free & Key.MP) > 0);
if ((record.InputKey & Key.HP) > 0) ie = ie.Where(row => (row.Free & Key.HP) > 0);
if ((record.InputKey & Key.LK) > 0) ie = ie.Where(row => (row.Free & Key.LK) > 0);
if ((record.InputKey & Key.MK) > 0) ie = ie.Where(row => (row.Free & Key.MK) > 0);
if ((record.InputKey & Key.HK) > 0) ie = ie.Where(row => (row.Free & Key.HK) > 0);
}
if (record.DoFinger == Finger.Pressed)
{
if ((record.InputKey & Key.J1) > 0) ie = ie.Where(row => (row.Pressed & Key.J1) > 0);
if ((record.InputKey & Key.J2) > 0) ie = ie.Where(row => (row.Pressed & Key.J2) > 0);
if ((record.InputKey & Key.J3) > 0) ie = ie.Where(row => (row.Pressed & Key.J3) > 0);
if ((record.InputKey & Key.J4) > 0) ie = ie.Where(row => (row.Pressed & Key.J4) > 0);
if ((record.InputKey & Key.J5) > 0) ie = ie.Where(row => (row.Pressed & Key.J5) > 0);
if ((record.InputKey & Key.J6) > 0) ie = ie.Where(row => (row.Pressed & Key.J6) > 0);
if ((record.InputKey & Key.J7) > 0) ie = ie.Where(row => (row.Pressed & Key.J7) > 0);
if ((record.InputKey & Key.J8) > 0) ie = ie.Where(row => (row.Pressed & Key.J8) > 0);
if ((record.InputKey & Key.J9) > 0) ie = ie.Where(row => (row.Pressed & Key.J9) > 0);
if ((record.InputKey & Key.JT) > 0) ie = ie.Where(row => (row.Pressed & Key.JT) > 0);
if ((record.InputKey & Key.JL) > 0) ie = ie.Where(row => (row.Pressed & Key.JL) > 0);
if ((record.InputKey & Key.JR) > 0) ie = ie.Where(row => (row.Pressed & Key.JR) > 0);
if ((record.InputKey & Key.JB) > 0) ie = ie.Where(row => (row.Pressed & Key.JB) > 0);
if ((record.InputKey & Key.LP) > 0) ie = ie.Where(row => (row.Pressed & Key.LP) > 0);
if ((record.InputKey & Key.MP) > 0) ie = ie.Where(row => (row.Pressed & Key.MP) > 0);
if ((record.InputKey & Key.HP) > 0) ie = ie.Where(row => (row.Pressed & Key.HP) > 0);
if ((record.InputKey & Key.LK) > 0) ie = ie.Where(row => (row.Pressed & Key.LK) > 0);
if ((record.InputKey & Key.MK) > 0) ie = ie.Where(row => (row.Pressed & Key.MK) > 0);
if ((record.InputKey & Key.HK) > 0) ie = ie.Where(row => (row.Pressed & Key.HK) > 0);
}
if (record.DoFinger == Finger.Release)
{
if ((record.InputKey & Key.J1) > 0) ie = ie.Where(row => (row.Release & Key.J1) > 0);
if ((record.InputKey & Key.J2) > 0) ie = ie.Where(row => (row.Release & Key.J2) > 0);
if ((record.InputKey & Key.J3) > 0) ie = ie.Where(row => (row.Release & Key.J3) > 0);
if ((record.InputKey & Key.J4) > 0) ie = ie.Where(row => (row.Release & Key.J4) > 0);
if ((record.InputKey & Key.J5) > 0) ie = ie.Where(row => (row.Release & Key.J5) > 0);
if ((record.InputKey & Key.J6) > 0) ie = ie.Where(row => (row.Release & Key.J6) > 0);
if ((record.InputKey & Key.J7) > 0) ie = ie.Where(row => (row.Release & Key.J7) > 0);
if ((record.InputKey & Key.J8) > 0) ie = ie.Where(row => (row.Release & Key.J8) > 0);
if ((record.InputKey & Key.J9) > 0) ie = ie.Where(row => (row.Release & Key.J9) > 0);
if ((record.InputKey & Key.JT) > 0) ie = ie.Where(row => (row.Release & Key.JT) > 0);
if ((record.InputKey & Key.JL) > 0) ie = ie.Where(row => (row.Release & Key.JL) > 0);
if ((record.InputKey & Key.JR) > 0) ie = ie.Where(row => (row.Release & Key.JR) > 0);
if ((record.InputKey & Key.JB) > 0) ie = ie.Where(row => (row.Release & Key.JB) > 0);
if ((record.InputKey & Key.LP) > 0) ie = ie.Where(row => (row.Release & Key.LP) > 0);
if ((record.InputKey & Key.MP) > 0) ie = ie.Where(row => (row.Release & Key.MP) > 0);
if ((record.InputKey & Key.HP) > 0) ie = ie.Where(row => (row.Release & Key.HP) > 0);
if ((record.InputKey & Key.LK) > 0) ie = ie.Where(row => (row.Release & Key.LK) > 0);
if ((record.InputKey & Key.MK) > 0) ie = ie.Where(row => (row.Release & Key.MK) > 0);
if ((record.InputKey & Key.HK) > 0) ie = ie.Where(row => (row.Release & Key.HK) > 0);
}
if (record.DoFinger == Finger.PressedMoment)
{
if ((record.InputKey & Key.J1) > 0) ie = ie.Where(row => (row.PressedMoment & Key.J1) > 0);
if ((record.InputKey & Key.J2) > 0) ie = ie.Where(row => (row.PressedMoment & Key.J2) > 0);
if ((record.InputKey & Key.J3) > 0) ie = ie.Where(row => (row.PressedMoment & Key.J3) > 0);
if ((record.InputKey & Key.J4) > 0) ie = ie.Where(row => (row.PressedMoment & Key.J4) > 0);
if ((record.InputKey & Key.J5) > 0) ie = ie.Where(row => (row.PressedMoment & Key.J5) > 0);
if ((record.InputKey & Key.J6) > 0) ie = ie.Where(row => (row.PressedMoment & Key.J6) > 0);
if ((record.InputKey & Key.J7) > 0) ie = ie.Where(row => (row.PressedMoment & Key.J7) > 0);
if ((record.InputKey & Key.J8) > 0) ie = ie.Where(row => (row.PressedMoment & Key.J8) > 0);
if ((record.InputKey & Key.J9) > 0) ie = ie.Where(row => (row.PressedMoment & Key.J9) > 0);
if ((record.InputKey & Key.JT) > 0) ie = ie.Where(row => (row.PressedMoment & Key.JT) > 0);
if ((record.InputKey & Key.JL) > 0) ie = ie.Where(row => (row.PressedMoment & Key.JL) > 0);
if ((record.InputKey & Key.JR) > 0) ie = ie.Where(row => (row.PressedMoment & Key.JR) > 0);
if ((record.InputKey & Key.JB) > 0) ie = ie.Where(row => (row.PressedMoment & Key.JB) > 0);
if ((record.InputKey & Key.LP) > 0) ie = ie.Where(row => (row.PressedMoment & Key.LP) > 0);
if ((record.InputKey & Key.MP) > 0) ie = ie.Where(row => (row.PressedMoment & Key.MP) > 0);
if ((record.InputKey & Key.HP) > 0) ie = ie.Where(row => (row.PressedMoment & Key.HP) > 0);
if ((record.InputKey & Key.LK) > 0) ie = ie.Where(row => (row.PressedMoment & Key.LK) > 0);
if ((record.InputKey & Key.MK) > 0) ie = ie.Where(row => (row.PressedMoment & Key.MK) > 0);
if ((record.InputKey & Key.HK) > 0) ie = ie.Where(row => (row.PressedMoment & Key.HK) > 0);
}
if (record.DoFinger == Finger.ReleaseMoment)
{
if ((record.InputKey & Key.J1) > 0) ie = ie.Where(row => (row.ReleaseMoment & Key.J1) > 0);
if ((record.InputKey & Key.J2) > 0) ie = ie.Where(row => (row.ReleaseMoment & Key.J2) > 0);
if ((record.InputKey & Key.J3) > 0) ie = ie.Where(row => (row.ReleaseMoment & Key.J3) > 0);
if ((record.InputKey & Key.J4) > 0) ie = ie.Where(row => (row.ReleaseMoment & Key.J4) > 0);
if ((record.InputKey & Key.J5) > 0) ie = ie.Where(row => (row.ReleaseMoment & Key.J5) > 0);
if ((record.InputKey & Key.J6) > 0) ie = ie.Where(row => (row.ReleaseMoment & Key.J6) > 0);
if ((record.InputKey & Key.J7) > 0) ie = ie.Where(row => (row.ReleaseMoment & Key.J7) > 0);
if ((record.InputKey & Key.J8) > 0) ie = ie.Where(row => (row.ReleaseMoment & Key.J8) > 0);
if ((record.InputKey & Key.J9) > 0) ie = ie.Where(row => (row.ReleaseMoment & Key.J9) > 0);
if ((record.InputKey & Key.JT) > 0) ie = ie.Where(row => (row.ReleaseMoment & Key.JT) > 0);
if ((record.InputKey & Key.JL) > 0) ie = ie.Where(row => (row.ReleaseMoment & Key.JL) > 0);
if ((record.InputKey & Key.JR) > 0) ie = ie.Where(row => (row.ReleaseMoment & Key.JR) > 0);
if ((record.InputKey & Key.JB) > 0) ie = ie.Where(row => (row.ReleaseMoment & Key.JB) > 0);
if ((record.InputKey & Key.LP) > 0) ie = ie.Where(row => (row.ReleaseMoment & Key.LP) > 0);
if ((record.InputKey & Key.MP) > 0) ie = ie.Where(row => (row.ReleaseMoment & Key.MP) > 0);
if ((record.InputKey & Key.HP) > 0) ie = ie.Where(row => (row.ReleaseMoment & Key.HP) > 0);
if ((record.InputKey & Key.LK) > 0) ie = ie.Where(row => (row.ReleaseMoment & Key.LK) > 0);
if ((record.InputKey & Key.MK) > 0) ie = ie.Where(row => (row.ReleaseMoment & Key.MK) > 0);
if ((record.InputKey & Key.HK) > 0) ie = ie.Where(row => (row.ReleaseMoment & Key.HK) > 0);
}
InputGetKeyDataHistoryDataRow = ie.LastOrDefault();
// if (DebugStopwatch3.IsRunning) DebugStopwatch3.Stop();
// Debug.Log($"⑤InputGetKeyDataの履歴保持用(通常版)による判定処理 {DebugStopwatch3.ElapsedTicks,6:D}ticks, {MoveInformationMap[StaticMoveId].MoveName}");
}
*/
if (InputGetKeyTinyHistoryDataRow != null)
{
StaticFrameCount = InputGetKeyTinyHistoryDataRow.FrameCount;
allow = true;
}
else if (InputGetKeyMiniHistoryDataRow != null)
{
StaticFrameCount = InputGetKeyMiniHistoryDataRow.FrameCount;
allow = true;
}
else if (InputGetKeyDataHistoryDataRow != null)
{
StaticFrameCount = InputGetKeyDataHistoryDataRow.FrameCount;
allow = true;
}
else
{
allow = false;
break;
}
index++;
// 処理時間計測用のストップウォッチストップ
if (DebugStopwatch3.IsRunning) DebugStopwatch3.Stop();
}
// 処理時間計測用のストップウォッチストップ
if (DebugStopwatch2.IsRunning) DebugStopwatch2.Stop();
// コマンド入力受付承認?
if (allow)
{
// 再入力受付不可期間設定
MoveInformationMap[StaticMoveId].CoolTime = MoveCommonSettingsCoolFrame;
// 入力受付承認フレームの設定
MoveInformationMap[StaticMoveId].AcceptFrame = Time.frameCount;
// 入力受付承認時処理時間設定
MoveInformationMap[StaticMoveId].AcceptProcessingTime = DebugStopwatch2.ElapsedTicks;
// Consoleデバック表示
// Debug.Log($"{Time.frameCount}fr [判定所要時間]{DebugStopwatch2.ElapsedTicks,6:D}ticks, [受付承認技名]{MoveInformationMap[StaticMoveId].MoveName}");
}
else if (index > 0)
{
// 入力受付承認フレームの設定
MoveInformationMap[StaticMoveId].RejectFrame = Time.frameCount;
// 入力受付承認時処理時間設定
MoveInformationMap[StaticMoveId].RejectProcessingTime = DebugStopwatch2.ElapsedTicks;
// Consoleデバック表示
// Debug.Log($"{Time.frameCount}fr [判定所要時間]{DebugStopwatch2.ElapsedTicks,6:D}ticks, [受付否認技名]{MoveInformationMap[StaticMoveId].MoveName} {index}");
}
}
// 処理時間計測用のストップウォッチストップ
if (DebugStopwatch1.IsRunning) DebugStopwatch1.Stop();
// UnityのInspectorでの処理時間をデバッグ表示
DebugProcessingTime = DebugStopwatch1.ElapsedTicks;
if (Time.frameCount > 1)
{
DebugProcessingTotalTime += DebugProcessingTime;
DebugProcessingAverageTime = DebugProcessingTotalTime / (Time.frameCount - 1);
}
// UnityのInspectorにフレームカウントをデバッグ表示
DebugFrameCount = Time.frameCount;
// GC Alloc 等確認用プロファイラーストップ
Profiler.EndSample();
if (DebugPrintGui)
{
// UnityのGameViewでデバッグ表示用の各種情報を取得&設定
sb.Clear();
sb.Append(((InputGetKeyData.Pressed & Key.J1) > 0) ? "\u2199 " : "");
sb.Append(((InputGetKeyData.Pressed & Key.J2) > 0) ? "\u2193 " : "");
sb.Append(((InputGetKeyData.Pressed & Key.J3) > 0) ? "\u2198 " : "");
sb.Append(((InputGetKeyData.Pressed & Key.J4) > 0) ? "\u2190 " : "");
sb.Append(((InputGetKeyData.Pressed & Key.J5) > 0) ? "\u30FB " : "");
sb.Append(((InputGetKeyData.Pressed & Key.J6) > 0) ? "\u2192 " : "");
sb.Append(((InputGetKeyData.Pressed & Key.J7) > 0) ? "\u2196 " : "");
sb.Append(((InputGetKeyData.Pressed & Key.J8) > 0) ? "\u2191 " : "");
sb.Append(((InputGetKeyData.Pressed & Key.J9) > 0) ? "\u2197 " : "");
sb.Append(((InputGetKeyData.Pressed & Key.LP) > 0) ? "弱P " : "");
sb.Append(((InputGetKeyData.Pressed & Key.MP) > 0) ? "中P " : "");
sb.Append(((InputGetKeyData.Pressed & Key.HP) > 0) ? "強P " : "");
sb.Append(((InputGetKeyData.Pressed & Key.LK) > 0) ? "弱K " : "");
sb.Append(((InputGetKeyData.Pressed & Key.MK) > 0) ? "中K " : "");
sb.Append(((InputGetKeyData.Pressed & Key.HK) > 0) ? "強K " : "");
if (sb.Length > 0) DebugStringList.Insert(0, sb.ToString());
// UnityのGameViewでデバッグ表示用にコマンド入力受付承認直後の技名を追加
foreach (MoveInformation MoveInformationData in MoveInformationMap.Values)
{
if (MoveInformationData.AcceptFrame == Time.frameCount)
{
sb.Clear();
if (DebugRejectFlag) sb.Append("[ 承認 ] ");
sb.Append($"{MoveInformationData.AcceptFrame}fr ");
sb.Append($"{MoveInformationData.AcceptProcessingTime,6:D}ticks");
sb.Append($"{MoveInformationData.MoveName}");
DebugStringList.Insert(0, sb.ToString());
}
if (MoveInformationData.RejectFrame == Time.frameCount && DebugRejectFlag)
{
sb.Clear();
if (DebugRejectFlag) sb.Append("[ 否認 ] ");
sb.Append($"{MoveInformationData.RejectFrame}fr ");
sb.Append($"{MoveInformationData.RejectProcessingTime,6:D}ticks");
sb.Append($"{MoveInformationData.MoveName}");
DebugStringList.Insert(0, sb.ToString());
}
}
// UnityのGameViewでデバッグ表示用が最大数以上の場合には順次削除
while (DebugStringList.Count > DebugLinesMax) DebugStringList.RemoveAt(DebugStringList.Count - 1);
// UnityのGameViewでデバッグ表示用にフレームと処理時間の情報を取得
sb.Clear();
sb.Append($"({1000L * 1000L * 1000L / System.Diagnostics.Stopwatch.Frequency}ナノ秒 = 1tick)\n");
sb.Append("\n");
sb.Append("フレーム数 処理時間\n");
sb.Append($"{Time.frameCount,6:D}fr ");
sb.Append($"{DebugProcessingTime,6:D}ticks\n");
sb.Append("\n");
sb.Append(" 平均処理時間\n");
sb.Append(" ");
sb.Append($"{DebugProcessingAverageTime,6:D}ticks");
FrameStringList.Clear();
FrameStringList.Insert(0, sb.ToString());
// UnityのGameViewでデバッグ表示用に処理時間でスパイク発生時の情報を追加
if (DebugStopwatch1.ElapsedTicks >= DebugSpikeNum || DebugStopwatch1.ElapsedTicks >= DebugProcessingAverageTime * 3)
{
sb.Clear();
sb.Append($"{Time.frameCount,6:D}fr ");
sb.Append($"{DebugStopwatch1.ElapsedTicks,6:D}ticks");
SpikeStringList.Insert(0, sb.ToString());
}
// UnityのGameViewでデバッグ表示用が最大数以上の場合には順次削除
while (SpikeStringList.Count > DebugLinesMax - 8) SpikeStringList.RemoveAt(SpikeStringList.Count - 1);
// キーボードのESCキーでUnityのGameViewのデバッグ表示をクリア
if (Input.GetKeyDown(KeyCode.Escape))
{
DebugStringList.Clear();
SpikeStringList.Clear();
}
// キーボードのF1キーでUnityのGameViewのデバッグ表示に操作方法表示
if (Input.GetKeyDown(KeyCode.F1))
{
DebugStringList.Clear();
UsageStringFlag = true;
}
// キーボードのZキーで受付否認表示OnOffをフリップ
if (Input.GetKeyDown(KeyCode.Z))
{
DebugRejectFlag = DebugRejectFlag ? false : true;
if (!DebugRejectFlag) DebugStringList.Insert(0, "[ HIDE REJECT INFORMATION ]");
if ( DebugRejectFlag) DebugStringList.Insert(0, "[ SHOW REJECT INFORMATION ]");
}
}
}
void OnGUI()
{
if (DebugPrintGui)
{
// UnityのGameViewでデバッグ表示するための初期化
if (DebugGuiCount == 0)
{
// UnityのGameViewの取扱説明
UsageStringList.Insert(0, "");
UsageStringList.Insert(0, "[ESC] 画面表示消去");
UsageStringList.Insert(0, "[F1] 操作方法表示");
UsageStringList.Insert(0, "");
UsageStringList.Insert(0, "\u3000 \u3000 \u3000 \u3000 \u2191 \u3000 \u3000 \u3000 \u3000 \u3000 ");
UsageStringList.Insert(0, "\u3000 \u3000 \u3000 \u2190 \u30FB \u2192 \u3000 \u24BE \u24C4 \u24C5 ");
UsageStringList.Insert(0, "\u3000 \u3000 \u3000 \u3000 \u2193 \u3000 \u3000 \u24BF \u24C0 \u24C1 ");
UsageStringList.Insert(0, "");
UsageStringList.Insert(0, "\u3000 \u3000 \u3000 \u3000 or");
UsageStringList.Insert(0, "");
UsageStringList.Insert(0, "\u3000 \u3000 \u3000 \u3000 \u24CC \u3000 \u3000 \u3000 \u3000 \u3000 ");
UsageStringList.Insert(0, "\u3000 \u3000 \u3000 \u24B6 \u30FB \u24B9 \u3000 \u24BE \u24C4 \u24C5 ");
UsageStringList.Insert(0, "\u3000 \u3000 \u3000 \u3000 \u24C8 \u3000 \u3000 \u24BF \u24C0 \u24C1 ");
UsageStringList.Insert(0, "");
UsageStringList.Insert(0, "\u3000 \u3000 \u3000 \u24CF 否認表示 \u24C2 左右反転");
UsageStringList.Insert(0, "");
UsageStringList.Insert(0, "\u3000 \u3000 \u3000 真空波動〇でも入力してくださいませ。");
UsageStringList.Insert(0, "\u3000 \u3000 \uFF08 キーボードが無いと操作できないです。 \uFF09");
UsageStringList.Reverse();
// UnityのGameViewでデバッグ表示するためのフォントの設定
// OSのFontが利用可能であれば以下のFont利用(左側が優先度高)
string[] wants = { "MS Gothic", "Osaka-Mono", "SF Mono", "Yu Gochic", "YuGothic" };
string[] fonts = Font.GetOSInstalledFontNames();
string systemfont = wants.Intersect(fonts).FirstOrDefault();
if (systemfont != null) GUI.skin.label.font = Font.CreateDynamicFontFromOSFont(systemfont, DebugFontSize);
// OSのFontが利用不可であればNotoFontを利用(Assets/ResourcesにFontDataの配置が必要)
if (systemfont == null) GUI.skin.label.font = Resources.Load<Font>("NotoSansMonoCJKjp-Bold");
// Fontのサイズと色の設定
GUI.skin.label.fontSize = DebugFontSize;
GUI.skin.label.normal.textColor = Color.white;
}
DebugGuiCount++;
if (UsageStringFlag)
{
UsageStringFlag = false;
// UnityのGameViewに取扱説明表示
DebugStringList.Clear();
DebugStringList = new List<string>(UsageStringList);
}
// UnityのGameViewのデバッグ表示用の行の高さ及び行数の設定
DebugLineSize = (int)(GUI.skin.label.lineHeight);
DebugLinesMax = (int)((Screen.height - DebugPrintGap * 2) / DebugLineSize);
// UnityのGameViewでキー入力と技をデバッグ表示
GUI.skin.label.alignment = TextAnchor.UpperLeft;
GUI.Label(new Rect(DebugPrintGap, DebugPrintGap, Screen.width - DebugPrintGap * 2, Screen.height - DebugPrintGap * 2), $"{string.Join("\n", DebugStringList)}");
// UnityのGameViewで判定処理時間をデバッグ表示
GUI.skin.label.alignment = TextAnchor.UpperRight;
GUI.Label(new Rect(DebugPrintGap, DebugPrintGap, Screen.width - DebugPrintGap * 2, Screen.height - DebugPrintGap * 2), $"{string.Join("\n", FrameStringList)}");
GUI.skin.label.alignment = TextAnchor.UpperRight;
GUI.Label(new Rect(DebugPrintGap, DebugPrintGap, Screen.width - DebugPrintGap * 2, Screen.height - DebugPrintGap * 2), $"\n\n\n\n\n\n\n\n\n{string.Join("\n", SpikeStringList)}");
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment