Skip to content

Commit 37d4317

Browse files
author
s.kushnirenko
committed
refactor: simplify advisor windows system
1 parent d85311d commit 37d4317

33 files changed

+142
-133
lines changed

src/city/ratings.cpp

+12-7
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,17 @@
44
#include "building/model.h"
55
#include "city/coverage.h"
66
#include "city/data_private.h"
7+
#include "city/population.h"
78
#include "core/calc.h"
89
#include "game/time.h"
910
#include "scenario/criteria.h"
1011
#include "scenario/property.h"
1112

12-
int city_rating_culture(void) {
13+
int city_rating_culture() {
1314
return city_data.ratings.culture;
1415
}
1516

16-
int city_rating_prosperity(void) {
17+
int city_rating_prosperity() {
1718
return city_data.ratings.prosperity;
1819
}
1920

@@ -291,7 +292,7 @@ void city_ratings_update_explanations(void) {
291292
city_ratings_update_kingdom_explanation();
292293
}
293294

294-
static void update_culture_rating(void) {
295+
static void update_culture_rating() {
295296
city_data.ratings.culture = 0;
296297
city_data.ratings.culture_explanation = 0;
297298

@@ -383,7 +384,7 @@ static void update_culture_rating(void) {
383384
update_culture_explanation();
384385
}
385386

386-
static void update_prosperity_rating(void) {
387+
static void update_prosperity_rating() {
387388
int change = 0;
388389
// unemployment: -1 for too high, +1 for low
389390
if (city_data.labor.unemployment_percentage < 5)
@@ -435,7 +436,7 @@ static void update_prosperity_rating(void) {
435436
update_prosperity_explanation();
436437
}
437438

438-
static void calculate_max_prosperity(void) {
439+
static void calculate_max_prosperity() {
439440
int points = 0;
440441
int houses = 0;
441442
for (int i = 1; i < MAX_BUILDINGS; i++) {
@@ -452,7 +453,7 @@ static void calculate_max_prosperity(void) {
452453
}
453454
}
454455

455-
static void update_monument_rating(void) {
456+
static void update_monument_rating() {
456457
int change = 0;
457458
if (city_data.ratings.monument_years_of_monument < 2)
458459
change += 2;
@@ -473,11 +474,15 @@ static void update_monument_rating(void) {
473474
else {
474475
city_data.ratings.monument_years_of_monument += 1;
475476
}
477+
476478
city_data.ratings.monument_num_criminals = 0;
477479
city_data.ratings.monument_num_rioters = 0;
478480
city_data.ratings.monument_destroyed_buildings = 0;
479481

480-
city_data.ratings.monument = calc_bound(city_data.ratings.monument + change, 0, 100);
482+
int max_population_limit = std::min<int>(city_population(), 4000);
483+
int monument_ratings_cap = std::max(1, max_population_limit / 1000) * 25;
484+
485+
city_data.ratings.monument = calc_bound(city_data.ratings.monument + change, 0, monument_ratings_cap);
481486
update_monument_explanation();
482487
}
483488

src/city/ratings.h

+12-12
Original file line numberDiff line numberDiff line change
@@ -10,35 +10,35 @@ enum e_selected_rating {
1010
SELECTED_RATING_KINGDOM = 4
1111
};
1212

13-
int city_rating_culture(void);
14-
int city_rating_prosperity(void);
15-
int city_rating_monument(void);
16-
int city_rating_kingdom(void);
13+
int city_rating_culture();
14+
int city_rating_prosperity();
15+
int city_rating_monument();
16+
int city_rating_kingdom();
1717

18-
int city_rating_selected(void);
18+
int city_rating_selected();
1919
void city_rating_select(int rating);
20-
int city_rating_selected_explanation(void);
20+
int city_rating_selected_explanation();
2121

22-
void city_ratings_reduce_prosperity_after_bailout(void);
22+
void city_ratings_reduce_prosperity_after_bailout();
2323

2424
void city_ratings_monument_building_destroyed(int type);
2525

26-
void city_ratings_monument_record_criminal(void);
26+
void city_ratings_monument_record_criminal();
2727

28-
void city_ratings_monument_record_rioter(void);
28+
void city_ratings_monument_record_rioter();
2929

3030
void city_ratings_change_kingdom(int amount);
3131

32-
void city_ratings_reset_kingdom_emperor_change(void);
32+
void city_ratings_reset_kingdom_emperor_change();
3333

3434
void city_ratings_reduce_kingdom_missed_request(int penalty);
3535

3636
void city_ratings_limit_kingdom(int max_kingdom);
3737

38-
void city_ratings_update_kingdom_explanation(void);
38+
void city_ratings_update_kingdom_explanation();
3939

4040
void city_ratings_update_explanations(void);
4141

4242
void city_ratings_update(int is_yearly_update);
4343

44-
int city_ratings_prosperity_max(void);
44+
int city_ratings_prosperity_max();

src/window/advisor/advisor_financial.cpp

+7-2
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,12 @@ static int get_tooltip_text(void) {
129129
}
130130
}
131131

132-
const advisor_window_type* window_advisor_financial(void) {
133-
static const advisor_window_type window = {draw_background, draw_foreground, handle_mouse, get_tooltip_text};
132+
const advisor_window* window_advisor_financial(void) {
133+
static const advisor_window window = {
134+
draw_background,
135+
draw_foreground,
136+
handle_mouse,
137+
get_tooltip_text
138+
};
134139
return &window;
135140
}

src/window/advisor/advisor_financial.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,4 @@
22

33
#include "window/advisors.h"
44

5-
const advisor_window_type* window_advisor_financial(void);
5+
const advisor_window* window_advisor_financial();

src/window/advisor/advisor_health.cpp

+7-2
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,12 @@ static int draw_background() {
8585
return ADVISOR_HEIGHT;
8686
}
8787

88-
const advisor_window_type* window_advisor_health() {
89-
static const advisor_window_type window = {draw_background, 0, 0, 0};
88+
const advisor_window* window_advisor_health() {
89+
static const advisor_window window = {
90+
draw_background,
91+
nullptr,
92+
nullptr,
93+
nullptr
94+
};
9095
return &window;
9196
}

src/window/advisor/advisor_health.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,4 @@
22

33
#include "window/advisors.h"
44

5-
const advisor_window_type* window_advisor_health(void);
5+
const advisor_window* window_advisor_health(void);

src/window/advisor/advisor_imperial.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -266,8 +266,8 @@ static int get_tooltip_text(void) {
266266
}
267267
}
268268

269-
const advisor_window_type* window_advisor_imperial(void) {
270-
static const advisor_window_type window = {
269+
const advisor_window* window_advisor_imperial(void) {
270+
static const advisor_window window = {
271271
draw_background,
272272
draw_foreground,
273273
handle_mouse,

src/window/advisor/advisor_imperial.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,5 @@
22

33
#include "window/advisors.h"
44

5-
const advisor_window_type* window_advisor_imperial(void);
5+
const advisor_window* window_advisor_imperial(void);
66

src/window/advisor/ratings.cpp src/window/advisor/advisor_ratings.cpp

+13-28
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#include "ratings.h"
1+
#include "advisor_ratings.h"
22

33
#include "city/ratings.h"
44
#include "graphics/boilerplate.h"
@@ -49,11 +49,7 @@ static void draw_rating_column(int x_offset, int y_offset, int value, int has_re
4949
static void draw_rating(int id, int value, int open_play, int goal) {
5050
// int value = city_rating_culture();
5151
int enabled = !open_play && goal;
52-
button_border_draw(rating_buttons[id].x,
53-
rating_buttons[id].y,
54-
rating_buttons[id].width,
55-
rating_buttons[id].height,
56-
focus_button_id == SELECTED_RATING_CULTURE);
52+
button_border_draw(rating_buttons[id].x, rating_buttons[id].y, rating_buttons[id].width, rating_buttons[id].height, focus_button_id == SELECTED_RATING_CULTURE);
5753
lang_text_draw_centered(53, 1 + id, rating_buttons[id].x, rating_buttons[id].y + 8, rating_buttons[id].width, FONT_NORMAL_BLACK_ON_LIGHT);
5854
text_draw_number_centered(value, rating_buttons[id].x, rating_buttons[id].y + 21, rating_buttons[id].width, FONT_LARGE_BLACK_ON_LIGHT);
5955
int width = text_draw_number(enabled ? goal : 0, '@', " ", rating_buttons[id].x + 5, rating_buttons[id].y + 45, FONT_NORMAL_BLACK_ON_LIGHT);
@@ -126,26 +122,10 @@ static int draw_background() {
126122
return ADVISOR_HEIGHT;
127123
}
128124
static void draw_foreground(void) {
129-
button_border_draw(rating_buttons[0].x,
130-
rating_buttons[0].y,
131-
rating_buttons[0].width,
132-
rating_buttons[0].height,
133-
focus_button_id == SELECTED_RATING_CULTURE);
134-
button_border_draw(rating_buttons[1].x,
135-
rating_buttons[1].y,
136-
rating_buttons[1].width,
137-
rating_buttons[1].height,
138-
focus_button_id == SELECTED_RATING_PROSPERITY);
139-
button_border_draw(rating_buttons[2].x,
140-
rating_buttons[2].y,
141-
rating_buttons[2].width,
142-
rating_buttons[2].height,
143-
focus_button_id == SELECTED_RATING_MONUMENT);
144-
button_border_draw(rating_buttons[3].x,
145-
rating_buttons[3].y,
146-
rating_buttons[3].width,
147-
rating_buttons[3].height,
148-
focus_button_id == SELECTED_RATING_KINGDOM);
125+
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+
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+
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);
128+
button_border_draw(rating_buttons[3].x, rating_buttons[3].y, rating_buttons[3].width, rating_buttons[3].height, focus_button_id == SELECTED_RATING_KINGDOM);
149129
}
150130

151131
static int handle_mouse(const mouse* m) {
@@ -172,7 +152,12 @@ static int get_tooltip_text(void) {
172152
}
173153
}
174154

175-
const advisor_window_type* window_advisor_ratings(void) {
176-
static const advisor_window_type window = {draw_background, draw_foreground, handle_mouse, get_tooltip_text};
155+
const advisor_window* window_advisor_ratings(void) {
156+
static const advisor_window window = {
157+
draw_background,
158+
draw_foreground,
159+
handle_mouse,
160+
get_tooltip_text
161+
};
177162
return &window;
178163
}

src/window/advisor/advisor_ratings.h

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
#pragma once
2+
3+
#include "window/advisors.h"
4+
5+
const advisor_window* window_advisor_ratings(void);

src/window/advisor/chief.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -335,8 +335,8 @@ static int draw_background() {
335335
return ADVISOR_HEIGHT;
336336
}
337337

338-
const advisor_window_type* window_advisor_chief(void) {
339-
static const advisor_window_type window = {
338+
const advisor_window* window_advisor_chief(void) {
339+
static const advisor_window window = {
340340
draw_background,
341341
nullptr,
342342
nullptr,

src/window/advisor/chief.h

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
#pragma once
22

3-
struct advisor_window_type;
4-
const advisor_window_type* window_advisor_chief(void);
3+
#include "window/advisors.h"
4+
5+
const advisor_window* window_advisor_chief(void);

src/window/advisor/education.cpp

+7-2
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,12 @@ static int draw_background() {
127127
return ADVISOR_HEIGHT;
128128
}
129129

130-
const advisor_window_type* window_advisor_education(void) {
131-
static const advisor_window_type window = {draw_background, 0, 0, 0};
130+
const advisor_window* window_advisor_education(void) {
131+
static const advisor_window window = {
132+
draw_background,
133+
nullptr,
134+
nullptr,
135+
nullptr
136+
};
132137
return &window;
133138
}

src/window/advisor/education.h

+2-5
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,5 @@
1-
#ifndef WINDOW_ADVISOR_EDUCATION_H
2-
#define WINDOW_ADVISOR_EDUCATION_H
1+
#pragma once
32

43
#include "window/advisors.h"
54

6-
const advisor_window_type* window_advisor_education(void);
7-
8-
#endif // WINDOW_ADVISOR_EDUCATION_H
5+
const advisor_window* window_advisor_education();

src/window/advisor/entertainment.cpp

+7-2
Original file line numberDiff line numberDiff line change
@@ -162,8 +162,13 @@ static int get_tooltip_text(void) {
162162
}
163163
}
164164

165-
const advisor_window_type* window_advisor_entertainment(void) {
166-
static const advisor_window_type window = {draw_background, draw_foreground, 0, get_tooltip_text};
165+
const advisor_window* window_advisor_entertainment(void) {
166+
static const advisor_window window = {
167+
draw_background,
168+
draw_foreground,
169+
nullptr,
170+
get_tooltip_text
171+
};
167172
focus_button_id = 0;
168173
return &window;
169174
}

src/window/advisor/entertainment.h

+2-5
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,5 @@
1-
#ifndef WINDOW_ADVISOR_ENTERTAINMENT_H
2-
#define WINDOW_ADVISOR_ENTERTAINMENT_H
1+
#pragma once
32

43
#include "window/advisors.h"
54

6-
const advisor_window_type* window_advisor_entertainment(void);
7-
8-
#endif // WINDOW_ADVISOR_ENTERTAINMENT_H
5+
const advisor_window* window_advisor_entertainment();

src/window/advisor/housing.cpp

+7-2
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,12 @@ static int get_tooltip_text(void) {
121121
return 0;
122122
}
123123

124-
const advisor_window_type* window_advisor_housing(void) {
125-
static const advisor_window_type window = {draw_background, draw_foreground, handle_mouse, get_tooltip_text};
124+
const advisor_window* window_advisor_housing(void) {
125+
static const advisor_window window = {
126+
draw_background,
127+
draw_foreground,
128+
handle_mouse,
129+
get_tooltip_text
130+
};
126131
return &window;
127132
}

src/window/advisor/housing.h

+2-5
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,5 @@
1-
#ifndef WINDOW_ADVISOR_HOUSING_H
2-
#define WINDOW_ADVISOR_HOUSING_H
1+
#pragma once
32

43
#include "window/advisors.h"
54

6-
const advisor_window_type* window_advisor_housing(void);
7-
8-
#endif // WINDOW_ADVISOR_HOUSING_H
5+
const advisor_window* window_advisor_housing(void);

src/window/advisor/labor.cpp

+7-2
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,12 @@ static int get_tooltip_text(void) {
127127
}
128128
}
129129

130-
const advisor_window_type* window_advisor_labor(void) {
131-
static const advisor_window_type window = {draw_background, draw_foreground, handle_mouse, get_tooltip_text};
130+
const advisor_window* window_advisor_labor(void) {
131+
static const advisor_window window = {
132+
draw_background,
133+
draw_foreground,
134+
handle_mouse,
135+
get_tooltip_text
136+
};
132137
return &window;
133138
}

src/window/advisor/labor.h

+2-5
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,5 @@
1-
#ifndef WINDOW_ADVISOR_LABOR_H
2-
#define WINDOW_ADVISOR_LABOR_H
1+
#pragma once
32

43
#include "window/advisors.h"
54

6-
const advisor_window_type* window_advisor_labor(void);
7-
8-
#endif // WINDOW_ADVISOR_LABOR_H
5+
const advisor_window* window_advisor_labor(void);

src/window/advisor/military.cpp

+7-2
Original file line numberDiff line numberDiff line change
@@ -198,8 +198,13 @@ static void on_scroll(void) {
198198
window_invalidate();
199199
}
200200

201-
const advisor_window_type* window_advisor_military(void) {
202-
static const advisor_window_type window = {draw_background, draw_foreground, handle_mouse, 0};
201+
const advisor_window* window_advisor_military(void) {
202+
static const advisor_window window = {
203+
draw_background,
204+
draw_foreground,
205+
handle_mouse,
206+
nullptr
207+
};
203208
init();
204209
return &window;
205210
}

0 commit comments

Comments
 (0)