mirror of
https://github.com/kichikuou/system3-sdl2.git
synced 2026-10-04 12:58:01 +03:00
Refactor key release handling in NACT commands
This commit is contained in:
+4
-27
@@ -423,14 +423,8 @@ void NACT::cmd_a()
|
||||
sys_sleep(16);
|
||||
}
|
||||
sys_sleep(30);
|
||||
while (!msgskip->skipping()) {
|
||||
if(terminate) {
|
||||
return;
|
||||
}
|
||||
if(!(get_key() & 0x18)) {
|
||||
break;
|
||||
}
|
||||
sys_sleep(16);
|
||||
if (!msgskip->skipping()) {
|
||||
wait_key_release(0x18);
|
||||
}
|
||||
|
||||
// ウィンドウ更新
|
||||
@@ -653,15 +647,7 @@ int NACT::menu_select(int num_items)
|
||||
sys_sleep(16);
|
||||
}
|
||||
if(val) {
|
||||
for(;;) {
|
||||
if(terminate) {
|
||||
return -1;
|
||||
}
|
||||
if(!get_key()) {
|
||||
break;
|
||||
}
|
||||
sys_sleep(16);
|
||||
}
|
||||
wait_key_release();
|
||||
}
|
||||
|
||||
if(val == 0) {
|
||||
@@ -729,16 +715,7 @@ void NACT::wait_after_open_menu()
|
||||
}
|
||||
}
|
||||
|
||||
// クリック中の間は待機
|
||||
for(;;) {
|
||||
if(terminate) {
|
||||
return;
|
||||
}
|
||||
if(!get_key()) {
|
||||
break;
|
||||
}
|
||||
sys_sleep(10);
|
||||
}
|
||||
wait_key_release();
|
||||
}
|
||||
|
||||
void NACT::sys_sleep(int ms) {
|
||||
|
||||
@@ -147,6 +147,8 @@ protected:
|
||||
void wait_after_open_menu();
|
||||
|
||||
uint8 get_key();
|
||||
void wait_key_release(uint8_t mask = 0xff);
|
||||
|
||||
void get_cursor(int* x, int* y);
|
||||
void set_cursor(int x, int y);
|
||||
int get_wheel();
|
||||
|
||||
@@ -143,6 +143,11 @@ uint8 NACT::get_key()
|
||||
return val;
|
||||
}
|
||||
|
||||
void NACT::wait_key_release(uint8_t mask) {
|
||||
while (!terminate && (get_key() & mask))
|
||||
sys_sleep(16);
|
||||
}
|
||||
|
||||
void NACT::get_cursor(int* x, int* y)
|
||||
{
|
||||
pump_events();
|
||||
|
||||
@@ -744,15 +744,7 @@ public:
|
||||
sys_sleep(16);
|
||||
}
|
||||
sys_sleep(100);
|
||||
for (;;) {
|
||||
if (terminate) {
|
||||
return;
|
||||
}
|
||||
if (!(get_key() & 0x18)) {
|
||||
break;
|
||||
}
|
||||
sys_sleep(16);
|
||||
}
|
||||
wait_key_release(0x18);
|
||||
ags->clear_text_window(text_window, true);
|
||||
break;
|
||||
case 2:
|
||||
|
||||
@@ -805,15 +805,7 @@ void NACT_Sys2::cmd_y()
|
||||
sys_sleep(16);
|
||||
}
|
||||
sys_sleep(100);
|
||||
for(;;) {
|
||||
if(terminate) {
|
||||
return;
|
||||
}
|
||||
if(!(get_key() & 0x18)) {
|
||||
break;
|
||||
}
|
||||
sys_sleep(16);
|
||||
}
|
||||
wait_key_release(0x18);
|
||||
break;
|
||||
case 254:
|
||||
RND = 0;
|
||||
|
||||
+3
-27
@@ -452,15 +452,7 @@ void NACT_Sys3::cmd_k()
|
||||
// キーが離されるまで待機
|
||||
if(cmd != 1) {
|
||||
sys_sleep(100);
|
||||
for(;;) {
|
||||
if(terminate) {
|
||||
return;
|
||||
}
|
||||
if(!(val = get_key())) {
|
||||
break;
|
||||
}
|
||||
sys_sleep(16);
|
||||
}
|
||||
wait_key_release();
|
||||
}
|
||||
|
||||
// K0の場合は改行
|
||||
@@ -884,16 +876,7 @@ void NACT_Sys3::exec_y(int cmd, int param)
|
||||
M_X = (x < 0) ? x : (x > 639) ? 639 : x;
|
||||
M_Y = (y < 0) ? 0 : (y > 479) ? 479 : y;
|
||||
if((RND = get_key())) {
|
||||
// キー入力があった場合は、離すまで待機
|
||||
for(;;) {
|
||||
if(terminate) {
|
||||
return;
|
||||
}
|
||||
if(!get_key()) {
|
||||
break;
|
||||
}
|
||||
sys_sleep(16);
|
||||
}
|
||||
wait_key_release();
|
||||
}
|
||||
} else if(param == 3) {
|
||||
set_cursor(M_X, M_Y);
|
||||
@@ -1310,9 +1293,7 @@ bool NACT_Sys3::k3_hack(const K3HackInfo* info_table)
|
||||
}
|
||||
int key = get_key();
|
||||
if (key) {
|
||||
// Wait for key release
|
||||
while (!terminate && get_key())
|
||||
sys_sleep(16);
|
||||
wait_key_release();
|
||||
RND = key;
|
||||
break;
|
||||
}
|
||||
@@ -1442,11 +1423,6 @@ private:
|
||||
uint16_t grid_select_data[63] = {};
|
||||
uint16_t grid_prev_selection = 0;
|
||||
|
||||
void wait_key_release() {
|
||||
while (!terminate && get_key())
|
||||
sys_sleep(16);
|
||||
}
|
||||
|
||||
// I command
|
||||
uint16_t grid_select(int left_x, int top_y, int xsize, int ysize, int nr_cols, int nr_rows, int initial_index) {
|
||||
int x = initial_index % nr_cols;
|
||||
|
||||
Reference in New Issue
Block a user