From d98b2884ed3f53f08833fc21a5c603885fe8e744 Mon Sep 17 00:00:00 2001 From: kichikuou Date: Sun, 5 Jan 2025 08:14:02 +0900 Subject: [PATCH] Refactoring: Move declaration of NACT_Sys* classes to cpp files --- src/sys/nact.cpp | 6 +- src/sys/nact.h | 182 +----------------------------------------- src/sys/nact_sys1.cpp | 54 +++++++++++++ src/sys/nact_sys2.cpp | 43 ++++++++++ src/sys/nact_sys3.cpp | 115 ++++++++++++++++++++++++++ 5 files changed, 218 insertions(+), 182 deletions(-) diff --git a/src/sys/nact.cpp b/src/sys/nact.cpp index 588d969..64a1b83 100644 --- a/src/sys/nact.cpp +++ b/src/sys/nact.cpp @@ -888,10 +888,10 @@ void NACT::select_cursor() NACT* NACT::create(const Config& config, const GameId& game_id) { switch (game_id.sys_ver) { case 1: - return new NACT_Sys1(config, game_id); + return create_system1(config, game_id); case 2: - return new NACT_Sys2(config, game_id); + return create_system2(config, game_id); default: - return new NACT_Sys3(config, game_id); + return create_system3(config, game_id); } } diff --git a/src/sys/nact.h b/src/sys/nact.h index eb1991a..33cd00f 100644 --- a/src/sys/nact.h +++ b/src/sys/nact.h @@ -18,68 +18,9 @@ #include "scenario.h" #define RND var[ 0] -#define D01 var[ 1] -#define D02 var[ 2] -#define D03 var[ 3] -#define D04 var[ 4] -#define D05 var[ 5] -#define D06 var[ 6] -#define D07 var[ 7] -#define D08 var[ 8] -#define D09 var[ 9] -#define D10 var[10] -#define D11 var[11] -#define D12 var[12] -#define D13 var[13] -#define D14 var[14] -#define D15 var[15] -#define D16 var[16] -#define D17 var[17] -#define D18 var[18] -#define D19 var[19] -#define D20 var[20] -#define U01 var[21] -#define U02 var[22] -#define U03 var[23] -#define U04 var[24] -#define U05 var[25] -#define U06 var[26] -#define U07 var[27] -#define U08 var[28] -#define U09 var[29] -#define U10 var[30] -#define U11 var[31] -#define U12 var[32] -#define U13 var[33] -#define U14 var[34] -#define U15 var[35] -#define U16 var[36] -#define U17 var[37] -#define U18 var[38] -#define U19 var[39] -#define U20 var[40] -#define B01 var[41] -#define B02 var[42] -#define B03 var[43] -#define B04 var[44] -#define B05 var[45] -#define B06 var[46] -#define B07 var[47] -#define B08 var[48] -#define B09 var[49] -#define B10 var[50] -#define B11 var[51] -#define B12 var[52] -#define B13 var[53] -#define B14 var[54] -#define B15 var[55] -#define B16 var[56] -#define M_X var[57] -#define M_Y var[58] #define MAX_VERB 128 #define MAX_OBJ 256 -#define MAX_PCM 256 #define MAX_VAR 512 #define MAX_STRVAR 10 @@ -169,11 +110,9 @@ protected: // DPS bool text_refresh; - bool column = true; // 座標モード bool wait_keydown = true; // ウェイト時のキー受付 int text_wait_time = 100; // テキスト表示のウェイト bool text_wait_enb = false; // テキスト表示のウェイト有効/無効 - int mouse_sence = 16; // マウス感度 int menu_window = 1; // メニューウィンドウ番号 int text_window = 1; // メッセージウィンドウ番号 @@ -194,9 +133,6 @@ protected: bool verb_obj = false; // 動詞-形容詞型メニューの定義中 bool set_palette = false; - int pcm_index = 0; - int pcm[MAX_PCM] = {}; - // 下位関数 bool is_message(uint8_t c) { return c == ' ' || c & 0x80; } @@ -215,8 +151,6 @@ protected: SDL_GameController *sdl_gamecontroller = NULL; - int mouse_x = 0, mouse_y = 0; - // Y27 ダイアログ void text_dialog(); @@ -262,120 +196,10 @@ private: void pump_events(); void handle_event(SDL_Event e); bool handle_platform_event(const SDL_Event& e); -}; -class NACT_Sys1 final : public NACT { -public: - NACT_Sys1(const Config& config, const GameId& game_id); -protected: - void cmd_branch() override; - void cmd_open_verb() override; - void cmd_b() override; - void cmd_d() override; - void cmd_e() override; - void cmd_g() override; - void cmd_h() override; - void cmd_i() override; - void cmd_j() override; - void cmd_k() override; - void cmd_l() override; - void cmd_m() override; - void cmd_n() override; - void cmd_o() override; - void cmd_p() override; - void cmd_q() override; - void cmd_t() override; - void cmd_u() override; - void cmd_v() override; - void cmd_w() override; - void cmd_y() override; - void cmd_z() override; - void opening() override; - uint16 cali() override; - -private: - void cmd_open_obj(int verb); - - // Intruder Zコマンド - int paint_x; - int paint_y; - int map_page; - - // GAKUEN - bool enable_graphics = true; - // Rance 2 - int last_paint_x = -1, last_paint_y = -1; -}; - -class NACT_Sys2 final : public NACT { -public: - NACT_Sys2(const Config& config, const GameId& game_id) : NACT(config, game_id) {} -protected: - void cmd_branch() override; - void cmd_open_verb() override; - void cmd_b() override; - void cmd_d() override; - void cmd_e() override; - void cmd_g() override; - void cmd_h() override; - void cmd_i() override; - void cmd_j() override; - void cmd_k() override; - void cmd_l() override; - void cmd_m() override; - void cmd_n() override; - void cmd_o() override; - void cmd_p() override; - void cmd_q() override; - void cmd_t() override; - void cmd_u() override; - void cmd_v() override; - void cmd_w() override; - void cmd_y() override; - void cmd_z() override; - uint16 cali() override; - -private: - void cmd_open_obj(int verb); -}; - -class NACT_Sys3 final : public NACT { -public: - NACT_Sys3(const Config& config, const GameId& game_id) : NACT(config, game_id) {} -protected: - void cmd_branch() override; - void cmd_open_verb() override; - void cmd_b() override; - void cmd_d() override; - void cmd_e() override; - void cmd_g() override; - void cmd_h() override; - void cmd_i() override; - void cmd_j() override; - void cmd_k() override; - void cmd_l() override; - void cmd_m() override; - void cmd_n() override; - void cmd_o() override; - void cmd_p() override; - void cmd_q() override; - void cmd_t() override; - void cmd_u() override; - void cmd_v() override; - void cmd_w() override; - void cmd_y() override; - void cmd_z() override; - uint16 cali() override; - -private: - void cmd_open_obj(int verb); - uint16 cali2(); - - struct K3HackInfo; - static const K3HackInfo yakata3cd_k3_hack_table[]; - static const K3HackInfo yakata3fd_k3_hack_table[]; - static const K3HackInfo onlyyou_k3_hack_table[]; - bool k3_hack(const K3HackInfo* info_table); + static NACT* create_system1(const Config& config, const GameId& game_id); + static NACT* create_system2(const Config& config, const GameId& game_id); + static NACT* create_system3(const Config& config, const GameId& game_id); }; extern std::unique_ptr g_nact; diff --git a/src/sys/nact_sys1.cpp b/src/sys/nact_sys1.cpp index 634db5c..959b73c 100644 --- a/src/sys/nact_sys1.cpp +++ b/src/sys/nact_sys1.cpp @@ -21,6 +21,52 @@ #include "encoding.h" #include "texthook.h" +namespace { + +class NACT_Sys1 final : public NACT { +public: + NACT_Sys1(const Config& config, const GameId& game_id); + +protected: + void cmd_branch() override; + void cmd_open_verb() override; + void cmd_b() override; + void cmd_d() override; + void cmd_e() override; + void cmd_g() override; + void cmd_h() override; + void cmd_i() override; + void cmd_j() override; + void cmd_k() override; + void cmd_l() override; + void cmd_m() override; + void cmd_n() override; + void cmd_o() override; + void cmd_p() override; + void cmd_q() override; + void cmd_t() override; + void cmd_u() override; + void cmd_v() override; + void cmd_w() override; + void cmd_y() override; + void cmd_z() override; + void opening() override; + uint16 cali() override; + +private: + void cmd_open_obj(int verb); + + // Intruder Zコマンド + int paint_x; + int paint_y; + int map_page; + + // GAKUEN + bool enable_graphics = true; + // Rance 2 + int last_paint_x = -1, last_paint_y = -1; +}; + #define WAIT(tm) \ { \ Uint32 dwTime = SDL_GetTicks() + (tm); \ @@ -999,3 +1045,11 @@ uint16 NACT_Sys1::cali() } return (uint16)(cali[1] & 0xffff); } + +} // namespace + +// static +NACT* NACT::create_system1(const Config& config, const GameId& game_id) +{ + return new NACT_Sys1(config, game_id); +} diff --git a/src/sys/nact_sys2.cpp b/src/sys/nact_sys2.cpp index 57fbd3d..2117494 100644 --- a/src/sys/nact_sys2.cpp +++ b/src/sys/nact_sys2.cpp @@ -15,6 +15,41 @@ #include "encoding.h" #include "texthook.h" +namespace { + +class NACT_Sys2 final : public NACT { +public: + NACT_Sys2(const Config& config, const GameId& game_id) : NACT(config, game_id) {} + +protected: + void cmd_branch() override; + void cmd_open_verb() override; + void cmd_b() override; + void cmd_d() override; + void cmd_e() override; + void cmd_g() override; + void cmd_h() override; + void cmd_i() override; + void cmd_j() override; + void cmd_k() override; + void cmd_l() override; + void cmd_m() override; + void cmd_n() override; + void cmd_o() override; + void cmd_p() override; + void cmd_q() override; + void cmd_t() override; + void cmd_u() override; + void cmd_v() override; + void cmd_w() override; + void cmd_y() override; + void cmd_z() override; + uint16 cali() override; + +private: + void cmd_open_obj(int verb); +}; + #define WAIT(tm) \ { \ Uint32 dwTime = SDL_GetTicks() + (tm); \ @@ -944,3 +979,11 @@ uint16 NACT_Sys2::cali() } return (uint16)(cali[1] & 0xffff); } + +} // namespace + +// static +NACT* NACT::create_system2(const Config& config, const GameId& game_id) +{ + return new NACT_Sys2(config, game_id); +} diff --git a/src/sys/nact_sys3.cpp b/src/sys/nact_sys3.cpp index 96a5375..89f5615 100644 --- a/src/sys/nact_sys3.cpp +++ b/src/sys/nact_sys3.cpp @@ -15,6 +15,113 @@ #include "encoding.h" #include "texthook.h" +#define D01 var[ 1] +#define D02 var[ 2] +#define D03 var[ 3] +#define D04 var[ 4] +#define D05 var[ 5] +#define D06 var[ 6] +#define D07 var[ 7] +#define D08 var[ 8] +#define D09 var[ 9] +#define D10 var[10] +#define D11 var[11] +#define D12 var[12] +#define D13 var[13] +#define D14 var[14] +#define D15 var[15] +#define D16 var[16] +#define D17 var[17] +#define D18 var[18] +#define D19 var[19] +#define D20 var[20] +#define U01 var[21] +#define U02 var[22] +#define U03 var[23] +#define U04 var[24] +#define U05 var[25] +#define U06 var[26] +#define U07 var[27] +#define U08 var[28] +#define U09 var[29] +#define U10 var[30] +#define U11 var[31] +#define U12 var[32] +#define U13 var[33] +#define U14 var[34] +#define U15 var[35] +#define U16 var[36] +#define U17 var[37] +#define U18 var[38] +#define U19 var[39] +#define U20 var[40] +#define B01 var[41] +#define B02 var[42] +#define B03 var[43] +#define B04 var[44] +#define B05 var[45] +#define B06 var[46] +#define B07 var[47] +#define B08 var[48] +#define B09 var[49] +#define B10 var[50] +#define B11 var[51] +#define B12 var[52] +#define B13 var[53] +#define B14 var[54] +#define B15 var[55] +#define B16 var[56] +#define M_X var[57] +#define M_Y var[58] + +#define MAX_PCM 256 + +namespace { + +class NACT_Sys3 final : public NACT { +public: + NACT_Sys3(const Config& config, const GameId& game_id) : NACT(config, game_id) {} + +protected: + void cmd_branch() override; + void cmd_open_verb() override; + void cmd_b() override; + void cmd_d() override; + void cmd_e() override; + void cmd_g() override; + void cmd_h() override; + void cmd_i() override; + void cmd_j() override; + void cmd_k() override; + void cmd_l() override; + void cmd_m() override; + void cmd_n() override; + void cmd_o() override; + void cmd_p() override; + void cmd_q() override; + void cmd_t() override; + void cmd_u() override; + void cmd_v() override; + void cmd_w() override; + void cmd_y() override; + void cmd_z() override; + uint16 cali() override; + +private: + int pcm_index = 0; + int pcm[MAX_PCM] = {}; + bool column = true; // 座標モード + int mouse_sence = 16; // マウス感度 + + void cmd_open_obj(int verb); + uint16 cali2(); + + struct K3HackInfo; + static const K3HackInfo yakata3cd_k3_hack_table[]; + static const K3HackInfo yakata3fd_k3_hack_table[]; + static const K3HackInfo onlyyou_k3_hack_table[]; + bool k3_hack(const K3HackInfo* info_table); +}; void NACT_Sys3::cmd_branch() { @@ -1259,3 +1366,11 @@ bool NACT_Sys3::k3_hack(const K3HackInfo* info_table) return true; } + +} // namespace + +// static +NACT* NACT::create_system3(const Config& config, const GameId& game_id) +{ + return new NACT_Sys3(config, game_id); +}