OSDN Git Service

[Refactor] #40275 Separated monster_arena_comm() from building.c to arena.c/h
authorHourier <hourier@users.sourceforge.jp>
Wed, 20 May 2020 10:37:28 +0000 (19:37 +0900)
committerHourier <hourier@users.sourceforge.jp>
Wed, 20 May 2020 10:37:28 +0000 (19:37 +0900)
src/market/arena.c
src/market/arena.h
src/market/building.c

index 57e3b54..2c2ec33 100644 (file)
@@ -252,3 +252,123 @@ void update_gambling_monsters(player_type *player_ptr)
             break;
     }
 }
+
+/*!
+ * @brief モンスター闘技場のメインルーチン
+ * @param player_ptr プレーヤーへの参照ポインタ
+ * @return 賭けを開始したか否か
+ */
+bool monster_arena_comm(player_type *player_ptr)
+{
+    PRICE maxbet;
+    PRICE wager;
+    char out_val[160], tmp_str[80];
+    concptr p;
+
+    if ((current_world_ptr->game_turn - current_world_ptr->arena_start_turn) > TURNS_PER_TICK * 250) {
+        update_gambling_monsters(player_ptr);
+        current_world_ptr->arena_start_turn = current_world_ptr->game_turn;
+    }
+
+    screen_save();
+
+    /* No money */
+    if (player_ptr->au <= 1) {
+        msg_print(_("おい!おまえ一文なしじゃないか!こっから出ていけ!", "Hey! You don't have gold - get out of here!"));
+        msg_print(NULL);
+        screen_load();
+        return FALSE;
+    }
+
+    clear_bldg(4, 10);
+
+    prt(_("モンスター                                                     倍率",
+            "Monsters                                                       Odds"),
+        4, 4);
+    for (int i = 0; i < 4; i++) {
+        char buf[80];
+        monster_race *r_ptr = &r_info[battle_mon[i]];
+
+        sprintf(buf, _("%d) %-58s  %4ld.%02ld倍", "%d) %-58s  %4ld.%02ld"), i + 1,
+            _(format("%s%s", r_name + r_ptr->name, (r_ptr->flags1 & RF1_UNIQUE) ? "もどき" : "      "),
+                format("%s%s", (r_ptr->flags1 & RF1_UNIQUE) ? "Fake " : "", r_name + r_ptr->name)),
+            (long int)mon_odds[i] / 100, (long int)mon_odds[i] % 100);
+        prt(buf, 5 + i, 1);
+    }
+
+    prt(_("どれに賭けますか:", "Which monster: "), 0, 0);
+    while (TRUE) {
+        int i = inkey();
+
+        if (i == ESCAPE) {
+            screen_load();
+            return FALSE;
+        }
+
+        if (i >= '1' && i <= '4') {
+            sel_monster = i - '1';
+            battle_odds = mon_odds[sel_monster];
+            break;
+        }
+
+        else
+            bell();
+    }
+
+    clear_bldg(4, 4);
+    for (int i = 0; i < 4; i++)
+        if (i != sel_monster)
+            clear_bldg(i + 5, i + 5);
+
+    maxbet = player_ptr->lev * 200;
+
+    /* We can't bet more than we have */
+    maxbet = MIN(maxbet, player_ptr->au);
+
+    /* Get the wager */
+    strcpy(out_val, "");
+    sprintf(tmp_str, _("賭け金 (1-%ld)?", "Your wager (1-%ld) ? "), (long int)maxbet);
+
+    /*
+        * Use get_string() because we may need more than
+        * the s16b value returned by get_quantity().
+        */
+    if (!get_string(tmp_str, out_val, 32)) {
+        screen_load();
+        return FALSE;
+    }
+
+    for (p = out_val; *p == ' '; p++)
+        ;
+
+    wager = atol(p);
+    if (wager > player_ptr->au) {
+        msg_print(_("おい!金が足りないじゃないか!出ていけ!", "Hey! You don't have the gold - get out of here!"));
+
+        msg_print(NULL);
+        screen_load();
+        return FALSE;
+    } else if (wager > maxbet) {
+        msg_format(_("%ldゴールドだけ受けよう。残りは取っときな。", "I'll take %ld gold of that. Keep the rest."), (long int)maxbet);
+
+        wager = maxbet;
+    } else if (wager < 1) {
+        msg_print(_("OK、1ゴールドでいこう。", "Ok, we'll start with 1 gold."));
+        wager = 1;
+    }
+
+    msg_print(NULL);
+    battle_odds = MAX(wager + 1, wager * battle_odds / 100);
+    kakekin = wager;
+    player_ptr->au -= wager;
+    reset_tim_flags(player_ptr);
+
+    prepare_change_floor_mode(player_ptr, CFM_SAVE_FLOORS);
+
+    player_ptr->phase_out = TRUE;
+    player_ptr->leaving = TRUE;
+    player_ptr->leave_bldg = TRUE;
+
+    screen_load();
+    return TRUE;
+}
index 174582a..8c50ca2 100644 (file)
@@ -2,3 +2,4 @@
 
 void arena_comm(player_type *player_ptr, int cmd);
 void update_gambling_monsters(player_type *player_ptr);
+bool monster_arena_comm(player_type *player_ptr);
index c853b5a..703ba95 100644 (file)
@@ -265,135 +265,6 @@ static void show_building(player_type *player_ptr, building_type* bldg)
 
 
 /*!
- * @brief モンスター闘技場のメインルーチン
- * @param player_ptr プレーヤーへの参照ポインタ
- * @return 賭けを開始したか否か
- */
-static bool monster_arena_comm(player_type *player_ptr)
-{
-       PRICE maxbet;
-       PRICE wager;
-       char out_val[160], tmp_str[80];
-       concptr p;
-
-       if ((current_world_ptr->game_turn - current_world_ptr->arena_start_turn) > TURNS_PER_TICK * 250)
-       {
-               update_gambling_monsters(player_ptr);
-               current_world_ptr->arena_start_turn = current_world_ptr->game_turn;
-       }
-
-       screen_save();
-
-       /* No money */
-       if (player_ptr->au <= 1)
-       {
-               msg_print(_("おい!おまえ一文なしじゃないか!こっから出ていけ!", "Hey! You don't have gold - get out of here!"));
-               msg_print(NULL);
-               screen_load();
-               return FALSE;
-       }
-
-       clear_bldg(4, 10);
-
-       prt(_("モンスター                                                     倍率",
-               "Monsters                                                       Odds"), 4, 4);
-       for (int i = 0; i < 4; i++)
-       {
-               char buf[80];
-               monster_race *r_ptr = &r_info[battle_mon[i]];
-
-               sprintf(buf, _("%d) %-58s  %4ld.%02ld倍", "%d) %-58s  %4ld.%02ld"), i + 1,
-                       _(format("%s%s", r_name + r_ptr->name, (r_ptr->flags1 & RF1_UNIQUE) ? "もどき" : "      "),
-                               format("%s%s", (r_ptr->flags1 & RF1_UNIQUE) ? "Fake " : "", r_name + r_ptr->name)),
-                               (long int)mon_odds[i] / 100, (long int)mon_odds[i] % 100);
-               prt(buf, 5 + i, 1);
-       }
-
-       prt(_("どれに賭けますか:", "Which monster: "), 0, 0);
-       while (TRUE)
-       {
-               int i = inkey();
-
-               if (i == ESCAPE)
-               {
-                       screen_load();
-                       return FALSE;
-               }
-
-               if (i >= '1' && i <= '4')
-               {
-                       sel_monster = i - '1';
-                       battle_odds = mon_odds[sel_monster];
-                       break;
-               }
-
-               else bell();
-       }
-
-       clear_bldg(4, 4);
-       for (int i = 0; i < 4; i++)
-               if (i != sel_monster) clear_bldg(i + 5, i + 5);
-
-       maxbet = player_ptr->lev * 200;
-
-       /* We can't bet more than we have */
-       maxbet = MIN(maxbet, player_ptr->au);
-
-       /* Get the wager */
-       strcpy(out_val, "");
-       sprintf(tmp_str, _("賭け金 (1-%ld)?", "Your wager (1-%ld) ? "), (long int)maxbet);
-
-       /*
-        * Use get_string() because we may need more than
-        * the s16b value returned by get_quantity().
-        */
-       if (!get_string(tmp_str, out_val, 32))
-       {
-               screen_load();
-               return FALSE;
-       }
-
-       for (p = out_val; *p == ' '; p++);
-
-       wager = atol(p);
-       if (wager > player_ptr->au)
-       {
-               msg_print(_("おい!金が足りないじゃないか!出ていけ!", "Hey! You don't have the gold - get out of here!"));
-
-               msg_print(NULL);
-               screen_load();
-               return FALSE;
-       }
-       else if (wager > maxbet)
-       {
-               msg_format(_("%ldゴールドだけ受けよう。残りは取っときな。", "I'll take %ld gold of that. Keep the rest."), (long int)maxbet);
-
-               wager = maxbet;
-       }
-       else if (wager < 1)
-       {
-               msg_print(_("OK、1ゴールドでいこう。", "Ok, we'll start with 1 gold."));
-               wager = 1;
-       }
-
-       msg_print(NULL);
-       battle_odds = MAX(wager + 1, wager * battle_odds / 100);
-       kakekin = wager;
-       player_ptr->au -= wager;
-       reset_tim_flags(player_ptr);
-
-       prepare_change_floor_mode(player_ptr, CFM_SAVE_FLOORS);
-
-       player_ptr->phase_out = TRUE;
-       player_ptr->leaving = TRUE;
-       player_ptr->leave_bldg = TRUE;
-
-       screen_load();
-       return TRUE;
-}
-
-
-/*!
  * @brief 本日の賞金首情報を表示する。
  * @param player_ptr プレーヤーへの参照ポインタ
  * @return なし