From 02be2915367a0efe4646deb033dceeeaefb45edc Mon Sep 17 00:00:00 2001 From: Matthew Fioravante Date: Sat, 13 Apr 2019 12:19:31 -0400 Subject: [PATCH] Scene_Name: use Args instead of game_temp --- src/game_interpreter_map.cpp | 27 +++++++++++++-------------- src/game_temp.cpp | 6 ------ src/game_temp.h | 4 ---- src/scene_name.cpp | 19 ++++++++++++------- src/scene_name.h | 8 +++++++- 5 files changed, 32 insertions(+), 32 deletions(-) diff --git a/src/game_interpreter_map.cpp b/src/game_interpreter_map.cpp index cb1505fd3c9..f4c235820bf 100644 --- a/src/game_interpreter_map.cpp +++ b/src/game_interpreter_map.cpp @@ -540,23 +540,22 @@ bool Game_Interpreter_Map::CommandEnterHeroName(RPG::EventCommand const& com) { return false; } - Game_Temp::hero_name_id = com.parameters[0]; - Game_Temp::hero_name_charset = com.parameters[1]; + const int actor_id = com.parameters[0]; - if (com.parameters[2] != 0) { - Game_Actor *actor = Game_Actors::GetActor(Game_Temp::hero_name_id); - - if (!actor) { - Output::Warning("EnterHeroName: Invalid actor ID %d", Game_Temp::hero_name_id); - Game_Temp::hero_name.clear(); - } else { - Game_Temp::hero_name = actor->GetName(); - } - } else { - Game_Temp::hero_name.clear(); + Game_Actor* actor = Game_Actors::GetActor(actor_id); + if (!actor) { + Output::Warning("ChangeHeroName: Invalid actor ID %d", actor_id); + return true; } - Scene::instance->SetRequestedScene(std::make_shared()); + Scene_Name::Args args; + + args.actor_id = actor_id; + args.charset = com.parameters[1]; + args.show_default_name = com.parameters[2]; + + + Scene::instance->SetRequestedScene(std::make_shared(std::move(args))); ++index; return false; } diff --git a/src/game_temp.cpp b/src/game_temp.cpp index 37aeb2f6276..111006b2a49 100644 --- a/src/game_temp.cpp +++ b/src/game_temp.cpp @@ -25,9 +25,6 @@ bool Game_Temp::transition_processing; Transition::TransitionType Game_Temp::transition_type; bool Game_Temp::transition_erase; int Game_Temp::inn_price; -std::string Game_Temp::hero_name; -int Game_Temp::hero_name_id; -int Game_Temp::hero_name_charset; bool Game_Temp::battle_running; int Game_Temp::battle_troop_id; std::string Game_Temp::battle_background; @@ -44,9 +41,6 @@ void Game_Temp::Init() { transition_type = Transition::TransitionNone; transition_erase = false; inn_price = 0; - hero_name = ""; - hero_name_id = 0; - hero_name_charset = 0; battle_running = false; battle_troop_id = 0; battle_background = {}; diff --git a/src/game_temp.h b/src/game_temp.h index 76099c4c8ae..6fce7a82d1f 100644 --- a/src/game_temp.h +++ b/src/game_temp.h @@ -44,10 +44,6 @@ class Game_Temp { static int inn_price; static bool inn_stay; - static std::string hero_name; - static int hero_name_id; - static int hero_name_charset; - static bool battle_running; static int battle_troop_id; static std::string battle_background; diff --git a/src/scene_name.cpp b/src/scene_name.cpp index f0217dbaf58..ee99613d62e 100644 --- a/src/scene_name.cpp +++ b/src/scene_name.cpp @@ -23,23 +23,29 @@ #include "game_temp.h" #include "input.h" #include "player.h" +#include "reader_util.h" -Scene_Name::Scene_Name() { +Scene_Name::Scene_Name(Args args) + : args(std::move(args)) +{ Scene::type = Scene::Name; } void Scene_Name::Start() { // Create the windows - name_window.reset(new Window_Name(96, 40, 192, 32)); - name_window->Set(Game_Temp::hero_name); + if (args.show_default_name) { + auto* actor = ReaderUtil::GetElement(Data::actors, args.actor_id); + assert(actor); + name_window->Set(actor->name); + } name_window->Refresh(); face_window.reset(new Window_Face(32, 8, 64, 64)); - face_window->Set(Game_Temp::hero_name_id); + face_window->Set(args.actor_id); face_window->Refresh(); - layout_index = Game_Temp::hero_name_charset; + layout_index = args.charset; const char* done = Window_Keyboard::DONE; // Japanese pages @@ -101,8 +107,7 @@ void Scene_Name::Update() { assert(!s.empty()); if (s == Window_Keyboard::DONE) { - Game_Temp::hero_name = name_window->Get(); - Game_Actor* actor = Game_Actors::GetActor(Game_Temp::hero_name_id); + Game_Actor* actor = Game_Actors::GetActor(args.actor_id); if (actor != NULL) { if (name_window->Get().empty()) { name_window->Set(actor->GetName()); diff --git a/src/scene_name.h b/src/scene_name.h index 1fc49f4eb22..727d1f7f8c3 100644 --- a/src/scene_name.h +++ b/src/scene_name.h @@ -29,10 +29,15 @@ class Scene_Name : public Scene { public: + struct Args { + int actor_id = 0; + int charset = 0; + bool show_default_name = false; + }; /** * Constructor. */ - Scene_Name(); + explicit Scene_Name(Args args); void Start() override; void Update() override; @@ -45,6 +50,7 @@ class Scene_Name : public Scene { std::unique_ptr kbd_window; std::unique_ptr name_window; std::unique_ptr face_window; + Args args; }; #endif