13
13
#include " scenario/property.h"
14
14
#include " game/game.h"
15
15
16
- #define ADVISOR_HEIGHT 27
16
+ #include " js/js_game.h"
17
+
18
+ ANK_REGISTER_CONFIG_ITERATOR (config_load_advisor_rating);
17
19
18
20
static void button_rating (int rating, int param2);
19
21
22
+ struct advisor_rating_window {
23
+ vec2i outer_panel_pos;
24
+ vec2i outer_panel_size;
25
+ e_image_id advisor_icon_image;
26
+ vec2i advisor_icon_pos;
27
+ };
28
+
29
+ advisor_rating_window g_advisor_rating_window;
30
+
31
+ void config_load_advisor_rating () {
32
+ g_config_arch.r_section (" advisor_rating_window" , [] (archive arch) {
33
+ auto &w = g_advisor_rating_window;
34
+ w.outer_panel_pos = arch.r_vec2i (" outer_panel_pos" );
35
+ w.outer_panel_size = arch.r_size2i (" outer_panel_size" );
36
+ w.advisor_icon_image = arch.r_image (" advisor_icon_image" );
37
+ w.advisor_icon_pos = arch.r_vec2i (" advisor_icon_pos" );
38
+ });
39
+ }
40
+
20
41
static generic_button rating_buttons[] = {
21
42
{80 , 276 , 120 , 60 , button_rating, button_none, SELECTED_RATING_CULTURE, 0 },
22
43
{200 , 276 , 120 , 60 , button_rating, button_none, SELECTED_RATING_PROSPERITY, 0 },
@@ -42,6 +63,7 @@ static void draw_rating_column(int x_offset, int y_offset, int value, int has_re
42
63
ImageDraw::img_generic (ctx, image_base, x_offset - 4 , y);
43
64
for (int i = 0 ; i < 2 * value_to_draw; i++)
44
65
ImageDraw::img_generic (ctx, image_base + 1 , x_offset + 11 , --y);
66
+
45
67
if (has_reached)
46
68
ImageDraw::img_generic (ctx, image_base + 2 , x_offset - 6 , y - 50 );
47
69
}
@@ -59,9 +81,16 @@ static void draw_rating(int id, int value, int open_play, int goal) {
59
81
}
60
82
61
83
static int draw_background () {
84
+ return g_advisor_rating_window.outer_panel_size .y ;
85
+ }
86
+
87
+ static void draw_foreground () {
62
88
painter ctx = game.painter ();
63
- outer_panel_draw (vec2i{0 , 0 }, 40 , ADVISOR_HEIGHT);
64
- ImageDraw::img_generic (ctx, image_id_from_group (GROUP_ADVISOR_ICONS) + 3 , 10 , 10 );
89
+
90
+ auto &w = g_advisor_rating_window;
91
+ ui::panel (w.outer_panel_pos , w.outer_panel_size , UiFlags_PanelOuter);
92
+ ui::icon (w.advisor_icon_pos , ADVISOR_RATINGS);
93
+
65
94
int width = lang_text_draw (53 , 0 , 60 , 12 , FONT_LARGE_BLACK_ON_LIGHT);
66
95
if (!winning_population () || scenario_is_open_play ()) {
67
96
lang_text_draw (53 , 7 , 80 + width, 17 , FONT_NORMAL_BLACK_ON_LIGHT);
@@ -86,42 +115,38 @@ static int draw_background() {
86
115
inner_panel_draw (box_x, box_y, 35 , 5 );
87
116
switch (city_rating_selected ()) {
88
117
case SELECTED_RATING_CULTURE:
89
- lang_text_draw (53 , 1 , box_x + 8 , box_y + 4 , FONT_NORMAL_WHITE_ON_DARK);
90
- if (city_rating_culture () <= 90 ) {
91
- lang_text_draw_multiline (53 , 9 + city_rating_selected_explanation (), vec2i{box_x + 8 , box_y + 22 }, box_w, FONT_NORMAL_WHITE_ON_DARK);
92
- } else
93
- lang_text_draw_multiline (53 , 50 , vec2i{box_x + 8 , box_y + 22 }, box_w, FONT_NORMAL_WHITE_ON_DARK);
94
- break ;
118
+ lang_text_draw (53 , 1 , box_x + 8 , box_y + 4 , FONT_NORMAL_WHITE_ON_DARK);
119
+ if (city_rating_culture () <= 90 ) {
120
+ lang_text_draw_multiline (53 , 9 + city_rating_selected_explanation (), vec2i{box_x + 8 , box_y + 22 }, box_w, FONT_NORMAL_WHITE_ON_DARK);
121
+ } else
122
+ lang_text_draw_multiline (53 , 50 , vec2i{box_x + 8 , box_y + 22 }, box_w, FONT_NORMAL_WHITE_ON_DARK);
123
+ break ;
95
124
case SELECTED_RATING_PROSPERITY:
96
- lang_text_draw (53 , 2 , box_x + 8 , box_y + 4 , FONT_NORMAL_WHITE_ON_DARK);
97
- if (city_rating_prosperity () <= 90 ) {
98
- lang_text_draw_multiline (
99
- 53 , 16 + city_rating_selected_explanation (), vec2i{box_x + 8 , box_y + 22 }, box_w, FONT_NORMAL_WHITE_ON_DARK);
100
- } else
101
- lang_text_draw_multiline (53 , 51 , vec2i{box_x + 8 , box_y + 22 }, box_w, FONT_NORMAL_WHITE_ON_DARK);
102
- break ;
125
+ lang_text_draw (53 , 2 , box_x + 8 , box_y + 4 , FONT_NORMAL_WHITE_ON_DARK);
126
+ if (city_rating_prosperity () <= 90 ) {
127
+ lang_text_draw_multiline (53 , 16 + city_rating_selected_explanation (), vec2i{box_x + 8 , box_y + 22 }, box_w, FONT_NORMAL_WHITE_ON_DARK);
128
+ } else
129
+ lang_text_draw_multiline (53 , 51 , vec2i{box_x + 8 , box_y + 22 }, box_w, FONT_NORMAL_WHITE_ON_DARK);
130
+ break ;
103
131
case SELECTED_RATING_MONUMENT:
104
- lang_text_draw (53 , 3 , box_x + 8 , box_y + 4 , FONT_NORMAL_WHITE_ON_DARK);
105
- if (city_rating_monument () <= 90 ) {
106
- lang_text_draw_multiline (53 , 41 + city_rating_selected_explanation (), vec2i{box_x + 8 , box_y + 22 }, box_w, FONT_NORMAL_WHITE_ON_DARK);
107
- } else
108
- lang_text_draw_multiline (53 , 52 , vec2i{box_x + 8 , box_y + 22 }, box_w, FONT_NORMAL_WHITE_ON_DARK);
109
- break ;
132
+ lang_text_draw (53 , 3 , box_x + 8 , box_y + 4 , FONT_NORMAL_WHITE_ON_DARK);
133
+ if (city_rating_monument () <= 90 ) {
134
+ lang_text_draw_multiline (53 , 41 + city_rating_selected_explanation (), vec2i{box_x + 8 , box_y + 22 }, box_w, FONT_NORMAL_WHITE_ON_DARK);
135
+ } else
136
+ lang_text_draw_multiline (53 , 52 , vec2i{box_x + 8 , box_y + 22 }, box_w, FONT_NORMAL_WHITE_ON_DARK);
137
+ break ;
110
138
case SELECTED_RATING_KINGDOM:
111
- lang_text_draw (53 , 4 , box_x + 8 , box_y + 4 , FONT_NORMAL_WHITE_ON_DARK);
112
- if (city_rating_kingdom () <= 90 ) {
113
- lang_text_draw_multiline (53 , 27 + city_rating_selected_explanation (), vec2i{box_x + 8 , box_y + 22 }, box_w, FONT_NORMAL_WHITE_ON_DARK);
114
- } else
115
- lang_text_draw_multiline (53 , 53 , vec2i{box_x + 8 , box_y + 22 }, box_w, FONT_NORMAL_WHITE_ON_DARK);
116
- break ;
139
+ lang_text_draw (53 , 4 , box_x + 8 , box_y + 4 , FONT_NORMAL_WHITE_ON_DARK);
140
+ if (city_rating_kingdom () <= 90 ) {
141
+ lang_text_draw_multiline (53 , 27 + city_rating_selected_explanation (), vec2i{box_x + 8 , box_y + 22 }, box_w, FONT_NORMAL_WHITE_ON_DARK);
142
+ } else
143
+ lang_text_draw_multiline (53 , 53 , vec2i{box_x + 8 , box_y + 22 }, box_w, FONT_NORMAL_WHITE_ON_DARK);
144
+ break ;
117
145
default :
118
- lang_text_draw_centered (53 , 8 , box_x + 8 , 380 , box_w, FONT_NORMAL_WHITE_ON_DARK);
119
- break ;
146
+ lang_text_draw_centered (53 , 8 , box_x + 8 , 380 , box_w, FONT_NORMAL_WHITE_ON_DARK);
147
+ break ;
120
148
}
121
149
122
- return ADVISOR_HEIGHT;
123
- }
124
- static void draw_foreground (void ) {
125
150
button_border_draw (rating_buttons[0 ].x , rating_buttons[0 ].y , rating_buttons[0 ].width , rating_buttons[0 ].height , focus_button_id == SELECTED_RATING_CULTURE);
126
151
button_border_draw (rating_buttons[1 ].x , rating_buttons[1 ].y , rating_buttons[1 ].width , rating_buttons[1 ].height , focus_button_id == SELECTED_RATING_PROSPERITY);
127
152
button_border_draw (rating_buttons[2 ].x , rating_buttons[2 ].y , rating_buttons[2 ].width , rating_buttons[2 ].height , focus_button_id == SELECTED_RATING_MONUMENT);
0 commit comments