/** * This file is part of WiiuseJ. * * WiiuseJ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * WiiuseJ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with WiiuseJ. If not, see . */ package wiiusej.wiiuseapievents; /** * Class which represents a buttons event. * @author guiguito */ public class ButtonsEvent extends WiimoteEvent{ /* Buttons MACRO */ private static short WIIMOTE_BUTTON_TWO = 0x0001; private static short WIIMOTE_BUTTON_ONE = 0x0002; private static short WIIMOTE_BUTTON_B = 0x0004; private static short WIIMOTE_BUTTON_A = 0x0008; private static short WIIMOTE_BUTTON_MINUS = 0x0010; private static short WIIMOTE_BUTTON_ZACCEL_BIT6 = 0x0020; private static short WIIMOTE_BUTTON_ZACCEL_BIT7 = 0x0040; private static short WIIMOTE_BUTTON_HOME = 0x0080; private static short WIIMOTE_BUTTON_LEFT = 0x0100; private static short WIIMOTE_BUTTON_RIGHT = 0x0200; private static short WIIMOTE_BUTTON_DOWN = 0x0400; private static short WIIMOTE_BUTTON_UP = 0x0800; private static short WIIMOTE_BUTTON_PLUS = 0x1000; private static short WIIMOTE_BUTTON_ZACCEL_BIT4 = 0x2000; private static short WIIMOTE_BUTTON_ZACCEL_BIT5 = 0x4000; private static int WIIMOTE_BUTTON_UNKNOWN = 0x8000; private static short WIIMOTE_BUTTON_ALL = 0x1F9F; /* Buttons */ private short buttonsJustPressed = 0; private short buttonsJustReleased = 0; private short buttonsHeld = 0; /** * Constructor of the button Event. * @param id id of the wiimote concerned. * @param buttonsJustPressed buttons just pressed. * @param buttonsJustReleased buttons just released. * @param buttonsHeld buttons just held. */ public ButtonsEvent(int id, short buttonsJustPressed, short buttonsJustReleased, short buttonsHeld){ super(id); setAllButtons(buttonsJustPressed, buttonsJustReleased, buttonsHeld); } /** * Set all buttons in one method. * * @param buttonsJustPressed * @param buttonsJustReleased * @param buttonsHeld */ private void setAllButtons(short buttonsJustPressed, short buttonsJustReleased, short buttonsHeld) { this.buttonsJustPressed = buttonsJustPressed; this.buttonsJustReleased = buttonsJustReleased; this.buttonsHeld = buttonsHeld; } /** * Get the short storing the buttons just pressed * * @return the short storing the buttons just pressed */ public short getButtonsJustPressed() { return buttonsJustPressed; } /** * Get the short storing the buttons just released * * @return the short storing the buttons just released */ public short getButtonsJustReleased() { return buttonsJustReleased; } /** * get the short storing the buttons held * * @return the short storing the buttons held */ public short getButtonsHeld() { return buttonsHeld; } /** **************** BUTTONS Methods ***************** */ /* generic button functions */ private boolean buttonTest(short buttonBitsDefinition, short buttons) { return (buttons & buttonBitsDefinition) == buttonBitsDefinition; } private boolean isButtonJustPressed(short buttonBitsDefinition) { return buttonTest(buttonBitsDefinition, buttonsJustPressed) && !isButtonHeld(buttonBitsDefinition); } private boolean isButtonJustReleased(short buttonBitsDefinition) { return buttonTest(buttonBitsDefinition, buttonsJustReleased); } private boolean isButtonHeld(short buttonBitsDefinition) { return buttonTest(buttonBitsDefinition, buttonsHeld); } private boolean isButtonPressed(short buttonBitsDefinition) { return isButtonHeld(buttonBitsDefinition)||isButtonJustPressed(buttonBitsDefinition); } /* Button ONE */ public boolean isButtonOneJustPressed() { return isButtonJustPressed(WIIMOTE_BUTTON_ONE); } public boolean isButtonOneJustReleased() { return isButtonJustReleased(WIIMOTE_BUTTON_ONE); } public boolean isButtonOneHeld() { return isButtonHeld(WIIMOTE_BUTTON_ONE); } public boolean isButtonOnePressed() { return isButtonPressed(WIIMOTE_BUTTON_ONE); } /* Button TWO */ public boolean isButtonTwoJustPressed() { return isButtonJustPressed(WIIMOTE_BUTTON_TWO); } public boolean isButtonTwoJustReleased() { return isButtonJustReleased(WIIMOTE_BUTTON_TWO); } public boolean isButtonTwoHeld() { return isButtonHeld(WIIMOTE_BUTTON_TWO); } public boolean isButtonTwoPressed() { return isButtonPressed(WIIMOTE_BUTTON_TWO); } /* Button A */ public boolean isButtonAJustPressed() { return isButtonJustPressed(WIIMOTE_BUTTON_A); } public boolean isButtonAJustReleased() { return isButtonJustReleased(WIIMOTE_BUTTON_A); } public boolean isButtonAHeld() { return isButtonHeld(WIIMOTE_BUTTON_A); } public boolean isButtonAPressed() { return isButtonPressed(WIIMOTE_BUTTON_A); } /* Button B */ public boolean isButtonBJustPressed() { return isButtonJustPressed(WIIMOTE_BUTTON_B); } public boolean isButtonBJustReleased() { return isButtonJustReleased(WIIMOTE_BUTTON_B); } public boolean isButtonBHeld() { return isButtonHeld(WIIMOTE_BUTTON_B); } public boolean isButtonBPressed() { return isButtonPressed(WIIMOTE_BUTTON_B); } /* Button LEFT */ public boolean isButtonLeftJustPressed() { return isButtonJustPressed(WIIMOTE_BUTTON_LEFT); } public boolean isButtonLeftJustReleased() { return isButtonJustReleased(WIIMOTE_BUTTON_LEFT); } public boolean isButtonLeftHeld() { return isButtonHeld(WIIMOTE_BUTTON_LEFT); } public boolean isButtonLeftPressed() { return isButtonPressed(WIIMOTE_BUTTON_LEFT); } /* Button RIGHT */ public boolean isButtonRightJustPressed() { return isButtonJustPressed(WIIMOTE_BUTTON_RIGHT); } public boolean isButtonRightJustReleased() { return isButtonJustReleased(WIIMOTE_BUTTON_RIGHT); } public boolean isButtonRightHeld() { return isButtonHeld(WIIMOTE_BUTTON_RIGHT); } public boolean isButtonRightPressed() { return isButtonPressed(WIIMOTE_BUTTON_RIGHT); } /* Button UP */ public boolean isButtonUpJustPressed() { return isButtonJustPressed(WIIMOTE_BUTTON_UP); } public boolean isButtonUpJustReleased() { return isButtonJustReleased(WIIMOTE_BUTTON_UP); } public boolean isButtonUpHeld() { return isButtonHeld(WIIMOTE_BUTTON_UP); } public boolean isButtonUpPressed() { return isButtonPressed(WIIMOTE_BUTTON_UP); } /* Button DOWN */ public boolean isButtonDownJustPressed() { return isButtonJustPressed(WIIMOTE_BUTTON_DOWN); } public boolean isButtonDownJustReleased() { return isButtonJustReleased(WIIMOTE_BUTTON_DOWN); } public boolean isButtonDownHeld() { return isButtonHeld(WIIMOTE_BUTTON_DOWN); } public boolean isButtonDownPressed() { return isButtonPressed(WIIMOTE_BUTTON_DOWN); } /* Button - */ public boolean isButtonMinusJustPressed() { return isButtonJustPressed(WIIMOTE_BUTTON_MINUS); } public boolean isButtonMinusJustReleased() { return isButtonJustReleased(WIIMOTE_BUTTON_MINUS); } public boolean isButtonMinusHeld() { return isButtonHeld(WIIMOTE_BUTTON_MINUS); } public boolean isButtonMinusPressed() { return isButtonPressed(WIIMOTE_BUTTON_MINUS); } /* Button + */ public boolean isButtonPlusJustPressed() { return isButtonJustPressed(WIIMOTE_BUTTON_PLUS); } public boolean isButtonPlusJustReleased() { return isButtonJustReleased(WIIMOTE_BUTTON_PLUS); } public boolean isButtonPlusHeld() { return isButtonHeld(WIIMOTE_BUTTON_PLUS); } public boolean isButtonPlusPressed() { return isButtonPressed(WIIMOTE_BUTTON_PLUS); } /* Button HOME */ public boolean isButtonHomeJustPressed() { return isButtonJustPressed(WIIMOTE_BUTTON_HOME); } public boolean isButtonHomeJustReleased() { return isButtonJustReleased(WIIMOTE_BUTTON_HOME); } public boolean isButtonHomeHeld() { return isButtonHeld(WIIMOTE_BUTTON_HOME); } public boolean isButtonHomePressed() { return isButtonPressed(WIIMOTE_BUTTON_HOME); } @Override public String toString() { String out = ""; /* Display buttons */ out += "/******** Buttons ********/\n"; out += "--- Buttons just pressed : " + buttonsJustPressed + "\n"; out += "--- Buttons just released : " + buttonsJustReleased + "\n"; out += "--- Buttons held : " + buttonsHeld + "\n"; return out; } }