From eb8ea096d757333729f71ca47aed612ec1fdcf7d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=28=C2=B4=E3=83=BB=CF=89=E3=83=BB=EF=BD=80=29?=
 <Ranran-the-JuicyPork@users.noreply.github.com>
Date: Sat, 24 Sep 2022 17:32:13 +0900
Subject: [PATCH] CHG: Changed so that multiple halt and convoy dialogs are
 saved

---
 src/simutrans/gui/convoi_info.h | 2 +-
 src/simutrans/gui/halt_info.h   | 2 +-
 src/simutrans/gui/simwin.cc     | 8 ++++++--
 3 files changed, 8 insertions(+), 4 deletions(-)

diff --git a/src/simutrans/gui/convoi_info.h b/src/simutrans/gui/convoi_info.h
index 8576a38ca5..001b9d22de 100644
--- a/src/simutrans/gui/convoi_info.h
+++ b/src/simutrans/gui/convoi_info.h
@@ -145,7 +145,7 @@ class convoi_info_t : public gui_frame_t, private action_listener_t
 
 	void rdwr( loadsave_t *file ) OVERRIDE;
 
-	uint32 get_rdwr_id() OVERRIDE { return magic_convoi_info; }
+	uint32 get_rdwr_id() OVERRIDE { return magic_convoi_info+cnv.get_id(); }
 
 	void route_search_finished() { route_search_in_progress = false; }
 
diff --git a/src/simutrans/gui/halt_info.h b/src/simutrans/gui/halt_info.h
index 676928e8fd..d909ade2ae 100644
--- a/src/simutrans/gui/halt_info.h
+++ b/src/simutrans/gui/halt_info.h
@@ -116,7 +116,7 @@ class halt_info_t : public gui_frame_t, private action_listener_t
 
 	void rdwr( loadsave_t *file ) OVERRIDE;
 
-	uint32 get_rdwr_id() OVERRIDE { return magic_halt_info; }
+	uint32 get_rdwr_id() OVERRIDE { return magic_halt_info+halt.get_id(); }
 };
 
 #endif
diff --git a/src/simutrans/gui/simwin.cc b/src/simutrans/gui/simwin.cc
index 6d2a9a49c7..b10b1f5771 100644
--- a/src/simutrans/gui/simwin.cc
+++ b/src/simutrans/gui/simwin.cc
@@ -593,9 +593,7 @@ void rdwr_all_win(loadsave_t *file)
 					case magic_none: return;
 
 					// actual dialogues to restore
-					case magic_convoi_info:    w = new convoi_info_t(); break;
 					case magic_themes:         w = new themeselector_t(); break;
-					case magic_halt_info:      w = new halt_info_t(); break;
 					case magic_reliefmap:      w = new map_frame_t(); break;
 					case magic_ki_kontroll_t:  w = new ki_kontroll_t(); break;
 					case magic_line_schedule_rdwr_dummy: w = new line_management_gui_t(); break;
@@ -632,6 +630,12 @@ void rdwr_all_win(loadsave_t *file)
 							tool_t::toolbar_tool[id-magic_toolbar]->update(wl->get_active_player());
 							w = tool_t::toolbar_tool[id-magic_toolbar]->get_tool_selector();
 						}
+						else if( id>=magic_convoi_info && id<magic_convoi_info+0x10000  ) {
+							w = new convoi_info_t();
+						}
+						else if( id>=magic_halt_info  &&  id<magic_halt_info+0x10000  ) {
+							w = new halt_info_t();
+						}
 						else {
 							dbg->error( "rdwr_all_win()", "No idea how to restore magic 0x%X", id );
 							return;