From 447632a4c398145c6d2b5bce99fcf1930b300eb1 Mon Sep 17 00:00:00 2001 From: kichikuou Date: Sun, 21 Jul 2019 10:16:36 +0900 Subject: [PATCH] Simplify logic around message wait cancellation --- src/cmdz.c | 4 ++-- src/imput.c | 18 ++++++++---------- src/message.c | 5 ++--- src/nact.h | 2 +- 4 files changed, 13 insertions(+), 16 deletions(-) diff --git a/src/cmdz.c b/src/cmdz.c index de862bc..809ad18 100644 --- a/src/cmdz.c +++ b/src/cmdz.c @@ -108,8 +108,8 @@ void commandZW() { int sw = getCaliValue(); if (sw < 256) { - nact->messagewait_enable_save = - nact->messagewait_enable = ((sw & 0xff) <= 1) ? FALSE : TRUE; + nact->messagewait_enable = ((sw & 0xff) <= 1) ? FALSE : TRUE; + nact->messagewait_cancelled = FALSE; } else { nact->messagewait_time = sw & 0xff; nact->messagewait_cancel = (sw & 0x200) ? TRUE : FALSE; diff --git a/src/imput.c b/src/imput.c index d9e41a6..0087f84 100644 --- a/src/imput.c +++ b/src/imput.c @@ -110,17 +110,15 @@ void sys_hit_any_key() { msg_hitAnyKey(); /* message wait flag restore */ - if (nact->messagewait_enable_save) { - /* if message wait was cancelled, consume that input */ - if (!nact->messagewait_enable) { - while(0 == (key & hak_ignore_mask)) { - key = sys_keywait(INT_MAX, TRUE); - } - while(key & hak_releasewait_mask) { - key = sys_keywait(100, TRUE); - } + if (nact->messagewait_cancelled) { + nact->messagewait_cancelled = FALSE; + /* consume the input that cancelled message wait */ + while(0 == (key & hak_ignore_mask)) { + key = sys_keywait(INT_MAX, TRUE); + } + while(key & hak_releasewait_mask) { + key = sys_keywait(100, TRUE); } - nact->messagewait_enable = nact->messagewait_enable_save ; } while(0 == (key & hak_ignore_mask)) { diff --git a/src/message.c b/src/message.c index 761b428..0aa12e9 100644 --- a/src/message.c +++ b/src/message.c @@ -164,15 +164,14 @@ void msg_putMessage(char *m) { w = ags_drawString(msgcur.x, msgcur.y, m, msg.MsgFontColor); - if (nact->messagewait_enable) { + if (nact->messagewait_enable && !nact->messagewait_cancelled) { int x; for (x = 0; x < w + adj.width; x+=16) { ags_updateArea(msgcur.x + adj.x + x, msgcur.y + adj.y, 16, msg.MsgFontSize + adj.height); if (nact->messagewait_cancel) { if (sys_getInputInfo()) { - nact->messagewait_enable_save = nact->messagewait_enable ; - nact->messagewait_enable = FALSE; + nact->messagewait_cancelled = TRUE; ags_updateArea(msgcur.x + adj.x, msgcur.y + adj.y, w + adj.width, msg.MsgFontSize + adj.height); break; diff --git a/src/nact.h b/src/nact.h index 4064e27..177d704 100644 --- a/src/nact.h +++ b/src/nact.h @@ -97,7 +97,7 @@ typedef struct { /* message wait */ boolean messagewait_enable; - boolean messagewait_enable_save; + boolean messagewait_cancelled; int messagewait_time; boolean messagewait_cancel;