mirror of
https://github.com/halpz/re3.git
synced 2025-06-29 17:26:21 +00:00
rw skeleton
This commit is contained in:
845
src/skel/events.cpp
Normal file
845
src/skel/events.cpp
Normal file
@ -0,0 +1,845 @@
|
||||
#include "rwcore.h"
|
||||
#include "skeleton.h"
|
||||
#include "events.h"
|
||||
|
||||
//#include "main.h"
|
||||
|
||||
#include "common.h"
|
||||
#include "Pad.h"
|
||||
#include "ControllerConfig.h"
|
||||
#include "Frontend.h"
|
||||
#include "Camera.h"
|
||||
|
||||
|
||||
#include "patcher.h"
|
||||
|
||||
/*
|
||||
*****************************************************************************
|
||||
*/
|
||||
static RsEventStatus
|
||||
HandleKeyDown(RsKeyStatus *keyStatus)
|
||||
{
|
||||
CPad *pad0 = CPad::GetPad(0);
|
||||
CPad *pad1 = CPad::GetPad(1);
|
||||
|
||||
RwInt32 c = keyStatus->keyCharCode;
|
||||
|
||||
if ( c != rsNULL )
|
||||
{
|
||||
switch (c)
|
||||
{
|
||||
case rsESC:
|
||||
{
|
||||
CPad::TempKeyState.ESC = 255;
|
||||
break;
|
||||
}
|
||||
|
||||
case rsINS:
|
||||
{
|
||||
CPad::TempKeyState.INS = 255;
|
||||
break;
|
||||
}
|
||||
|
||||
case rsDEL:
|
||||
{
|
||||
CPad::TempKeyState.DEL = 255;
|
||||
break;
|
||||
}
|
||||
|
||||
case rsHOME:
|
||||
{
|
||||
CPad::TempKeyState.HOME = 255;
|
||||
break;
|
||||
}
|
||||
|
||||
case rsEND:
|
||||
{
|
||||
CPad::TempKeyState.END = 255;
|
||||
break;
|
||||
}
|
||||
|
||||
case rsPGUP:
|
||||
{
|
||||
CPad::TempKeyState.PGUP = 255;
|
||||
break;
|
||||
}
|
||||
|
||||
case rsPGDN:
|
||||
{
|
||||
CPad::TempKeyState.PGDN = 255;
|
||||
break;
|
||||
}
|
||||
|
||||
case rsUP:
|
||||
{
|
||||
CPad::TempKeyState.UP = 255;
|
||||
break;
|
||||
}
|
||||
|
||||
case rsDOWN:
|
||||
{
|
||||
CPad::TempKeyState.DOWN = 255;
|
||||
break;
|
||||
}
|
||||
|
||||
case rsLEFT:
|
||||
{
|
||||
CPad::TempKeyState.LEFT = 255;
|
||||
break;
|
||||
}
|
||||
|
||||
case rsRIGHT:
|
||||
{
|
||||
CPad::TempKeyState.RIGHT = 255;
|
||||
break;
|
||||
}
|
||||
|
||||
case rsNUMLOCK:
|
||||
{
|
||||
CPad::TempKeyState.NUMLOCK = 255;
|
||||
break;
|
||||
}
|
||||
|
||||
case rsPADDEL:
|
||||
{
|
||||
CPad::TempKeyState.DECIMAL = 255;
|
||||
break;
|
||||
}
|
||||
|
||||
case rsPADEND:
|
||||
{
|
||||
CPad::TempKeyState.NUM1 = 255;
|
||||
break;
|
||||
}
|
||||
|
||||
case rsPADDOWN:
|
||||
{
|
||||
CPad::TempKeyState.NUM2 = 255;
|
||||
break;
|
||||
}
|
||||
|
||||
case rsPADPGDN:
|
||||
{
|
||||
CPad::TempKeyState.NUM3 = 255;
|
||||
break;
|
||||
}
|
||||
|
||||
case rsPADLEFT:
|
||||
{
|
||||
CPad::TempKeyState.NUM4 = 255;
|
||||
break;
|
||||
}
|
||||
|
||||
case rsPAD5:
|
||||
{
|
||||
CPad::TempKeyState.NUM5 = 255;
|
||||
break;
|
||||
}
|
||||
|
||||
case rsPADRIGHT:
|
||||
{
|
||||
CPad::TempKeyState.NUM6 = 255;
|
||||
break;
|
||||
}
|
||||
|
||||
case rsPADHOME:
|
||||
{
|
||||
CPad::TempKeyState.NUM7 = 255;
|
||||
break;
|
||||
}
|
||||
|
||||
case rsPADUP:
|
||||
{
|
||||
CPad::TempKeyState.NUM8 = 255;
|
||||
break;
|
||||
}
|
||||
|
||||
case rsPADPGUP:
|
||||
{
|
||||
CPad::TempKeyState.NUM9 = 255;
|
||||
break;
|
||||
}
|
||||
|
||||
case rsPADINS:
|
||||
{
|
||||
CPad::TempKeyState.NUM0 = 255;
|
||||
break;
|
||||
}
|
||||
|
||||
case rsDIVIDE:
|
||||
{
|
||||
CPad::TempKeyState.DIV = 255;
|
||||
break;
|
||||
}
|
||||
|
||||
case rsTIMES:
|
||||
{
|
||||
CPad::TempKeyState.MUL = 255;
|
||||
break;
|
||||
}
|
||||
|
||||
case rsMINUS:
|
||||
{
|
||||
CPad::TempKeyState.SUB = 255;
|
||||
break;
|
||||
}
|
||||
|
||||
case rsPADENTER:
|
||||
{
|
||||
CPad::TempKeyState.ENTER = 255;
|
||||
break;
|
||||
}
|
||||
|
||||
case rsPLUS:
|
||||
{
|
||||
CPad::TempKeyState.ADD = 255;
|
||||
break;
|
||||
}
|
||||
|
||||
case rsENTER:
|
||||
{
|
||||
CPad::TempKeyState.EXTENTER = 255;
|
||||
break;
|
||||
}
|
||||
|
||||
case rsSCROLL:
|
||||
{
|
||||
CPad::TempKeyState.SCROLLLOCK = 255;
|
||||
break;
|
||||
}
|
||||
|
||||
case rsPAUSE:
|
||||
{
|
||||
CPad::TempKeyState.PAUSE = 255;
|
||||
break;
|
||||
}
|
||||
|
||||
case rsBACKSP:
|
||||
{
|
||||
CPad::TempKeyState.BACKSP = 255;
|
||||
break;
|
||||
}
|
||||
|
||||
case rsTAB:
|
||||
{
|
||||
CPad::TempKeyState.TAB = 255;
|
||||
break;
|
||||
}
|
||||
|
||||
case rsCAPSLK:
|
||||
{
|
||||
CPad::TempKeyState.CAPSLOCK = 255;
|
||||
break;
|
||||
}
|
||||
|
||||
case rsLSHIFT:
|
||||
{
|
||||
CPad::TempKeyState.LSHIFT = 255;
|
||||
break;
|
||||
}
|
||||
|
||||
case rsSHIFT:
|
||||
{
|
||||
CPad::TempKeyState.SHIFT = 255;
|
||||
break;
|
||||
}
|
||||
|
||||
case rsRSHIFT:
|
||||
{
|
||||
CPad::TempKeyState.RSHIFT = 255;
|
||||
break;
|
||||
}
|
||||
|
||||
case rsLCTRL:
|
||||
{
|
||||
CPad::TempKeyState.LCTRL = 255;
|
||||
break;
|
||||
}
|
||||
|
||||
case rsRCTRL:
|
||||
{
|
||||
CPad::TempKeyState.RCTRL = 255;
|
||||
break;
|
||||
}
|
||||
|
||||
case rsLALT:
|
||||
{
|
||||
CPad::TempKeyState.LALT = 255;
|
||||
break;
|
||||
}
|
||||
|
||||
case rsRALT:
|
||||
{
|
||||
CPad::TempKeyState.RALT = 255;
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
case rsLWIN:
|
||||
{
|
||||
CPad::TempKeyState.LWIN = 255;
|
||||
break;
|
||||
}
|
||||
|
||||
case rsRWIN:
|
||||
{
|
||||
CPad::TempKeyState.RWIN = 255;
|
||||
break;
|
||||
}
|
||||
|
||||
case rsAPPS:
|
||||
{
|
||||
CPad::TempKeyState.APPS = 255;
|
||||
break;
|
||||
}
|
||||
|
||||
case rsF1:
|
||||
case rsF2:
|
||||
case rsF3:
|
||||
case rsF4:
|
||||
case rsF5:
|
||||
case rsF6:
|
||||
case rsF7:
|
||||
case rsF8:
|
||||
case rsF9:
|
||||
case rsF10:
|
||||
case rsF11:
|
||||
case rsF12:
|
||||
{
|
||||
CPad::TempKeyState.F[c - rsF1] = 255;
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
{
|
||||
if ( c < 255 )
|
||||
{
|
||||
CPad::TempKeyState.VK_KEYS[c] = 255;
|
||||
pad0->AddToPCCheatString(c);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if ( CPad::m_bMapPadOneToPadTwo )
|
||||
{
|
||||
if ( c == 'D' ) pad1->PCTempKeyState.LeftStickX = 128;
|
||||
if ( c == 'A' ) pad1->PCTempKeyState.LeftStickX = -128;
|
||||
if ( c == 'W' ) pad1->PCTempKeyState.LeftStickY = 128;
|
||||
if ( c == 'S' ) pad1->PCTempKeyState.LeftStickY = -128;
|
||||
if ( c == 'J' ) pad1->PCTempKeyState.RightStickX = 128;
|
||||
if ( c == 'G' ) pad1->PCTempKeyState.RightStickX = -128;
|
||||
if ( c == 'Y' ) pad1->PCTempKeyState.RightStickY = 128;
|
||||
if ( c == 'H' ) pad1->PCTempKeyState.RightStickY = -128;
|
||||
if ( c == 'Z' ) pad1->PCTempKeyState.LeftShoulder1 = 255;
|
||||
if ( c == 'X' ) pad1->PCTempKeyState.LeftShoulder2 = 255;
|
||||
if ( c == 'C' ) pad1->PCTempKeyState.RightShoulder1 = 255;
|
||||
if ( c == 'V' ) pad1->PCTempKeyState.RightShoulder2 = 255;
|
||||
if ( c == 'O' ) pad1->PCTempKeyState.DPadUp = 255;
|
||||
if ( c == 'L' ) pad1->PCTempKeyState.DPadDown = 255;
|
||||
if ( c == 'K' ) pad1->PCTempKeyState.DPadLeft = 255;
|
||||
if ( c == ';' ) pad1->PCTempKeyState.DPadRight = 255;
|
||||
if ( c == 'B' ) pad1->PCTempKeyState.Start = 255;
|
||||
if ( c == 'N' ) pad1->PCTempKeyState.Select = 255;
|
||||
if ( c == 'M' ) pad1->PCTempKeyState.Square = 255;
|
||||
if ( c == ',' ) pad1->PCTempKeyState.Triangle = 255;
|
||||
if ( c == '.' ) pad1->PCTempKeyState.Cross = 255;
|
||||
if ( c == '/' ) pad1->PCTempKeyState.Circle = 255;
|
||||
if ( c == rsRSHIFT ) pad1->PCTempKeyState.LeftShock = 255;
|
||||
if ( c == rsRCTRL ) pad1->PCTempKeyState.RightShock = 255;
|
||||
}
|
||||
}
|
||||
|
||||
return rsEVENTPROCESSED;
|
||||
}
|
||||
|
||||
|
||||
static RsEventStatus
|
||||
HandleKeyUp(RsKeyStatus *keyStatus)
|
||||
{
|
||||
CPad *pad0 = CPad::GetPad(0);
|
||||
CPad *pad1 = CPad::GetPad(1);
|
||||
|
||||
RwInt32 c = keyStatus->keyCharCode;
|
||||
|
||||
if ( c != rsNULL )
|
||||
{
|
||||
switch (c)
|
||||
{
|
||||
case rsESC:
|
||||
{
|
||||
CPad::TempKeyState.ESC = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
case rsINS:
|
||||
{
|
||||
CPad::TempKeyState.INS = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
case rsDEL:
|
||||
{
|
||||
CPad::TempKeyState.DEL = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
case rsHOME:
|
||||
{
|
||||
CPad::TempKeyState.HOME = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
case rsEND:
|
||||
{
|
||||
CPad::TempKeyState.END = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
case rsPGUP:
|
||||
{
|
||||
CPad::TempKeyState.PGUP = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
case rsPGDN:
|
||||
{
|
||||
CPad::TempKeyState.PGDN = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
case rsUP:
|
||||
{
|
||||
CPad::TempKeyState.UP = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
case rsDOWN:
|
||||
{
|
||||
CPad::TempKeyState.DOWN = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
case rsLEFT:
|
||||
{
|
||||
CPad::TempKeyState.LEFT = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
case rsRIGHT:
|
||||
{
|
||||
CPad::TempKeyState.RIGHT = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
case rsNUMLOCK:
|
||||
{
|
||||
CPad::TempKeyState.NUMLOCK = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
case rsPADDEL:
|
||||
{
|
||||
CPad::TempKeyState.DECIMAL = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
case rsPADEND:
|
||||
{
|
||||
CPad::TempKeyState.NUM1 = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
case rsPADDOWN:
|
||||
{
|
||||
CPad::TempKeyState.NUM2 = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
case rsPADPGDN:
|
||||
{
|
||||
CPad::TempKeyState.NUM3 = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
case rsPADLEFT:
|
||||
{
|
||||
CPad::TempKeyState.NUM4 = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
case rsPAD5:
|
||||
{
|
||||
CPad::TempKeyState.NUM5 = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
case rsPADRIGHT:
|
||||
{
|
||||
CPad::TempKeyState.NUM6 = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
case rsPADHOME:
|
||||
{
|
||||
CPad::TempKeyState.NUM7 = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
case rsPADUP:
|
||||
{
|
||||
CPad::TempKeyState.NUM8 = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
case rsPADPGUP:
|
||||
{
|
||||
CPad::TempKeyState.NUM9 = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
case rsPADINS:
|
||||
{
|
||||
CPad::TempKeyState.NUM0 = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
case rsDIVIDE:
|
||||
{
|
||||
CPad::TempKeyState.DIV = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
case rsTIMES:
|
||||
{
|
||||
CPad::TempKeyState.MUL = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
case rsMINUS:
|
||||
{
|
||||
CPad::TempKeyState.SUB = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
case rsPADENTER:
|
||||
{
|
||||
CPad::TempKeyState.ENTER = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
case rsPLUS:
|
||||
{
|
||||
CPad::TempKeyState.ADD = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
case rsENTER:
|
||||
{
|
||||
CPad::TempKeyState.EXTENTER = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
case rsSCROLL:
|
||||
{
|
||||
CPad::TempKeyState.SCROLLLOCK = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
case rsPAUSE:
|
||||
{
|
||||
CPad::TempKeyState.PAUSE = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
case rsBACKSP:
|
||||
{
|
||||
CPad::TempKeyState.BACKSP = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
case rsTAB:
|
||||
{
|
||||
CPad::TempKeyState.TAB = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
case rsCAPSLK:
|
||||
{
|
||||
CPad::TempKeyState.CAPSLOCK = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
case rsLSHIFT:
|
||||
{
|
||||
CPad::TempKeyState.LSHIFT = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
case rsSHIFT:
|
||||
{
|
||||
CPad::TempKeyState.SHIFT = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
case rsRSHIFT:
|
||||
{
|
||||
CPad::TempKeyState.RSHIFT = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
case rsLCTRL:
|
||||
{
|
||||
CPad::TempKeyState.LCTRL = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
case rsRCTRL:
|
||||
{
|
||||
CPad::TempKeyState.RCTRL = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
case rsLALT:
|
||||
{
|
||||
CPad::TempKeyState.LALT = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
case rsRALT:
|
||||
{
|
||||
CPad::TempKeyState.RALT = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
case rsLWIN:
|
||||
{
|
||||
CPad::TempKeyState.LWIN = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
case rsRWIN:
|
||||
{
|
||||
CPad::TempKeyState.RWIN = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
case rsAPPS:
|
||||
{
|
||||
CPad::TempKeyState.APPS = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
case rsF1:
|
||||
case rsF2:
|
||||
case rsF3:
|
||||
case rsF4:
|
||||
case rsF5:
|
||||
case rsF6:
|
||||
case rsF7:
|
||||
case rsF8:
|
||||
case rsF9:
|
||||
case rsF10:
|
||||
case rsF11:
|
||||
case rsF12:
|
||||
{
|
||||
CPad::TempKeyState.F[c - rsF1] = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
{
|
||||
if ( c < 255 )
|
||||
{
|
||||
CPad::TempKeyState.VK_KEYS[c] = 0;
|
||||
pad0->AddToPCCheatString(c);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if ( CPad::m_bMapPadOneToPadTwo )
|
||||
{
|
||||
if ( c == 'D' ) pad1->PCTempKeyState.LeftStickX = 0;
|
||||
if ( c == 'A' ) pad1->PCTempKeyState.LeftStickX = 0;
|
||||
if ( c == 'W' ) pad1->PCTempKeyState.LeftStickY = 0;
|
||||
if ( c == 'S' ) pad1->PCTempKeyState.LeftStickY = 0;
|
||||
if ( c == 'J' ) pad1->PCTempKeyState.RightStickX = 0;
|
||||
if ( c == 'G' ) pad1->PCTempKeyState.RightStickX = 0;
|
||||
if ( c == 'Y' ) pad1->PCTempKeyState.RightStickY = 0;
|
||||
if ( c == 'H' ) pad1->PCTempKeyState.RightStickY = 0;
|
||||
if ( c == 'Z' ) pad1->PCTempKeyState.LeftShoulder1 = 0;
|
||||
if ( c == 'X' ) pad1->PCTempKeyState.LeftShoulder2 = 0;
|
||||
if ( c == 'C' ) pad1->PCTempKeyState.RightShoulder1 = 0;
|
||||
if ( c == 'V' ) pad1->PCTempKeyState.RightShoulder2 = 0;
|
||||
if ( c == 'O' ) pad1->PCTempKeyState.DPadUp = 0;
|
||||
if ( c == 'L' ) pad1->PCTempKeyState.DPadDown = 0;
|
||||
if ( c == 'K' ) pad1->PCTempKeyState.DPadLeft = 0;
|
||||
if ( c == ';' ) pad1->PCTempKeyState.DPadRight = 0;
|
||||
if ( c == 'B' ) pad1->PCTempKeyState.Start = 0;
|
||||
if ( c == 'N' ) pad1->PCTempKeyState.Select = 0;
|
||||
if ( c == 'M' ) pad1->PCTempKeyState.Square = 0;
|
||||
if ( c == ',' ) pad1->PCTempKeyState.Triangle = 0;
|
||||
if ( c == '.' ) pad1->PCTempKeyState.Cross = 0;
|
||||
if ( c == '/' ) pad1->PCTempKeyState.Circle = 0;
|
||||
if ( c == rsRSHIFT ) pad1->PCTempKeyState.LeftShock = 0;
|
||||
if ( c == rsRCTRL ) pad1->PCTempKeyState.RightShock = 0;
|
||||
}
|
||||
}
|
||||
|
||||
return rsEVENTPROCESSED;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
*****************************************************************************
|
||||
*/
|
||||
static RsEventStatus
|
||||
KeyboardHandler(RsEvent event, void *param)
|
||||
{
|
||||
/*
|
||||
* ...then the application events, if necessary...
|
||||
*/
|
||||
switch( event )
|
||||
{
|
||||
case rsKEYDOWN:
|
||||
{
|
||||
return HandleKeyDown((RsKeyStatus *)param);
|
||||
}
|
||||
|
||||
case rsKEYUP:
|
||||
{
|
||||
return HandleKeyUp((RsKeyStatus *)param);
|
||||
}
|
||||
|
||||
default:
|
||||
{
|
||||
return rsEVENTNOTPROCESSED;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
*****************************************************************************
|
||||
*/
|
||||
static RsEventStatus
|
||||
HandlePadButtonDown(RsPadButtonStatus *padButtonStatus)
|
||||
{
|
||||
Bool bPadTwo = false;
|
||||
Int32 padNumber = padButtonStatus->padID;
|
||||
|
||||
CPad *pad = CPad::GetPad(padNumber);
|
||||
|
||||
if ( CPad::m_bMapPadOneToPadTwo )
|
||||
padNumber = 1;
|
||||
|
||||
if ( padNumber == 1 )
|
||||
bPadTwo = true;
|
||||
|
||||
ControlsManager.UpdateJoyButtonState(padNumber);
|
||||
|
||||
for ( Int32 i = 0; i < _TODOCONST(16); i++ )
|
||||
{
|
||||
RsPadButtons btn = rsPADNULL;
|
||||
if ( ControlsManager.m_aButtonStates[i] == TRUE )
|
||||
btn = (RsPadButtons)(i + 1);
|
||||
|
||||
if ( FrontEndMenuManager.m_bMenuActive || bPadTwo )
|
||||
ControlsManager.UpdateJoyInConfigMenus_ButtonDown(btn, padNumber);
|
||||
else
|
||||
ControlsManager.AffectControllerStateOn_ButtonDown(btn, JOYSTICK);
|
||||
}
|
||||
|
||||
return rsEVENTPROCESSED;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
*****************************************************************************
|
||||
*/
|
||||
static RsEventStatus
|
||||
HandlePadButtonUp(RsPadButtonStatus *padButtonStatus)
|
||||
{
|
||||
Bool bPadTwo = false;
|
||||
Int32 padNumber = padButtonStatus->padID;
|
||||
|
||||
CPad *pad = CPad::GetPad(padNumber);
|
||||
|
||||
if ( CPad::m_bMapPadOneToPadTwo )
|
||||
padNumber = 1;
|
||||
|
||||
if ( padNumber == 1 )
|
||||
bPadTwo = true;
|
||||
|
||||
Bool bCam = false;
|
||||
Int16 mode = TheCamera.Cams[TheCamera.ActiveCam].Mode;
|
||||
if ( mode == CCam::MODE_FLYBY || mode == CCam::MODE_FIXED )
|
||||
Bool bCam = true;
|
||||
|
||||
ControlsManager.UpdateJoyButtonState(padNumber);
|
||||
|
||||
for ( Int32 i = 1; i < _TODOCONST(16); i++ )
|
||||
{
|
||||
RsPadButtons btn = rsPADNULL;
|
||||
if ( ControlsManager.m_aButtonStates[i] == FALSE )
|
||||
btn = (RsPadButtons)(i + 1); // bug ?, cycle begins from 1(not zero), 1+1==2==rsPADBUTTON2, so we skip rsPADBUTTON1, right ?
|
||||
|
||||
if ( FrontEndMenuManager.m_bMenuActive || bPadTwo || bCam )
|
||||
ControlsManager.UpdateJoyInConfigMenus_ButtonUp(btn, padNumber);
|
||||
else
|
||||
ControlsManager.AffectControllerStateOn_ButtonUp(btn, JOYSTICK);
|
||||
}
|
||||
|
||||
return rsEVENTPROCESSED;
|
||||
}
|
||||
|
||||
/*
|
||||
*****************************************************************************
|
||||
*/
|
||||
static RsEventStatus
|
||||
PadHandler(RsEvent event, void *param)
|
||||
{
|
||||
switch( event )
|
||||
{
|
||||
case rsPADBUTTONDOWN:
|
||||
{
|
||||
return HandlePadButtonDown((RsPadButtonStatus *)param);
|
||||
}
|
||||
|
||||
case rsPADBUTTONUP:
|
||||
{
|
||||
return HandlePadButtonUp((RsPadButtonStatus *)param);
|
||||
}
|
||||
|
||||
default:
|
||||
{
|
||||
return rsEVENTNOTPROCESSED;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
*****************************************************************************
|
||||
*/
|
||||
RwBool
|
||||
AttachInputDevices(void)
|
||||
{
|
||||
RsInputDeviceAttach(rsKEYBOARD, KeyboardHandler);
|
||||
|
||||
RsInputDeviceAttach(rsPAD, PadHandler);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
STARTPATCHES
|
||||
InjectHook(0x583F10, HandleKeyDown, PATCH_JUMP);
|
||||
InjectHook(0x5842F0, HandleKeyUp, PATCH_JUMP);
|
||||
InjectHook(0x5846C0, KeyboardHandler, PATCH_JUMP);
|
||||
InjectHook(0x5846F0, HandlePadButtonDown, PATCH_JUMP);
|
||||
InjectHook(0x584770, HandlePadButtonUp, PATCH_JUMP);
|
||||
InjectHook(0x584830, PadHandler, PATCH_JUMP);
|
||||
InjectHook(0x584860, AttachInputDevices, PATCH_JUMP);
|
||||
ENDPATCHES
|
7
src/skel/events.h
Normal file
7
src/skel/events.h
Normal file
@ -0,0 +1,7 @@
|
||||
#ifndef EVENTS_H
|
||||
#define EVENTS_H
|
||||
|
||||
#include <rwcore.h>
|
||||
#include "skeleton.h"
|
||||
|
||||
#endif /* EVENTS_H */
|
36
src/skel/platform.h
Normal file
36
src/skel/platform.h
Normal file
@ -0,0 +1,36 @@
|
||||
#ifndef PLATFORM_H
|
||||
#define PLATFORM_H
|
||||
|
||||
#include "rwcore.h"
|
||||
#include "skeleton.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif /* __cplusplus */
|
||||
|
||||
extern RwUInt32 psTimer(void);
|
||||
|
||||
|
||||
extern RwBool psInitialise(void);
|
||||
extern void psTerminate(void);
|
||||
|
||||
extern void psCameraShowRaster(RwCamera *camera);
|
||||
extern RwBool psCameraBeginUpdate(RwCamera *camera);
|
||||
|
||||
extern void psMouseSetPos(RwV2d *pos);
|
||||
|
||||
extern RwBool psSelectDevice(RwBool useDefault);
|
||||
|
||||
/* install the platform specific file system */
|
||||
extern RwBool psInstallFileSystem(void);
|
||||
|
||||
|
||||
/* Handle native texture support */
|
||||
extern RwBool psNativeTextureSupport(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif /* __cplusplus */
|
||||
|
||||
#endif /* PLATFORM_H */
|
454
src/skel/skeleton.cpp
Normal file
454
src/skel/skeleton.cpp
Normal file
@ -0,0 +1,454 @@
|
||||
#include "common.h"
|
||||
#include "patcher.h"
|
||||
|
||||
#include <stdio.h>
|
||||
#include <math.h>
|
||||
#include <ctype.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "rwcore.h"
|
||||
|
||||
#include "skeleton.h"
|
||||
#include "platform.h"
|
||||
|
||||
|
||||
|
||||
static RwBool DefaultVideoMode = TRUE;
|
||||
|
||||
//RsGlobalType RsGlobal;
|
||||
RsGlobalType &RsGlobal = *(RsGlobalType*)0x8F4360;
|
||||
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
WRAPPER RwUInt32 psTimer(void) { EAXJMP(0x580CE0); }
|
||||
|
||||
WRAPPER RwBool psInitialise(void) { EAXJMP(0x581180); }
|
||||
WRAPPER void psTerminate(void) { EAXJMP(0x581460); }
|
||||
WRAPPER void psCameraShowRaster(RwCamera *camera) { EAXJMP(0x580CA0); }
|
||||
WRAPPER RwBool psCameraBeginUpdate(RwCamera *camera) { EAXJMP(0x580C70); }
|
||||
WRAPPER void psMouseSetPos(RwV2d *pos) { EAXJMP(0x580D20); }
|
||||
WRAPPER RwBool psSelectDevice(RwBool useDefault) { EAXJMP(0x581D80); }
|
||||
WRAPPER RwBool psInstallFileSystem(void) { EAXJMP(0x580E20); }
|
||||
WRAPPER RwBool psNativeTextureSupport(void) { EAXJMP(0x580E30); }
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
_TODO("psGetMemoryFunctions");
|
||||
RwMemoryFunctions*
|
||||
psGetMemoryFunctions(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
*****************************************************************************
|
||||
*/
|
||||
RwUInt32
|
||||
RsTimer(void)
|
||||
{
|
||||
return psTimer();
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
*****************************************************************************
|
||||
*/
|
||||
void
|
||||
RsCameraShowRaster(RwCamera * camera)
|
||||
{
|
||||
psCameraShowRaster(camera);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
*****************************************************************************
|
||||
*/
|
||||
RwBool
|
||||
RsCameraBeginUpdate(RwCamera * camera)
|
||||
{
|
||||
return psCameraBeginUpdate(camera);
|
||||
}
|
||||
|
||||
/*
|
||||
*****************************************************************************
|
||||
*/
|
||||
RwBool
|
||||
RsRegisterImageLoader(void)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/*
|
||||
*****************************************************************************
|
||||
*/
|
||||
static RwBool
|
||||
RsSetDebug(void)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/*
|
||||
*****************************************************************************
|
||||
*/
|
||||
void
|
||||
RsMouseSetPos(RwV2d * pos)
|
||||
{
|
||||
psMouseSetPos(pos);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
*****************************************************************************
|
||||
*/
|
||||
RwBool
|
||||
RsSelectDevice(void)
|
||||
{
|
||||
return psSelectDevice(DefaultVideoMode);
|
||||
}
|
||||
|
||||
/*
|
||||
*****************************************************************************
|
||||
*/
|
||||
RwBool
|
||||
RsInputDeviceAttach(RsInputDeviceType inputDevice,
|
||||
RsInputEventHandler inputEventHandler)
|
||||
{
|
||||
switch (inputDevice)
|
||||
{
|
||||
case rsKEYBOARD:
|
||||
{
|
||||
RsGlobal.keyboard.inputEventHandler = inputEventHandler;
|
||||
RsGlobal.keyboard.used = TRUE;
|
||||
break;
|
||||
}
|
||||
case rsMOUSE:
|
||||
{
|
||||
RsGlobal.mouse.inputEventHandler = inputEventHandler;
|
||||
RsGlobal.mouse.used = TRUE;
|
||||
break;
|
||||
}
|
||||
case rsPAD:
|
||||
{
|
||||
RsGlobal.pad.inputEventHandler = inputEventHandler;
|
||||
RsGlobal.pad.used = TRUE;
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
*****************************************************************************
|
||||
*/
|
||||
static RwBool
|
||||
rsCommandLine(RwChar *arg)
|
||||
{
|
||||
RsEventHandler(rsFILELOAD, arg);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
*****************************************************************************
|
||||
*/
|
||||
static RwBool
|
||||
rsPreInitCommandLine(RwChar *arg)
|
||||
{
|
||||
if( !strcmp(arg, RWSTRING("-vms")) )
|
||||
{
|
||||
DefaultVideoMode = FALSE;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/*
|
||||
*****************************************************************************
|
||||
*/
|
||||
RsEventStatus
|
||||
RsKeyboardEventHandler(RsEvent event, void *param)
|
||||
{
|
||||
if (RsGlobal.keyboard.used)
|
||||
{
|
||||
return RsGlobal.keyboard.inputEventHandler(event, param);
|
||||
}
|
||||
|
||||
return rsEVENTNOTPROCESSED;
|
||||
}
|
||||
|
||||
/*
|
||||
*****************************************************************************
|
||||
*/
|
||||
RsEventStatus
|
||||
RsPadEventHandler(RsEvent event, void *param)
|
||||
{
|
||||
if (RsGlobal.pad.used)
|
||||
{
|
||||
return RsGlobal.pad.inputEventHandler(event, param);
|
||||
}
|
||||
|
||||
return rsEVENTNOTPROCESSED;
|
||||
}
|
||||
|
||||
/*
|
||||
*****************************************************************************
|
||||
*/
|
||||
RsEventStatus
|
||||
RsEventHandler(RsEvent event, void *param)
|
||||
{
|
||||
RsEventStatus result;
|
||||
RsEventStatus es;
|
||||
|
||||
/*
|
||||
* Give the application an opportunity to override any events...
|
||||
*/
|
||||
es = AppEventHandler(event, param);
|
||||
|
||||
/*
|
||||
* We never allow the app to replace the quit behaviour,
|
||||
* only to intercept...
|
||||
*/
|
||||
if (event == rsQUITAPP)
|
||||
{
|
||||
/*
|
||||
* Set the flag which causes the event loop to exit...
|
||||
*/
|
||||
RsGlobal.quit = TRUE;
|
||||
}
|
||||
|
||||
if (es == rsEVENTNOTPROCESSED)
|
||||
{
|
||||
switch (event)
|
||||
{
|
||||
case rsSELECTDEVICE:
|
||||
result =
|
||||
(RsSelectDevice()? rsEVENTPROCESSED : rsEVENTERROR);
|
||||
break;
|
||||
|
||||
case rsCOMMANDLINE:
|
||||
result = (rsCommandLine((RwChar *) param) ?
|
||||
rsEVENTPROCESSED : rsEVENTERROR);
|
||||
break;
|
||||
case rsPREINITCOMMANDLINE:
|
||||
result = (rsPreInitCommandLine((RwChar *) param) ?
|
||||
rsEVENTPROCESSED : rsEVENTERROR);
|
||||
break;
|
||||
case rsINITDEBUG:
|
||||
result =
|
||||
(RsSetDebug()? rsEVENTPROCESSED : rsEVENTERROR);
|
||||
break;
|
||||
|
||||
case rsREGISTERIMAGELOADER:
|
||||
result = (RsRegisterImageLoader()?
|
||||
rsEVENTPROCESSED : rsEVENTERROR);
|
||||
break;
|
||||
|
||||
case rsRWTERMINATE:
|
||||
RsRwTerminate();
|
||||
result = (rsEVENTPROCESSED);
|
||||
break;
|
||||
|
||||
case rsRWINITIALISE:
|
||||
result = (RsRwInitialise(param) ?
|
||||
rsEVENTPROCESSED : rsEVENTERROR);
|
||||
break;
|
||||
|
||||
case rsTERMINATE:
|
||||
RsTerminate();
|
||||
result = (rsEVENTPROCESSED);
|
||||
break;
|
||||
|
||||
case rsINITIALISE:
|
||||
result =
|
||||
(RsInitialise()? rsEVENTPROCESSED : rsEVENTERROR);
|
||||
break;
|
||||
|
||||
default:
|
||||
result = (es);
|
||||
break;
|
||||
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
result = (es);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/*
|
||||
*****************************************************************************
|
||||
*/
|
||||
void
|
||||
RsRwTerminate(void)
|
||||
{
|
||||
/* Close RenderWare */
|
||||
|
||||
RwEngineStop();
|
||||
RwEngineClose();
|
||||
RwEngineTerm();
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
*****************************************************************************
|
||||
*/
|
||||
RwBool
|
||||
RsRwInitialise(void *displayID)
|
||||
{
|
||||
RwEngineOpenParams openParams;
|
||||
|
||||
/*
|
||||
* Start RenderWare...
|
||||
*/
|
||||
|
||||
if (!RwEngineInit(psGetMemoryFunctions(), 0, rsRESOURCESDEFAULTARENASIZE))
|
||||
{
|
||||
return (FALSE);
|
||||
}
|
||||
|
||||
/*
|
||||
* Install any platform specific file systems...
|
||||
*/
|
||||
psInstallFileSystem();
|
||||
|
||||
/*
|
||||
* Initialize debug message handling...
|
||||
*/
|
||||
RsEventHandler(rsINITDEBUG, NULL);
|
||||
|
||||
/*
|
||||
* Attach all plugins...
|
||||
*/
|
||||
if (RsEventHandler(rsPLUGINATTACH, NULL) == rsEVENTERROR)
|
||||
{
|
||||
return (FALSE);
|
||||
}
|
||||
|
||||
/*
|
||||
* Attach input devices...
|
||||
*/
|
||||
if (RsEventHandler(rsINPUTDEVICEATTACH, NULL) == rsEVENTERROR)
|
||||
{
|
||||
return (FALSE);
|
||||
}
|
||||
|
||||
openParams.displayID = displayID;
|
||||
|
||||
if (!RwEngineOpen(&openParams))
|
||||
{
|
||||
RwEngineTerm();
|
||||
return (FALSE);
|
||||
}
|
||||
|
||||
if (RsEventHandler(rsSELECTDEVICE, displayID) == rsEVENTERROR)
|
||||
{
|
||||
RwEngineClose();
|
||||
RwEngineTerm();
|
||||
return (FALSE);
|
||||
}
|
||||
|
||||
if (!RwEngineStart())
|
||||
{
|
||||
RwEngineClose();
|
||||
RwEngineTerm();
|
||||
return (FALSE);
|
||||
}
|
||||
|
||||
/*
|
||||
* Register loaders for an image with a particular file extension...
|
||||
*/
|
||||
RsEventHandler(rsREGISTERIMAGELOADER, NULL);
|
||||
|
||||
psNativeTextureSupport();
|
||||
|
||||
RwTextureSetMipmapping(FALSE);
|
||||
RwTextureSetAutoMipmapping(FALSE);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/*
|
||||
*****************************************************************************
|
||||
*/
|
||||
void
|
||||
RsTerminate(void)
|
||||
{
|
||||
psTerminate();
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
*****************************************************************************
|
||||
*/
|
||||
RwBool
|
||||
RsInitialise(void)
|
||||
{
|
||||
/*
|
||||
* Initialize Platform independent data...
|
||||
*/
|
||||
RwBool result;
|
||||
|
||||
RsGlobal.appName = RWSTRING("GTA3");
|
||||
RsGlobal.maximumWidth = DEFAULT_SCREEN_WIDTH;
|
||||
RsGlobal.maximumHeight = DEFAULT_SCREEN_HEIGHT;
|
||||
RsGlobal.width = DEFAULT_SCREEN_WIDTH;
|
||||
RsGlobal.height = DEFAULT_SCREEN_HEIGHT;
|
||||
|
||||
RsGlobal.maxFPS = 30;
|
||||
|
||||
RsGlobal.quit = FALSE;
|
||||
|
||||
/* setup the keyboard */
|
||||
RsGlobal.keyboard.inputDeviceType = rsKEYBOARD;
|
||||
RsGlobal.keyboard.inputEventHandler = 0;
|
||||
RsGlobal.keyboard.used = FALSE;
|
||||
|
||||
/* setup the mouse */
|
||||
RsGlobal.mouse.inputDeviceType = rsMOUSE;
|
||||
RsGlobal.mouse.inputEventHandler = 0;
|
||||
RsGlobal.mouse.used = FALSE;
|
||||
|
||||
/* setup the pad */
|
||||
RsGlobal.pad.inputDeviceType = rsPAD;
|
||||
RsGlobal.pad.inputEventHandler = 0;
|
||||
RsGlobal.pad.used = FALSE;
|
||||
|
||||
result = psInitialise();
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
STARTPATCHES
|
||||
InjectHook(0x584890, RsTimer, PATCH_JUMP);
|
||||
InjectHook(0x5848A0, RsCameraShowRaster, PATCH_JUMP);
|
||||
InjectHook(0x5848B0, RsCameraBeginUpdate, PATCH_JUMP);
|
||||
InjectHook(0x5848C0, RsRegisterImageLoader, PATCH_JUMP);
|
||||
InjectHook(0x5848D0, RsSetDebug, PATCH_JUMP);
|
||||
InjectHook(0x5848E0, RsMouseSetPos, PATCH_JUMP);
|
||||
InjectHook(0x5848F0, RsSelectDevice, PATCH_JUMP);
|
||||
InjectHook(0x584900, RsInputDeviceAttach, PATCH_JUMP);
|
||||
InjectHook(0x584960, rsCommandLine, PATCH_JUMP);
|
||||
InjectHook(0x584980, rsPreInitCommandLine, PATCH_JUMP);
|
||||
InjectHook(0x5849C0, RsKeyboardEventHandler, PATCH_JUMP);
|
||||
InjectHook(0x5849F0, RsPadEventHandler, PATCH_JUMP);
|
||||
InjectHook(0x584A20, RsEventHandler, PATCH_JUMP);
|
||||
InjectHook(0x584B30, RsRwTerminate, PATCH_JUMP);
|
||||
InjectHook(0x584B40, RsRwInitialise, PATCH_JUMP);
|
||||
InjectHook(0x584C30, RsTerminate, PATCH_JUMP);
|
||||
InjectHook(0x584C40, RsInitialise, PATCH_JUMP);
|
||||
ENDPATCHES
|
276
src/skel/skeleton.h
Normal file
276
src/skel/skeleton.h
Normal file
@ -0,0 +1,276 @@
|
||||
#ifndef SKELETON_H
|
||||
#define SKELETON_H
|
||||
|
||||
#include "rwcore.h"
|
||||
|
||||
/* Default arena size depending on platform. */
|
||||
#define rsRESOURCESDEFAULTARENASIZE (1 << 20)
|
||||
|
||||
#if (!defined(RsSprintf))
|
||||
#define RsSprintf rwsprintf
|
||||
#endif /* (!defined(RsSprintf)) */
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif /* __cplusplus */
|
||||
|
||||
#if (!defined(RSASSERT))
|
||||
#define RSASSERT(_condition) /* No-op */
|
||||
#endif /* (!defined(RSASSERT)) */
|
||||
|
||||
#define RSASSERTISTYPE(_f, _t) \
|
||||
RSASSERT( (!(_f)) || ((((const RwObject *)(_f))->type)==(_t)) )
|
||||
|
||||
enum RsInputDeviceType
|
||||
{
|
||||
rsKEYBOARD,
|
||||
rsMOUSE,
|
||||
rsPAD
|
||||
};
|
||||
typedef enum RsInputDeviceType RsInputDeviceType;
|
||||
|
||||
enum RsEventStatus
|
||||
{
|
||||
rsEVENTERROR,
|
||||
rsEVENTPROCESSED,
|
||||
rsEVENTNOTPROCESSED
|
||||
};
|
||||
typedef enum RsEventStatus RsEventStatus;
|
||||
|
||||
enum RsEvent
|
||||
{
|
||||
rsCAMERASIZE,
|
||||
rsCOMMANDLINE,
|
||||
rsFILELOAD,
|
||||
rsINITDEBUG,
|
||||
rsINPUTDEVICEATTACH,
|
||||
rsLEFTBUTTONDOWN,
|
||||
rsLEFTBUTTONUP,
|
||||
rsMOUSEMOVE,
|
||||
rsMOUSEWHEELMOVE,
|
||||
rsPLUGINATTACH,
|
||||
rsREGISTERIMAGELOADER,
|
||||
rsRIGHTBUTTONDOWN,
|
||||
rsRIGHTBUTTONUP,
|
||||
_rs_13,
|
||||
_rs_14,
|
||||
_rs_15,
|
||||
_rs_16,
|
||||
_rs_17,
|
||||
_rs_18,
|
||||
_rs_19,
|
||||
_rs_20,
|
||||
rsRWINITIALISE,
|
||||
rsRWTERMINATE,
|
||||
rsSELECTDEVICE,
|
||||
rsINITIALISE,
|
||||
rsTERMINATE,
|
||||
rsIDLE,
|
||||
rsFRONTENDIDLE,
|
||||
rsKEYDOWN,
|
||||
rsKEYUP,
|
||||
rsQUITAPP,
|
||||
rsPADBUTTONDOWN,
|
||||
rsPADBUTTONUP,
|
||||
rsPADANALOGUELEFT,
|
||||
rsPADANALOGUELEFTRESET,
|
||||
rsPADANALOGUERIGHT,
|
||||
rsPADANALOGUERIGHTRESET,
|
||||
rsPREINITCOMMANDLINE,
|
||||
rsACTIVATE,
|
||||
};
|
||||
|
||||
typedef enum RsEvent RsEvent;
|
||||
|
||||
typedef RsEventStatus (*RsInputEventHandler)(RsEvent event, void *param);
|
||||
|
||||
typedef struct RsInputDevice RsInputDevice;
|
||||
struct RsInputDevice
|
||||
{
|
||||
RsInputDeviceType inputDeviceType;
|
||||
RwBool used;
|
||||
RsInputEventHandler inputEventHandler;
|
||||
};
|
||||
|
||||
typedef struct RsGlobalType RsGlobalType;
|
||||
struct RsGlobalType
|
||||
{
|
||||
const RwChar *appName;
|
||||
RwInt32 width;
|
||||
RwInt32 height;
|
||||
RwInt32 maximumWidth;
|
||||
RwInt32 maximumHeight;
|
||||
RwInt32 maxFPS;
|
||||
RwBool quit;
|
||||
|
||||
void *ps; /* platform specific data */
|
||||
|
||||
RsInputDevice keyboard;
|
||||
RsInputDevice mouse;
|
||||
RsInputDevice pad;
|
||||
};
|
||||
|
||||
enum RsKeyCodes
|
||||
{
|
||||
rsESC = 1000,
|
||||
|
||||
rsF1 = 1001,
|
||||
rsF2 = 1002,
|
||||
rsF3 = 1003,
|
||||
rsF4 = 1004,
|
||||
rsF5 = 1005,
|
||||
rsF6 = 1006,
|
||||
rsF7 = 1007,
|
||||
rsF8 = 1008,
|
||||
rsF9 = 1009,
|
||||
rsF10 = 1010,
|
||||
rsF11 = 1011,
|
||||
rsF12 = 1012,
|
||||
|
||||
rsINS = 1013,
|
||||
rsDEL = 1014,
|
||||
rsHOME = 1015,
|
||||
rsEND = 1016,
|
||||
rsPGUP = 1017,
|
||||
rsPGDN = 1018,
|
||||
|
||||
rsUP = 1019,
|
||||
rsDOWN = 1020,
|
||||
rsLEFT = 1021,
|
||||
rsRIGHT = 1022,
|
||||
|
||||
rsDIVIDE = 1023,
|
||||
rsTIMES = 1024,
|
||||
rsPLUS = 1025,
|
||||
rsMINUS = 1026,
|
||||
rsPADDEL = 1027,
|
||||
rsPADEND = 1028,
|
||||
rsPADDOWN = 1029,
|
||||
rsPADPGDN = 1030,
|
||||
rsPADLEFT = 1031,
|
||||
rsPAD5 = 1032,
|
||||
rsNUMLOCK = 1033,
|
||||
rsPADRIGHT = 1034,
|
||||
rsPADHOME = 1035,
|
||||
rsPADUP = 1036,
|
||||
rsPADPGUP = 1037,
|
||||
rsPADINS = 1038,
|
||||
rsPADENTER = 1039,
|
||||
|
||||
rsSCROLL = 1040,
|
||||
rsPAUSE = 1041,
|
||||
|
||||
rsBACKSP = 1042,
|
||||
rsTAB = 1043,
|
||||
rsCAPSLK = 1044,
|
||||
rsENTER = 1045,
|
||||
rsLSHIFT = 1046,
|
||||
rsRSHIFT = 1047,
|
||||
rsSHIFT = 1048,
|
||||
rsLCTRL = 1049,
|
||||
rsRCTRL = 1050,
|
||||
rsLALT = 1051,
|
||||
rsRALT = 1052,
|
||||
rsLWIN = 1053,
|
||||
rsRWIN = 1054,
|
||||
rsAPPS = 1055,
|
||||
|
||||
rsNULL = 1056,
|
||||
};
|
||||
typedef enum RsKeyCodes RsKeyCodes;
|
||||
|
||||
typedef struct RsKeyStatus RsKeyStatus;
|
||||
struct RsKeyStatus
|
||||
{
|
||||
RwInt32 keyCharCode;
|
||||
};
|
||||
|
||||
typedef struct RsPadButtonStatus RsPadButtonStatus;
|
||||
struct RsPadButtonStatus
|
||||
{
|
||||
RwInt32 padID;
|
||||
RwUInt32 padButtons;
|
||||
};
|
||||
|
||||
enum RsPadButtons
|
||||
{
|
||||
rsPADNULL = 0,
|
||||
|
||||
rsPADBUTTON1 = 1,
|
||||
rsPADBUTTON2 = 2,
|
||||
rsPADBUTTON3 = 3,
|
||||
rsPADBUTTON4 = 4,
|
||||
|
||||
rsPADBUTTON5 = 5,
|
||||
rsPADBUTTON6 = 6,
|
||||
rsPADBUTTON7 = 7,
|
||||
rsPADBUTTON8 = 8,
|
||||
|
||||
rsPADSELECT = 9,
|
||||
|
||||
rsPADBUTTONA1 = 10,
|
||||
rsPADBUTTONA2 = 11,
|
||||
|
||||
rsPADSTART = 12,
|
||||
|
||||
rsPADDPADUP = 13,
|
||||
rsPADDPADRIGHT = 14,
|
||||
rsPADDPADDOWN = 15,
|
||||
rsPADDPADLEFT = 16,
|
||||
};
|
||||
typedef enum RsPadButtons RsPadButtons;
|
||||
|
||||
|
||||
extern RsGlobalType &RsGlobal;
|
||||
|
||||
extern RsEventStatus AppEventHandler(RsEvent event, void *param);
|
||||
extern RwBool AttachInputDevices(void);
|
||||
|
||||
extern RsEventStatus RsEventHandler(RsEvent event, void *param);
|
||||
extern RsEventStatus RsKeyboardEventHandler(RsEvent event, void *param);
|
||||
extern RsEventStatus RsPadEventHandler(RsEvent event, void *param);
|
||||
|
||||
extern RwBool
|
||||
RsInitialise(void);
|
||||
|
||||
extern RwBool
|
||||
RsRegisterImageLoader(void);
|
||||
|
||||
extern RwBool
|
||||
RsRwInitialise(void *param);
|
||||
|
||||
extern RwBool
|
||||
RsSelectDevice(void);
|
||||
|
||||
extern RwBool
|
||||
RsInputDeviceAttach(RsInputDeviceType inputDevice,
|
||||
RsInputEventHandler inputEventHandler);
|
||||
|
||||
extern RwUInt32
|
||||
RsTimer(void);
|
||||
|
||||
extern void
|
||||
RsCameraShowRaster(RwCamera *camera);
|
||||
|
||||
extern RwBool
|
||||
RsCameraBeginUpdate(RwCamera *camera);
|
||||
|
||||
//TODO
|
||||
//extern void
|
||||
//RsMouseSetVisibility(RwBool visible);
|
||||
|
||||
extern void
|
||||
RsMouseSetPos(RwV2d *pos);
|
||||
|
||||
extern void
|
||||
RsRwTerminate(void);
|
||||
|
||||
extern void
|
||||
RsTerminate(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif /* __cplusplus */
|
||||
|
||||
#endif /* SKELETON_H */
|
Reference in New Issue
Block a user