diff options
author | piaip <piaip@63ad8ddf-47c3-0310-b6dd-a9e9d9715204> | 2009-09-17 17:50:16 +0800 |
---|---|---|
committer | piaip <piaip@63ad8ddf-47c3-0310-b6dd-a9e9d9715204> | 2009-09-17 17:50:16 +0800 |
commit | 42dd732f9f1bfe4b79c925b0e3d14a68c7312174 (patch) | |
tree | 055b6c72b7e23d8704a2fa646b2780b176720509 /mbbsd | |
parent | 2a83fe8bd5b10cb1b6e1b9b4f8fc76096e185456 (diff) | |
download | pttbbs-42dd732f9f1bfe4b79c925b0e3d14a68c7312174.tar pttbbs-42dd732f9f1bfe4b79c925b0e3d14a68c7312174.tar.gz pttbbs-42dd732f9f1bfe4b79c925b0e3d14a68c7312174.tar.bz2 pttbbs-42dd732f9f1bfe4b79c925b0e3d14a68c7312174.tar.lz pttbbs-42dd732f9f1bfe4b79c925b0e3d14a68c7312174.tar.xz pttbbs-42dd732f9f1bfe4b79c925b0e3d14a68c7312174.tar.zst pttbbs-42dd732f9f1bfe4b79c925b0e3d14a68c7312174.zip |
* move WATER_* from uflag2 to cuser.pager_ui_type (standalone variable)
git-svn-id: http://opensvn.csie.org/pttbbs/trunk/pttbbs@4848 63ad8ddf-47c3-0310-b6dd-a9e9d9715204
Diffstat (limited to 'mbbsd')
-rw-r--r-- | mbbsd/io.c | 12 | ||||
-rw-r--r-- | mbbsd/mbbsd.c | 10 | ||||
-rw-r--r-- | mbbsd/passwd.c | 15 | ||||
-rw-r--r-- | mbbsd/talk.c | 24 | ||||
-rw-r--r-- | mbbsd/user.c | 10 | ||||
-rw-r--r-- | mbbsd/var.c | 4 |
6 files changed, 32 insertions, 43 deletions
@@ -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 回水球間又接到水球 |