mirror of
https://github.com/zenorogue/hyperrogue.git
synced 2024-12-25 17:40:36 +00:00
2D3D:: improved controller panning
This commit is contained in:
parent
7b69046125
commit
b1d8388795
37
shmup.cpp
37
shmup.cpp
@ -146,6 +146,13 @@ const char* axemodes[SHMUPAXES] = {
|
|||||||
"player 7 spin"
|
"player 7 spin"
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const char* axemodes3[4] = {
|
||||||
|
"do nothing",
|
||||||
|
"camera forward",
|
||||||
|
"camera rotate X",
|
||||||
|
"camera rotate Y"
|
||||||
|
};
|
||||||
|
|
||||||
int centerplayer = -1;
|
int centerplayer = -1;
|
||||||
|
|
||||||
char* axeconfigs[24]; int numaxeconfigs;
|
char* axeconfigs[24]; int numaxeconfigs;
|
||||||
@ -317,7 +324,9 @@ struct joy_configurer {
|
|||||||
axeconfigs[numaxeconfigs] = &(scfg.axeaction[j][ax]);
|
axeconfigs[numaxeconfigs] = &(scfg.axeaction[j][ax]);
|
||||||
dzconfigs[numaxeconfigs] = &(scfg.deadzoneval[j][ax]);
|
dzconfigs[numaxeconfigs] = &(scfg.deadzoneval[j][ax]);
|
||||||
char aa = *axeconfigs[numaxeconfigs];
|
char aa = *axeconfigs[numaxeconfigs];
|
||||||
string what = configdead ? its(scfg.deadzoneval[j][ax]) : XLAT(axemodes[aa%SHMUPAXES]);
|
string what = configdead ? its(scfg.deadzoneval[j][ax]) :
|
||||||
|
(DIM == 3 && (aa%SHMUPAXES < 4)) ? XLAT(axemodes3[aa%SHMUPAXES]) :
|
||||||
|
XLAT(axemodes[aa%SHMUPAXES]);
|
||||||
dialog::addSelItem(XLAT("Joystick %1, axis %2", cts('A'+j), its(ax)) + buf,
|
dialog::addSelItem(XLAT("Joystick %1, axis %2", cts('A'+j), its(ax)) + buf,
|
||||||
what, 'a'+numaxeconfigs);
|
what, 'a'+numaxeconfigs);
|
||||||
numaxeconfigs++;
|
numaxeconfigs++;
|
||||||
@ -446,7 +455,7 @@ struct shmup_configurer {
|
|||||||
#if CAP_SDL
|
#if CAP_SDL
|
||||||
if(uni == '1') pushScreen(key_configurer(1, cmdlist));
|
if(uni == '1') pushScreen(key_configurer(1, cmdlist));
|
||||||
else if(uni == '2') pushScreen(key_configurer(2, cmdlist));
|
else if(uni == '2') pushScreen(key_configurer(2, cmdlist));
|
||||||
else if(uni == 'p') pushScreen(key_configurer(3, WDIM == 3 ? pancmds3 : pancmds));
|
else if(uni == 'p') pushScreen(key_configurer(3, GDIM == 3 ? pancmds3 : pancmds));
|
||||||
else if(uni == '3') pushScreen(key_configurer(4, cmdlist));
|
else if(uni == '3') pushScreen(key_configurer(4, cmdlist));
|
||||||
else if(uni == '4') pushScreen(key_configurer(5, cmdlist));
|
else if(uni == '4') pushScreen(key_configurer(5, cmdlist));
|
||||||
else if(uni == '5') pushScreen(key_configurer(6, cmdlist));
|
else if(uni == '5') pushScreen(key_configurer(6, cmdlist));
|
||||||
@ -689,11 +698,16 @@ void handleInput(int delta) {
|
|||||||
double panx =
|
double panx =
|
||||||
actionspressed[49] - actionspressed[51] + axespressed[2] / 32000.0;
|
actionspressed[49] - actionspressed[51] + axespressed[2] / 32000.0;
|
||||||
double pany =
|
double pany =
|
||||||
actionspressed[50] - actionspressed[48] + axespressed[3] / 20000.0;
|
actionspressed[50] - actionspressed[48] + axespressed[3] / 32000.0;
|
||||||
|
|
||||||
double panspin = actionspressed[52] - actionspressed[53] + axespressed[1] / 20000.0;
|
double panspin = actionspressed[52] - actionspressed[53];
|
||||||
|
|
||||||
double panmove = actionspressed[59] - actionspressed[60] + axespressed[4] / 20000.0;
|
double panmove = actionspressed[59] - actionspressed[60];
|
||||||
|
|
||||||
|
if(DIM == 3)
|
||||||
|
panmove += axespressed[1] / 32000.0;
|
||||||
|
else
|
||||||
|
panspin += axespressed[1] / 32000.0;
|
||||||
|
|
||||||
if(actionspressed[54]) { centerplayer = -1, playermoved = true; centerpc(100); }
|
if(actionspressed[54]) { centerplayer = -1, playermoved = true; centerpc(100); }
|
||||||
|
|
||||||
@ -722,12 +736,15 @@ void handleInput(int delta) {
|
|||||||
mouseaim_x = mouseaim_y = 0;
|
mouseaim_x = mouseaim_y = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(panx || pany || panspin || (WDIM == 3 && panmove)) {
|
if(panx || pany || panspin || (GDIM == 3 && panmove)) {
|
||||||
if(DIM == 2)
|
if(DIM == 2) {
|
||||||
View = xpush(-panx) * ypush(-pany) * spin(panspin) * View;
|
View = xpush(-panx) * ypush(-pany) * spin(panspin) * View;
|
||||||
else
|
playermoved = false;
|
||||||
View = cspin(0, 2, -panx*2) * cspin(1, 2, -pany*2) * spin(panspin) * cpush(2, panmove*2) * View;
|
}
|
||||||
playermoved = false;
|
else {
|
||||||
|
View = cspin(0, 2, -panx) * cspin(1, 2, -pany) * spin(panspin) * cpush(2, panmove) * View;
|
||||||
|
if(panmove) playermoved = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user