1
0
mirror of https://github.com/zenorogue/hyperrogue.git synced 2025-05-28 20:14:06 +00:00

rogueviz::ads:: adjusted to new action_states

This commit is contained in:
Zeno Rogue 2025-02-08 12:25:19 +01:00
parent 28d875229f
commit 59fc5422e4
3 changed files with 45 additions and 35 deletions

View File

@ -53,11 +53,15 @@ void change_default_key(int key, int val) {
void set_default_keys() {
clear_config(scfg_ads);
change_default_key('s', 16 + 0);
change_default_key('a', 16 + 1);
change_default_key('w', 16 + 2);
change_default_key('d', 16 + 3);
change_default_key('f', 16 + 4);
/* these are shared with the default config */
// change_default_key('s', 16 + 0);
// change_default_key('a', 16 + 1);
// change_default_key('w', 16 + 2);
// change_default_key('d', 16 + 3);
// change_default_key('f', 16 + 4);
/* these are ADS-specific */
change_default_key('p', 16 + 5);
change_default_key('t', 16 + 6);
change_default_key('o', 16 + 7);

View File

@ -4,7 +4,12 @@ namespace ads_game {
multi::config scfg_ads;
vector<string> move_names = { "acc down", "acc left", "acc up", "acc right", "fire", "pause", "display times", "switch spin", "menu", "[paused] future", "(paused] past", "[paused] move switch" };
enum pcmds_extra {
pcPause=9, pcDisplayTimes=10, pcSwitchSpin=11, pcMenu=12,
pcPauseFuture=13, pcPausePast=14, pcPauseMoveSwitch=15
};
vector<string> move_names = { "", "", "", "", "acc down", "acc left", "acc up", "acc right", "fire", "pause", "display times", "switch spin", "menu", "[paused] future", "[paused] past", "[paused] move switch" };
void fire() {
if(!pdata.ammo) return;
@ -98,8 +103,10 @@ void apply_lorentz(transmatrix lor) {
ld read_movement() {
ld mdx = multi::axespressed[4]/30000.;
ld mdy = multi::axespressed[5]/30000.;
auto& axes = multi::axes_for(0);
ld mdx = axes[0]/30000.;
ld mdy = axes[1]/30000.;
#if CAP_VR
if(vrhr::active()) {
mdy -= vrhr::vrgo_y;
@ -111,11 +118,11 @@ ld read_movement() {
return hypot(mdx, mdy);
}
auto& a = multi::actionspressed;
bool left = a[16+1];
bool right = a[16+3];
bool up = a[16+2];
bool down = a[16];
auto& act = multi::action_states[1];
bool left = act[multi::pcMoveLeft];
bool right = act[multi::pcMoveRight];
bool up = act[multi::pcMoveUp];
bool down = act[multi::pcMoveDown];
int clicks = (left?1:0) + (right?1:0) + (up?1:0) + (down?1:0);
@ -151,14 +158,13 @@ bool ads_turn(int idelta) {
handle_crashes();
auto& a = multi::actionspressed;
auto& la = multi::lactionpressed;
if(a[16+4] && !la[16+4] && !paused) fire();
if(a[16+5] && !la[16+5]) switch_pause();
if(a[16+6] && !la[16+6]) view_proper_times = !view_proper_times;
if(a[16+7] && !la[16+7]) auto_rotate = !auto_rotate;
if(a[16+8] && !la[16+8]) pushScreen(game_menu);
auto& act = multi::action_states[1];
if(act[multi::pcFire].pressed() && !paused) fire();
if(act[pcPause].pressed()) switch_pause();
if(act[pcDisplayTimes].pressed()) view_proper_times = !view_proper_times;
if(act[pcSwitchSpin].pressed()) auto_rotate = !auto_rotate;
if(act[pcMenu].pressed()) pushScreen(game_menu);
if(auto_angle) pconf.mori().get() = spin(ang) * pconf.mori().get();
@ -170,7 +176,8 @@ bool ads_turn(int idelta) {
ld mul = read_movement();
ld dv = pt * ads_accel * mul;
if(paused && a[16+11]) {
if(paused && act[pcPauseMoveSwitch]) {
current = ads_matrix(spin(ang*degree) * xpush(mul*delta*-pause_speed) * spin(-ang*degree), 0) * current;
}
else
@ -183,8 +190,8 @@ bool ads_turn(int idelta) {
ld tc = 0;
if(!paused) tc = pt;
else if(a[16+9]) tc = pt;
else if(a[16+10]) tc = -pt;
else if(act[pcPauseFuture]) tc = pt;
else if(act[pcPausePast]) tc = -pt;
if(!paused && !game_over) {
shipstate ss;

View File

@ -341,14 +341,13 @@ bool ds_turn(int idelta) {
ds_handle_crashes();
auto& a = multi::actionspressed;
auto& la = multi::lactionpressed;
auto& act = multi::action_states[1];
if(a[16+4] && !la[16+4] && !paused) ds_fire();
if(a[16+5] && !la[16+5]) switch_pause();
if(a[16+6] && !la[16+6]) view_proper_times = !view_proper_times;
if(a[16+7] && !la[16+7]) auto_rotate = !auto_rotate;
if(a[16+8] && !la[16+8]) pushScreen(game_menu);
if(act[multi::pcFire].pressed() && !paused) ds_fire();
if(act[pcPause].pressed()) switch_pause();
if(act[pcDisplayTimes].pressed()) view_proper_times = !view_proper_times;
if(act[pcSwitchSpin].pressed()) auto_rotate = !auto_rotate;
if(act[pcMenu].pressed()) pushScreen(game_menu);
if(true) {
dynamicval<eGeometry> g(geometry, gSpace435);
@ -357,7 +356,7 @@ bool ds_turn(int idelta) {
ld mul = read_movement();
ld dv = pt * ds_accel * mul;
if(paused && a[16+11]) {
if(paused && act[pcPauseMoveSwitch]) {
current.T = spin(ang*degree) * cspin(0, 2, mul*delta*-pause_speed) * spin(-ang*degree) * current.T;
}
else {
@ -371,8 +370,8 @@ bool ds_turn(int idelta) {
ld tc = 0;
if(!paused) tc = pt;
else if(a[16+9]) tc = pt;
else if(a[16+10]) tc = -pt;
else if(act[pcPauseFuture]) tc = pt;
else if(act[pcPausePast]) tc = -pt;
if(!paused && !game_over) {
shipstate ss;
@ -410,7 +409,7 @@ bool ds_turn(int idelta) {
}
else view_pt += tc;
if(a[16+4] && !la[16+4] && false) {
if(act[multi::pcFire].pressed()&& false) {
if(history.size())
history.back().duration = HUGE_VAL;
current = random_spin3();