<ClCompile Include="..\..\src\io\store-key-processor.c" />\r
<ClCompile Include="..\..\src\load\info-loader.c" />\r
<ClCompile Include="..\..\src\main\angband-headers.c" />\r
+ <ClCompile Include="..\..\src\main\game-data-initializer.c" />\r
<ClCompile Include="..\..\src\main\info-initializer.c" />\r
<ClCompile Include="..\..\src\main\init-error-messages-table.c" />\r
<ClCompile Include="..\..\src\market\building-initializer.c" />\r
<ClInclude Include="..\..\src\load\info-loader.h" />\r
<ClInclude Include="..\..\src\locale\language-switcher.h" />\r
<ClInclude Include="..\..\src\main\angband-headers.h" />\r
+ <ClInclude Include="..\..\src\main\game-data-initializer.h" />\r
<ClInclude Include="..\..\src\main\info-initializer.h" />\r
<ClInclude Include="..\..\src\main\init-error-messages-table.h" />\r
<ClInclude Include="..\..\src\market\building-initializer.h" />\r
<ClCompile Include="..\..\src\market\building-initializer.c">
<Filter>market</Filter>
</ClCompile>
+ <ClCompile Include="..\..\src\main\game-data-initializer.c">
+ <Filter>main</Filter>
+ </ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\src\combat\shoot.h">
<ClInclude Include="..\..\src\market\building-initializer.h">
<Filter>market</Filter>
</ClInclude>
+ <ClInclude Include="..\..\src\main\game-data-initializer.h">
+ <Filter>main</Filter>
+ </ClInclude>
</ItemGroup>
<ItemGroup>
<None Include="..\..\src\wall.bmp" />
main.c main-x11.c main-gcu.c \
\
main/angband-headers.c main/angband-headers.h \
+ main/game-data-initializer.c main/game-data-initializer.h \
main/info-initializer.c main/info-initializer.h \
main/init.c main/init.h \
main/initialization-error-messages-table.c main/initialization-error-messages-table.h \
--- /dev/null
+#include "main/game-data-initializer.h"
+#include "cmd-io/macro-util.h"
+#include "dungeon/dungeon.h"
+#include "dungeon/quest.h"
+#include "floor/floor-util.h"
+#include "game-option/option-flags.h"
+#include "game-option/option-types-table.h"
+#include "grid/grid.h"
+#include "monster-race/monster-race.h"
+#include "object/object-kind.h"
+#include "system/alloc-entries.h"
+#include "system/floor-type-definition.h"
+#include "system/object-type-definition.h"
+#include "term/gameterm.h"
+#include "util/quarks.h"
+#include "util/tag-sorter.h"
+#include "view/display-messages.h"
+#include "world/world.h"
+
+/*!
+ * @brief \83}\83N\83\8d\93o\98^\82Ì\8dÅ\91å\90\94 / Maximum number of macros (see "io.c")
+ * @note Default: assume at most 256 macros are used
+ */
+static const int MACRO_MAX = 256;
+
+/*!
+ * @brief \83N\83G\83X\83g\8fî\95ñ\8f\89\8aú\89»\82Ì\83\81\83C\83\93\83\8b\81[\83`\83\93 /
+ * Initialize quest array
+ * @return \83G\83\89\81[\83R\81[\83h
+ */
+errr init_quests(void)
+{
+ C_MAKE(quest, max_q_idx, quest_type);
+ for (int i = 0; i < max_q_idx; i++)
+ quest[i].status = QUEST_STATUS_UNTAKEN;
+
+ return 0;
+}
+
+/*!
+ * @brief \82»\82Ì\91¼\82Ì\8f\89\8aú\8fî\95ñ\8dX\90V /
+ * Initialize some other arrays
+ * @return \83G\83\89\81[\83R\81[\83h
+ */
+errr init_other(player_type *player_ptr)
+{
+ player_ptr->current_floor_ptr = &floor_info; // TODO:\96{\93\96\82Í\82±\82ñ\82È\82Æ\82±\82ë\82Å\8f\89\8aú\89»\82µ\82½\82\82È\82¢
+ floor_type *floor_ptr = player_ptr->current_floor_ptr;
+ C_MAKE(floor_ptr->o_list, current_world_ptr->max_o_idx, object_type);
+ C_MAKE(floor_ptr->m_list, current_world_ptr->max_m_idx, monster_type);
+ for (int i = 0; i < MAX_MTIMED; i++)
+ C_MAKE(floor_ptr->mproc_list[i], current_world_ptr->max_m_idx, s16b);
+
+ C_MAKE(max_dlv, current_world_ptr->max_d_idx, DEPTH);
+ for (int i = 0; i < MAX_HGT; i++)
+ C_MAKE(floor_ptr->grid_array[i], MAX_WID, grid_type);
+
+ C_MAKE(macro__pat, MACRO_MAX, concptr);
+ C_MAKE(macro__act, MACRO_MAX, concptr);
+ C_MAKE(macro__cmd, MACRO_MAX, bool);
+ C_MAKE(macro__buf, 1024, char);
+ quark_init();
+
+ C_MAKE(message__ptr, MESSAGE_MAX, u32b);
+ C_MAKE(message__buf, MESSAGE_BUF, char);
+ message__tail = MESSAGE_BUF;
+
+ for (int i = 0; option_info[i].o_desc; i++) {
+ int os = option_info[i].o_set;
+ int ob = option_info[i].o_bit;
+ if (!option_info[i].o_var)
+ continue;
+
+ option_mask[os] |= (1L << ob);
+ if (option_info[i].o_norm)
+ option_flag[os] |= (1L << ob);
+ else
+ option_flag[os] &= ~(1L << ob);
+ }
+
+ for (int n = 0; n < 8; n++)
+ for (int i = 0; i < 32; i++)
+ if (window_flag_desc[i])
+ window_mask[n] |= (1L << i);
+
+ /*
+ * Set the "default" window flags
+ * Window 1 : Display messages
+ * Window 2 : Display inven/equip
+ */
+ window_flag[1] = 1L << A_MAX;
+ window_flag[2] = 1L << 0;
+ (void)format("%s (%s).", "Mr.Hoge", MAINTAINER);
+ return 0;
+}
+
+/*!
+ * @brief \83I\83u\83W\83F\83N\83g\94z\97ñ\82ð\8f\89\8aú\89»\82·\82é /
+ * Initialize some other arrays
+ * @return \83G\83\89\81[\83R\81[\83h
+ */
+errr init_object_alloc(void)
+{
+ s16b aux[MAX_DEPTH];
+ (void)C_WIPE(&aux, MAX_DEPTH, s16b);
+
+ s16b num[MAX_DEPTH];
+ (void)C_WIPE(&num, MAX_DEPTH, s16b);
+
+ if (alloc_kind_table)
+ C_KILL(alloc_kind_table, alloc_kind_size, alloc_entry);
+
+ alloc_kind_size = 0;
+ for (int i = 1; i < max_k_idx; i++) {
+ object_kind *k_ptr;
+ k_ptr = &k_info[i];
+ for (int j = 0; j < 4; j++) {
+ if (k_ptr->chance[j]) {
+ alloc_kind_size++;
+ num[k_ptr->locale[j]]++;
+ }
+ }
+ }
+
+ for (int i = 1; i < MAX_DEPTH; i++)
+ num[i] += num[i - 1];
+
+ if (!num[0])
+ quit(_("\92¬\82Ì\83A\83C\83e\83\80\82ª\82È\82¢\81I", "No town objects!"));
+
+ C_MAKE(alloc_kind_table, alloc_kind_size, alloc_entry);
+ alloc_entry *table;
+ table = alloc_kind_table;
+ for (int i = 1; i < max_k_idx; i++) {
+ object_kind *k_ptr;
+ k_ptr = &k_info[i];
+ for (int j = 0; j < 4; j++) {
+ if (k_ptr->chance[j] == 0)
+ continue;
+
+ int x = k_ptr->locale[j];
+ int p = (100 / k_ptr->chance[j]);
+ int y = (x > 0) ? num[x - 1] : 0;
+ int z = y + aux[x];
+ table[z].index = (KIND_OBJECT_IDX)i;
+ table[z].level = (DEPTH)x;
+ table[z].prob1 = (PROB)p;
+ table[z].prob2 = (PROB)p;
+ table[z].prob3 = (PROB)p;
+ aux[x]++;
+ }
+ }
+
+ return 0;
+}
+
+/*!
+ * @brief \83\82\83\93\83X\83^\81[\94z\97ñ\82Æ\90¶\90¬\83e\81[\83u\83\8b\82ð\8f\89\8aú\89»\82·\82é /
+ * Initialize some other arrays
+ * @return \83G\83\89\81[\83R\81[\83h
+ */
+errr init_alloc(void)
+{
+ monster_race *r_ptr;
+ tag_type *elements;
+ C_MAKE(elements, max_r_idx, tag_type);
+ for (int i = 1; i < max_r_idx; i++) {
+ elements[i].tag = r_info[i].level;
+ elements[i].index = i;
+ }
+
+ tag_sort(elements, max_r_idx);
+ alloc_race_size = max_r_idx;
+ C_MAKE(alloc_race_table, alloc_race_size, alloc_entry);
+ for (int i = 1; i < max_r_idx; i++) {
+ r_ptr = &r_info[elements[i].index];
+ if (r_ptr->rarity == 0)
+ continue;
+
+ int x = r_ptr->level;
+ int p = (100 / r_ptr->rarity);
+ alloc_race_table[i].index = (KIND_OBJECT_IDX)elements[i].index;
+ alloc_race_table[i].level = (DEPTH)x;
+ alloc_race_table[i].prob1 = (PROB)p;
+ alloc_race_table[i].prob2 = (PROB)p;
+ alloc_race_table[i].prob3 = (PROB)p;
+ }
+
+ C_KILL(elements, max_r_idx, tag_type);
+ (void)init_object_alloc();
+ return 0;
+}
--- /dev/null
+#pragma once
+
+#include "system/angband.h"
+
+errr init_quests(void);
+errr init_other(player_type *player_ptr);
+errr init_object_alloc(void);
+errr init_alloc(void);
#include "io/read-pref-file.h"
#include "io/uid-checker.h"
#include "main/angband-headers.h"
+#include "main/game-data-initializer.h"
#include "main/info-initializer.h"
#include "main/init-error-messages-table.h"
#include "market/articles-on-sale.h"
#include "world/world.h"
/*!
- * @brief マクロ登録の最大数 / Maximum number of macros (see "io.c")
- * @note Default: assume at most 256 macros are used
- */
-static const int MACRO_MAX = 256;
-
-/*!
* @brief 各データファイルを読み取るためのパスを取得する
* Find the default paths to all of our important sub-directories.
* @param path パス保管先の文字列
}
/*!
- * @brief クエスト情報初期化のメインルーチン /
- * Initialize quest array
- * @return エラーコード
- */
-static errr init_quests(void)
-{
- C_MAKE(quest, max_q_idx, quest_type);
- for (int i = 0; i < max_q_idx; i++)
- quest[i].status = QUEST_STATUS_UNTAKEN;
-
- return 0;
-}
-
-/*!
- * @brief その他の初期情報更新 /
- * Initialize some other arrays
- * @return エラーコード
- */
-static errr init_other(player_type *player_ptr)
-{
- player_ptr->current_floor_ptr = &floor_info; // TODO:本当はこんなところで初期化したくない
- floor_type *floor_ptr = player_ptr->current_floor_ptr;
- C_MAKE(floor_ptr->o_list, current_world_ptr->max_o_idx, object_type);
- C_MAKE(floor_ptr->m_list, current_world_ptr->max_m_idx, monster_type);
- for (int i = 0; i < MAX_MTIMED; i++)
- C_MAKE(floor_ptr->mproc_list[i], current_world_ptr->max_m_idx, s16b);
-
- C_MAKE(max_dlv, current_world_ptr->max_d_idx, DEPTH);
- for (int i = 0; i < MAX_HGT; i++)
- C_MAKE(floor_ptr->grid_array[i], MAX_WID, grid_type);
-
- C_MAKE(macro__pat, MACRO_MAX, concptr);
- C_MAKE(macro__act, MACRO_MAX, concptr);
- C_MAKE(macro__cmd, MACRO_MAX, bool);
- C_MAKE(macro__buf, 1024, char);
- quark_init();
-
- C_MAKE(message__ptr, MESSAGE_MAX, u32b);
- C_MAKE(message__buf, MESSAGE_BUF, char);
- message__tail = MESSAGE_BUF;
-
- for (int i = 0; option_info[i].o_desc; i++) {
- int os = option_info[i].o_set;
- int ob = option_info[i].o_bit;
- if (!option_info[i].o_var)
- continue;
-
- option_mask[os] |= (1L << ob);
- if (option_info[i].o_norm)
- option_flag[os] |= (1L << ob);
- else
- option_flag[os] &= ~(1L << ob);
- }
-
- for (int n = 0; n < 8; n++)
- for (int i = 0; i < 32; i++)
- if (window_flag_desc[i])
- window_mask[n] |= (1L << i);
-
- /*
- * Set the "default" window flags
- * Window 1 : Display messages
- * Window 2 : Display inven/equip
- */
- window_flag[1] = 1L << A_MAX;
- window_flag[2] = 1L << 0;
- (void)format("%s (%s).", "Mr.Hoge", MAINTAINER);
- return 0;
-}
-
-/*!
- * @brief オブジェクト配列を初期化する /
- * Initialize some other arrays
- * @return エラーコード
- */
-static errr init_object_alloc(void)
-{
- s16b aux[MAX_DEPTH];
- (void)C_WIPE(&aux, MAX_DEPTH, s16b);
-
- s16b num[MAX_DEPTH];
- (void)C_WIPE(&num, MAX_DEPTH, s16b);
-
- if (alloc_kind_table)
- C_KILL(alloc_kind_table, alloc_kind_size, alloc_entry);
-
- alloc_kind_size = 0;
- for (int i = 1; i < max_k_idx; i++) {
- object_kind *k_ptr;
- k_ptr = &k_info[i];
- for (int j = 0; j < 4; j++) {
- if (k_ptr->chance[j]) {
- alloc_kind_size++;
- num[k_ptr->locale[j]]++;
- }
- }
- }
-
- for (int i = 1; i < MAX_DEPTH; i++)
- num[i] += num[i - 1];
-
- if (!num[0])
- quit(_("町のアイテムがない!", "No town objects!"));
-
- C_MAKE(alloc_kind_table, alloc_kind_size, alloc_entry);
- alloc_entry *table;
- table = alloc_kind_table;
- for (int i = 1; i < max_k_idx; i++) {
- object_kind *k_ptr;
- k_ptr = &k_info[i];
- for (int j = 0; j < 4; j++) {
- if (k_ptr->chance[j] == 0)
- continue;
-
- int x = k_ptr->locale[j];
- int p = (100 / k_ptr->chance[j]);
- int y = (x > 0) ? num[x - 1] : 0;
- int z = y + aux[x];
- table[z].index = (KIND_OBJECT_IDX)i;
- table[z].level = (DEPTH)x;
- table[z].prob1 = (PROB)p;
- table[z].prob2 = (PROB)p;
- table[z].prob3 = (PROB)p;
- aux[x]++;
- }
- }
-
- return 0;
-}
-
-/*!
- * @brief モンスター配列と生成テーブルを初期化する /
- * Initialize some other arrays
- * @return エラーコード
- */
-static errr init_alloc(void)
-{
- monster_race *r_ptr;
- tag_type *elements;
- C_MAKE(elements, max_r_idx, tag_type);
- for (int i = 1; i < max_r_idx; i++) {
- elements[i].tag = r_info[i].level;
- elements[i].index = i;
- }
-
- tag_sort(elements, max_r_idx);
- alloc_race_size = max_r_idx;
- C_MAKE(alloc_race_table, alloc_race_size, alloc_entry);
- for (int i = 1; i < max_r_idx; i++) {
- r_ptr = &r_info[elements[i].index];
- if (r_ptr->rarity == 0)
- continue;
-
- int x = r_ptr->level;
- int p = (100 / r_ptr->rarity);
- alloc_race_table[i].index = (KIND_OBJECT_IDX)elements[i].index;
- alloc_race_table[i].level = (DEPTH)x;
- alloc_race_table[i].prob1 = (PROB)p;
- alloc_race_table[i].prob2 = (PROB)p;
- alloc_race_table[i].prob3 = (PROB)p;
- }
-
- C_KILL(elements, max_r_idx, tag_type);
- (void)init_object_alloc();
- return 0;
-}
-
-/*!
* @brief 画面左下にシステムメッセージを表示する /
* Hack -- take notes on line 23
* @return なし