tidy up code

This commit is contained in:
dborth 2009-10-15 07:43:25 +00:00
parent 58d3adde97
commit 04df044637
5 changed files with 50 additions and 92 deletions

View File

@ -196,11 +196,19 @@ class GuiTrigger
//!\param wiibtns Wii controller trigger button(s) - classic controller buttons are considered separately
//!\param gcbtns GameCube controller trigger button(s)
void SetButtonOnlyInFocusTrigger(s32 ch, u32 wiibtns, u16 gcbtns);
//!Get X/Y value from Wii Joystick (classic, nunchuk) input
//!\param right Controller stick (left = 0, right = 1)
//!Get X or Y value from Wii Joystick (classic, nunchuk) input
//!\param stick Controller stick (left = 0, right = 1)
//!\param axis Controller stick axis (x-axis = 0, y-axis = 1)
//!\return Stick value
s8 WPAD_Stick(u8 right, int axis);
s8 WPAD_Stick(u8 stick, int axis);
//!Get X value from Wii Joystick (classic, nunchuk) input
//!\param stick Controller stick (left = 0, right = 1)
//!\return Stick value
s8 WPAD_StickX(u8 stick);
//!Get Y value from Wii Joystick (classic, nunchuk) input
//!\param stick Controller stick (left = 0, right = 1)
//!\return Stick value
s8 WPAD_StickY(u8 stick);
//!Move menu selection left (via pad/joystick). Allows scroll delay and button overriding
//!\return true if selection should be moved left, false otherwise
bool Left();

View File

@ -87,7 +87,7 @@ void GuiTrigger::SetButtonOnlyInFocusTrigger(s32 ch, u32 wiibtns, u16 gcbtns)
* Get X/Y value from Wii Joystick (classic, nunchuk) input
***************************************************************************/
s8 GuiTrigger::WPAD_Stick(u8 right, int axis)
s8 GuiTrigger::WPAD_Stick(u8 stick, int axis)
{
#ifdef HW_RVL
@ -98,7 +98,7 @@ s8 GuiTrigger::WPAD_Stick(u8 right, int axis)
{
case WPAD_EXP_NUNCHUK:
case WPAD_EXP_GUITARHERO3:
if (right == 0)
if (stick == 0)
{
mag = wpad->exp.nunchuk.js.mag;
ang = wpad->exp.nunchuk.js.ang;
@ -106,7 +106,7 @@ s8 GuiTrigger::WPAD_Stick(u8 right, int axis)
break;
case WPAD_EXP_CLASSIC:
if (right == 0)
if (stick == 0)
{
mag = wpad->exp.classic.ljs.mag;
ang = wpad->exp.classic.ljs.ang;
@ -139,6 +139,16 @@ s8 GuiTrigger::WPAD_Stick(u8 right, int axis)
#endif
}
s8 GuiTrigger::WPAD_StickX(u8 stick)
{
return WPAD_Stick(stick, 0);
}
s8 GuiTrigger::WPAD_StickY(u8 stick)
{
return WPAD_Stick(stick, 1);
}
bool GuiTrigger::Left()
{
u32 wiibtn = GCSettings.WiimoteOrientation ? WPAD_BUTTON_UP : WPAD_BUTTON_LEFT;

View File

@ -37,10 +37,10 @@ GuiTrigger userInput[4];
static int rumbleCount[4] = {0,0,0,0};
#endif
bool cartridgeRumble = false, possibleCartridgeRumble = false;
int gameRumbleCount = 0, menuRumbleCount = 0, rumbleCountAlready = 0;
static bool cartridgeRumble = false, possibleCartridgeRumble = false;
static int gameRumbleCount = 0, menuRumbleCount = 0, rumbleCountAlready = 0;
unsigned int vbapadmap[10]; // VBA controller buttons
static unsigned int vbapadmap[10]; // VBA controller buttons
u32 btnmap[5][10]; // button mapping
void ResetControls(int wiiCtrl)
@ -299,71 +299,14 @@ void systemGameRumbleOnlyFor(int OnlyRumbleForFrames) {
gameRumbleCount = OnlyRumbleForFrames;
}
void systemMenuRumble(int RumbleForFrames) {
if (RumbleForFrames > menuRumbleCount) menuRumbleCount = RumbleForFrames;
}
/****************************************************************************
* WPAD_Stick
*
* Get X/Y value from Wii Joystick (classic, nunchuk) input
***************************************************************************/
s8 WPAD_Stick(u8 chan, u8 right, int axis)
{
float mag = 0.0;
float ang = 0.0;
WPADData *data = WPAD_Data(chan);
switch (data->exp.type)
{
case WPAD_EXP_NUNCHUK:
case WPAD_EXP_GUITARHERO3:
if (right == 0)
{
mag = data->exp.nunchuk.js.mag;
ang = data->exp.nunchuk.js.ang;
}
break;
case WPAD_EXP_CLASSIC:
if (right == 0)
{
mag = data->exp.classic.ljs.mag;
ang = data->exp.classic.ljs.ang;
}
else
{
mag = data->exp.classic.rjs.mag;
ang = data->exp.classic.rjs.ang;
}
break;
default:
break;
}
/* calculate x/y value (angle need to be converted into radian) */
if (mag > 1.0) mag = 1.0;
else if (mag < -1.0) mag = -1.0;
double val;
if(axis == 0) // x-axis
val = mag * sin((PI * ang)/180.0f);
else // y-axis
val = mag * cos((PI * ang)/180.0f);
return (s8)(val * 128.0f);
}
u32 StandardMovement(unsigned short pad)
u32 StandardMovement(unsigned short chan)
{
u32 J = 0;
signed char pad_x = PAD_StickX (pad);
signed char pad_y = PAD_StickY (pad);
s8 pad_x = userInput[chan].pad.stickX;
s8 pad_y = userInput[chan].pad.stickY;
#ifdef HW_RVL
signed char wm_ax = WPAD_Stick ((u8)pad, 0, 0);
signed char wm_ay = WPAD_Stick ((u8)pad, 0, 1);
s8 wm_ax = userInput[0].WPAD_StickX(0);
s8 wm_ay = userInput[0].WPAD_StickY(0);
#endif
/***
Gamecube Joystick input, same as normal
@ -714,10 +657,10 @@ u32 DecodeNunchuk(unsigned short pad)
{
u32 J = 0;
#ifdef HW_RVL
WPADData * wp = WPAD_Data(pad);
for (int i = 0; i < MAXJP; i++)
{
if ( (wp->exp.type == WPAD_EXP_NUNCHUK) && (wp->btns_h & btnmap[CTRLR_NUNCHUK][i]) )
if ( (userInput[pad].wpad->exp.type == WPAD_EXP_NUNCHUK) &&
(userInput[pad].wpad->btns_h & btnmap[CTRLR_NUNCHUK][i]) )
J |= vbapadmap[i];
}
#endif
@ -749,9 +692,8 @@ u32 PAD_ButtonsHeldFake(unsigned short pad)
{
u32 gc = 0;
#ifdef HW_RVL
WPADData * wp = WPAD_Data(pad);
if (wp->exp.type == WPAD_EXP_CLASSIC) {
gc = CCToGC(wp->btns_h);
if (userInput[pad].wpad->exp.type == WPAD_EXP_CLASSIC) {
gc = CCToGC(userInput[pad].wpad->btns_h);
}
#endif
return gc;
@ -760,9 +702,8 @@ u32 PAD_ButtonsDownFake(unsigned short pad)
{
u32 gc = 0;
#ifdef HW_RVL
WPADData * wp = WPAD_Data(pad);
if (wp->exp.type == WPAD_EXP_CLASSIC) {
gc = CCToGC(wp->btns_d);
if (userInput[pad].wpad->exp.type == WPAD_EXP_CLASSIC) {
gc = CCToGC(userInput[pad].wpad->btns_d);
}
#endif
return gc;
@ -771,9 +712,8 @@ u32 PAD_ButtonsUpFake(unsigned short pad)
{
u32 gc = 0;
#ifdef HW_RVL
WPADData * wp = WPAD_Data(pad);
if (wp->exp.type == WPAD_EXP_CLASSIC) {
gc = CCToGC(wp->btns_u);
if (userInput[pad].wpad->exp.type == WPAD_EXP_CLASSIC) {
gc = CCToGC(userInput[pad].wpad->btns_u);
}
#endif
return gc;

View File

@ -40,7 +40,6 @@ void DoRumble(int i);
void systemGameRumble(int RumbleForFrames);
void systemGameRumbleOnlyFor(int OnlyRumbleForFrames);
void updateRumbleFrame();
s8 WPAD_Stick(u8 chan,u8 right, int axis);
u32 GetJoy(int which);
bool MenuRequested();
void SetupPads();

View File

@ -23,6 +23,7 @@
#include "audio.h"
#include "video.h"
#include "input.h"
#include "gui/gui.h"
#include "gameinput.h"
#include "vbasupport.h"
#include "wiiusbsupport.h"
@ -287,8 +288,8 @@ u32 LinksAwakeningInput(unsigned short pad) // aka Zelda DX
// but with R as the B button like in Twilight Princess
} else if (wp->exp.type == WPAD_EXP_CLASSIC) {
J |= StandardDPad(pad);
signed char wm_sx = WPAD_Stick(pad,1,0); // CC right joystick
signed char wm_sy = WPAD_Stick(pad,1,1); // CC right joystick
s8 wm_sx = userInput[pad].WPAD_StickX(1); // CC right joystick
s8 wm_sy = userInput[pad].WPAD_StickY(1); // CC right joystick
static bool StickReady = true;
ActionButton = wp->btns_h & WPAD_CLASSIC_BUTTON_A;
SwordButton = wp->btns_h & WPAD_CLASSIC_BUTTON_B;
@ -313,7 +314,7 @@ u32 LinksAwakeningInput(unsigned short pad) // aka Zelda DX
// Gamecube controls are based on Twilight Princess for the Gamecube
{
u32 gc = PAD_ButtonsHeld(pad);
signed char gc_px = PAD_SubStickX(pad);
s8 gc_px = PAD_SubStickX(pad);
if (gc_px > 70) J |= VBA_SPEED;
ActionButton = ActionButton || gc & PAD_BUTTON_A;
PullButton = PullButton || gc & PAD_TRIGGER_R;
@ -619,8 +620,8 @@ static u32 ZeldaOracleInput(bool Seasons, unsigned short pad) {
// but with R as the B button like in Twilight Princess
} else if (wp->exp.type == WPAD_EXP_CLASSIC) {
J |= StandardDPad(pad);
signed char wm_sx = WPAD_Stick(pad,1,0); // CC right joystick
signed char wm_sy = WPAD_Stick(pad,1,1); // CC right joystick
s8 wm_sx = userInput[pad].WPAD_StickX(1); // CC right joystick
s8 wm_sy = userInput[pad].WPAD_StickY(1); // CC right joystick
static bool StickReady = true;
ActionButton = wp->btns_h & WPAD_CLASSIC_BUTTON_A;
SwordButton = wp->btns_h & WPAD_CLASSIC_BUTTON_B;
@ -645,7 +646,7 @@ static u32 ZeldaOracleInput(bool Seasons, unsigned short pad) {
{
u32 gc = PAD_ButtonsHeld(pad);
u32 pressed = PAD_ButtonsDown(pad);
signed char gc_px = PAD_SubStickX(pad);
s8 gc_px = PAD_SubStickX(pad);
if (gc_px > 70) J |= VBA_SPEED;
ActionButton = ActionButton || gc & PAD_BUTTON_A;
PullButton = PullButton || gc & PAD_TRIGGER_R;
@ -1214,8 +1215,8 @@ u32 MinishCapInput(unsigned short pad)
// but with R as the B button like in Twilight Princess
} else if (wp->exp.type == WPAD_EXP_CLASSIC) {
J |= StandardDPad(pad);
signed char wm_sx = WPAD_Stick(pad,1,0); // CC right joystick
signed char wm_sy = WPAD_Stick(pad,1,1); // CC right joystick
s8 wm_sx = userInput[pad].WPAD_StickX(1); // CC right joystick
s8 wm_sy = userInput[pad].WPAD_StickY(1); // CC right joystick
static bool StickReady = true;
ActionButton = wp->btns_h & WPAD_CLASSIC_BUTTON_A;
SwordButton = wp->btns_h & WPAD_CLASSIC_BUTTON_B;
@ -1241,7 +1242,7 @@ u32 MinishCapInput(unsigned short pad)
{
u32 gc = PAD_ButtonsHeld(pad);
u32 pressed = PAD_ButtonsDown(pad);
signed char gc_px = PAD_SubStickX(pad);
s8 gc_px = PAD_SubStickX(pad);
if (gc_px > 70) J |= VBA_SPEED;
ActionButton = ActionButton || gc & PAD_BUTTON_A;
PullButton = PullButton || gc & PAD_TRIGGER_R;