OSDN Git Service

Merge branch 'develop' into macos-develop
[hengbandforosx/hengbandosx.git] / src / cmd-io / cmd-knowledge.cpp
1 #include "cmd-io/cmd-knowledge.h"
2 #include "cmd-visual/cmd-draw.h"
3 #include "game-option/birth-options.h"
4 #include "grid/feature.h"
5 #include "io/input-key-acceptor.h"
6 #include "knowledge/knowledge-autopick.h"
7 #include "knowledge/knowledge-experiences.h"
8 #include "knowledge/knowledge-features.h"
9 #include "knowledge/knowledge-inventory.h"
10 #include "knowledge/knowledge-items.h"
11 #include "knowledge/knowledge-monsters.h"
12 #include "knowledge/knowledge-mutations.h"
13 #include "knowledge/knowledge-quests.h"
14 #include "knowledge/knowledge-self.h"
15 #include "knowledge/knowledge-uniques.h"
16 #include "main/sound-of-music.h"
17 #include "system/player-type-definition.h"
18 #include "term/gameterm.h"
19 #include "term/screen-processor.h"
20 #include "util/int-char-converter.h"
21 #include "view/display-messages.h"
22
23 /*
24  * Interact with "knowledge"
25  */
26 void do_cmd_knowledge(PlayerType *player_ptr)
27 {
28     int i, p = 0;
29     bool need_redraw = false;
30     screen_save();
31     TermCenteredOffsetSetter tcos(MAIN_TERM_MIN_COLS, MAIN_TERM_MIN_ROWS);
32     while (true) {
33         term_clear();
34         prt(format(_("%d/2 ページ", "page %d/2"), (p + 1)), 2, 65);
35         prt(_("現在の知識を確認する", "Display current knowledge"), 3, 0);
36         if (p == 0) {
37             prt(_("(1) 既知の伝説のアイテム                 の一覧", "(1) Display known artifacts"), 6, 5);
38             prt(_("(2) 既知のアイテム                       の一覧", "(2) Display known objects"), 7, 5);
39             prt(_("(3) 既知の生きているユニーク・モンスター の一覧", "(3) Display remaining uniques"), 8, 5);
40             prt(_("(4) 既知の撃破したユニーク・モンスター   の一覧", "(4) Display defeated uniques"), 9, 5);
41             prt(_("(5) 既知のモンスター                     の一覧", "(5) Display known monster"), 10, 5);
42             prt(_("(6) 倒した敵の数                         の一覧", "(6) Display kill count"), 11, 5);
43             if (!vanilla_town) {
44                 prt(_("(7) 賞金首                               の一覧", "(7) Display wanted monsters"), 12, 5);
45             }
46             prt(_("(8) 現在のペット                         の一覧", "(8) Display current pets"), 13, 5);
47             prt(_("(9) 我が家のアイテム                     の一覧", "(9) Display home inventory"), 14, 5);
48             prt(_("(0) *鑑定*済み装備の耐性                 の一覧", "(0) Display *identified* equip."), 15, 5);
49         } else {
50             prt(_("(a) 地形の表示文字/タイル                の一覧", "(a) Display terrain symbols"), 6, 5);
51             prt(_("(b) 自分に関する情報                     の一覧", "(b) Display about yourself"), 7, 5);
52             prt(_("(c) 突然変異                             の一覧", "(c) Display mutations"), 8, 5);
53             prt(_("(d) 武器の経験値                         の一覧", "(d) Display weapon proficiency"), 9, 5);
54             prt(_("(e) 魔法の経験値                         の一覧", "(e) Display spell proficiency"), 10, 5);
55             prt(_("(f) 技能の経験値                         の一覧", "(f) Display misc. proficiency"), 11, 5);
56             prt(_("(g) プレイヤーの徳                       の一覧", "(g) Display virtues"), 12, 5);
57             prt(_("(h) 入ったダンジョン                     の一覧", "(h) Display dungeons"), 13, 5);
58             prt(_("(i) 実行中のクエスト                     の一覧", "(i) Display current quests"), 14, 5);
59             prt(_("(k) 現在の自動拾い/破壊設定              の一覧", "(k) Display auto pick/destroy"), 15, 5);
60         }
61
62         prt(_("-続く-", "-more-"), 17, 8);
63         prt(_("ESC) 抜ける", "ESC) Exit menu"), 21, 1);
64         prt(_("SPACE) 次ページ", "SPACE) Next page"), 21, 30);
65         prt(_("コマンド:", "Command: "), 20, 0);
66         i = inkey();
67
68         if (i == ESCAPE) {
69             break;
70         }
71         switch (i) {
72         case ' ': /* Page change */
73         case '-':
74             p = 1 - p;
75             break;
76         case '1': /* Artifacts */
77             do_cmd_knowledge_artifacts(player_ptr);
78             break;
79         case '2': /* Objects */
80             do_cmd_knowledge_objects(player_ptr, &need_redraw, false, -1);
81             break;
82         case '3': /* Uniques */
83             do_cmd_knowledge_uniques(player_ptr, true);
84             break;
85         case '4': /* Uniques */
86             do_cmd_knowledge_uniques(player_ptr, false);
87             break;
88         case '5': /* Monsters */
89             do_cmd_knowledge_monsters(player_ptr, &need_redraw, false);
90             break;
91         case '6': /* Kill count  */
92             do_cmd_knowledge_kill_count(player_ptr);
93             break;
94         case '7': /* wanted */
95             if (!vanilla_town) {
96                 do_cmd_knowledge_bounty(player_ptr);
97             }
98             break;
99         case '8': /* Pets */
100             do_cmd_knowledge_pets(player_ptr);
101             break;
102         case '9': /* Home */
103             do_cmd_knowledge_home(player_ptr);
104             break;
105         case '0': /* Resist list */
106             do_cmd_knowledge_inventory(player_ptr);
107             break;
108         /* Next page */
109         case 'a': /* Feature list */
110         {
111             IDX lighting_level = F_LIT_STANDARD;
112             do_cmd_knowledge_features(&need_redraw, false, -1, &lighting_level);
113             break;
114         }
115         case 'b': /* Max stat */
116             do_cmd_knowledge_stat(player_ptr);
117             break;
118         case 'c': /* Mutations */
119             do_cmd_knowledge_mutations(player_ptr);
120             break;
121         case 'd': /* weapon-exp */
122             do_cmd_knowledge_weapon_exp(player_ptr);
123             break;
124         case 'e': /* spell-exp */
125             do_cmd_knowledge_spell_exp(player_ptr);
126             break;
127         case 'f': /* skill-exp */
128             do_cmd_knowledge_skill_exp(player_ptr);
129             break;
130         case 'g': /* Virtues */
131             do_cmd_knowledge_virtues(player_ptr);
132             break;
133         case 'h': /* Dungeon */
134             do_cmd_knowledge_dungeon(player_ptr);
135             break;
136         case 'i': /* Quests */
137             do_cmd_knowledge_quests(player_ptr);
138             break;
139         case 'k': /* Autopick */
140             do_cmd_knowledge_autopick(player_ptr);
141             break;
142         default: /* Unknown option */
143             bell();
144         }
145
146         msg_erase();
147     }
148
149     screen_load();
150     if (need_redraw) {
151         do_cmd_redraw(player_ptr);
152     }
153 }