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

rogueviz::crystal_sokoban:: using rv_hooks

This commit is contained in:
Zeno Rogue 2021-03-31 01:01:27 +02:00
parent 08fe6995c3
commit b17eca5ff1

View File

@ -37,6 +37,8 @@ undo_state current_state() {
return u; return u;
} }
void sb_hooks();
void run_sb() { void run_sb() {
crystal::compass_probability = 0; crystal::compass_probability = 0;
stop_game(); stop_game();
@ -46,7 +48,6 @@ void run_sb() {
patterns::whichCanvas = 'g'; patterns::whichCanvas = 'g';
patterns::canvasback = 0x101010; patterns::canvasback = 0x101010;
check_cgi(); check_cgi();
vizid = &on;
start_game(); start_game();
for(int z=-8; z<8; z++) for(int z=-8; z<8; z++)
@ -114,8 +115,6 @@ void restore_undo() {
} }
bool sokomap2() { bool sokomap2() {
bool in = vizid == &on;
if(!in) return false;
if(undos.back().where != cwt.at) save_undo(); if(undos.back().where != cwt.at) save_undo();
@ -157,14 +156,21 @@ bool sokomap2() {
} }
bool soko_key(int sym, int uni) { bool soko_key(int sym, int uni) {
bool in = vizid == &on; if((cmode & sm::NORMAL) && (uni == SDLK_BACKSPACE || uni == 'r') && isize(undos) != 1) {
if((cmode & sm::NORMAL) && (uni == SDLK_BACKSPACE || uni == 'r') && in && isize(undos) != 1) {
restore_undo(); restore_undo();
return true; return true;
} }
return false; return false;
} }
void sb_hooks() {
rv_hook(hooks_prestats, 90, sokomap2);
rv_hook(hooks_welcome_message, 50, [] () {
addMessage(XLAT("Welcome to Crystal Sokoban!"));
return true;
});
rv_hook(hooks_handleKey, 50, soko_key);
}
auto sbhook = addHook(hooks_args, 100, [] { auto sbhook = addHook(hooks_args, 100, [] {
using namespace arg; using namespace arg;
@ -177,12 +183,7 @@ auto sbhook = addHook(hooks_args, 100, [] {
} }
else return 1; else return 1;
return 0; return 0;
}) + addHook(hooks_prestats, 90, sokomap2) });
+ addHook(hooks_welcome_message, 50, [] () {
if(vizid == &on) addMessage(XLAT("Welcome to Crystal Sokoban!"));
return bool(vizid);
}) +
+ addHook(hooks_handleKey, 50, soko_key);
} }