// Input Button private static EventCondition <GameEntityModel> .EvaluationDelegate BuildInputButton(Storage.GenericParameter parameter, out int keyFrame, Storage.CharacterAnimation animation) { keyFrame = InvalidKeyframe; // Read button, state, negation uint buttonId = (uint)parameter.SafeInt(1); ButtonState buttonState = (ButtonState)parameter.SafeInt(2); bool positiveCheck = !parameter.SafeBool(0); // Return delegate return(delegate(GameEntityModel mainModel, List <GameEntityModel>[] subjectModels){ PlayerInputModel inputModel = StateManager.state.GetModel(mainModel.inputModelId) as PlayerInputModel; if (inputModel == null) { return false; } PlayerInputController inputController = inputModel.Controller() as PlayerInputController; if (inputController == null) { return false; } bool verifies = false; // verify model's button state switch (buttonState) { case ButtonState.hold: verifies = inputController.IsButtonHold(inputModel, buttonId); break; case ButtonState.press: verifies = inputController.IsButtonPressed(inputModel, buttonId); break; case ButtonState.release: verifies = inputController.IsButtonReleased(inputModel, buttonId); break; } return verifies == positiveCheck; }); }
private static EventAction <GameEntityModel> .ExecutionDelegate BuildConsumeInput(Storage.GenericParameter parameter) { uint buttonId = (uint)parameter.SafeInt(1); bool consumeRelease = parameter.SafeBool(0); return(delegate(GameEntityModel mainModel, List <GameEntityModel>[] subjectModels){ PlayerInputModel inputModel = StateManager.state.GetModel(mainModel.inputModelId) as PlayerInputModel; if (inputModel == null) { return; } PlayerInputController inputController = inputModel.Controller() as PlayerInputController; if (inputController == null) { return; } if (consumeRelease) { inputController.ConsumeRelease(inputModel, buttonId); } else { inputController.ConsumePress(inputModel, buttonId); } }); }