private bool IsPressed(CommandElement expectInput, int lastInput, int curInput) { int expect = expectInput.keyCode; if ((expectInput.keyModifier & (1 << (int)KeyModifier.KeyMode_Detect_As_4Way)) != 0) { if ((lastInput & expect) != expect && (curInput & expect) == expect) { return(true); } else { return(false); } } else { if ((lastInput != expect) && (curInput == expect)) { return(true); } else { return(false); } } }
public static Command GetCommand(ConfigDataCommand commandConfig) { Command command = new Command(); command.mBufferTime = commandConfig.BufferTime; command.mCommandName = commandConfig.Name; command.mCommandTime = commandConfig.Time; command.mCommand = new List <CommandElement>(); Tokenizer tokenizer = new Tokenizer(); List <Token> tokens = tokenizer.GetTokens(commandConfig.Def); int pos = 0; int tokenSize = tokens.Count; Token t; CommandElement currentCommandElement = new CommandElement(); while (pos < tokenSize) { t = tokens[pos++]; if (t.value == ",")//遇到意味着之前的CommandElement结束了 { command.mCommand.Add(currentCommandElement); currentCommandElement = new CommandElement(); } else if (t.value == "U") { currentCommandElement.keyCode += CommandHelper.GetKeycode(KeyNames.KEY_UP); } else if (t.value == "D") { currentCommandElement.keyCode += CommandHelper.GetKeycode(KeyNames.KEY_DOWN); } else if (t.value == "B") { currentCommandElement.keyCode += CommandHelper.GetKeycode(KeyNames.KEY_LEFT); } else if (t.value == "F") { currentCommandElement.keyCode += CommandHelper.GetKeycode(KeyNames.KEY_RIGHT); } else if (t.value == "DB") { currentCommandElement.keyCode += CommandHelper.GetKeycode(KeyNames.KEY_DOWN) + CommandHelper.GetKeycode(KeyNames.KEY_LEFT); } else if (t.value == "DF") { currentCommandElement.keyCode += CommandHelper.GetKeycode(KeyNames.KEY_DOWN) + CommandHelper.GetKeycode(KeyNames.KEY_RIGHT); } else if (t.value == "UB") { currentCommandElement.keyCode += CommandHelper.GetKeycode(KeyNames.KEY_UP) + CommandHelper.GetKeycode(KeyNames.KEY_LEFT); } else if (t.value == "UF") { currentCommandElement.keyCode += CommandHelper.GetKeycode(KeyNames.KEY_UP) + CommandHelper.GetKeycode(KeyNames.KEY_RIGHT); } else if (t.value == "a") { currentCommandElement.keyCode += CommandHelper.GetKeycode(KeyNames.KEY_BUTTON_A); } else if (t.value == "b") { currentCommandElement.keyCode += CommandHelper.GetKeycode(KeyNames.KEY_BUTTON_B); } else if (t.value == "c") { currentCommandElement.keyCode += CommandHelper.GetKeycode(KeyNames.KEY_BUTTON_C); } else if (t.value == "x") { currentCommandElement.keyCode += CommandHelper.GetKeycode(KeyNames.KEY_BUTTON_X); } else if (t.value == "y") { currentCommandElement.keyCode += CommandHelper.GetKeycode(KeyNames.KEY_BUTTON_Y); } else if (t.value == "z") { currentCommandElement.keyCode += CommandHelper.GetKeycode(KeyNames.KEY_BUTTON_Z); } else if (t.value == "$") { currentCommandElement.keyModifier += 1 << (int)KeyModifier.KeyMode_Detect_As_4Way; } else if (t.value == "/") { currentCommandElement.keyModifier += 1 << (int)KeyModifier.KeyMode_Must_Be_Held; } else if (t.value == "~") { currentCommandElement.keyModifier += 1 << (int)KeyModifier.KeyMode_On_Release; } }//while command.mCommand.Add(currentCommandElement);//加入最后一个 return(command); }