summaryrefslogtreecommitdiffstats
path: root/mbbsd
diff options
context:
space:
mode:
Diffstat (limited to 'mbbsd')
-rw-r--r--mbbsd/io.c12
-rw-r--r--mbbsd/mbbsd.c10
-rw-r--r--mbbsd/passwd.c15
-rw-r--r--mbbsd/talk.c24
-rw-r--r--mbbsd/user.c10
-rw-r--r--mbbsd/var.c4
6 files changed, 32 insertions, 43 deletions
diff --git a/mbbsd/io.c b/mbbsd/io.c
index 432b4004..68a2a62a 100644
--- a/mbbsd/io.c
+++ b/mbbsd/io.c
@@ -559,7 +559,7 @@ igetch(void)
}
return ch;
case KEY_TAB:
- if (WATERMODE(WATER_ORIG) || WATERMODE(WATER_NEW))
+ if (PAGER_UI_IS(PAGER_UI_ORIG) || PAGER_UI_IS(PAGER_UI_NEW))
if (currutmp != NULL && watermode > 0) {
check_water_init();
watermode = (watermode + water_which->count)
@@ -574,7 +574,7 @@ igetch(void)
return (ch);
if (currutmp->msgs[0].pid &&
- WATERMODE(WATER_OFO) && wmofo == NOTREPLYING) {
+ PAGER_UI_IS(PAGER_UI_OFO) && wmofo == NOTREPLYING) {
int my_newfd;
screen_backup_t old_screen;
@@ -586,7 +586,7 @@ igetch(void)
scr_restore(&old_screen);
i_newfd = my_newfd;
continue;
- } else if (!WATERMODE(WATER_OFO)) {
+ } else if (!PAGER_UI_IS(PAGER_UI_OFO)) {
check_water_init();
if (watermode > 0) {
watermode = (watermode + water_which->count)
@@ -641,7 +641,7 @@ igetch(void)
return ch;
case Ctrl('T'):
- if (WATERMODE(WATER_ORIG) || WATERMODE(WATER_NEW)) {
+ if (PAGER_UI_IS(PAGER_UI_ORIG) || PAGER_UI_IS(PAGER_UI_NEW)) {
if (watermode > 0) {
check_water_init();
if (watermode > 1)
@@ -655,7 +655,7 @@ igetch(void)
return ch;
case Ctrl('F'):
- if (WATERMODE(WATER_NEW)) {
+ if (PAGER_UI_IS(PAGER_UI_NEW)) {
if (watermode > 0) {
check_water_init();
if (water_which_flag == (int)water_usies)
@@ -675,7 +675,7 @@ igetch(void)
return ch;
case Ctrl('G'):
- if (WATERMODE(WATER_NEW)) {
+ if (PAGER_UI_IS(PAGER_UI_NEW)) {
if (watermode > 0) {
check_water_init();
water_which_flag = (water_which_flag + water_usies) % (water_usies + 1);
diff --git a/mbbsd/mbbsd.c b/mbbsd/mbbsd.c
index f10bec3d..6fddd4ed 100644
--- a/mbbsd/mbbsd.c
+++ b/mbbsd/mbbsd.c
@@ -430,7 +430,7 @@ add_history_water(water_t * w, const msgque_t * msg)
{
memcpy(&w->msg[w->top], msg, sizeof(msgque_t));
w->top++;
- w->top %= WATERMODE(WATER_OFO) ? 5 : MAX_REVIEW;
+ w->top %= PAGER_UI_IS(PAGER_UI_OFO) ? 5 : MAX_REVIEW;
if (w->count < MAX_REVIEW)
w->count++;
@@ -444,9 +444,9 @@ add_history(const msgque_t * msg)
int i = 0, j, waterinit = 0;
water_t *tmp;
check_water_init();
- if (WATERMODE(WATER_ORIG) || WATERMODE(WATER_NEW))
+ if (PAGER_UI_IS(PAGER_UI_ORIG) || PAGER_UI_IS(PAGER_UI_NEW))
add_history_water(&water[0], msg);
- if (WATERMODE(WATER_NEW) || WATERMODE(WATER_OFO)) {
+ if (PAGER_UI_IS(PAGER_UI_NEW) || PAGER_UI_IS(PAGER_UI_OFO)) {
for (i = 0; i < 5 && swater[i]; i++)
if (swater[i]->pid == msg->pid
#ifdef PLAY_ANGEL
@@ -478,7 +478,7 @@ add_history(const msgque_t * msg)
swater[0] = tmp;
add_history_water(swater[0], msg);
}
- if (WATERMODE(WATER_ORIG) || WATERMODE(WATER_NEW)) {
+ if (PAGER_UI_IS(PAGER_UI_ORIG) || PAGER_UI_IS(PAGER_UI_NEW)) {
if (watermode > 0 &&
(water_which == swater[0] || water_which == &water[0])) {
if (watermode < water_which->count)
@@ -502,7 +502,7 @@ write_request(int sig)
#endif
syncnow();
check_water_init();
- if (WATERMODE(WATER_OFO)) {
+ if (PAGER_UI_IS(PAGER_UI_OFO)) {
/* 如果目前正在回水球模式的話, 就不能進行 add_history() ,
因為會改寫 water[], 而使回水球目的爛掉, 所以分成幾種情況考慮.
sig != 0表真的有水球進來, 故顯示.
diff --git a/mbbsd/passwd.c b/mbbsd/passwd.c
index 060f0937..efa23f43 100644
--- a/mbbsd/passwd.c
+++ b/mbbsd/passwd.c
@@ -421,9 +421,7 @@ int
pwcuSetWaterballMode(unsigned int bm)
{
// XXX you MUST save this variable in pwcuExitSave();
- bm &= WATER_MASK;
- cuser.uflag2 &= ~WATER_MASK;
- cuser.uflag2 |= bm;
+ cuser.pager_ui_type = bm % PAGER_UI_TYPES;
return 0;
}
@@ -504,7 +502,7 @@ pwcuExitSave ()
{
int dirty = 0;
uint32_t uflag, uflag2, withme;
- uint8_t invisible, pager, signature;
+ uint8_t invisible, pager, signature, pager_ui_type;
int32_t money;
PWCU_START();
@@ -523,13 +521,8 @@ pwcuExitSave ()
money = u.money;
signature = u.signature;
- // water is already saved in uflag2
+ pager_ui_type = u.pager_ui_type;
- // XXX TODO move water to cuser.watermode ?
- // configure uflag2 by cuser
- _DISABLE_BIT(u.uflag2, WATER_MASK);
- _ENABLE_BIT (u.uflag2, (cuser.uflag2 & WATER_MASK));
-
// configure new utmp values
u.withme = currutmp->withme;
u.pager = currutmp->pager;
@@ -537,6 +530,7 @@ pwcuExitSave ()
u.signature = cuser.signature;
u.money = moneyof(usernum);
+ u.pager_ui_type = cuser.pager_ui_type;
// XXX 當初設計的人把 mind 設計成非 NULL terminated 的...
// assert(sizeof(u.mind) == sizeof(currutmp->mind));
@@ -553,6 +547,7 @@ pwcuExitSave ()
withme != u.withme||
pager != u.pager ||
money != u.money ||
+ pager_ui_type != u.pager_ui_type ||
signature != u.signature||
invisible != u.invisible))
{
diff --git a/mbbsd/talk.c b/mbbsd/talk.c
index dd4217ac..bbeb7c30 100644
--- a/mbbsd/talk.c
+++ b/mbbsd/talk.c
@@ -1011,7 +1011,7 @@ t_display_new(void)
t_display_new_flag = 1;
check_water_init();
- if (WATERMODE(WATER_ORIG))
+ if (PAGER_UI_IS(PAGER_UI_ORIG))
water_which = &water[0];
else
off = 3;
@@ -1019,10 +1019,10 @@ t_display_new(void)
if (water[0].count && watermode > 0) {
move(1, 0);
outs("───────水─球─回─顧───");
- outs(WATERMODE(WATER_ORIG) ?
+ outs(PAGER_UI_IS(PAGER_UI_ORIG) ?
"──────用[Ctrl-R Ctrl-T]鍵切換─────" :
"用[Ctrl-R Ctrl-T Ctrl-F Ctrl-G ]鍵切換────");
- if (WATERMODE(WATER_NEW)) {
+ if (PAGER_UI_IS(PAGER_UI_NEW)) {
move(2, 0);
clrtoeol();
for (i = 0; i < 6; i++) {
@@ -1055,7 +1055,7 @@ t_display_new(void)
if (len < 0)
len = 0;
- move(i + (WATERMODE(WATER_ORIG) ? 2 : 3), 0);
+ move(i + (PAGER_UI_IS(PAGER_UI_ORIG) ? 2 : 3), 0);
clrtoeol();
if (watermode - 1 != i)
prints(ANSI_COLOR(1;33;46) " %s " ANSI_COLOR(37;45) " %s " ANSI_RESET "%*s",
@@ -1079,7 +1079,7 @@ t_display_new(void)
move(i + off, 0);
outs("──────────────────────"
"─────────────────");
- if (WATERMODE(WATER_NEW))
+ if (PAGER_UI_IS(PAGER_UI_NEW))
while (i++ <= water[0].count) {
move(i + off, 0);
clrtoeol();
@@ -1928,7 +1928,7 @@ t_showhelp(void)
outs("\n" ANSI_COLOR(36) "【 交談專用鍵 】" ANSI_RESET "\n"
"(→)(t)(Enter) 跟他/她聊天\n"
"(w) 熱線 Call in\n"
- "(^W)切換水球方式 一般 / 進階 / 未來\n"
+ "(^W)切換水球方式 一般 / 進階\n"
"(b) 對好友廣播 (一定要在好友列表中)\n"
"(^R) 即時回應 (有人 Call in 你時)\n");
}
@@ -3013,20 +3013,16 @@ userlist(void)
case Ctrl('W'):
if (HasUserPerm(PERM_LOGINOK)) {
- int tmp;
- char *wm[3] = {"一般", "進階", "未來"};
-
+ static const char *wm[PAGER_UI_TYPES] = {"一般", "進階", "未來"};
- tmp = cuser.uflag2 & WATER_MASK;
- tmp = (tmp + 1) % 3;
- pwcuSetWaterballMode(tmp);
+ pwcuSetWaterballMode((cuser.pager_ui_type +1) % PAGER_UI_TYPES_USER);
/* vmsg cannot support multi lines */
move(b_lines - 4, 0);
clrtobot();
move(b_lines - 3, 0);
- outs("系統提供 一般 進階 未來 三種模式\n"
+ outs("系統提供數種水球模式可供選擇\n"
"在切換後請正常下線再重新登入, 以確保結構正確\n");
- vmsgf( "目前切換到 %s 水球模式", wm[tmp]);
+ vmsgf( "目前切換到 [%s] 水球模式", wm[cuser.pager_ui_type%PAGER_UI_TYPES]);
redrawall = redraw = 1;
}
break;
diff --git a/mbbsd/user.c b/mbbsd/user.c
index d6897099..29951d77 100644
--- a/mbbsd/user.c
+++ b/mbbsd/user.c
@@ -439,13 +439,13 @@ void Customize(void)
/* extended stuff */
{
char mindbuf[5];
- static const char *wm[] =
+ static const char *wm[PAGER_UI_TYPES+1] =
{"一般", "進階", "未來", ""};
prints("%c. %-40s%s\n",
'1' + iax++,
"水球模式",
- wm[(cuser.uflag2 & WATER_MASK)]);
+ wm[cuser.pager_ui_type % PAGER_UI_TYPES]);
memcpy(mindbuf, &currutmp->mind, 4);
mindbuf[4] = 0;
prints("%c. %-40s%s\n",
@@ -499,10 +499,8 @@ void Customize(void)
{
case 0:
{
- int currentset = cuser.uflag2 & WATER_MASK;
- currentset = (currentset + 1) % 3;
- pwcuSetWaterballMode(currentset);
- vmsg("修正水球模式後請正常離線再重新上線");
+ pwcuSetWaterballMode((cuser.pager_ui_type +1) % PAGER_UI_TYPES_USER);
+ vmsg("修改水球模式後請正常離線再重新上線");
dirty = 1;
}
continue;
diff --git a/mbbsd/var.c b/mbbsd/var.c
index eb178940..2a09f0a6 100644
--- a/mbbsd/var.c
+++ b/mbbsd/var.c
@@ -334,14 +334,14 @@ int KEY_ESC_arg;
int watermode = -1;
int wmofo = NOTREPLYING;
/*
- * WATERMODE(WATER_ORIG) | WATERMODE(WATER_NEW):
+ * PAGER_UI_IS(PAGER_UI_ORIG) | PAGER_UI_IS(PAGER_UI_NEW):
* ????????????????????
* Ptt 水球回顧 (FIXME: guessed by scw)
* watermode = -1 沒在回水球
* = 0 在回上一顆水球 (Ctrl-R)
* > 0 在回前 n 顆水球 (Ctrl-R Ctrl-R)
*
- * WATERMODE(WATER_OFO) by in2
+ * PAGER_UI_IS(PAGER_UI_OFO) by in2
* wmofo = NOTREPLYING 沒在回水球
* = REPLYING 正在回水球
* = RECVINREPLYING 回水球間又接到水球