diff --git a/CMakeLists.txt b/CMakeLists.txt index 103e815..fba1b2e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -222,6 +222,7 @@ target_sources(system3 PRIVATE src/sys/nact_sys1.cpp src/sys/nact_sys2.cpp src/sys/nact_sys3.cpp + src/sys/nact_window.cpp src/sys/scenario.cpp ) if (ENABLE_DEBUGGER) diff --git a/src/sys/ags.cpp b/src/sys/ags.cpp index 663ba47..262b057 100644 --- a/src/sys/ags.cpp +++ b/src/sys/ags.cpp @@ -263,77 +263,6 @@ AGS::~AGS() SDL_DestroyTexture(sdlTexture); } -void AGS::load(FILEIO* fio) -{ - menu.font_size = fio->getw(); - text.font_size = fio->getw(); - palette_bank = fio->getw(); - if (!palette_bank) { - palette_bank = -1; - } - text.font_color = fio->getw(); - menu.font_color = fio->getw(); - menu.frame_color = fio->getw(); - menu.back_color = fio->getw(); - text.frame_color = fio->getw(); - text.back_color = fio->getw(); - for (int i = 0; i < 10; i++) { - int sx = fio->getw(); - int sy = fio->getw(); - int ex = fio->getw(); - int ey = fio->getw(); - bool save = fio->getw() ? true : false; - bool frame = fio->getw() ? true : false; - menu_w[i].reset(sx, sy, ex, ey, frame, save); - fio->getw(); - fio->getw(); - } - for (int i = 0; i < 10; i++) { - int sx = fio->getw(); - int sy = fio->getw(); - int ex = fio->getw(); - int ey = fio->getw(); - bool save = fio->getw() ? true : false; - bool frame = fio->getw() ? true : false; - text_w[i].reset(sx, sy, ex, ey, frame, save); - fio->getw(); - fio->getw(); - } -} - -void AGS::save(FILEIO* fio) -{ - fio->putw(menu.font_size); - fio->putw(text.font_size); - fio->putw(palette_bank == -1 ? 0 : palette_bank); - fio->putw(text.font_color); - fio->putw(menu.font_color); - fio->putw(menu.frame_color); - fio->putw(menu.back_color); - fio->putw(text.frame_color); - fio->putw(text.back_color); - for (int i = 0; i < 10; i++) { - fio->putw(menu_w[i].sx); - fio->putw(menu_w[i].sy); - fio->putw(menu_w[i].ex); - fio->putw(menu_w[i].ey); - fio->putw(menu_w[i].save ? 1 : 0); - fio->putw(menu_w[i].frame ? 1 : 0); - fio->putw(0); - fio->putw(0); - } - for (int i = 0; i < 10; i++) { - fio->putw(text_w[i].sx); - fio->putw(text_w[i].sy); - fio->putw(text_w[i].ex); - fio->putw(text_w[i].ey); - fio->putw(text_w[i].save ? 1 : 0); - fio->putw(text_w[i].frame ? 1 : 0); - fio->putw(0); - fio->putw(0); - } -} - void AGS::set_cg_file(const char *file_name) { bmp_prefix = NULL; diff --git a/src/sys/ags.h b/src/sys/ags.h index d623440..5d6a92c 100644 --- a/src/sys/ags.h +++ b/src/sys/ags.h @@ -101,9 +101,6 @@ public: AGS(const Config& config, const GameId& game_id); ~AGS(); - void load(FILEIO* fio); - void save(FILEIO* fio); - void update_screen(); void load_cg(int page, int transparent); @@ -232,7 +229,6 @@ public: uint8 cursor_color; int cursor_index; -private: // Window (B command) struct Window { int sx; @@ -248,6 +244,8 @@ private: }; Window menu_w[10]; Window text_w[10]; + +private: void init_windows(); // Box (E and Y7 commands) diff --git a/src/sys/nact.cpp b/src/sys/nact.cpp index f9d6a83..9797a13 100644 --- a/src/sys/nact.cpp +++ b/src/sys/nact.cpp @@ -546,7 +546,7 @@ bool NACT::load(int index) for (int i = 0; i < 512; i++) { var[i] = fio->getw(); } - ags->load(fio.get()); + load_display_state(fio.get()); for (int i = 0; i < 10; i++) { tvar[i] = fio->read_string(22); } @@ -586,7 +586,7 @@ bool NACT::save(int index, const char header[112]) for (int i = 0; i < 512; i++) { fio->putw(var[i]); } - ags->save(fio.get()); + save_display_state(fio.get()); for (int i = 0; i < 10; i++) { fio->write_string(tvar[i], 22); } diff --git a/src/sys/nact.h b/src/sys/nact.h index 5749f8f..a2bf869 100644 --- a/src/sys/nact.h +++ b/src/sys/nact.h @@ -32,6 +32,7 @@ class AGS; class MAKO; class MsgSkip; class Encoding; +class FILEIO; // special codes for NACT::exit_code const int NACT_HALT = -1; @@ -142,6 +143,8 @@ protected: bool load(int index); bool save(int index, const char header[112]); + void load_display_state(FILEIO* fio); + void save_display_state(FILEIO* fio); int menu_select(int num_items); void wait_after_open_menu(); diff --git a/src/sys/nact_window.cpp b/src/sys/nact_window.cpp new file mode 100644 index 0000000..e7559e6 --- /dev/null +++ b/src/sys/nact_window.cpp @@ -0,0 +1,80 @@ +/* + ALICE SOFT SYSTEM 3 for Win32 + + [ NACT - window ] +*/ + +#include "nact.h" +#include "ags.h" +#include "fileio.h" + +void NACT::load_display_state(FILEIO* fio) +{ + ags->menu.font_size = fio->getw(); + ags->text.font_size = fio->getw(); + ags->palette_bank = fio->getw(); + if (!ags->palette_bank) { + ags->palette_bank = -1; + } + ags->text.font_color = fio->getw(); + ags->menu.font_color = fio->getw(); + ags->menu.frame_color = fio->getw(); + ags->menu.back_color = fio->getw(); + ags->text.frame_color = fio->getw(); + ags->text.back_color = fio->getw(); + for (int i = 0; i < 10; i++) { + int sx = fio->getw(); + int sy = fio->getw(); + int ex = fio->getw(); + int ey = fio->getw(); + bool save = fio->getw() ? true : false; + bool frame = fio->getw() ? true : false; + ags->menu_w[i].reset(sx, sy, ex, ey, frame, save); + fio->getw(); + fio->getw(); + } + for (int i = 0; i < 10; i++) { + int sx = fio->getw(); + int sy = fio->getw(); + int ex = fio->getw(); + int ey = fio->getw(); + bool save = fio->getw() ? true : false; + bool frame = fio->getw() ? true : false; + ags->text_w[i].reset(sx, sy, ex, ey, frame, save); + fio->getw(); + fio->getw(); + } +} + +void NACT::save_display_state(FILEIO* fio) +{ + fio->putw(ags->menu.font_size); + fio->putw(ags->text.font_size); + fio->putw(ags->palette_bank == -1 ? 0 : ags->palette_bank); + fio->putw(ags->text.font_color); + fio->putw(ags->menu.font_color); + fio->putw(ags->menu.frame_color); + fio->putw(ags->menu.back_color); + fio->putw(ags->text.frame_color); + fio->putw(ags->text.back_color); + for (int i = 0; i < 10; i++) { + fio->putw(ags->menu_w[i].sx); + fio->putw(ags->menu_w[i].sy); + fio->putw(ags->menu_w[i].ex); + fio->putw(ags->menu_w[i].ey); + fio->putw(ags->menu_w[i].save ? 1 : 0); + fio->putw(ags->menu_w[i].frame ? 1 : 0); + fio->putw(0); + fio->putw(0); + } + for (int i = 0; i < 10; i++) { + fio->putw(ags->text_w[i].sx); + fio->putw(ags->text_w[i].sy); + fio->putw(ags->text_w[i].ex); + fio->putw(ags->text_w[i].ey); + fio->putw(ags->text_w[i].save ? 1 : 0); + fio->putw(ags->text_w[i].frame ? 1 : 0); + fio->putw(0); + fio->putw(0); + } +}