@@ -148,6 +148,8 @@ struct empire_window : public autoconfig_window_t<empire_window> {
148
148
int trade_resource_offset;
149
149
int sell_res_group;
150
150
int trade_button_offset_y;
151
+ vec2i start_pos, finish_pos;
152
+ image_desc image, bottom_image, horizontal_bar, vertical_bar, cross_bar;
151
153
svector<object_trade_info, 16 > buying_goods;
152
154
svector<object_trade_info, 16 > selling_goods;
153
155
@@ -177,9 +179,18 @@ struct empire_window : public autoconfig_window_t<empire_window> {
177
179
trade_resource_offset = arch.r_int (" trade_resource_offset" );
178
180
sell_res_group = arch.r_int (" sell_res_group" );
179
181
trade_button_offset_y = arch.r_int (" trade_button_offset_y" );
182
+ start_pos = arch.r_vec2i (" start_pos" );
183
+ finish_pos = arch.r_vec2i (" finish_pos" );
184
+ arch.r_desc (" image" , image);
185
+ arch.r_desc (" bottom_image" , bottom_image);
186
+ arch.r_desc (" horizontal_bar" , horizontal_bar);
187
+ arch.r_desc (" vertical_bar" , vertical_bar);
188
+ arch.r_desc (" cross_bar" , cross_bar);
180
189
}
181
190
182
191
void draw_map ();
192
+ void draw_empire_object (const empire_object *obj);
193
+ void draw_paneling ();
183
194
};
184
195
185
196
empire_window g_empire_window;
@@ -465,7 +476,7 @@ static void draw_object_info(void) {
465
476
}
466
477
}
467
478
468
- static void draw_empire_object (const empire_object* obj) {
479
+ void empire_window:: draw_empire_object (const empire_object* obj) {
469
480
auto &data = g_empire_window;
470
481
if (obj->type == EMPIRE_OBJECT_LAND_TRADE_ROUTE || obj->type == EMPIRE_OBJECT_SEA_TRADE_ROUTE) {
471
482
if (!g_empire.is_trade_route_open (obj->trade_route_id )) {
@@ -561,26 +572,25 @@ static void draw_empire_object(const empire_object* obj) {
561
572
}
562
573
}
563
574
564
- static void draw_invasion_warning (int x, int y, int image_id) {
565
- auto &data = g_empire_window;
566
- painter ctx = game.painter ();
567
- ImageDraw::img_generic (ctx, image_id, vec2i{data.draw_offset .x + x, data.draw_offset .y + y});
568
- }
569
-
570
575
void empire_window::draw_map () {
571
576
painter ctx = game.painter ();
572
- graphics_set_clip_rectangle (min_pos + vec2i{16 , 16 }, vec2i{max_pos - min_pos} - vec2i{32 , 136 });
573
577
574
- g_empire_map.set_viewport (max_pos - min_pos - vec2i{32 , 136 });
578
+ graphics_set_clip_rectangle (min_pos + start_pos, vec2i{max_pos - min_pos} - finish_pos);
579
+
580
+ g_empire_map.set_viewport (max_pos - min_pos - finish_pos);
575
581
576
- draw_offset = min_pos + vec2i{ 16 , 16 } ;
582
+ draw_offset = min_pos + start_pos ;
577
583
draw_offset = g_empire_map.adjust_scroll (draw_offset);
578
584
579
- ImageDraw::img_generic (ctx, image_id_from_group (GROUP_EMPIRE_MAP ), draw_offset);
585
+ ImageDraw::img_generic (ctx, image_group (image ), draw_offset);
580
586
581
- empire_object_foreach (draw_empire_object);
587
+ empire_object_foreach ([this ] (const empire_object *obj) {
588
+ draw_empire_object (obj);
589
+ });
582
590
583
- scenario_invasion_foreach_warning (draw_invasion_warning);
591
+ scenario_invasion_foreach_warning ([&] (vec2i pos, int image_id) {
592
+ ImageDraw::img_generic (ctx, image_id, draw_offset + pos);
593
+ });
584
594
585
595
graphics_reset_clip_rectangle ();
586
596
}
@@ -613,39 +623,38 @@ static void draw_panel_buttons(const empire_city* city) {
613
623
}
614
624
}
615
625
616
- static void draw_paneling () {
617
- auto &data = g_empire_window;
626
+ void empire_window::draw_paneling () {
618
627
painter ctx = game.painter ();
619
- int image_base = image_id_from_group (GROUP_EMPIRE_PANELS);
620
628
// bottom panel background
621
- graphics_set_clip_rectangle (data.min_pos , data.max_pos - data.min_pos );
622
- for (int x = data.min_pos .x ; x < data.max_pos .x ; x += 70 ) {
623
- ImageDraw::img_generic (ctx, image_base + 3 , vec2i{x, data.max_pos .y - 140 });
624
- ImageDraw::img_generic (ctx, image_base + 3 , vec2i{x, data.max_pos .y - 100 });
625
- ImageDraw::img_generic (ctx, image_base + 3 , vec2i{x, data.max_pos .y - 60 });
626
- ImageDraw::img_generic (ctx, image_base + 3 , vec2i{x, data.max_pos .y - 20 });
629
+ graphics_set_clip_rectangle (min_pos, max_pos - min_pos);
630
+
631
+ for (int x = min_pos.x ; x < max_pos.x ; x += 70 ) {
632
+ ImageDraw::img_generic (ctx, bottom_image, vec2i{x, max_pos.y - 140 });
633
+ ImageDraw::img_generic (ctx, bottom_image, vec2i{x, max_pos.y - 100 });
634
+ ImageDraw::img_generic (ctx, bottom_image, vec2i{x, max_pos.y - 60 });
635
+ ImageDraw::img_generic (ctx, bottom_image, vec2i{x, max_pos.y - 20 });
627
636
}
628
637
629
638
// horizontal bar borders
630
- for (int x = data. min_pos .x ; x < data. max_pos .x ; x += 86 ) {
631
- ImageDraw::img_generic (ctx, image_base + 1 , vec2i{x, data. min_pos .y });
632
- ImageDraw::img_generic (ctx, image_base + 1 , vec2i{x, data. max_pos .y - 140 });
633
- ImageDraw::img_generic (ctx, image_base + 1 , vec2i{x, data. max_pos .y - 16 });
639
+ for (int x = min_pos.x ; x < max_pos.x ; x += 86 ) {
640
+ ImageDraw::img_generic (ctx, horizontal_bar , vec2i{x, min_pos.y });
641
+ ImageDraw::img_generic (ctx, horizontal_bar , vec2i{x, max_pos.y - 140 });
642
+ ImageDraw::img_generic (ctx, horizontal_bar , vec2i{x, max_pos.y - 16 });
634
643
}
635
644
636
645
// vertical bar borders
637
- for (int y = data. min_pos .y + 16 ; y < data. max_pos .y ; y += 86 ) {
638
- ImageDraw::img_generic (ctx, image_base , vec2i{data. min_pos .x , y});
639
- ImageDraw::img_generic (ctx, image_base , vec2i{data. max_pos .x - 16 , y});
646
+ for (int y = min_pos.y + 16 ; y < max_pos.y ; y += 86 ) {
647
+ ImageDraw::img_generic (ctx, vertical_bar , vec2i{min_pos.x , y});
648
+ ImageDraw::img_generic (ctx, vertical_bar , vec2i{max_pos.x - 16 , y});
640
649
}
641
650
642
651
// crossbars
643
- ImageDraw::img_generic (ctx, image_base + 2 , vec2i{data. min_pos .x , data. min_pos .y });
644
- ImageDraw::img_generic (ctx, image_base + 2 , vec2i{data. min_pos .x , data. max_pos .y - 140 });
645
- ImageDraw::img_generic (ctx, image_base + 2 , vec2i{data. min_pos .x , data. max_pos .y - 16 });
646
- ImageDraw::img_generic (ctx, image_base + 2 , vec2i{data. max_pos .x - 16 , data. min_pos .y });
647
- ImageDraw::img_generic (ctx, image_base + 2 , vec2i{data. max_pos .x - 16 , data. max_pos .y - 140 });
648
- ImageDraw::img_generic (ctx, image_base + 2 , vec2i{data. max_pos .x - 16 , data. max_pos .y - 16 });
652
+ ImageDraw::img_generic (ctx, cross_bar , vec2i{min_pos.x , min_pos.y });
653
+ ImageDraw::img_generic (ctx, cross_bar , vec2i{min_pos.x , max_pos.y - 140 });
654
+ ImageDraw::img_generic (ctx, cross_bar , vec2i{min_pos.x , max_pos.y - 16 });
655
+ ImageDraw::img_generic (ctx, cross_bar , vec2i{max_pos.x - 16 , min_pos.y });
656
+ ImageDraw::img_generic (ctx, cross_bar , vec2i{max_pos.x - 16 , max_pos.y - 140 });
657
+ ImageDraw::img_generic (ctx, cross_bar , vec2i{max_pos.x - 16 , max_pos.y - 16 });
649
658
650
659
graphics_reset_clip_rectangle ();
651
660
}
0 commit comments