32
32
#include " window/message_dialog.h"
33
33
#include " window/popup_dialog.h"
34
34
#include " window/resource_settings.h"
35
+ #include " window/autoconfig_window.h"
35
36
#include " window/trade_opened.h"
36
37
#include " game/game.h"
37
38
@@ -123,9 +124,9 @@ struct object_trade_info {
123
124
e_resource res;
124
125
};
125
126
126
- struct empire_window_t {
127
- int selected_button;
128
- int selected_city;
127
+ struct empire_window : public autoconfig_window_t <empire_window> {
128
+ int selected_button = 0 ;
129
+ int selected_city = 1 ;
129
130
vec2i min_pos, max_pos;
130
131
vec2i draw_offset;
131
132
int focus_button_id;
@@ -149,38 +150,43 @@ struct empire_window_t {
149
150
int trade_button_offset_y;
150
151
svector<object_trade_info, 16 > buying_goods;
151
152
svector<object_trade_info, 16 > selling_goods;
153
+
154
+ virtual int handle_mouse (const mouse *m) override { return 0 ; }
155
+ virtual int get_tooltip_text () override { return 0 ; }
156
+ virtual void draw_foreground () override {}
157
+ virtual int draw_background () override { return 0 ; }
158
+ virtual void ui_draw_foreground () override ;
159
+ virtual int ui_handle_mouse (const mouse *m) override { return 0 ; }
160
+ virtual void init () override ;
161
+
162
+ virtual void load (archive arch, pcstr section) override {
163
+ autoconfig_window::load (arch, section);
164
+
165
+ trade_column_spacing = arch.r_int (" trade_column_spacing" );
166
+ trade_row_spacing = arch.r_int (" trade_row_spacing" );
167
+ info_y_traded = arch.r_int (" info_y_traded" );
168
+ trade_button_offset_x = arch.r_int (" trade_button_offset_x" );
169
+ info_y_sells = arch.r_int (" info_y_sells" );
170
+ info_y_buys = arch.r_int (" info_y_buys" );
171
+ info_y_footer_1 = arch.r_int (" info_y_footer_1" );
172
+ info_y_city_name = arch.r_int (" info_y_city_name" );
173
+ info_y_city_desc = arch.r_int (" info_y_city_desc" );
174
+ text_group_old_names = arch.r_int (" text_group_old_names" );
175
+ text_group_new_names = arch.r_int (" text_group_new_names" );
176
+ trade_resource_size = arch.r_int (" trade_resource_size" );
177
+ trade_resource_offset = arch.r_int (" trade_resource_offset" );
178
+ sell_res_group = arch.r_int (" sell_res_group" );
179
+ trade_button_offset_y = arch.r_int (" trade_button_offset_y" );
180
+ }
152
181
};
153
182
154
- empire_window_t g_empire_window = { 0 , 1 } ;
183
+ empire_window g_empire_window;
155
184
156
- static void init (void ) {
157
- auto &data = g_empire_window;
158
- data.selected_button = 0 ;
185
+ void empire_window::init () {
186
+ selected_button = 0 ;
159
187
int selected_object = g_empire_map.selected_object ();
160
- data.selected_city = selected_object ? g_empire.get_city_for_object (selected_object - 1 ) : 0 ;
161
- data.focus_button_id = 0 ;
162
- }
163
-
164
- ANK_REGISTER_CONFIG_ITERATOR (config_load_empire_window_config);
165
- void config_load_empire_window_config () {
166
- g_config_arch.r_section (" empire_window" , [] (archive arch) {
167
- auto &g = g_empire_window;
168
- g.trade_column_spacing = arch.r_int (" trade_column_spacing" );
169
- g.trade_row_spacing = arch.r_int (" trade_row_spacing" );
170
- g.info_y_traded = arch.r_int (" info_y_traded" );
171
- g.trade_button_offset_x = arch.r_int (" trade_button_offset_x" );
172
- g.info_y_sells = arch.r_int (" info_y_sells" );
173
- g.info_y_buys = arch.r_int (" info_y_buys" );
174
- g.info_y_footer_1 = arch.r_int (" info_y_footer_1" );
175
- g.info_y_city_name = arch.r_int (" info_y_city_name" );
176
- g.info_y_city_desc = arch.r_int (" info_y_city_desc" );
177
- g.text_group_old_names = arch.r_int (" text_group_old_names" );
178
- g.text_group_new_names = arch.r_int (" text_group_new_names" );
179
- g.trade_resource_size = arch.r_int (" trade_resource_size" );
180
- g.trade_resource_offset = arch.r_int (" trade_resource_offset" );
181
- g.sell_res_group = arch.r_int (" sell_res_group" );
182
- g.trade_button_offset_y = arch.r_int (" trade_button_offset_y" );
183
- });
188
+ selected_city = selected_object ? g_empire.get_city_for_object (selected_object - 1 ) : 0 ;
189
+ focus_button_id = 0 ;
184
190
}
185
191
186
192
static void draw_trade_route (int route_id, e_empire_route_state effect) {
@@ -657,7 +663,7 @@ static void window_empire_draw_background(void) {
657
663
}
658
664
}
659
665
660
- static void window_empire_draw_foreground ( void ) {
666
+ void empire_window::ui_draw_foreground ( ) {
661
667
auto &data = g_empire_window;
662
668
// fade_in_out++;
663
669
// float v = 0.5 * (1.0 + sin(0.35 * (float)fade_in_out));
@@ -893,15 +899,15 @@ static void button_open_trade(int param1, int param2) {
893
899
}
894
900
895
901
void window_empire_show () {
896
- window_type window = {
902
+ static window_type window = {
897
903
WINDOW_EMPIRE,
898
904
window_empire_draw_background,
899
- window_empire_draw_foreground ,
905
+ [] { g_empire_window. ui_draw_foreground (); } ,
900
906
window_empire_handle_input,
901
907
window_empire_get_tooltip
902
908
};
903
909
904
- init ();
910
+ g_empire_window. init ();
905
911
window_show (&window);
906
912
}
907
913
0 commit comments