Skip to content

Commit 4e6a87c

Browse files
committed
ui: empire map simplified loading options from config
1 parent 63b3b35 commit 4e6a87c

File tree

2 files changed

+42
-37
lines changed

2 files changed

+42
-37
lines changed

src/window/window_empire.cpp

+41-35
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
#include "window/message_dialog.h"
3333
#include "window/popup_dialog.h"
3434
#include "window/resource_settings.h"
35+
#include "window/autoconfig_window.h"
3536
#include "window/trade_opened.h"
3637
#include "game/game.h"
3738

@@ -123,9 +124,9 @@ struct object_trade_info {
123124
e_resource res;
124125
};
125126

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;
129130
vec2i min_pos, max_pos;
130131
vec2i draw_offset;
131132
int focus_button_id;
@@ -149,38 +150,43 @@ struct empire_window_t {
149150
int trade_button_offset_y;
150151
svector<object_trade_info, 16> buying_goods;
151152
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+
}
152181
};
153182

154-
empire_window_t g_empire_window = {0, 1};
183+
empire_window g_empire_window;
155184

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;
159187
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;
184190
}
185191

186192
static void draw_trade_route(int route_id, e_empire_route_state effect) {
@@ -657,7 +663,7 @@ static void window_empire_draw_background(void) {
657663
}
658664
}
659665

660-
static void window_empire_draw_foreground(void) {
666+
void empire_window::ui_draw_foreground() {
661667
auto &data = g_empire_window;
662668
// fade_in_out++;
663669
// 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) {
893899
}
894900

895901
void window_empire_show() {
896-
window_type window = {
902+
static window_type window = {
897903
WINDOW_EMPIRE,
898904
window_empire_draw_background,
899-
window_empire_draw_foreground,
905+
[] { g_empire_window.ui_draw_foreground(); },
900906
window_empire_handle_input,
901907
window_empire_get_tooltip
902908
};
903909

904-
init();
910+
g_empire_window.init();
905911
window_show(&window);
906912
}
907913

src/window/window_empire.h

+1-2
Original file line numberDiff line numberDiff line change
@@ -8,5 +8,4 @@ enum e_empire_route_state {
88
};
99

1010
void window_empire_show();
11-
void window_empire_show_checked();
12-
11+
void window_empire_show_checked();

0 commit comments

Comments
 (0)