@@ -35,29 +35,34 @@ enum E_STATUS {
35
35
36
36
static int get_request_status (int index) {
37
37
scenario_request request = scenario_request_get_visible (index );
38
- if (request.is_valid ()) {
39
- if (request.resource == RESOURCE_DEBEN) {
40
- if (city_finance_treasury () <= request.amount ) {
41
- return STATUS_NOT_ENOUGH_RESOURCES;
42
- }
43
- } else if (request.resource == RESOURCE_TROOPS) {
44
- if (city_military_months_until_distant_battle () > 0 && !city_military_distant_battle_kingdome_army_is_traveling_forth ()) {
45
- if (g_city.military .total_batalions <= 0 ) {
46
- return STATUS_NO_LEGIONS_AVAILABLE;
47
- } else if (g_city.military .kingdome_service_batalions <= 0 ) {
48
- return STATUS_NO_LEGIONS_SELECTED;
49
- } else {
50
- return STATUS_CONFIRM_SEND_LEGIONS;
51
- }
52
- }
53
- } else {
54
- if (city_resource_count ((e_resource)request.resource ) < request.resource_amount ()) {
55
- return STATUS_NOT_ENOUGH_RESOURCES;
56
- }
57
- }
58
- return request.event_id ;
38
+ if (!request.is_valid ()) {
39
+ return -1 ;
59
40
}
60
- return -1 ;
41
+
42
+ if (request.resource == RESOURCE_DEBEN && city_finance_treasury () <= request.amount ) {
43
+ return STATUS_NOT_ENOUGH_RESOURCES;
44
+ }
45
+
46
+ if (request.resource == RESOURCE_TROOPS
47
+ && city_military_months_until_distant_battle () > 0
48
+ && !city_military_distant_battle_kingdome_army_is_traveling_forth ()) {
49
+
50
+ if (g_city.military .total_batalions <= 0 ) {
51
+ return STATUS_NO_LEGIONS_AVAILABLE;
52
+ }
53
+
54
+ if (g_city.military .kingdome_service_batalions <= 0 ) {
55
+ return STATUS_NO_LEGIONS_SELECTED;
56
+ }
57
+
58
+ return STATUS_CONFIRM_SEND_LEGIONS;
59
+ }
60
+
61
+ if (city_resource_count (request.resource ) < request.resource_amount ()) {
62
+ return STATUS_NOT_ENOUGH_RESOURCES;
63
+ }
64
+
65
+ return request.event_id ;
61
66
}
62
67
63
68
void ui::advisor_imperial_window::draw_foreground () {
@@ -81,6 +86,12 @@ int ui::advisor_imperial_window::draw_background() {
81
86
return 0 ;
82
87
}
83
88
89
+ void ui::advisor_imperial_window::load (archive arch, pcstr section) {
90
+ autoconfig_window::load (arch, section);
91
+
92
+
93
+ }
94
+
84
95
void ui::advisor_imperial_window::handle_request (int index) {
85
96
int status = get_request_status (index );
86
97
// in C3, the enums are offset by two! (I have not fixed this)
@@ -93,15 +104,19 @@ void ui::advisor_imperial_window::handle_request(int index) {
93
104
case STATUS_NO_LEGIONS_AVAILABLE:
94
105
window_ok_dialog_show (" #popup_dialog_no_legions_available" );
95
106
break ;
107
+
96
108
case STATUS_NO_LEGIONS_SELECTED:
97
109
window_ok_dialog_show (" #popup_dialog_no_legions_selected" );
98
110
break ;
111
+
99
112
case STATUS_CONFIRM_SEND_LEGIONS:
100
113
window_ok_dialog_show (" #popup_dialog_send_troops" );
101
114
break ;
115
+
102
116
case STATUS_NOT_ENOUGH_RESOURCES:
103
117
window_ok_dialog_show (" #popup_dialog_not_enough_goods" );
104
118
break ;
119
+
105
120
default :
106
121
window_yes_dialog_show (" #popup_dialog_send_goods" , [selected_request_id = index ] {
107
122
scenario_request_dispatch (selected_request_id);
@@ -114,7 +129,14 @@ void ui::advisor_imperial_window::ui_draw_foreground() {
114
129
ui.begin_widget (pos);
115
130
ui.draw ();
116
131
117
- int num_requests = 0 ;
132
+ const auto &button_request = ui[" button_request" ];
133
+ const auto &button_request_icon = ui[" button_request_icon" ];
134
+ const auto &button_request_amount = ui[" button_request_amount" ];
135
+ const auto &button_request_months = ui[" button_request_months" ];
136
+ const auto &button_request_saved = ui[" button_request_saved" ];
137
+ const auto &button_request_allow = ui[" button_request_allow" ];
138
+
139
+ int start_req_index = 0 ;
118
140
if (city_military_months_until_distant_battle () > 0
119
141
&& !city_military_distant_battle_kingdome_army_is_traveling_forth ()) {
120
142
@@ -138,18 +160,26 @@ void ui::advisor_imperial_window::ui_draw_foreground() {
138
160
bstring128 distant_strenght_text;
139
161
distant_strenght_text.printf (" %s %s %d" , ui::str (52 , strength_text_id), ui::str (8 , 4 ), city_military_months_until_distant_battle ());
140
162
ui.label (distant_strenght_text, vec2i{80 , 120 }, FONT_NORMAL_WHITE_ON_DARK);
141
- num_requests = 1 ;
163
+ start_req_index = 1 ;
142
164
}
143
165
166
+ const vec2i icon_offset = button_request_icon.pos - button_request.pos ;
167
+ const vec2i amount_offset = button_request_amount.pos - button_request.pos ;
168
+ const vec2i months_offset = button_request_months.pos - button_request.pos ;
169
+ const vec2i saved_offset = button_request_saved.pos - button_request.pos ;
170
+ const vec2i allow_offset = button_request_allow.pos - button_request.pos ;
171
+
144
172
auto requests = scenario_get_visible_requests ();
145
- for (int index = num_requests, size = std::min<int >(5 , (int )requests.size ()); index < size; ++index ) {
173
+ int num_requests = std::min<int >(5 , (int )requests.size ());
174
+ for (int index = start_req_index; index < num_requests; ++index ) {
146
175
const scenario_request &request = requests[index ];
147
176
148
- ui.button (" " , vec2i{38 , 96 + 42 * index }, vec2i{560 , 42 })
177
+ vec2i request_pos = button_request.pos + vec2i{ 0 , index * button_request.size .y };
178
+ ui.button (" " , request_pos, button_request.size )
149
179
.onclick ([this , index ] (int , int ) {
150
180
this ->handle_request (index );
151
181
});
152
- ui.icon (vec2i{ 45 , 103 + 42 * index } , request.resource );
182
+ ui.icon (request_pos + icon_offset , request.resource );
153
183
154
184
bstring256 amount_text;
155
185
bstring256 month_to_comply;
@@ -160,10 +190,10 @@ void ui::advisor_imperial_window::ui_draw_foreground() {
160
190
int quat = stack_proper_quantity (request_amount, request.resource );
161
191
162
192
amount_text.printf (" %u %s" , quat, ui::str (23 , request.resource ));
163
- ui.label (amount_text, vec2i{ 65 , 102 + 42 * index }, FONT_NORMAL_WHITE_ON_DARK );
193
+ ui.label (amount_text, request_pos + amount_offset, button_request_amount. font () );
164
194
165
195
month_to_comply.printf (" %s %u %s" , ui::str (8 , 4 ), request.months_to_comply , ui::str (12 , 2 ));
166
- ui.label (month_to_comply, vec2i{ 310 , 102 + 42 * index }, FONT_NORMAL_WHITE_ON_DARK );
196
+ ui.label (month_to_comply, request_pos + months_offset, button_request_months. font () );
167
197
168
198
if (request.resource == RESOURCE_DEBEN) {
169
199
// request for money
@@ -180,8 +210,8 @@ void ui::advisor_imperial_window::ui_draw_foreground() {
180
210
allow_str = (amount_stored < request_amount) ? ui::str (52 , 48 ) : ui::str (52 , 47 );
181
211
}
182
212
183
- ui.label (saved_resources, vec2i{ 40 , 120 + 42 * index }, FONT_NORMAL_WHITE_ON_DARK );
184
- ui.label (allow_str, vec2i{ 310 , 120 + 42 * index }, FONT_NORMAL_WHITE_ON_DARK );
213
+ ui.label (saved_resources, request_pos + saved_offset, button_request_saved. font () );
214
+ ui.label (allow_str, request_pos + allow_offset, button_request_allow. font () );
185
215
}
186
216
187
217
if (!num_requests) {
0 commit comments