From 1955af318f66abbcbbad5551ed742acc582ca3dd Mon Sep 17 00:00:00 2001 From: Jose Cadete Date: Sat, 20 Apr 2024 00:49:17 +0100 Subject: [PATCH 01/15] Some more visual improvements to tooltips --- src/platform/renderer.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/platform/renderer.c b/src/platform/renderer.c index fd0d390844..441f123dc9 100644 --- a/src/platform/renderer.c +++ b/src/platform/renderer.c @@ -698,6 +698,16 @@ static int start_tooltip_creation(int width, int height) } } if (!data.tooltip.texture) { + const char *scale_quality = "linear"; +#ifndef __APPLE__ + // Scale using nearest neighbour when we scale a multiple of 100%: makes it look sharper. + // But not on MacOS: users are used to the linear interpolation since that's what Apple also does. + if (platform_screen_get_scale() % 100 == 0) { + scale_quality = "nearest"; + } +#endif + SDL_SetHint(SDL_HINT_RENDER_SCALE_QUALITY, scale_quality); + data.tooltip.texture = SDL_CreateTexture(data.renderer, SDL_PIXELFORMAT_ARGB8888, SDL_TEXTUREACCESS_TARGET, width, height); if (!data.tooltip.texture) { @@ -718,6 +728,7 @@ static void finish_tooltip_creation(void) if (data.paused) { return; } + SDL_SetHint(SDL_HINT_RENDER_SCALE_QUALITY, "nearest"); SDL_SetRenderTarget(data.renderer, data.render_texture); } @@ -1244,6 +1255,10 @@ static void destroy_render_texture(void) SDL_DestroyTexture(data.render_texture); data.render_texture = 0; } + if (data.tooltip.texture) { + SDL_DestroyTexture(data.tooltip.texture); + data.tooltip.texture = 0; + } } int platform_renderer_create_render_texture(int width, int height) @@ -1318,6 +1333,10 @@ void platform_renderer_invalidate_target_textures(void) data.custom_textures[CUSTOM_IMAGE_GREEN_FOOTPRINT].texture = 0; create_blend_texture(CUSTOM_IMAGE_GREEN_FOOTPRINT); } + if (data.tooltip.texture) { + SDL_DestroyTexture(data.tooltip.texture); + data.tooltip.texture = 0; + } } void platform_renderer_clear(void) @@ -1330,6 +1349,10 @@ static void draw_tooltip(void) if (!data.tooltip.texture || !data.tooltip.opacity) { return; } + color_t opacity = calc_adjust_with_percentage(0x55, calc_percentage(data.tooltip.opacity, 0xff)); + fill_rect(data.tooltip.x + 2, data.tooltip.width, + data.tooltip.y + 2, data.tooltip.height, opacity << COLOR_BITSHIFT_ALPHA); + SDL_Rect src; src.x = 0; src.y = 0; From d4cfc0225af17841e6220703634102331d49caca Mon Sep 17 00:00:00 2001 From: Areldir <72540647+Areldir@users.noreply.github.com> Date: Sat, 20 Apr 2024 20:33:16 +1000 Subject: [PATCH 02/15] Rework warehouse flag assets --- res/assets/Graphics/Flags/flag_grey_a1.png | Bin 643 -> 0 bytes res/assets/Graphics/Flags/flag_grey_a2.png | Bin 685 -> 0 bytes res/assets/Graphics/Flags/flag_grey_a3.png | Bin 754 -> 0 bytes res/assets/Graphics/Flags/flag_grey_a4.png | Bin 714 -> 0 bytes res/assets/Graphics/Flags/flag_grey_a5.png | Bin 663 -> 0 bytes res/assets/Graphics/Flags/flag_grey_a6.png | Bin 646 -> 0 bytes res/assets/Graphics/Flags/flag_grey_a7.png | Bin 663 -> 0 bytes res/assets/Graphics/Flags/flag_grey_a8.png | Bin 629 -> 0 bytes .../Flags/flag_market_mess_sea_trade_a1.png | Bin 660 -> 0 bytes .../Flags/flag_market_mess_sea_trade_a2.png | Bin 696 -> 0 bytes .../Flags/flag_market_mess_sea_trade_a3.png | Bin 791 -> 0 bytes .../Flags/flag_market_mess_sea_trade_a4.png | Bin 695 -> 0 bytes .../Flags/flag_market_mess_sea_trade_a5.png | Bin 692 -> 0 bytes .../Flags/flag_market_mess_sea_trade_a6.png | Bin 665 -> 0 bytes .../Flags/flag_market_mess_sea_trade_a7.png | Bin 688 -> 0 bytes .../Flags/flag_market_mess_sea_trade_a8.png | Bin 678 -> 0 bytes .../Flags/flag_market_mess_trade_a1.png | Bin 674 -> 0 bytes .../Flags/flag_market_mess_trade_a2.png | Bin 729 -> 0 bytes .../Flags/flag_market_mess_trade_a3.png | Bin 804 -> 0 bytes .../Flags/flag_market_mess_trade_a4.png | Bin 713 -> 0 bytes .../Flags/flag_market_mess_trade_a5.png | Bin 690 -> 0 bytes .../Flags/flag_market_mess_trade_a6.png | Bin 676 -> 0 bytes .../Flags/flag_market_mess_trade_a7.png | Bin 703 -> 0 bytes .../Flags/flag_market_mess_trade_a8.png | Bin 666 -> 0 bytes .../Flags/flag_market_sea_trade_a1.png | Bin 635 -> 0 bytes .../Flags/flag_market_sea_trade_a2.png | Bin 678 -> 0 bytes .../Flags/flag_market_sea_trade_a3.png | Bin 742 -> 0 bytes .../Flags/flag_market_sea_trade_a4.png | Bin 668 -> 0 bytes .../Flags/flag_market_sea_trade_a5.png | Bin 666 -> 0 bytes .../Flags/flag_market_sea_trade_a6.png | Bin 636 -> 0 bytes .../Flags/flag_market_sea_trade_a7.png | Bin 658 -> 0 bytes .../Flags/flag_market_sea_trade_a8.png | Bin 631 -> 0 bytes .../Flags/flag_mess_both_traders_a1.png | Bin 660 -> 0 bytes .../Flags/flag_mess_both_traders_a2.png | Bin 701 -> 0 bytes .../Flags/flag_mess_both_traders_a3.png | Bin 769 -> 0 bytes .../Flags/flag_mess_both_traders_a4.png | Bin 708 -> 0 bytes .../Flags/flag_mess_both_traders_a5.png | Bin 674 -> 0 bytes .../Flags/flag_mess_both_traders_a6.png | Bin 671 -> 0 bytes .../Flags/flag_mess_both_traders_a7.png | Bin 689 -> 0 bytes .../Flags/flag_mess_both_traders_a8.png | Bin 649 -> 0 bytes .../Graphics/Flags/flag_mess_sea_trade_a1.png | Bin 668 -> 0 bytes .../Graphics/Flags/flag_mess_sea_trade_a2.png | Bin 698 -> 0 bytes .../Graphics/Flags/flag_mess_sea_trade_a3.png | Bin 785 -> 0 bytes .../Graphics/Flags/flag_mess_sea_trade_a4.png | Bin 692 -> 0 bytes .../Graphics/Flags/flag_mess_sea_trade_a5.png | Bin 688 -> 0 bytes .../Graphics/Flags/flag_mess_sea_trade_a6.png | Bin 650 -> 0 bytes .../Graphics/Flags/flag_mess_sea_trade_a7.png | Bin 680 -> 0 bytes .../Graphics/Flags/flag_mess_sea_trade_a8.png | Bin 657 -> 0 bytes .../Graphics/Flags/flag_mess_trade_a1.png | Bin 686 -> 0 bytes .../Graphics/Flags/flag_mess_trade_a2.png | Bin 752 -> 0 bytes .../Graphics/Flags/flag_mess_trade_a3.png | Bin 821 -> 0 bytes .../Graphics/Flags/flag_mess_trade_a4.png | Bin 735 -> 0 bytes .../Graphics/Flags/flag_mess_trade_a5.png | Bin 702 -> 0 bytes .../Graphics/Flags/flag_mess_trade_a6.png | Bin 693 -> 0 bytes .../Graphics/Flags/flag_mess_trade_a7.png | Bin 725 -> 0 bytes .../Graphics/Flags/flag_mess_trade_a8.png | Bin 678 -> 0 bytes .../Graphics/Flags/flag_sea_trade_a1.png | Bin 645 -> 0 bytes .../Graphics/Flags/flag_sea_trade_a2.png | Bin 684 -> 0 bytes .../Graphics/Flags/flag_sea_trade_a3.png | Bin 748 -> 0 bytes .../Graphics/Flags/flag_sea_trade_a4.png | Bin 679 -> 0 bytes .../Graphics/Flags/flag_sea_trade_a5.png | Bin 675 -> 0 bytes .../Graphics/Flags/flag_sea_trade_a6.png | Bin 646 -> 0 bytes .../Graphics/Flags/flag_sea_trade_a7.png | Bin 670 -> 0 bytes .../Graphics/Flags/flag_sea_trade_a8.png | Bin 637 -> 0 bytes .../Graphics/UI/Denied_Walker_Checkmark.png | Bin 357 -> 365 bytes res/assets/Graphics/UI/Warehousing.png | Bin 0 -> 446 bytes res/assets/Graphics/UI/Warehousing_off.png | Bin 311 -> 0 bytes .../Graphics/{Flags => UI}/flag_blue_a1.png | Bin .../Graphics/{Flags => UI}/flag_blue_a2.png | Bin .../Graphics/{Flags => UI}/flag_blue_a3.png | Bin .../Graphics/{Flags => UI}/flag_blue_a4.png | Bin .../Graphics/{Flags => UI}/flag_blue_a5.png | Bin .../Graphics/{Flags => UI}/flag_blue_a6.png | Bin .../Graphics/{Flags => UI}/flag_blue_a7.png | Bin .../Graphics/{Flags => UI}/flag_blue_a8.png | Bin .../{Flags => UI}/flag_icon_land_a3.png | Bin .../{Flags => UI}/flag_icon_land_a4.png | Bin .../{Flags => UI}/flag_icon_land_a5.png | Bin .../{Flags => UI}/flag_icon_market_a1.png | Bin .../{Flags => UI}/flag_icon_market_a3.png | Bin .../{Flags => UI}/flag_icon_market_a4.png | Bin .../{Flags => UI}/flag_icon_market_a5.png | Bin .../Graphics/UI/flag_icon_sea_a1_2_6_8.png | Bin 0 -> 174 bytes res/assets/Graphics/UI/flag_icon_sea_a3.png | Bin 0 -> 268 bytes res/assets/Graphics/UI/flag_icon_sea_a4.png | Bin 0 -> 166 bytes res/assets/Graphics/UI/flag_icon_sea_a5.png | Bin 0 -> 175 bytes .../{Flags => UI}/flag_icon_traders_a1-2.png | Bin .../{Flags => UI}/flag_icon_traders_a3.png | Bin .../{Flags => UI}/flag_icon_traders_a4.png | Bin .../{Flags => UI}/flag_icon_traders_a5.png | Bin .../{Flags => UI}/flag_icon_traders_a6-8.png | Bin .../{Flags => UI}/flag_layer_base.png | Bin .../Graphics/{Flags => UI}/flag_purple_a1.png | Bin .../Graphics/{Flags => UI}/flag_purple_a2.png | Bin .../Graphics/{Flags => UI}/flag_purple_a3.png | Bin .../Graphics/{Flags => UI}/flag_purple_a4.png | Bin .../Graphics/{Flags => UI}/flag_purple_a5.png | Bin .../Graphics/{Flags => UI}/flag_purple_a6.png | Bin .../Graphics/{Flags => UI}/flag_purple_a7.png | Bin .../Graphics/{Flags => UI}/flag_purple_a8.png | Bin .../Graphics/{Flags => UI}/flag_red_a1.png | Bin .../Graphics/{Flags => UI}/flag_red_a2.png | Bin .../Graphics/{Flags => UI}/flag_red_a3.png | Bin .../Graphics/{Flags => UI}/flag_red_a4.png | Bin .../Graphics/{Flags => UI}/flag_red_a5.png | Bin .../Graphics/{Flags => UI}/flag_red_a6.png | Bin .../Graphics/{Flags => UI}/flag_red_a7.png | Bin .../Graphics/{Flags => UI}/flag_red_a8.png | Bin res/assets/Graphics/flags.xml | 880 ------------------ res/assets/Graphics/ui.xml | 446 ++++++++- 110 files changed, 444 insertions(+), 882 deletions(-) delete mode 100644 res/assets/Graphics/Flags/flag_grey_a1.png delete mode 100644 res/assets/Graphics/Flags/flag_grey_a2.png delete mode 100644 res/assets/Graphics/Flags/flag_grey_a3.png delete mode 100644 res/assets/Graphics/Flags/flag_grey_a4.png delete mode 100644 res/assets/Graphics/Flags/flag_grey_a5.png delete mode 100644 res/assets/Graphics/Flags/flag_grey_a6.png delete mode 100644 res/assets/Graphics/Flags/flag_grey_a7.png delete mode 100644 res/assets/Graphics/Flags/flag_grey_a8.png delete mode 100644 res/assets/Graphics/Flags/flag_market_mess_sea_trade_a1.png delete mode 100644 res/assets/Graphics/Flags/flag_market_mess_sea_trade_a2.png delete mode 100644 res/assets/Graphics/Flags/flag_market_mess_sea_trade_a3.png delete mode 100644 res/assets/Graphics/Flags/flag_market_mess_sea_trade_a4.png delete mode 100644 res/assets/Graphics/Flags/flag_market_mess_sea_trade_a5.png delete mode 100644 res/assets/Graphics/Flags/flag_market_mess_sea_trade_a6.png delete mode 100644 res/assets/Graphics/Flags/flag_market_mess_sea_trade_a7.png delete mode 100644 res/assets/Graphics/Flags/flag_market_mess_sea_trade_a8.png delete mode 100644 res/assets/Graphics/Flags/flag_market_mess_trade_a1.png delete mode 100644 res/assets/Graphics/Flags/flag_market_mess_trade_a2.png delete mode 100644 res/assets/Graphics/Flags/flag_market_mess_trade_a3.png delete mode 100644 res/assets/Graphics/Flags/flag_market_mess_trade_a4.png delete mode 100644 res/assets/Graphics/Flags/flag_market_mess_trade_a5.png delete mode 100644 res/assets/Graphics/Flags/flag_market_mess_trade_a6.png delete mode 100644 res/assets/Graphics/Flags/flag_market_mess_trade_a7.png delete mode 100644 res/assets/Graphics/Flags/flag_market_mess_trade_a8.png delete mode 100644 res/assets/Graphics/Flags/flag_market_sea_trade_a1.png delete mode 100644 res/assets/Graphics/Flags/flag_market_sea_trade_a2.png delete mode 100644 res/assets/Graphics/Flags/flag_market_sea_trade_a3.png delete mode 100644 res/assets/Graphics/Flags/flag_market_sea_trade_a4.png delete mode 100644 res/assets/Graphics/Flags/flag_market_sea_trade_a5.png delete mode 100644 res/assets/Graphics/Flags/flag_market_sea_trade_a6.png delete mode 100644 res/assets/Graphics/Flags/flag_market_sea_trade_a7.png delete mode 100644 res/assets/Graphics/Flags/flag_market_sea_trade_a8.png delete mode 100644 res/assets/Graphics/Flags/flag_mess_both_traders_a1.png delete mode 100644 res/assets/Graphics/Flags/flag_mess_both_traders_a2.png delete mode 100644 res/assets/Graphics/Flags/flag_mess_both_traders_a3.png delete mode 100644 res/assets/Graphics/Flags/flag_mess_both_traders_a4.png delete mode 100644 res/assets/Graphics/Flags/flag_mess_both_traders_a5.png delete mode 100644 res/assets/Graphics/Flags/flag_mess_both_traders_a6.png delete mode 100644 res/assets/Graphics/Flags/flag_mess_both_traders_a7.png delete mode 100644 res/assets/Graphics/Flags/flag_mess_both_traders_a8.png delete mode 100644 res/assets/Graphics/Flags/flag_mess_sea_trade_a1.png delete mode 100644 res/assets/Graphics/Flags/flag_mess_sea_trade_a2.png delete mode 100644 res/assets/Graphics/Flags/flag_mess_sea_trade_a3.png delete mode 100644 res/assets/Graphics/Flags/flag_mess_sea_trade_a4.png delete mode 100644 res/assets/Graphics/Flags/flag_mess_sea_trade_a5.png delete mode 100644 res/assets/Graphics/Flags/flag_mess_sea_trade_a6.png delete mode 100644 res/assets/Graphics/Flags/flag_mess_sea_trade_a7.png delete mode 100644 res/assets/Graphics/Flags/flag_mess_sea_trade_a8.png delete mode 100644 res/assets/Graphics/Flags/flag_mess_trade_a1.png delete mode 100644 res/assets/Graphics/Flags/flag_mess_trade_a2.png delete mode 100644 res/assets/Graphics/Flags/flag_mess_trade_a3.png delete mode 100644 res/assets/Graphics/Flags/flag_mess_trade_a4.png delete mode 100644 res/assets/Graphics/Flags/flag_mess_trade_a5.png delete mode 100644 res/assets/Graphics/Flags/flag_mess_trade_a6.png delete mode 100644 res/assets/Graphics/Flags/flag_mess_trade_a7.png delete mode 100644 res/assets/Graphics/Flags/flag_mess_trade_a8.png delete mode 100644 res/assets/Graphics/Flags/flag_sea_trade_a1.png delete mode 100644 res/assets/Graphics/Flags/flag_sea_trade_a2.png delete mode 100644 res/assets/Graphics/Flags/flag_sea_trade_a3.png delete mode 100644 res/assets/Graphics/Flags/flag_sea_trade_a4.png delete mode 100644 res/assets/Graphics/Flags/flag_sea_trade_a5.png delete mode 100644 res/assets/Graphics/Flags/flag_sea_trade_a6.png delete mode 100644 res/assets/Graphics/Flags/flag_sea_trade_a7.png delete mode 100644 res/assets/Graphics/Flags/flag_sea_trade_a8.png create mode 100644 res/assets/Graphics/UI/Warehousing.png delete mode 100644 res/assets/Graphics/UI/Warehousing_off.png rename res/assets/Graphics/{Flags => UI}/flag_blue_a1.png (100%) rename res/assets/Graphics/{Flags => UI}/flag_blue_a2.png (100%) rename res/assets/Graphics/{Flags => UI}/flag_blue_a3.png (100%) rename res/assets/Graphics/{Flags => UI}/flag_blue_a4.png (100%) rename res/assets/Graphics/{Flags => UI}/flag_blue_a5.png (100%) rename res/assets/Graphics/{Flags => UI}/flag_blue_a6.png (100%) rename res/assets/Graphics/{Flags => UI}/flag_blue_a7.png (100%) rename res/assets/Graphics/{Flags => UI}/flag_blue_a8.png (100%) rename res/assets/Graphics/{Flags => UI}/flag_icon_land_a3.png (100%) rename res/assets/Graphics/{Flags => UI}/flag_icon_land_a4.png (100%) rename res/assets/Graphics/{Flags => UI}/flag_icon_land_a5.png (100%) rename res/assets/Graphics/{Flags => UI}/flag_icon_market_a1.png (100%) rename res/assets/Graphics/{Flags => UI}/flag_icon_market_a3.png (100%) rename res/assets/Graphics/{Flags => UI}/flag_icon_market_a4.png (100%) rename res/assets/Graphics/{Flags => UI}/flag_icon_market_a5.png (100%) create mode 100644 res/assets/Graphics/UI/flag_icon_sea_a1_2_6_8.png create mode 100644 res/assets/Graphics/UI/flag_icon_sea_a3.png create mode 100644 res/assets/Graphics/UI/flag_icon_sea_a4.png create mode 100644 res/assets/Graphics/UI/flag_icon_sea_a5.png rename res/assets/Graphics/{Flags => UI}/flag_icon_traders_a1-2.png (100%) rename res/assets/Graphics/{Flags => UI}/flag_icon_traders_a3.png (100%) rename res/assets/Graphics/{Flags => UI}/flag_icon_traders_a4.png (100%) rename res/assets/Graphics/{Flags => UI}/flag_icon_traders_a5.png (100%) rename res/assets/Graphics/{Flags => UI}/flag_icon_traders_a6-8.png (100%) rename res/assets/Graphics/{Flags => UI}/flag_layer_base.png (100%) rename res/assets/Graphics/{Flags => UI}/flag_purple_a1.png (100%) rename res/assets/Graphics/{Flags => UI}/flag_purple_a2.png (100%) rename res/assets/Graphics/{Flags => UI}/flag_purple_a3.png (100%) rename res/assets/Graphics/{Flags => UI}/flag_purple_a4.png (100%) rename res/assets/Graphics/{Flags => UI}/flag_purple_a5.png (100%) rename res/assets/Graphics/{Flags => UI}/flag_purple_a6.png (100%) rename res/assets/Graphics/{Flags => UI}/flag_purple_a7.png (100%) rename res/assets/Graphics/{Flags => UI}/flag_purple_a8.png (100%) rename res/assets/Graphics/{Flags => UI}/flag_red_a1.png (100%) rename res/assets/Graphics/{Flags => UI}/flag_red_a2.png (100%) rename res/assets/Graphics/{Flags => UI}/flag_red_a3.png (100%) rename res/assets/Graphics/{Flags => UI}/flag_red_a4.png (100%) rename res/assets/Graphics/{Flags => UI}/flag_red_a5.png (100%) rename res/assets/Graphics/{Flags => UI}/flag_red_a6.png (100%) rename res/assets/Graphics/{Flags => UI}/flag_red_a7.png (100%) rename res/assets/Graphics/{Flags => UI}/flag_red_a8.png (100%) delete mode 100644 res/assets/Graphics/flags.xml diff --git a/res/assets/Graphics/Flags/flag_grey_a1.png b/res/assets/Graphics/Flags/flag_grey_a1.png deleted file mode 100644 index 998631a59ae66fc1039c97a37f191704379e518c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 643 zcmV-}0(||6P)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ-`AI}URCwBalfP~hF%XA8d+c4WZY3P9N=Zu@DK9~p zl8)!$J+4d-g}&LRb50-Ri*uETp@)xGyvYpat|{^4kBHXBo6tJR7S zLWPurrEAt&M1<$D-|uUQ0QTbILW|AP$>PEo^P+?0b(FPo7r+j~@OMuBl(XOOd3t&} z8s@|DoSDLs5kg=b$0Jybk*lk#IwM9^`SQ^y z3D9sb!3j#bjcjjENq47wcCYzrCw|=D6JzA^^70t=zu3G#(GhqXA;bhH3C6(fx4^s2 d)*PPwH2~5)^xg@wp7Q_z002ovPDHLkV1jz@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;BS}O-RCwBKls``!K@i1%vwwVRI13|3LM|vM-9)0H z$OoawM@UbRq)wGSeHx@RF7pv+BT-N$bkNz71FYG-n-tcrY{F|!cQ^aqyLmGwv)N3Y zbL5;UR{-Z6&N@1)v~7zqh8QE`@tD5vi7_&nOqfh2SZhfs(RCfF zTHOH{098dqu-4+eM^*9OvtF+m3LSPhzNb()Av0h0zgV>m#pu5y!SZgs=BonRVAfF z(=?=%@ZMLk;!Z@E&*uW*%8RCH=(?`A zmbzk~rg?sTuI0dMVW=v`nCf;L&(F`bUjSygT=Mw%h=^2zZNirc=A3uJ`H!ruQVF7L zK?x#+P^Z2G_8Q#r@i94PVvMzS&N)<-gM$OQuB+=b8jb4QEfx#LKR-=%I=qJfF$O}2oL=Y-*}nk*W9T5e T`Crao00000NkvXXu0mjfQ7bG? diff --git a/res/assets/Graphics/Flags/flag_grey_a3.png b/res/assets/Graphics/Flags/flag_grey_a3.png deleted file mode 100644 index c38f3c56c3d87fc5d12c10a891e889a2e7c35eb3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 754 zcmVz@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;Xh}ptRCwBql)X{IB}6zz1z{wo1NKP zB_bRg9LRJ!#afHC7GP;VnM^3law%TdHQsxahybv=yDQ#%+O|b0MVh8~?*TBzP!t7M zS6B4=eE>oT5ep%ZWf>P27fSP3dwY9`2*wyzR#pfhaDRVK2mxy?Wm&Sew#LTB2E*Zy zPN&0Mz-%^SYikRDNZ2$DN-2ynIOh-%oO9gX-jXBpCirgl*db zpp-&H;x`a|>-BoEpIfDrB80%n$%$GZOp*im!BuRp`mbPs% z#zar&$BZf-N#|GX{QO)kD13Uio_aaQoO5WclC`(F4o$(8KB?q)9dvf{!^v+pjO%5$#~ftE~LAV^0)U&C?3JmQx=}$CQwfMd{o=y zdA{%vysB!3hiB}+74st(}y011T~1PA`7TmS$707*qoM6N<$f&z|3B>(^b diff --git a/res/assets/Graphics/Flags/flag_grey_a4.png b/res/assets/Graphics/Flags/flag_grey_a4.png deleted file mode 100644 index 201770395ab4ace957e0a531fb76b0cc43d9b448..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 714 zcmV;*0yX`KP)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;KuJVFRCwBKlRaNkKtDjUoh6DiAa%K}olkHrgFx&kU7ENyx1%kKcLk-8+`q zY?c7JuEQ8Z*LC!A&QVnrUDt7XdWy9+zXveJ(APTWkdzX;ySvGIk5UQ|VK5lv00A*PMP*oL+#RBg=CnqOj`VLxalu}exg;EOdJ(J0V7$e?$Ha0d8kqitW z(6%kc7`C>y08juaB}4?RHP%{EN?2>Ty1L2}ib!55r9?^zfbn?D(b16r7_Lb~NGTCx z1fXqOmdj->iZNo0$>#t?QRHWJ9a5HM{!l4}Qi{c5frwzOMMQ`(5@XDhuCK4(gtcvp zwH9LxA%twaF^0Bn84icU7_rvoW?E|i4h{~ahnaqgq9_Oe} zAq48W=JN8A!^1vi+S(f4dp0*WdGYWQtD@$%R0x5psxr(u zmoIS$fzfD$bB?BIFvhUI{gJOfrj*n3|6u0L_D=xbojv7O_c#BWeF)Au+O|bRc>VYr ztMe(x4`v+yneprvOj1gGcwVRJqXs;X9R6a;`S&M$zBlA|A?)A(f}6~tY+&WsdAkzs wkn{%M*87*!i_@%07*qoM6N<$g1PuN6aWAK diff --git a/res/assets/Graphics/Flags/flag_grey_a5.png b/res/assets/Graphics/Flags/flag_grey_a5.png deleted file mode 100644 index 88a7b37e6d8fc3d7a05a11378ef9324bd9ff4723..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 663 zcmV;I0%-k-P)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;4M{{nRCwBSlD%#eF%*SAd+e-te!`5jDd^aej!gwG zg6PxGQBYCP(IF&w0i-+wQc8*xX(>aw5#`dMyjM-7ht!(-FJICi*tyU}P zx()zi3;^Eyw0F+ooMW@u(6%ksT8uHN*BF!fm56YBd@SC3wALu4I5;?9KA!`SWf>s^ zZf|e7y1Jri8no8TW-~;Ds;U@`_$$2rG-dG8SsL}U^LfB}+nj1dtb#t6VL z3|wDd15i~}5**I~`o8D%^i(BhV}M0bq(-eZT5Go3ElMe@wJ4>CF%n}$DFr~D=LxLG zg>w#L3?YOR{OB&vb7G8GYm-=(WmHu)i6Oyevl$@-lu~Kzqg$mEN-2h6Kx>`Ez4w#e z^vn=KQXMakZYCGBrYuXA%O%dalvf%++U!kce;}iiq9~}Uip65VdcB^AOrF^^&A$=f zeUZb%!{l~9&sW=Tc<(98ass>OY+tSKdy1k!L>PvFsw_Eq^c|S<;rSV>_oD8>K0Ujn z{rQwHwn{J&AG)gCKyv0{~iv>Rv9%lw<$^002ovPDHLkV1fZz@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ-{7FPXRCwBalfP~gK@f+(*_+ed`p)5^xJ-&rLX~vz z3{<=X5)!Y#ySQ;j%_C4DQKco4Bc(ZsNO!VV_TDZ<*p=-_Ot=5O`OVC4<>uxlI_CgT zRRFyAdEK@x0OL5~y+>71)qDrQIY-xZNQ{x&+uP{9#~6c%P*oLmT?0@Q1>5bGhldBc zt^>eY3qVy>0Q7y&-QAri2T>FSZQEju$=N~(IOn*yxIjcQaGEA!i~w9-UOrcH2vb$c zvc!8&S(fZ}yIkgcKF=*EiXwvm7K;S{<`5P_AjU`t0f7B}&t|j9=hj+O^$4V@tX3;| z0c)BjgN!j4V;F`35y4uU%MKwRA^=(W5v;CjRF!F(a{rRL*=)vQv7qn!oGhKEL1kE7 z*Hl%-G);&|wn$Q&RP6VAj4?-$G}$9%(=_F*B7%qzLZB>5R2AnO^Z6WO3~k#ojw4rB zS1gxH$^AQ>=ArB~kYvoHXdFiX*6a1*^JitM%K7;@s>(1748uTKmYkiPWwpr`Pft%7 zmi%?3%vzhjN9sXQ6zq08nx@I>y!SZg@~}=r0X{Wrx>x^p#9`|#)Q;c3-m@%yewf;j z{%rDB3OO|3Y5e&7I@aAIf9|ije|*cg*#_@DA9}-=pWo&5{(oTrtB(@56>`P;pTd;kCd07*qoM6N<$f(u9k diff --git a/res/assets/Graphics/Flags/flag_grey_a7.png b/res/assets/Graphics/Flags/flag_grey_a7.png deleted file mode 100644 index 49f1f5ccf6ae81d8b69256e2611e6556c3e0529b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 663 zcmV;I0%-k-P)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;4M{{nRCwBSlRt0NFc^oQ*RdPtF0GvF4aZOkhKiky zr2|sG03QW5CMHHUK0p`P*!TinK-~}$LkE^h^oEF1T~23oPRsx{4TV?o=J)yiNi2tl zhf!+{fYzE20(D)ZwMJ`=F^27Si}xOY5JEm_&wGz^4t0KhE@@dQMOl_8rP$foK`E61 z%jFX9Js||Ds$zF{7v~%R)>_Wa&g2*R_Y_4zUDqh3vf3~Vc<Fbi81EAs;d6LQubjOh%qt@L%y_LuX8WfTC~<9 zP+69ooSX=NPHF(t=`@4Vc<&LBk>D^4hzK#p?0DoXsrG$8f`t&6OeO#rW3pI^pCXQ6 zWm(eqeRg4t$!ADVpi;Ig9OeOnW*D;^Zan7+?tuV&0x3`zwYOV3!)3z-k1gy23 zo}S7rXV2#?SPOo`r>`^GNtOGVPN&2eY1?+x)y)JW*rT_f<^8iJTI)Fy&r!5|e0R(n z_XDjp*Voti%>w9N{tp9q_~L408IgGZ+k(pv4|p}PSZjG&ZfNcz@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ->q$gGRCwBSlfRA=F%XA8duOwb&XG2Milm5iqD)6| zF9Zb=B@aNs1MnEv(@>N(0O?LjgSbf9Q!K4_ha$3-<+$nA{`s4k-^`kun;UJK z1^^KOAjX)#z4wR+P16uU$mb%GbumV~_ZU@Wv)QO~j=t|P#!yui&N%>zqTqBoaeseL zUDp7N$72Ahssf;C8g{##k(4RMNLiM6@3GbrLZGf|`o1TGza=9GBzPx&&Z;ro-F%EvCvcIZAWFN-7{`kW@r~NwsN*v%%LK~16 P00000NkvXXu0mjfMMDug diff --git a/res/assets/Graphics/Flags/flag_market_mess_sea_trade_a1.png b/res/assets/Graphics/Flags/flag_market_mess_sea_trade_a1.png deleted file mode 100644 index 862201a2d40901d1aaf686eafe8bc34e6133c2cd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 660 zcmV;F0&D$=P)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;3Q0skRCwBylD}&cVHn3hZ|>E;N3Y3yZNwB@x=9D6 z2wFiWi-Vn99P}>`(aCNZI~2q%;D3;zLpG->G~yt&APAO#N(u(jV4F*0@m}e*ufz2& zIcfub;D-0dectc$@Q5e)wp|Ed-$h{oFbKe)7^8V}4k;zAR*M8FW%>aaW4QbE7rBb< z3V(moct;)G8WMO18C#A<$@h+k;X9uPsgn``@>x8q-#{LT?1;3tx0&G* z@Dp_+G)TByB5Zu;-R-Mq8^@e<#sK7_`vrU*f+-U8H0|a%J@pOqqlr(5>$)5s7|wZ$ z!vm8}y*v_l+DrQdAgr}~dLb+Zu!G151IaSb1np@|XPON;$(P(Ad;LCIYihMxRyK<2 uL*ItLtOlhG_y$5nyP>#O4aD%>zXJfKoU~~NkcPz@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;E=fc|RCwBylD|(BK@`V7bGygAh27(pA2~0f@Jfuq z5G4{~c{b7+EB^!&t)$V76;^6%Z*v7v6ANgtAt6Mu&`?k+Hr|mSdvUq!Tv!;3^VVAs z5n*dMN;=Wz{&&KcXT5PW>fb84_(^pORS{{Jy zRmFv=+_}AJZXKs_?mXDL#t_Yu9N<2TV*%^oupn4B>D{3@k5> zQX)wUR&LFtaTG<^M~cKU02p;*M5@H5Qc#k4hGw{Ns_L(=Xq$Y$pc{+ zQYw|QVske&0_ZEFAVS;{T02!5YJ=9t7Fz4{$C4yLL`aeZ-}fn(%hc<2m6@}CK0j04 zgog0zB!1-^VY5POr^+kOWvZi?&P8a6x%+lQof_J+czSQnJbu}|u=1#4Dozswv=&4( e(+kz@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;jY&j7RCwBylut+$Q5?rVv(Dxlch$FU{#is@iA=@H z3?v~BNe1G*djv%h6hs#@B8Uj0o6)I*1Rgqc2wV>lWpxsv@L+o}g)m**b!S)CnYOXl zVYaEU_0ae9d+#^%`F-E}z4tVw6j!x6wbYnJqznWK0D};M9RS`PX+cU!I-TbGwv7sa zuIuQ!4!E)7IP@&%2mp+$4NaspB2)o209X{rVw1&YZaj(OIBe&(s1AjxF~UeG35UZp zgz9LB))OoSnA~2`+!8=rU>+Fp_L_~PN%zB!Z))p`C0j=aBU4*>E({qthRN&@}#qiw$ z%#AFe>VO9`O_TgL6VZOi`!4`6HaMhgGyq1%GCoIwN-wT7{x}23XH0@o!NkOb=5uJQ zW-#&QxH*&lXWyppy!VYyUhihJu*Km69lm*Q$ysb<=?pHs(r7vw*t01YpAE5-|3YPz z@Ve^*TFFIXR01Yb_o9r9Wmud4Sr&HX^$E6f%UFRT^|kv627|u5cI)&R#hcmERdW#D z-YJ$Sx>s-Dn0r1AgKHI=*m8}rPl9+nP9l-e{ssmHB#NS8T(2k{+a&!*8c%_D=`{V0-K0omURd4YXB^r V*#kmk!8HH?002ovPDHLkV1nXYSJD6g diff --git a/res/assets/Graphics/Flags/flag_market_mess_sea_trade_a4.png b/res/assets/Graphics/Flags/flag_market_mess_sea_trade_a4.png deleted file mode 100644 index 301fe0dfa259f53c23ec96a19354fdde8f903ab7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 695 zcmV;o0!aOdP)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;ElET{RCwBilFv&NVHn3h@9gM2lQZH}YYrv3w>lUa z5k^HIcIp<^p__*e#RhfownvGeKOj2pp$VNR~S7l@*Wm6a7bIywLl5dcin1R#nc zhJIEtUg$u1oIywf-3Vy}7a>i6%ZI5i0Hk&m-L^xw?cg}^={=T4L@-U0mw#532_XCe zEC4cuWM6FoaP-6u03V;s0dVnN51n1{R*vJa6>VdhCIbTl02u5kn|S!sTN{9l^%NWH zsm6Qh*&-r><2Xc71c2+h6pKaG2G++mhgG6eQkG>k?#6xtS8fCinh8~avD^rTRv22* z-`@{_=XuSK074WQ!bbD;ZI`$Y4`wTj>nVo7b8eijX}$ z&HUF4=ZBWt!A2*J06Q$qcTxFXCj6}cgS|Q?0nPT#5Ulx>(u0&%2f6eQn9^D^ec#i5 zrV?jC3t`!3ZSgFd^(Ee&9OU8gIizP3>z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;DoI2^RCwBilRs!vK^(_Fmt4|IlbEEWw!tLXyaN?FxZF04XI>N&uvk zXstQ$ql_@da7iRh4L`l~uvp>bwW9!Nt!ezW0SJZ_0QraawEo`W2D=5deGunRFU}1PxNd4d$PP04Q(xDQ|Qg&(AEO zwe~pgL!y-9QUcUUYk)!x^Ivsp)q&R0JSh}}3&ZXPt5S>X*@h?0j!sV=r_Jidw_SB% z9hItp;{JHhy}DVfkOOnYj>K!@|mO87h5NhUg7TAH~?4H zcb7mI<9zNY0aOV6(-Osanq+rZ-Y6XYH&ihuo% aKLY^z9?$w^bW&sh0000z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;4@pEpRCwB)lD}(HQ5?lTH}9sox4u^s8>xW?OecRK zxY$<2#SVflI=DIMqEP>W(5a}4o8r=?ONN4@IJ5;LqVX4qLvd>{LJdfgR(bCxzIYvy zJR6f%@J#o|Ip?0k_loOywwCw~4UNJAU=V;okzjrL6afC#51KYaN=e+2{A`7EVT|G2 zXP?-D-4?0FC<+f40Y*@GC=Q~>6wmIx1E5~7GbALj7C3QTl^NdVlq1|W1SvLzTF9|s`D4y0(3n;hoFlQy|pai~_D=>E;4 zPmGKv$sBHrWlIn`mUKGZZ}vZsQc@@s1b`ewID0YZsoBM~hnLA_dnK;x{xRNJ5rEfK z9$X!Y2y?}Nnfw&lY!=yJm&;{V?v|LzPob2GxG{hv?F2XSJ_hs8YD=?kqqWw$KbgV@ z;7-v3L63N4z66w_eYN7Swk!ZxTwD}=W?if;3l5#!doEu;{u(@tb}B`N1grCKKEJgq zc_(fcC!_z>W2SWz69j-}bzT7h=Ew;EUQT2pa>F;&>NWOxE>gK?#x+R!}Of(Gy6RN4!op}n3psH00000NkvXXu0mjf>Eatp diff --git a/res/assets/Graphics/Flags/flag_market_mess_sea_trade_a7.png b/res/assets/Graphics/Flags/flag_market_mess_sea_trade_a7.png deleted file mode 100644 index 658962d31c606845feb5af2e48bbcec130851c7b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 688 zcmV;h0#E&kP)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;CP_p=RCwBql0RsZK^Vq=mmJAmZOV5^LlYcq1fgA| zLzNbUmeQ$CIyi`77l931Z*&pq$&Ju%mZQ@a8HMG}i3PZEVg;dnVSPP5s>S_^>h`_Yn80uX%r z&SbSoY-z`dJR>NwzyOLAH4;=vqJhWPp5yyIjU7v4$I{yKi3N}llEIWA7C?L;#eMr( zw5_QC2>=RME-p3zNDl=7JiYY>fa4cN02s)4?UXpuo?-Cd5CAcLk)dt!Vo3wAwHaq? zGaj9<-FqJyh4SMLt@XZ{!nK*@_@_cnp_EdTN+kgx0W5n!GP-c$WWA%!P_xAee)Gcf z_LIt=W5n1-RJ?O0fz=K2b2GZ2~-Zwo!^D2G)$#2 zb<>en1|r%o&cBZKVT(~RLlUpr=63b^mo84>G(&A|#wo9eZl3$h+Fzr*BFG(${dEY{ z^;XZiaL!Q_hn!}cQTjPt{L266%Bv}smzPCXvYAr{KxM!x$`1$G`1Apz@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;97#k$RCwB)lRr#TK^(_F*LS|&t8IBto6yFkH4fk) zAtnTkY%IprxVh+r#)Y|IFdbZUGGTFMV8;On5u!r;6Qct-p@YezCem73-?ctChevA* z#lg>Zcfb4I_j~s{ai6U52X~9(6PF(R!e-pCpAi$!{ z{-hg-445nwJX>0J~+2-SXc<-pqa`eb(hD z`F#Gkn9BkGgOrgod32$G&9xi#o|tVWi{pKT=H})^M@+{x!%e$Wuy8BMmQzOs4l}C( zV^c#U29n6GqnAq?Ocuw`#EzIc6av^>5@avM{(0d$pZY(Pj9S7*)8u_A&E;b4#NuwI zSH{Vn8|)QZxpUsQ*N50zdku{guSx@lUkWNTS(_LEps`oSb3I!7zoW)I9q+j>0AY+_ zecCh1tAbJJii`j8BEH_lU;oA0#0a$?RSqmjCX*!M4kiYcWwE%pD2|Esz@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;7)eAyRCwBald)?PQ5?rVua}Z{Txl;s$Ylt6kU=s? z#jOZVT@(U>ICLonH{Em;2gxS>3qqF;MG%Be!9h^62ttQgA*Dm0$sy)W$n_qn$#Y2Z z%q7zA^7#GU?|pvX_j`BZ2|3-}2;sMlL<67@fI^a`$QX&F$vHDg#z-_0fGkl#;RhZ< zYt3VEMJL3-I*amA^a?Aq0)fve06B&LxYPP3XMEHbA~QL1&YJ^x_Am_rc<^GfR<^a- zYc&J_@9N_zbOgZ4yo>w07b%d9gLh+v|7kui$);hS4{fTofdS2wFN|n+99j)QKd@*u z1nrJPzA!R1#YNcry;b^w#pbTHwQcSz!EH#r} zad~Dx_M~wqd*jrB8K_)}mj}4$Y;krkKP4vj;q4j#x9=sX7(huuz4=7|WB{Z{aP=Ay z8LG7b{lKDkG;!7sEXt*L`e}^FZv%~(eqf>OA+q2baOU~VTiVy_(5P)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;Pf0{URCwBSlRan@K^TUg$==VmuExC>xH}=>LYkz| z1g(N#A*qCb78W*vXr*>yqrpOArM8wr3Y#Dbf;LwP8nKBGBoH`EKds~NMUFqWHB@WK?t!?2w4DD*v3ZTk_HR_0zj4^Z*XgZ z3d4}Q>T>Awoqv^MFP^WU@JJ_omq83^w)n-XP^(l_;U~|R{&4U5;1S@h`CS0Ur^DD= zD=7e8FSHTd*dK^KzX7;9yAObe!NX9*rf_zEe(L%GwtK7>2A|&B%*^fJ9iB%=L-`iv zio;q-QLkC7l@#TQ!%)7}1qTO7*xSW4^_s=RtaYS|nYo>~VDH-4d+|uX#PDSyWfsXd2XO7NaAL!)UY^ng&Xd4STmxI25Et-G}1ORM^g*P$A!k5nq zAmv?fA!A^+V4_GA$r5xx?2~hc6U9tT;;w+`q4(-XpMHJ-Iyz@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;nn^@KRCwBqlut+$aTLctKc2PT}pS=-JPGB z`|Gf?le_Do2g5M$z4`p!`@VUjDW#auf+`itA+kCG1%Qqp!2tj{BoU6W%szR%KnZ~l zK?wkX57{aSY@I|?ssb3*npA)wHXdM`decLKL{=k$7k~hJ4y=s;CBEb3wfd_`VAZXUmnVry;Ep z?`cAW14wo;{J}=x=l41z;{_sFok&)9{lU-y$+Vxug2ranLt;TAnf4P59Uz1NLucme z7p(#KcFxOY*2B5D{HL9B9~m#WhgP4b<5BXNZ6e__ZoUh&S5}GPajUFO`miO_exmI~ zlIePSVQj&_uKjuVDl>(oeT!ls3i%iF(Sh9>EEM`796RHArYlABA zu$Ggbek0ih;N8;`09?Ic^Xl1IGVAMPkeK0cO&4yJGG7hLfHHnSe0?L}fk zipOKeocz-m>?6Wv4Y0YYpNS91qvPk%fDZwTzT5#Ivs4CPcHk6}64v?#k|Gfi1pRmo zP`h{Sy5i$EXVv~7oPa=)Vy`AS0CWwXM;aNPzsL~j2=g$trq#4O*s;pstv0%byD%>7 zAiTc_V56gmIctV{h>zu^MIxORS1$KgzQH=vlu|6tY6{y4N`bTm_Lh#!8>E&}$knnt zZGplZzJ%F7PwxYz)dQOWdM6tL0B@#D)z>Q_C$Lt!v3Ay=5CX$O+TzG{bpJO0WAjs{ i5=a7i{>bV8{tf_u3;J2n5&;4L0000z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;KS@MERCwBal22$8Q4oi}w@Jx+#@5|dNLDGbP>>ds zwzq;H6nZKsf_U&!EfiF|hba0VAgOmY`h8GhFBZ5Ed^bwF&I~`T%u5!{kDy2N-{{v#C<=$kfYem`32C6Ll^* zTyi+wZ2^=kdB#Rtlq>lpr_~WF+g$@=m?SdSU(ZtaGZYq1pnD*3#GtX!R%HHd8|TV+ zY65F{cFx4Gv)(Oz3XtBtg>*@x$V4yD~Z!H*icB>*c~ioy^g(D_5A zAJ~M|i&XUpn_otl`B#}ShL2Ai<9Y#Tz({n>rTTN6M*A09225X7NV@?lfKW2E8j60x vg)ye@MDL!tMk;WqAysrIQ!k9*Kk;_}OPz@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;C`m*?RCwBSlTT|CQ5400FOxQJ5^H9nB^g4Xfq>S9 z*qutjRdG=Wh|+Df>L;ih7rM$$`~-zU7jDEN2z3(>lv2ABx=39Fs)S-@VG?Q6H?bzq z#UzssN$={uGxwf*?w=8lnbOVJ5p+x>8UPOgfJ9>hURt8uNe=jpi9ixVa?+29;n4vM zgw~oT;<8p4j59O+H}ItkO(p@b@o@(e#RMh&Q$+o+6JEd7tS(&yAdeRiJb3E+*A{di zX;Uft%HNeF7XRRC27m}aer5)Md&{RdnW2(;Izr}pWUS%=E=i)COG7eMKV*B$q_}b% zPH=mq(p{>x1eLO&;TlxRf@&>6D&6%9T1S*V`BEeOiSvGAf`)5w^R5_CF(|UVWrp4W zSgF7b^)OD|z^b(bgxB~5N?FulmN$<;<+Gu0LTk;lxX^huJ-l?1m^4Fy zzvLS6ZIA*Rmi#@Z?=I%TI zi(@t}wDuFey%N5oBwkB`XQMm|Q})$bKGE5MpG!8*K0dd#6K~;Z*!gjb)%Bfoi2(i& Y07whQBQ4u=i2wiq07*qoM6N<$f`joR*8l(j diff --git a/res/assets/Graphics/Flags/flag_market_mess_trade_a6.png b/res/assets/Graphics/Flags/flag_market_mess_trade_a6.png deleted file mode 100644 index 3aa21c39d6f6e74fb65c4a3721c560c7a96358b5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 676 zcmV;V0$crwP)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;8c9S!RCwBalFw@sK@@<$X;OB!t925jv1p*HIiy82 z2cal}r-C2|dhlBC$3=Vd-h-q^{{^8J52Ydqy%-RMmg310B=!(UAwse}q>-5HHa0sR zHd);y`c5-%9^ZWP=7~p~)<;GQj!h&Q01p9pNDOB20jQzyXd%&@N(Di~iBT#D%2kVGsu$Es$nWlm2<+|pBn>Ap!{)N2X@P&KRW%U+=2w8*5}{n6-=TmlMh8qTPFJg}0?V&DNU zZXE-Pm5oE#gnH2*+rxU%M_#=a$qB7BYg49{ZVwnV)5XhP4yJtndsy5gPK7SYY$NqF zz@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;HAzH4RCwBKkuhjfQ5c24o5Z}EM&;dD$*UM>po5z&9gJ#GJ*d$2Pcazdy zha@+?CTF_;x&J-){O1?9CNT0q03dPD2&Qn57$k-S5CAPA0BAY{7&ILu01mBln(UrJ z7-P66a;C{1Cy_$~P)SD!>hY2LERqTu_{(b(h**!V@%*jk!JV^Y`vLvR?O9LqzBs{jCH311vs{GAT*O1Ez@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;5J^NqRCwBSld+2vK@^9-$zGD(MDKRfB#Wk42zUmO zvlpyV34$m#7D4T_(^f1bSo#kr!nMbNAe;!nMov?TSHvc$kRrPxNlx9{NhBGIB%4ff z_o{h6=6&;fZ{Las6jUegLttT|0FVd(OcX9-OiX-|^f-!j3qgbg(#Q>od*~pPQrr+3 z<&Yu5U^zS_0N*iV&0z?D%{tJ>C&^3oORUXas_le4y0xwW0B$~>oXeFc)|&N+^WEBb z>NEr(vFPG@^`8a;C|pc%TrBGLR#}Jb?^#^C`*)=%mmkq;XKB_2-N2w(7qr@0a{1Bx zl4t4GjE)$!G5d2Bl(1xuSp(xe8DZ=?2EiDAp!Rm_jljLh#~>jRbD*`~ire z%i$l4G0$DlH1Yn9r|><#e)t68>G^Ph9)o!?Njy?S(*?zLVDpUDrcg@Jc<3n8>4P$n zJ)6##G9B5Z(>PlAm44%r#vucQM7Bk(=L^l5QtH??K0mb-LQdd6T#zPqp^s(vFm1`D zCy`jLIT1FCxAz_8x_vrPfsVAe_xzhU>F)ml06y8z?1LI2ApigX07*qoM6N<$g6w1> Awg3PC diff --git a/res/assets/Graphics/Flags/flag_market_sea_trade_a1.png b/res/assets/Graphics/Flags/flag_market_sea_trade_a1.png deleted file mode 100644 index b50cbe1b3f482095eb9a1d3132401274b811ff9a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 635 zcmV->0)+jEP)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ-@kvBMRCwBal0Rq@Q5e8~FNx+mBIcb4NkGxtq=O(1 zEig+0EFwS@>)<|Wg+29IApu*$TU~bF_ zTTKW4BSSm$vP6{dVeKlWUcenVY;;c9YC41z(2q3i4*+=6i4r*=^~Um;tD9%jJq+Uc z;>4I#^r}71?`*w>MoX6*uAZX0(>QvT0KE~q~@Eb{mh7#PX6CE7p8^s`( z(<#)>x@TPt7$FEX{i6z@{KWhUk;4(732<z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;97#k$RCwBylD}&dK@`V7bHDbjN0PbxAiIj-m0Bo4 zt01Hjgmhx%pJ1Id@vsQdMq(xQf;OUd5h2xqMr+HJH#3%U=m@BkO@L2sB)f=bLf`v!WmVFU-(X1>o0!-Fgbe!kN{T~ ze6orVbh69E%YNp{`;EBhpq1yKl~3~b>xPqx@b#HAY^dsB9{-~t>H|Vi*`A_2Vw_VC>iD>w64BRp|!m1=Vu zfW_L6(XCKU;-zP)15rs>_`4`OWRuDb^9QXwJDUTDt_)$dxvMTND*~{ysR%CT{yFgG zm*2yWX&J(7vyG*VFwUzr;daetE|1dl^&F8Y6KI`=?O`e7)58E8Yg1_Yrvmoq0(xLp zFp_<=P`#$1WMQj=;34!8CSo(5z$hzNiNJt}%S3!A@T5x`!V0uf9kM7ve? z)E3dF2s$MwAHq=ytU;r(bgAYH=0d>Q#}6vwv$Q@xQgOmU``bk-VS{!vB-*Xg__~dr z4X6ZXv0}LMW=owg?I=CCJMZp2jSJqcgf8@(AYiQ^VwqcZ8Q7lz09X~hJIBwOhX4Qo M07*qoM6N<$g6exBod5s; diff --git a/res/assets/Graphics/Flags/flag_market_sea_trade_a3.png b/res/assets/Graphics/Flags/flag_market_sea_trade_a3.png deleted file mode 100644 index 18d54aa01fbaf5920b22a15e5236f6bc240dccc7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 742 zcmVz@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;TuDShRCwBqls{+_Q5?rVFKx`b2K6o(a)+R~%~UI- zgIE!QMTgQ+=-#!s#-Y|NPSvfexF~|4Te}pLfFd|p$k1jEcM*Vv$@^L%0GM8A^f{8mOm1^z zN(Bg18(RhxKCFs9hgQ&_g?UH5`14fX^2M;5b#`wqH%yHvS=a45XG(6Ou(<%h`l`Ua z5jk@xOOJe->|?WqbiLESuw20-2DDf%B$-}lP%E_u!d?|D0vagx@nr(6kv?5KzI#ve z@oV?09U)EcG}V)(HA@VcscR^^#_KmV{Itun>Za&D6PZj`n4C?LnaW^a-$O>Xa0s!` zjCQYC?|?Q+Yxq|KZr_?PtJCLDYt7oC(1cx4NmM8acPv!Prdq0^Ds3}uiN>3{i8rxA z_K6n%0*3*z`O^Zx`*}}~XB9LhL3xZ|Zxeo{zz$HM9N1&?bNHWFnfJ6r;aIJK?g0J{ Y06O5({5FgXCjbBd07*qoM6N<$g8n=~5C8xG diff --git a/res/assets/Graphics/Flags/flag_market_sea_trade_a4.png b/res/assets/Graphics/Flags/flag_market_sea_trade_a4.png deleted file mode 100644 index 0944e5d4a0c7a9e0ad0d34355064258968512756..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 668 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 diff --git a/res/assets/Graphics/Flags/flag_market_sea_trade_a8.png b/res/assets/Graphics/Flags/flag_market_sea_trade_a8.png deleted file mode 100644 index f5c8855ab62cebd4f036e4729ccd768373bd9a92..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 631 zcmV--0*L*IP)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ-?MXyIRCwBylfR1-K@`V7lOLOzpm)0>T(*oH=v^Tv zwnAFPQn9m8JGHWuBSi>y`WFcHhwa%M2ocXzB3k4+wcCwIHWw~8lYloC`@?LKJMi1> z+c%$i?>p~_C)8}P7D8Vku>cqZ01}JO2@*+2nTX>ot`KMpP{FJk{6i06t>uoWT8}E4 zBJ+CFiD)$xKag3>V+w%F3NR$3%xn8wl+v4KK`(bk09;u613W;Ae@ey{l;-1g9B$k`%C(uQ)lf@8 z?e4zFV5VZ&m^j)0-FxRaP)A6uXm(<+d?wjzr#?QvSwvo5&te6Djfq1Yhr8QmX%{|| z-1pO+_%)?=vKF(-eAauqn&#rAcqAMQ6F#?BxV}BglF!oHb`808F%NtH@RD_JUE$!vCm5e+zrC8Q6ht## zg_Nn|ppyZ`6*<3vc%8b>JS)8+Sc!>Tg0Gtdrbp0?y^2?9gii&JDlkU7igpx=1=uou zX(@{^G5n_wM&j0nC^tg7hHFhN=Fgl8OZD!tXMKN2plbw1@#xieaa!)*0RZ*cvY{ed R7uEm(002ovPDHLkV1h;24P5{L diff --git a/res/assets/Graphics/Flags/flag_mess_both_traders_a1.png b/res/assets/Graphics/Flags/flag_mess_both_traders_a1.png deleted file mode 100644 index 312f3768b43e49e1d698cfab69cdb2cabe489699..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 660 zcmV;F0&D$=P)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;3Q0skRCwBalPzc)VHn4M*F-!=Cf@lWrL`}pk^?rNGHM~A}%qxS0vnP(sv@4 zOD=)_&)oCg|NT8*ob#H%hHRq|1OdQck~hJ}2ZRn6%;hFtK`;RH2z@UyTl$B!8eb3EE_tyNL0kJE(9ak`LMmkU@xHLVUnDU-R-?H8z&Cv^LTwPaF~ z^_l%Rev?+GwPY^LL6!1k9kyE8>g-xSKc;8jzTN`h!P7Vs&q#)&i-rS`pRHCV{my5z-XAGQl3!VvA~q#4$z)38s-o&P+D}5Ke+eSs$_$L@ao}v02-&CfH;M& zYH)c?WCXvon60y`_N=e(Gv}M+QMW<=jk!?*>Mm)U&iRYLdI~T?q!nQ=Ko2~OR>ayv z0}&A(9uX04!ifQI3!1$d2*9z{^5@X8vmbGJgJuy%ifG_t20psCO{gK%3bx?rY6W(a uPWC(-162j040r~N5MBvSP9kU7`+opkaKdKl=WQPV0000z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;Gf6~2RCwBSlRsz_K@`S+le=Puv)E0O-6F+6noA+Z zN=2{=_yV~jiX=rQ)$9twkx zaR&woc~EvOO{EB&MCg`A5(1h}_E1y-JS6Y8cX;%0p7VIU`VoNXSquCDpw$!rtT$E) ziD9gm|MB8?0JM92LV~MfT!xHSfaj?*F@RrR6?03+Xmsh)_{0hAPK{PmFz8okH3jWX zjq!<-JVwPqS?t5sJqG;>cNaGwa(eBhreAgJ( zlQofxWd;1P_4L2)GNGx-QHhslKb#BI&D?GLe4BG$Hm?A1`$1CLleR*R>a&?u3y_eY zTs;Q;3cdYPAYst2Ff}=Ht#QKmEYKV==vM&ny)$doxMvF856gF+1B%9W1Hg%1L~s9; z$i&pWAm_vaPi%}KL<0$+@QU6Gi0QfrS9}>!zouFH-4FoP>wy6y>BbV{CKC5nD3C*j zCM!>fBu<5h@I1eiOzgh!tOQK#gOnt(BtFt~4>WNcGBn`J)H5cV-E@-8jU;ykAgr|| z^}Tn(W|KXP>i9v#uon^^X`;RRc)?z%&gdw*uMb)qCnRW$|7@a00000NkvXXu0mjf(*`s9 diff --git a/res/assets/Graphics/Flags/flag_mess_both_traders_a3.png b/res/assets/Graphics/Flags/flag_mess_both_traders_a3.png deleted file mode 100644 index 214357a86b1ee9412cde8d0efb0efe0f74e8f46d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 769 zcmV+c1OEJpP)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;cS%G+RCwBylR-!nQ5eU6<97H4JIr`-<{&uX!Sx{M zDI<^sp;hou&>;_!&>``pn+GeRk~(C!vP%R~7zBCv-j+)WZ9dOLjpni`$l8v9g-DG!u~*WJWv^17RFJpnZ0I46N$ zKiZ6p?|}*qo|;-(f3v;YOli%cTFFsbv)JBkrls{aB7!(D|834X0erbwpjydsdF)vh z6As*tjPGTe9)3@a%@D;3->Yw)0o7JYKv&&mtX2^Ce$JL>2Y9j z;I2v00DNAYZg5%e`5~;MZJ(*J8Dbp~h{OE)!Ex&jBO6@<9T#>08p*u=xE!gYtS&!KaI3QM1qThcybb` zwo)AYTE%Rp`kx>O#rH*k3_Q_)pOl1fCjvB%1dV0Jn!a?$sEzulNj6wQOn5BW!DXPZ zjCNvPyz3#~9`HPzw~ppC4Ye`yF6Cn7w*w_SgHC$z(yfI9Wj~F_y5IH%d zmNAB(Pc4J4{Y(X|g;d#Sr(r1;1~Vo_oeR75Fc$%=*T+6(mBm)k{>) zBTj;!FXOhC>3f|1AFxrYv%V2DuB}dW2k>_Qw65&4c9SG_00000NkvXXu0mjflDbmQ diff --git a/res/assets/Graphics/Flags/flag_mess_both_traders_a4.png b/res/assets/Graphics/Flags/flag_mess_both_traders_a4.png deleted file mode 100644 index 37df1e01861390e60926a7357397a3d3857ed17d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 708 zcmV;#0z3VQP)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;I!Q!9RCwBals{-wQ51*2n`AhbIK0=Tc|*Ym9khek zOcn$|C}@R>4i0uGty66l#V%4OLl+g7PzV3e4lV^d2(?2&5Q=mVl@6&xXod_)mgEgB z?=Id|nR|Ef@#(k1 z@(Tb~CoS*;fbxz4pj2GKMer_o0Hpd87iPCPZMjP+23gPVh)d~LNhM&rTbk+lqccfE z!yPKMEae?VtC^;}qo~xf3=MYxFu5>}jbU%rZ_;X}xiPzX2H0C99XGk867#MQp^4WiQ(nfqDsIdYVqFsb6U+bS7x8l?+0Sg=*TeuZ*Q+5 z=iNjFsVCQ$t?oDE58+a1Ma0x55|%fEOlU8B>K2&_F=I^!yR6W}3$S34+jS zrWqYMW^B>|9X^%TzzB8IPLv3c!GK01(Rh08HG)vsC;-sdKZ%2Tit-DKgnWixZ{yQg}4iblhyZF+Z8qI;+b330`cpDPkJ zJgR1j>K;s-T1;7M`SQ@Uo*#he_R!Ql>VGcMuKSok$luvSoHpnHLScL*RD+Z&Ywf_2 qHXnOd1Y8=3?miIXOIGn8`#S(?ZphCTb*N7O0000z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;7)eAyRCwBSlRaotQ51l`n`F3;INX<|eMlgI4Aw!& zW`{{3t^05 zLp(Pck7bfoR`_;Dk`XQd3L5|$2M>>isffgsUHkZnC)S()n9r_o*eqW%9K`9LU*X^|9K^|`$H8h$NUa0SF~dO|l#Wy%n}PiG zIJp0Y>UK38egFI_67atC0`K2VYELVWjV`({#;`B;4Red?pNkc7^yCGOx?pXqfrW*1 zy5wIOG4GQADDKp7|E$saQN#^y%|(Z|YD-OFtAU;QP2<-d07X753`rQ{pGoUb_zx}7 zt^{r4X@wQsvs6B4zTwxxmdTd`+c?$;4V-lg?A6b%1p)jY0KE{vdD!6SyZ`_I07*qo IM6N<$f~u||R{#J2 diff --git a/res/assets/Graphics/Flags/flag_mess_both_traders_a6.png b/res/assets/Graphics/Flags/flag_mess_both_traders_a6.png deleted file mode 100644 index 6f91287d5457e2091dcd6ae74401323314f966ac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 671 zcmV;Q0$}}#P)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;6-h)vRCwBalQC!$VHC%I*K~MC9PY9-83H-Ukaj4k zTSO=b0Yz}g;Gjc6Cu>)obgPTBTZoGaMd(nZgAg17l|rG5V8{?0LKDc4%aUX;+_xm3 z!(A_45`EM6-ur*Q@6Y3V#xoo}WQ!3X2mlHdoP-o90NV5b6=+NZFVOm32bYx(`pQt) zfS|&rpb%1)3DyX#5k1Z zzz+bLH3NY1{!2W-vDN`t;jehU^KAy|SO6q9Ba$$Zn=5#L2}q78?4oM&@agXeh*6Tn z+Jsg&PP1k(=*MW*3|iediM5G85P^fseIo*Ue{`QgKSqB0c)`W>BNtUOlKU2C#}HP? z*b#U0(dx#@rpL6p@vvr#LaaHMjbEvsKW5O6ac`%x0J{cd)8lBvUgFH{2yRD0ca`&Z zNTB@s=>`CI9(a));NZ-k7r^SW`3(9o+{P5iDF*!*+4Pu=q6Q`;ia>45pdVXsAHW2Q z6bi-e_A5N#@Z=D_fZLcZouS*9B6*3_46QY<&9@pQ!SDA!vC0M6ui1o0_?zH}g+j3M zvu_c?PD>lw3hyXP@jw*q`fZxu?}nSIPz>n-f}MeKdj<+&|BB1qn_8?M!;XX7-lAE* zg;L<;&v@~(YRv2Z3j;VV8QK$Y)&&!S6;c%5=mprH0RUX*$xV%0WGw&y002ovPDHLk FV1mbmB830| diff --git a/res/assets/Graphics/Flags/flag_mess_both_traders_a7.png b/res/assets/Graphics/Flags/flag_mess_both_traders_a7.png deleted file mode 100644 index 68f956093883dc444ccbea7bc5507e40647268b5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 689 zcmV;i0#5yjP)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;CrLy>RCwBqk}+r#aTLaX|E9w`;&A^iO@=}bx}<{` zH;W($1zVv*2N#Dz5kUk8rHgb?I~Es1ofKRg9Eu9XAy5#C?WS}{me2|ra#@la8tyIa z-{F$WrRm@YcijKo`@Z|W_s%R+a!?|HpeQ~?1i|aym6$G3zeiDGKoJB5piV%<#Gb1e zD5B{LA)-r23&BhHen>>Of5m7j74$hJD(=KgCUp4lWtWE!RtX5m;?d@70Ol86TB}tJ z0F|u`3Ir5yB=w0b@yXhc5g{d}aDAjD#h~s1*o>GU9PD|lte=e#1k2R)IgMtXTGh~L z=crW;jb@&y>GPzgplt7NnT#{#{ih{5?Hu>kcE(%`K60?;|p5aqSMYXH`D9?8s|(c0@WU!b}os@ zrI=k}B0{`yfp>SlQhD|?U43|baixpR$1kYF+a_Bx&N=p1=N%%TLRb%|{hdeE=al-G zh{Y!c>?~AHx6D|~ySp`W_|iJ@6k9%|gizmIhCd5{(BhPch$4mICjD`@#yNLojNfmJ z({6#*;Z1%WEntZ$FYRMzL&WcbjVNz8^Iu{BpPv_9U_*!thz(KoX>~2DZ%@os{r?64 Xj}F#y3AfDl00000NkvXXu0mjfRwO0a diff --git a/res/assets/Graphics/Flags/flag_mess_both_traders_a8.png b/res/assets/Graphics/Flags/flag_mess_both_traders_a8.png deleted file mode 100644 index 70e4d283e05acc1210c1937a9c3d8e97b6156d60..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 649 zcmV;40(Sk0P)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ-|4BqaRCwBSlRaqLKorM+vOJt{hm)7+1`h%cj)#)& zg-(H%LWc}pI+(UoKc+&K;!e$$l0q@<)Ix?X84F1%rgRBpbjaW=CMkH3w8$Q6bc>@7 zvcBx(EvNhQ?)TpR-N|@`6MM9oA`u7xG#UVbK%oGEhmU5G=>iLg(12iy;+#q^_KXB% zqank9D13t^%5;IfSX~q@8bvR@Fsf;#uLs|G@^}jX7nd|%cXt73Z^oH6>>B{|cD4bK zi-Hvj@uKsy1Ojkwmr}0P)rKs?jt?y!J^QzEsJ=F5G_Eo18-#($ux~IL*Ql?}^Q5G) z9QI}Z0byWrzw;Sqsk^ku@u5}Pr=SlfJ4OZ*Xk6S%IB@9e9I@>FDQ&6)p%QUS;X0c#Xu{^uIU!OAV$G2Mm+!3F*@g$pEBksw=Tn?@YRoV>APVNa8Lok+aXHs1L<13!6; zms}zMiNeB8h9V<+lN^-6u8YBYD+Zmw|0>V|=}fWY1Yv9Lyo-$GGdIH0IC^QvN=@-1 j2Txl(-@7nw%Kbk83G}}r#Q$=L00000NkvXXu0mjfY|{&H diff --git a/res/assets/Graphics/Flags/flag_mess_sea_trade_a1.png b/res/assets/Graphics/Flags/flag_mess_sea_trade_a1.png deleted file mode 100644 index a72dc07b1308fb3985f942843f1bd01942674f41..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 668 zcmV;N0%QG&P)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;5=lfsRCwBql0QsSK^(_F*Z!oh<|tQMX&WXT9o$3) z1_$Dx6N`hJadObrg+USqjBc8^ICtpKfdpa#0|sIUl9-rCNQm1@Y6sf}Asle!9G>sd zifQ;Jm)!U6^10tX^&~UyKi|j!AR+)b=Mt~AMnnk1kXRy;EC6dQ_x661`d~wq%>;-D zsV=0tFrz+7r zh5p|!Bdv7=?L91xT?1h1!BJnDv8HDy{|k$wlz%}058vL78sZhpbL&jcPGYU4TsCw% z9ROD6Hxsxq=3<&}rZ&!t`*%Ege~&@6XI}~u~P)m=m`@8{cK)Yl3(X6mJ0-a-Xcvm`xs-W z*X#YTL8?B=`y=3{fxuYETQ~}6>;~MgwpH)jKLY?DdA5bx1W*6~0000z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;FiAu~RCwByl(B15K^(_Fmv?!&wC}~VrcDDK+DW<; zI<tG9s<2X2uL&2S5I+H^w#XJ9xkO2K$4^H9- z`SAEB0Mo?~ASSF-7Z^o=LE0AdqIC+OpFT?*s=vl$2lh( zMecf@|HUwOax_?&ouMBNSig0ekU2!9x^^Y0Fvd_Wm(4^blGYCg@uqF1*?IDbN_CB{ z-(k{q5|S&`HMG|3@9&FPrag$%ZmrkHzItuKjpuLfe!V2|lFV^Qz8E`dSsc^^K+<;` z8yg1TtRI>6peC4GPFW{3IfXjV8jKB+?XzKY)f>nN0z7-Ge|;7T&u%+bzK*& zHEE#TZj;X^Jt_7cM6X#MP3&yI^AyE0Dwd@2!eoOvB>uJwn+GF6yKhU zD4?PJYl*4SZ`#cg-r*vzT!-bJU?t_F)hV~%?ukpL9fxOk%I49_=)%s!k||}Ipg?Pd gQks?f$*lby05BZYIZF|MVgLXD07*qoM6N<$f;d7hx&QzG diff --git a/res/assets/Graphics/Flags/flag_mess_sea_trade_a3.png b/res/assets/Graphics/Flags/flag_mess_sea_trade_a3.png deleted file mode 100644 index 5a930ff380fa9950208c02c9a77b6382d0799659..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 785 zcmV+s1Md8ZP)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;hemhO&9FIA$p z!DsTJ2f)&T!_tBiVbAYOM|ta(Hi95PYfTVT28pVK36Foprse=CB>+-Nq?Dx7X{#z> zOKTE<{^OIcXeszLlBZtW?WvQ#T zBeGmB$MUBfvU^9=X9Ell4jQdB0HghrF-7Z710do3QU{Z~^?-#LveXmM3^kg5!{46DVm1IK;uIt8dYhYl&%*@PCQ6*V*$CfdM|BcM0l#wVJy^fYQ diff --git a/res/assets/Graphics/Flags/flag_mess_sea_trade_a4.png b/res/assets/Graphics/Flags/flag_mess_sea_trade_a4.png deleted file mode 100644 index 0f28c9301cc9693a74279b37e12b50d624c81e6d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 692 zcmV;l0!#ggP)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;DoI2^RCwBilfP?IQ5?lT_vQBGzV;^M**5xyV2hJO zCG8L@2rk`3C!LF<5oRu zYSP^qo?d$gz>%XN0I%;Y08qG+!R@N6(ps};_K{N3*VhMtLjw|SUG|%o9snEb2{zUf z@qhW@Qj>LnR4T>fq==3L)51T$z(FVJM9Y2oU6q)BdY)-=h&9!vMI6dYXITKDk_uN~OZw+?;4q7D<0__H9hm&QgR( zRS*QtEf^ggwT(s3Z%wxpN8=IU@}o;l^A?j;t5swuFbNC5r)j~lQ_i75Y;SKIQS>Y{jV1(W@o9nerwWU7?SSP>{4H+iI3+A9ov>jDMj)4 z6pQcs8OkrWlHES>8Gt80@_aG77)(?18~3%Cou#%KQ0^U|yfVP)zsQ8OmZ_`04f;1> z2e68rwSd*7lgy_(`R)p?_bi|?Rq!^UrWl;4iFV3`we2lEyAfFBfzKMs0~8G2wBmoE a{22hJMzP6|z1|rB0000z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;CP_p=RCwBilRan@Q51#0H+y&UX7|P2iJPBQkOV6m ziG`pcAZVy7J09b3|yVe>JVdJ;Yuk{+~bQ%$fb43Je zEeC&Aah`50DYs3NQG(L|rvVuy@qKz?4uEXlP%4$!=NhtUjWGse3|;#>>G3+5T3=BD z5GoRQed`+l9o-E8-i&_$U~sgbj_zWdXRW0zt1(>$00*G2uMdDsPSep{WcsBGKy@`m zbu|?iPfyIn7DQ-c%L)JisMTr!7-RS!cKTY!@_ceq#bn!Gv(_?rZZjb>!qANqG`V6# zUBzSohYt5rsZg?I!$cqas zE-q4R_Yj>dkE=Y-nk5fSQG2$JTG_wVJW*t5W>ullZ-r`QUCfKe+K|h Wx5MIAOLa^D0000z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;07*naRCwBylRaotQ5c4wbMHxVj=8b78t{jtq;^x# z$@+sx2RB`G5FDIEp{`v-L<;IG;^LAegWxDC%}_xwM1|r|1P6;zY9J&LLUPr6Jr1`y z^fqn4cRJ@g@AvZkyhmKo2hB=p0stu`0AU!~yXScT^ndpFZ9=4!q+H3LDCPhJLBQFs zeVj`FyU-a$T1cD-oCwlFk`}Sh^8NP!bh};4aZ?hd6#3jF`P?K@N}dGYgaj~x1YX|x z48Wd!5r7q(z3v0xrF7hZYmkwkP$&T4Y!*pp6;m@M-aL=V?WRk+>Du@D<4^3~>vNzK zC(B3>x`uo{KPony&;LM5Nu^Q|0CGFAGv^11Hix+S=pw~pA|+9PeVLjm*+E}^c-#`I zi#5*OI!UouWMkPh8V#!V;Px# diff --git a/res/assets/Graphics/Flags/flag_mess_sea_trade_a7.png b/res/assets/Graphics/Flags/flag_mess_sea_trade_a7.png deleted file mode 100644 index 49baa55cd582713cf8056cff0949060d9f29e042..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 680 zcmV;Z0$2TsP)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;9!W$&RCwBqk-KXYK^(_Fb2odLNj72jvT!G9B7$03 z1eJsc5lJdL3;zcT8x`>puo1CJ6U4?Qjly9eNK_KRh>G!5Xc1Cb1#;ow&d0`^|?e0*SFnEmnF??Vg~2I6|Y4*)48&N+PFM@os563_E!G#XfI0dUTxM@k7m^V@eu z$_+9f$}1xD3^^gmG$AJ>o9mVzUn4xv>$Tcz ziu9fo1f&*IWm;>L`W62D3s2f|O4>}Qu4P%87wviO&TMI3P&}0RYYF8~TOHp;9LJm( z9gBsMgki|#{SWvbF1{IKZf;JrDVr=*Kq;_wo-a)BsJnrbl1io0wnQm~Yzq8-)ma(9 z>nlO5lm%fSR(zbD;GWq)N=dC&W20{A>Gjhx!hr&%QmI`Tz{rhSYobEL2dYI@7l*jj zta*xH|8oF)Pr8oEJDXep O0000z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;2T4RhRCwByle=paQ5431cjhL0XPqQ-%|JHTY`SO> zun9o~n;?RJg;+=wo7e_lq_7ec!6v0_p_PRiHZfQT#s`Qgf*?c-VUxn$B@bqdclKJW zbIm3j!LK`y`}+k5{7ju+O6l^9F`Qc4#Cu?C z0w5?TybQbydWED{NW2VQ-T44OwriYUDTS1hxK9&B5kWyQmwp#Auaxb!s{qX3`~twy zp$ve<*<}F6r$zx#O0_$}0^s+w6?yDI?-51+V8rWZ0RZ(4pZbRH;_n`QrhhPEKg#9u zL9)E!|018Y+#k?dbNYPJAv4G1%tTkBN~IzknK6bqj$Oi~M`vj?8g5?WQ==3ILgb#( zi?hp2&P;T?^8n&FMr+OeGjF@fC=P@j_T#JX4@h*K4HgDy{c$|G_Tm6pejYjM8$PQG z0>DXhWUb=gJ*+MWN@LzX2fn`2>b{74i^dpkteoT4*!-c%dojHcgPghTHZ`+t8^2rB5g#}KAqrcUmsr^bpSSh zG->$|h9Sj5fc3!leX7-}=;+K^+f~NL+kr)-ZSrr!kSd~5lOSrKqLh=@6S4ozp=3Fp rU)FYbxJfN3QA-0Z-dz)i<^CQ37H6&fgw7Dc00000NkvXXu0mjf{IePk diff --git a/res/assets/Graphics/Flags/flag_mess_trade_a1.png b/res/assets/Graphics/Flags/flag_mess_trade_a1.png deleted file mode 100644 index 530dfd6202a136709635a22b779d672f541060e5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 686 zcmV;f0#W^mP)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;BuPX;RCwBald(?|Q5?rVulHIGdx2{~T7nD`To_Ey zG&-2Lh%uTlFuIAe`~{deu(>%oF?MiZXu@J$NQ^-lOo%onR3d3(xxtoTE06ZB&!OI< zX9=I=hTktQ-}n9ge(%K7p(*`gW&{8!B>=wfo7!<4q?A;vRYIhc<^xblaewbOLTk;< z`5U?u_{0JR7#VZ%eV?BPRb1BvAd$2IaN@%N{HRsf-`^J!Knr;Le2)h&u0=!uUful& zz}$ic4gn|?1pq5sw*av1o_MU^#cHk^5lUEbve#prM}I$zYdY^Yhgn>18ljMMCZJqN zQYs4So<*rBC|8oCGiNh#949KawsVELXR$K#Wx&Paa?@PcUxy6D9G|#s-1S=zDOZxr zPPZsmk^`58i-`>6^})Px7e0@WP-u3#H6V8G0{Un7Zf)E23hTX@+<9~osYCMlya144 zq@hbTr+*ZS%T4N@#o=xjfVyWfJKg&CGy>8KK(R&Lvmy}z2PIS$$6tsQDCdR4NYFvbrl593>Vv5ZtS9Qt- zluhHv<-0e@_9z^kDzk)6QxSJ;I!%Rd>7Gy^aK=U{6biyP(^~WSrO+rqpIJsI2+M{` zqc(~1Cix`Oe2sPZb$pELx@>H0M8z&5|2U;jfH@azS3yd_iB0XB&BJ^{^q>7Z0LB>7 UAE?LOvj6}907*qoM6N<$g7*9*;s5{u diff --git a/res/assets/Graphics/Flags/flag_mess_trade_a2.png b/res/assets/Graphics/Flags/flag_mess_trade_a2.png deleted file mode 100644 index 9cf86d2df6d5fcee3f2b40190fb7fcb2e50fa3fa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 752 zcmVz@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;W=TXrRCwBSls{-wK^(_Fmv?!+nD;`GrcDDDtW<0r z3LSz{99tBGjvd6QqeC|ZwSz;Q+>1B}E(I4sK@s9&ks>&VMYjEI93MWpiS__k&;JACcS*T)fvWyZ$>cf(LD#hIRLQ7pwnyw;lS?QIc=nccqTqaXACbvF>2o@|BqqZvOD z-GRHe8y^Dh<&%DZFJC(ht$}det*os00KJZjYxpd$I@GELmE9g4uS>0JFg@A&TN)ne zC7{rvRy6>EOaeq2jRwC(CmLC~mE9h#rV|nq`F!5@x-O|?ijLRC zG@^{0QbPrr%_h?34bcO>{qT6j^^m}mxi6;qqbr}yJj)n3tyb^>0HM#obzQRAY~Tt&_`V-f|MXDw z2@Umcv!rt0saJ9|_NRDiTgz@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;t4TybRCwBqls`-qK@^9-y`8bLLvxUNgFSmf7F9~B`K zD}*2j0`^WXVko5m=;-KBc1%)R4p=c+XO83WZ6=TFx&TBI5`eghBAgiCa|I@{9}Q7I z(An9^-M**vjO-**gLs3ZVfT-|T}^si0kZ&1jvD}+eX$2B%WT`#3P5D7lHvV%4Xc-x z?253FCA%WHu1gRET6rk)^)s8^!7}lfO+036|EA^|*<6CjafA7S$>g{}HkV*ia}6ma zQcA|g#*B5qn{Qf}FPNO){!aTW%L1Txu&k5T*L`<-nEPHNolfg`4fH&ZEnAzkN`RxT$}fUjSssYaG*Y;bkc>Spx!_p7O?DWax@84Zuq!oor**tTshnm_Q}S%%+B+S=O4 zWHLrb;eh#yk@h?n?A7rSLLj9?2tiX*Q}}*_;GWUQj@=$Z4XIFfwL+y7?`|84>fcRY z;#VcrMH|25^3d2pxm*q@KleKzbs$6cRb{LN3V`m*>o)+NTuG@*_9s}7c%S$2JleqS z#TukM{Hok=9QEJke=Kt)r6fL$c4z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;RY^oaRCwBKlTT<9K@^9-*-VmIvm28Bb-`k*^`KB` z1(AZ_sYMV99=r*qJxVExh!+n%NWrVOUX)(MlafG-7$^t@wTeiQA~aZKTbm#x71O4H zN!CN%HQVL~bC}0_-~49Y8!=`%-bP;sT5F_~Xsz+3l)|zswAQ$;OEek{;s8=g0JPQ& ze*cY;`SVkxghfn9j5@@G3|6D|9~@~2lBPw{w6Ls$)z#jKQVJ<0&-S*21kee1b!VNc zGiOM)r)bvWEAIg~H{t;W0M>E>fay1vkW$jy+Y5lvT=?MPCWm$Wyg@7Zaoe`ZX0sv$ zTV603o2(ouYU{3(cN47T1f^nxwVWXDCTQ!f0}zkLgWLf2@WTm8#R$`7y0g9-p>WG>=O%s%h##_sCnLe$#S`jtP6C+qqeut z*kpxLF+yRrfs~R`F+zXO?!VEfbNAZ;s8Xqr$z((brnSb1Nz9l;O3C#{BS7v z)9U~{-y9^bYiM-n@tgnaRM!&KZHJZ40amsK7(VRG^E?)Br9G!_2lfF^v0rf5{(6>o z$z%M832t|MM5W4L?m$&BG+Py|oD0uueWe$798Z~$rhqa51w;3|mJnZm2LKTl%aG(x RL|6a-002ovPDHLkV1lGBJ~#jX diff --git a/res/assets/Graphics/Flags/flag_mess_trade_a5.png b/res/assets/Graphics/Flags/flag_mess_trade_a5.png deleted file mode 100644 index bbda9e733da5c2fa501133dea8939c1602052c56..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 702 zcmV;v0zv(WP)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;G)Y83RCwBSlg~>OVHn3hulsJkZMBIvW9yQUaj0PJE>lQcC{(+TiE!66tgrDP?k3N{QB* zwxs}JjNx3*SySDL0RLMt|_Lk<&yJ;Z-jDT08-?%b*Ji2h8 zDFHmY`~iSd{U(VmrP)$)=yY98#c{lzs1*sU zR4OquoYPY@JS3?Kcx3l@XA z+sjr@;}x;WjC&NTdp-6Z$BD{%F&<6p($$LPE2WZt0my%|`@YY>;08f4#p?Vvp63x1 zQ*^hNcUGfHwjaoq35qF8l~raYlL6q`gMNl4`jXMF&Tm@}hMr%ivfRedL?52#S>J>) zhTh&@6T{-&5z5XQh9REoa;y0*4i2jIJ3aS}uvQ7+(V0a`UrzEg?IWdR6Ahu=+>yo= zGM$S&S-t_l?UmgV7sf=t$)|@RI#d+lx`Hr6C2YdknY?O>K>s#;PgpH`c{gKP8`cR8 k%>KB@$oTA@Ab`IE072Husa>YiY5)KL07*qoM6N<$g2_TKbN~PV diff --git a/res/assets/Graphics/Flags/flag_mess_trade_a6.png b/res/assets/Graphics/Flags/flag_mess_trade_a6.png deleted file mode 100644 index 6f29635a5a066313fb03ffbf11cd70c6ab9ac650..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 693 zcmV;m0!safP)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;D@jB_RCwBalTB+AQ51%so4IXgIukmCK!c>EA8}Km zpdx-y+-RwwxNzsjg&RSz_ydY`(cj=wh>Psp2t^@ogo2_JN{}oxU^T@iI7}ksW2`g1 zF6!JmP4!*fbLQolckVeOZd)hR*3=jPQc3{AFx0i4wf0sUpFcVHl!fd4L=8|Z7DarP$K8+LG-y=zaa|X`X;7Hx{#lKP z%py?k;x~N@wRt5 zhXeW93uv`l*l7nTCAnNquZ2!_&#vQ+#rOcr?1LHbdFv9zp-}&`#;|0>GLezMah(K6 zC;OM)+@DdVyGv_(n(f_FJR9v1h9Nh+6c09Eh@<}h!T?IQgzAsL^qh$W^Z`o+TzsSk bV7~_dSFF-igldvY00000NkvXXu0mjfSYIa| diff --git a/res/assets/Graphics/Flags/flag_mess_trade_a7.png b/res/assets/Graphics/Flags/flag_mess_trade_a7.png deleted file mode 100644 index 432875e46d348e4936698fe20d7489c64743230b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 725 zcmV;`0xJE9P)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;OG!jQRCwBKlFw@sK^TUg$YMogE+qHbXr04XIw5Rl8|kWwP0#57HO-$!c=KoA7+C#3`+ z{P~NShEL{0V^b7OhXEnUgfJi^I~~pMA0DP@#(u zo%e@mHw_k!eondQZL+qk5^Dg**^4E1cKFytUw1v#>RBeoJJjmgl=~FS^E@7YI~BVd zFwDeI4>UR6Nz{8sjA2SCY}<~HGFSFkx&0;{s65R9aPCq!vHoAOmsu~&xw1#QY0y~T z#dTfUO@qnt&cCM-QkVs*9okJJ17ThY}@AQqsx?^U5Kx~vA)~a#g)hBSzTQf z`)eYKB3{i;MOYSSi%+crD?>g~N?NT}3SwCnG8E)S4p6C7(lCIxH}a8XX%HGBi;v5* zyl}RWQsTNU+g(l8{+pEy1;w!vOG`^4l^MXyT{rOqA)*uQQMTSq^I%A!l;Zkem;6Kn z%W)z9J>@!f)=$r`9gL1R4bY=l`371$Y`J;n?|&8j`u_|7>V4(Y_dDSU00000NkvXX Hu0mjf42w8Z diff --git a/res/assets/Graphics/Flags/flag_mess_trade_a8.png b/res/assets/Graphics/Flags/flag_mess_trade_a8.png deleted file mode 100644 index 8d2be817918046e485f69f08391d8742b50f6380..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 678 zcmV;X0$KfuP)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;97#k$RCwBSlh11tK@`V7liix#W?OfXK(}Bam3S}* z!Gj3mk5fPp1pfdL^`_8+M-dU}#fzY4@gn4|5D$q8VnIc;SfpM;6(XcLxCu>`jdhdp zPKQJZ5t)09(JiT04-j0C1*kB0~}M`g~sfBFy-t>h15Gzjq`70C;@v zBLJnc(%O1m0I>A-Bmlve(OHdwC<8qEyZxuLF!XRTq&pAO--4VDgnLrR$d#)qs_?L;1fDwT@RuqcX{&AI!! z186ie6c+*-%}hei=kxkI6$?^Io^{UPw+$}KcN4G}R9pxWdfcLh<hU=XnWDyuP}q*j(h%l%tOAQ6k*;KW_?Or~KA%stDU?#Y zza^C=yPzxv9hcVE63=I5_|ft8QyLlII1bZk8IawPzcv_icq3?7)A{ z!@$Dzy4Y?9%N=n1ZYXx|*%uba%NtV7&v$8s9<71R^@kf`zuJET00ubAtupm)NdN!< M07*qoM6N<$f>s(MaR2}S diff --git a/res/assets/Graphics/Flags/flag_sea_trade_a1.png b/res/assets/Graphics/Flags/flag_sea_trade_a1.png deleted file mode 100644 index 3f16453231e0a79c4cf83e2770b52d024c24e3c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 645 zcmV;00($+4P)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ-`$$eNifvNJ?wx08Uv zf?|`uKnr^dL9|N1Mh!%Zup%kqM{qOprtT>OGZ(TZH>AQUC+~G~=(K{bdJpu3A|mw fwT-|SuKhm%!knhiXuRHZ00000NkvXXu0mjfhi?q# diff --git a/res/assets/Graphics/Flags/flag_sea_trade_a2.png b/res/assets/Graphics/Flags/flag_sea_trade_a2.png deleted file mode 100644 index 4bc855e20aa6abb81648d10f12fa1815e6c5d852..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 684 zcmV;d0#p5oP)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;B1uF+RCwBylQC!$VHC%Imz?HZlG3}DVoq>42SHIG zAfi$b3NE^J?CPc{C|0QzOT{i097G-56&%c_f*l+zbrAy&9SWKbLX)A%X>IO{Vn2s3 zCUCIqqXT007H9z z19X6ynK5=q1U8MC0$_JCzWCAspk7N;ucbTw*6clc$;~)1SX^Gf|0>KE0I(BY{}8B% z(Q{Fv%)iRaTsM_%sGd+uYmIgKnkMTRkBT)<99mPe2GXoTw$OonyZ?Z}tCvxZLce=x zb<6x|a?8i=^sl820;t@0)cs!U=k4t|y_&q;SFfd6Ua(B_b1_(P{FaWFx4d9cIGXxr z!>gaRx+l3yy0Ge|0$Tw>adDFJ=zL;xKb?Gi36&0U2MRG*T|r7g-T@U+{BRqxZf`<; zt!oc}Y($B$ef(>{$`*tkFev7}(Y{V;2Wd1=`S$K1AHIjiUa#N|d&$vQnsT)OD)c~v zC=|lgfQz5U2=^&e9^?n$fcgat3v4P_SDe@%@&5T;D=}wrmFKPYfk5NSK|H@gqv{i` z2Ao%Cxzcbs96Uow#6)Sy+A*~KGy diff --git a/res/assets/Graphics/Flags/flag_sea_trade_a3.png b/res/assets/Graphics/Flags/flag_sea_trade_a3.png deleted file mode 100644 index 6fb4e079686a9494153cc128e384e05c9f2ebe37..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 748 zcmVz@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;Vo5|nRCwByl09e>VHn4McZtn=k;`*%h zDMcu_=;~%hwM#eAA~=ZsP+G;sE{Zxjs1&56Tf3+gL~s!c9hx9Wgo;V1HWzKZH`?ZP zxHR!hD)?XSc|V@t{h#M~HKi06v}5Xi>;Uu#&;qae=VUYr2x=+GKz!+H6QAPRJ%7z^8659btM1;bX&o9OMq#?hj*y=SuMJg)H~2m zKEDzybSRF^0kA*04M6$9BLHF}4dC}m3%pUJ*Ku}I+huMUyq-4zST9FdFGpH#@6I-3 zJLzD@1#C)8+XNum3FsYk`KK%wyGsHfguslzo2NIm&OoORfa9n9P{})rT^YgNClMkT zNXhd^9c~$D0`q0R2?KB*jyIYPwTVe$H?G6C0>lLk7Ns8&`LTd=$ZY2604L9lE9yZB zO9NA3$9qL97G|?l0J&B~bek+b4$5shEdDZ}?zI|!b+WA!wTbXv?9vcyl(19j(0;3j z)e1xd>nqPR?4$awGZ}nx88&i(Z!L^EN+7We eucJGF-va<)zRXDyBG!KZ0000z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;9Z5t%RCwBilTBz7K@`V-lWfgwXv1!LNLE3*Ab#W^ zrsoRk(cU}?dg-k#N(&02AVTq=wxEbNsVI1n^i!DK6?J5l0z zn0&A%t#jFZ@9}>8|L@I+i=5Ffj~;}Uf~1691rks|%7sK04k*}s50(u8!;YyZrHQ{O zrhZfrT5CjpR-+pXI?YF~$V^`**e=7UZ;~T!8|uMM1-VlpEER+WKuW@PyW91tOfLeE z&a?oiJ$Vj5;)>q|IXjZT3ZW@EKI#Dwi^xbA8}DA5Z@m_$UW-RmVmSun7>jbmrS$f( z=!Ye<{O>q{ip1IBu={TfYM7V|BR0FjZ(oP3QSBssf_fQ0)vKEYoSxNKPA{7_GoYnt z&fhQ)0NLKA3USgo)Rzsy4-Z7A&De|?|D}ohJrF=#4z`-k0WfyNjpVI!mu~3}44`>+ zuK#-6xfh8u51#?x4TVwI*3W2T`HdiZGPds$)R08A8WdkFhzLymYR@7e$(NTX<>sk= z`m-nKYn<`}o36(YYY*2WhID;|Z>^Ax^9@gJDbTC+CoYR?bMz@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;8A(JzRCwBilTBz7K@`V-lWxsysyLfVyHp{2(t-#* zh$y{z@X(vyy(m5O8WALj6p~Bp2UX~yP!CF_AbP8pLcK_i20TO&qyY~}{74ttxD$&R z50j6sP4y4UyqS6XfA9b1J#n3jW@UT~6p)Yr(AIWMNJx69NE12{eBT1cg_ML}9p99M zpPDP5cM!%H#Q7VBR>UB*9=%|6_8I`8Ct+vXUL5o6dejFUVcz701HfLKpqhIHKzj5y z0QIG(03>rWDB)YDT?mzgl;ZU9ju3!M5cHxc;q!Lg1)xzMqER2}XIWUb1TjebVXMjk zsC}~=wJZ4_RA}qjB~{HDn=kXCN2dG136*4OI*Q5cB6;@~3LPgO>Dx}%$e4i25$otL zW&6_R=1Jyez)@rx5GHKE*4#YF#fPYou;-iT8kMA`boue&`lL&ku)(Uc_w89zTOn+eAsvtrwb)(%uag0j zXT%3I**Hs^tYJ2 zW5j+R2cURqh3$_MOgFE>2?=P})4f@hUp4FFt9a)=ko{s`y1?@TB@o6K07?tO8j(bY z60}F86>g`GrLsi(3w|isAiTcq89x=G4HPRE$UZ5Ge@(}q0RT+D#0(+oEGhs1002ov JPDHLkV1n(cBp3hy diff --git a/res/assets/Graphics/Flags/flag_sea_trade_a6.png b/res/assets/Graphics/Flags/flag_sea_trade_a6.png deleted file mode 100644 index f00ee22dac40edb05bab207c4950148774e21db0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 646 zcmV;10(t$3P)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ-{7FPXRCwByl0Rq@Q5?rVcM0A*TkTx}n%E9G?NAGf z9UGin90Z51j@?@9px~gO1f)Y+mry#jAPS-gRR?h>xcH}_Lq(y82$wAl(lmoM?^=`R z@Juepr4_$$@a}it-}k=XFVC1Hua*Zh-~grofR+Ra92Ow5dbV4E-%@jI8|n=`w}5YT zrh^}tOX{7$pbJR>Ci+PV=odIGn_#|#vr~sHKja(|aLk1h9;7`O5-g|>MiPKMBBB@@pjJ&#t0p?1gVIxQJs8eM)<)9A z#hjml|AlD6+LOBmKr$lM(qiW?H6k(Fuj6SstGn$ z4FFz0)P2P|1K3zK$ec9~bhi1q)pM@J`UIr1jD4A9{mjjM$=w)#b(M3cL|jbl+Q=;l z0>(bhf`pNbj{SA7>w@moq2?o+4y5DP$WThLGBK*0f%ZgViv|dZ|0&Ov)`f7fDPg+; zrXY6|{1;(g9kKneHg!@7r^0sGW7EILWd9H{0SnbPOs_vTdOAA@k0uP&u)rG?*gylY gm1O+3ii!Oh0OmxR*tR2d1ONa407*qoM6N<$g8qdSxc~qF diff --git a/res/assets/Graphics/Flags/flag_sea_trade_a7.png b/res/assets/Graphics/Flags/flag_sea_trade_a7.png deleted file mode 100644 index 361c66aee78da6e088f61e8a9967bc353e55f8f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 670 zcmV;P0%84$P)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;6iGxuRCwBql0Rq@Q5?rV?{birHZk{Vr5ANb5FCU` z>nJX+>ZCaMXLEDNP^n;{NNE=fI#lW6rl3QiPMM0j2o(_mEu^^UWRqA)uEaJkkmfl& zd+9Z``h|o0{oeO|-tT+w#4wl4>M02TeG)nvR0bSrA2$K*CbR?V+0wS&))12rhxBT| zZ8mULOhJ&!KvIGOxDpz5*ervapfx##w^6aZMjbj$>q|;Fo&yIqhdrK|Pr?Nt2{i1% zs2t_Hj{z7MS^%Ir{{nz`{(9&MrE-iY`|7Y)Dck)}NB~f)#;8?e;c{zkAqv{%_3wo_ z_M3UXB>$2Z=t%8%H1A%{2ml*%J8HOax%nsNPNW}ycpr~_u%q1pTmZQPzR3{?Ys}2w zLpC&eFhgtN0rAN^I5IL-YigGCSRQq<3v&Q;+9Pl@@2@;1yAIiP(8m<~CH3wF>68p3 zc4MX$!Jr4gm*=xRn_JU!k-AomQCbo`J~#XkEsN5Uz(4C8dI^=44gj*D4}i6s5L6ib z{+i;68=?6yT`Z2%{5&IiU~knTNC|I0OZfQ>bO3#RxN$^5aWOhs2-~mXv@p8nQ~r34Ywmd{L*aA*m8~GX zI;eorar1vLfLCJ~lk+N|eWa?OwMV(GxccO)ILQBd04Nr>oR-pWCjbBd07*qoM6N<$ Eg0F@dm;e9( diff --git a/res/assets/Graphics/Flags/flag_sea_trade_a8.png b/res/assets/Graphics/Flags/flag_sea_trade_a8.png deleted file mode 100644 index e1785466f04ab687c7aee01487f7a4717b647b95..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 637 zcmV-@0)qXCP)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ-^GQTORCwBqlEG^eK^VnR|u|Ziq&tHQjz!U&5lKN{35H92e3_CCgl6uyHK?phEhh*dDcg&XZ z4VHks115T9g-7hnD(eWaCLu$Qb^;Hvr6?Kh`?+1^~Iu z>za_YNnxZNnWHC&Zb5$EP|akJYs> zWpj+&gS*p0XJPNomJ6I`H1Qbid&mh7DZgs?S*A1 zdF-z~neC(KrnY|V833{%VvEVm<`Z&s`_`0J^r)HI_qrL{I|h(gOvJ3@s_h+v@>TQH zz&i&co!4)fe!uva7)q*NUa()O#pKga-Mz!gV!D?7c;lk_(D7IstRqWMZEx$&v4mei z!W?#B&I74m+Rl^83&2oHvA5+Y;q*ZXWMJcezC!(Qor8+6S-}yE0LO)M4*UUIg#_=D zykfCg*nem#45`JxxgZ60xsPQB2wPIU9~zTqP81vCUCmLh+s6;f_|oF$_E+O1?%x3b XY$u+!_y7c<00000NkvXXu0mjfD{2{W diff --git a/res/assets/Graphics/UI/Denied_Walker_Checkmark.png b/res/assets/Graphics/UI/Denied_Walker_Checkmark.png index 9f36b3f4c1d03d7dc1d690d27d6d30d06a739c11..d8134838ef4c4b151b7347dbc781f81dc569a03e 100644 GIT binary patch delta 331 zcmV-R0kr<*0__5jD}M_U000XU0RWnu7ytkO1ZP1_K>z@;j(q!3lK=n!AY({UO#lFT zB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fdMgRZ+<4Ht8RCwBykTH(JFcd_e zqezjUrAd<;P&?jDXBsDJEDf>zoc=@(x!^Yv$p zB>sa8pmk3By8hKU;w9m#N?T?+HH{=OoKw>%@{-5_=4D9$uA2ib=xe<;@$z+Zpa62a z1i-`$`?^-}p5p#UGJUBnCV$9xOE*L dE&T=W0RS3Zn9+~k8!G?+002ovPDHLkV1nUdk_!L; delta 323 zcmV-J0lfb00_6gbD}OE{001r{0eGc9b^rhX8FWQhbW?9;ba!ELWdK2BZ(?O2No`?g zWm08fWO;GPWjp`?0P;yhK~#9!m61sffOJqD-<-aunuqZji6h%Oxxy@6q4G-@Oe zAtAWe#CeJ*`BH6YP+aJu$Ew%$>vsk~=AXf)-FS?CwTk0>j(^XDlVxF0t6@7Dfdk!2 z1@&-iND|Jr&7rI7qAANP)-IJ|;4qt^k;}0_vrxd@_wiV*&{7n3rwao1lSvG)(u)O* zeEwA_T&WuE8`&)A!M7f`gyoV$EIF*2l$Zh@LBM51@@}5@9iRqV#Uj_Niz0`TRoHZK z92ST))0rNKj65KjWN*q=N=W_%84*F9aybSzriq@W;V_-1K8_sfsVdgPAyQ5MGM;6= Vc-0q#eGLEr002ovPDHLkV1h68jbZ=* diff --git a/res/assets/Graphics/UI/Warehousing.png b/res/assets/Graphics/UI/Warehousing.png new file mode 100644 index 0000000000000000000000000000000000000000..532d19f0f36208ee21a2c5c5d5485fd9c61f4ee9 GIT binary patch literal 446 zcmeAS@N?(olHy`uVBq!ia0vp^JRr=$1|-8uW1a&kmUKs7M+S!VC(K#9UIO`&C9V-A z!TD(=<%vb942~)JNvR5+xryniL8*x;m4zo$Z5S9B13X}1{i)s4)Od8!+=Fpm zulDzwFgr2`IQ0Dg|DRnuE_(I(4E&5?iiaoqy^%r1;)|!HdL;MN{pGsG zBjDhp!1P4NQeke?n}Z7&MLabN92Yuv#qXhf zge0e>j$MxD*cclantnZ$zqf&1^VySUESnjbIMy(Vc-c2rg{|LnhJmZ6G<)6R3kpZ? z@2_Le2Kr(`eB-rE##2N!n(y)?ExxR?W(|+@wYv!$wmnG#%5G?T-2VPi>80EJJUnh~ iF+5?D-x)BmNHEyl>nN)?zOW1!0Sun5elF{r5}E)G`n5R# literal 0 HcmV?d00001 diff --git a/res/assets/Graphics/UI/Warehousing_off.png b/res/assets/Graphics/UI/Warehousing_off.png deleted file mode 100644 index 8ea1a821e27e6e68f172a1d1f789167a552d92d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 311 zcmeAS@N?(olHy`uVBq!ia0vp^JRr=$1|-8uW1a&k&H|6fVg?31We{epSZZGe6qGD+ zjVKAuPb(=;EJ|f?Ovz75Rq)JBOiv9;O-!jQJeg_(RCL7C#WAGf*3?OcTrCCyuC_Cm zstdfy@lgyDi+aX1?}+mfFX^patsG*{c*Mfu)gGnAUZ2WaW0&~vG>@kZgWSpQwNp}m zt_ZJ~rDoz=yn5BDvIQDk(*L$<d7c+S!E;8Do+DC>lI=`D#JrLhxLIH#pr zTDDFN;(M`+FHq#>WQpXmBjx|OjuiGJN=!(d$y@V_b-}gA7E0%fztq-$+RwOZd+uun z&84!Pd8)pbyMtpn9yUBKTv70x<$CE}W`C}1{rUgj{%~v5xBomq(DOX|#y?{N0|N<@|0ygy3=_9=287t3PY0@J N@O1TaS?83{1OV)xE~)?k literal 0 HcmV?d00001 diff --git a/res/assets/Graphics/UI/flag_icon_sea_a3.png b/res/assets/Graphics/UI/flag_icon_sea_a3.png new file mode 100644 index 0000000000000000000000000000000000000000..21c93f130277d483bf42ab0cf2650445b5c51f1c GIT binary patch literal 268 zcmeAS@N?(olHy`uVBq!ia0vp^AT}2V8<6ZZI=>f4aTa()7Bet#3xhBt!>lIPKX{`oPRstg-mXwSPY(@@wU+5SU3MsDW6rfQaO zVJo$&t?aEK>hBKg?ek{XH9K(1>)l;xMw5?()t1iVePGP+Dl9eX;Gg8@K-VyMy85}S Ib4q9e0Nk`$lmGw# literal 0 HcmV?d00001 diff --git a/res/assets/Graphics/UI/flag_icon_sea_a4.png b/res/assets/Graphics/UI/flag_icon_sea_a4.png new file mode 100644 index 0000000000000000000000000000000000000000..00c79e540931f4875ca378f54a47e935aaf66489 GIT binary patch literal 166 zcmeAS@N?(olHy`uVBq!ia0vp^Od!m`1|*BN@u~nR&H|6fVg?3oVGw3ym^DWND9DoT z=zopr0JJ(bPyhe` literal 0 HcmV?d00001 diff --git a/res/assets/Graphics/Flags/flag_icon_traders_a1-2.png b/res/assets/Graphics/UI/flag_icon_traders_a1-2.png similarity index 100% rename from res/assets/Graphics/Flags/flag_icon_traders_a1-2.png rename to res/assets/Graphics/UI/flag_icon_traders_a1-2.png diff --git a/res/assets/Graphics/Flags/flag_icon_traders_a3.png b/res/assets/Graphics/UI/flag_icon_traders_a3.png similarity index 100% rename from res/assets/Graphics/Flags/flag_icon_traders_a3.png rename to res/assets/Graphics/UI/flag_icon_traders_a3.png diff --git a/res/assets/Graphics/Flags/flag_icon_traders_a4.png b/res/assets/Graphics/UI/flag_icon_traders_a4.png similarity index 100% rename from res/assets/Graphics/Flags/flag_icon_traders_a4.png rename to res/assets/Graphics/UI/flag_icon_traders_a4.png diff --git a/res/assets/Graphics/Flags/flag_icon_traders_a5.png b/res/assets/Graphics/UI/flag_icon_traders_a5.png similarity index 100% rename from res/assets/Graphics/Flags/flag_icon_traders_a5.png rename to res/assets/Graphics/UI/flag_icon_traders_a5.png diff --git a/res/assets/Graphics/Flags/flag_icon_traders_a6-8.png b/res/assets/Graphics/UI/flag_icon_traders_a6-8.png similarity index 100% rename from res/assets/Graphics/Flags/flag_icon_traders_a6-8.png rename to res/assets/Graphics/UI/flag_icon_traders_a6-8.png diff --git a/res/assets/Graphics/Flags/flag_layer_base.png b/res/assets/Graphics/UI/flag_layer_base.png similarity index 100% rename from res/assets/Graphics/Flags/flag_layer_base.png rename to res/assets/Graphics/UI/flag_layer_base.png diff --git a/res/assets/Graphics/Flags/flag_purple_a1.png b/res/assets/Graphics/UI/flag_purple_a1.png similarity index 100% rename from res/assets/Graphics/Flags/flag_purple_a1.png rename to res/assets/Graphics/UI/flag_purple_a1.png diff --git a/res/assets/Graphics/Flags/flag_purple_a2.png b/res/assets/Graphics/UI/flag_purple_a2.png similarity index 100% rename from res/assets/Graphics/Flags/flag_purple_a2.png rename to res/assets/Graphics/UI/flag_purple_a2.png diff --git a/res/assets/Graphics/Flags/flag_purple_a3.png b/res/assets/Graphics/UI/flag_purple_a3.png similarity index 100% rename from res/assets/Graphics/Flags/flag_purple_a3.png rename to res/assets/Graphics/UI/flag_purple_a3.png diff --git a/res/assets/Graphics/Flags/flag_purple_a4.png b/res/assets/Graphics/UI/flag_purple_a4.png similarity index 100% rename from res/assets/Graphics/Flags/flag_purple_a4.png rename to res/assets/Graphics/UI/flag_purple_a4.png diff --git a/res/assets/Graphics/Flags/flag_purple_a5.png b/res/assets/Graphics/UI/flag_purple_a5.png similarity index 100% rename from res/assets/Graphics/Flags/flag_purple_a5.png rename to res/assets/Graphics/UI/flag_purple_a5.png diff --git a/res/assets/Graphics/Flags/flag_purple_a6.png b/res/assets/Graphics/UI/flag_purple_a6.png similarity index 100% rename from res/assets/Graphics/Flags/flag_purple_a6.png rename to res/assets/Graphics/UI/flag_purple_a6.png diff --git a/res/assets/Graphics/Flags/flag_purple_a7.png b/res/assets/Graphics/UI/flag_purple_a7.png similarity index 100% rename from res/assets/Graphics/Flags/flag_purple_a7.png rename to res/assets/Graphics/UI/flag_purple_a7.png diff --git a/res/assets/Graphics/Flags/flag_purple_a8.png b/res/assets/Graphics/UI/flag_purple_a8.png similarity index 100% rename from res/assets/Graphics/Flags/flag_purple_a8.png rename to res/assets/Graphics/UI/flag_purple_a8.png diff --git a/res/assets/Graphics/Flags/flag_red_a1.png b/res/assets/Graphics/UI/flag_red_a1.png similarity index 100% rename from res/assets/Graphics/Flags/flag_red_a1.png rename to res/assets/Graphics/UI/flag_red_a1.png diff --git a/res/assets/Graphics/Flags/flag_red_a2.png b/res/assets/Graphics/UI/flag_red_a2.png similarity index 100% rename from res/assets/Graphics/Flags/flag_red_a2.png rename to res/assets/Graphics/UI/flag_red_a2.png diff --git a/res/assets/Graphics/Flags/flag_red_a3.png b/res/assets/Graphics/UI/flag_red_a3.png similarity index 100% rename from res/assets/Graphics/Flags/flag_red_a3.png rename to res/assets/Graphics/UI/flag_red_a3.png diff --git a/res/assets/Graphics/Flags/flag_red_a4.png b/res/assets/Graphics/UI/flag_red_a4.png similarity index 100% rename from res/assets/Graphics/Flags/flag_red_a4.png rename to res/assets/Graphics/UI/flag_red_a4.png diff --git a/res/assets/Graphics/Flags/flag_red_a5.png b/res/assets/Graphics/UI/flag_red_a5.png similarity index 100% rename from res/assets/Graphics/Flags/flag_red_a5.png rename to res/assets/Graphics/UI/flag_red_a5.png diff --git a/res/assets/Graphics/Flags/flag_red_a6.png b/res/assets/Graphics/UI/flag_red_a6.png similarity index 100% rename from res/assets/Graphics/Flags/flag_red_a6.png rename to res/assets/Graphics/UI/flag_red_a6.png diff --git a/res/assets/Graphics/Flags/flag_red_a7.png b/res/assets/Graphics/UI/flag_red_a7.png similarity index 100% rename from res/assets/Graphics/Flags/flag_red_a7.png rename to res/assets/Graphics/UI/flag_red_a7.png diff --git a/res/assets/Graphics/Flags/flag_red_a8.png b/res/assets/Graphics/UI/flag_red_a8.png similarity index 100% rename from res/assets/Graphics/Flags/flag_red_a8.png rename to res/assets/Graphics/UI/flag_red_a8.png diff --git a/res/assets/Graphics/flags.xml b/res/assets/Graphics/flags.xml deleted file mode 100644 index 8ef651de22..0000000000 --- a/res/assets/Graphics/flags.xml +++ /dev/null @@ -1,880 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/res/assets/Graphics/ui.xml b/res/assets/Graphics/ui.xml index c4814f93ab..6a704457cd 100644 --- a/res/assets/Graphics/ui.xml +++ b/res/assets/Graphics/ui.xml @@ -444,5 +444,447 @@ - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file From 88195d64e206518a2db311dbfdee7e88f48f3d85 Mon Sep 17 00:00:00 2001 From: Areldir <72540647+Areldir@users.noreply.github.com> Date: Sat, 20 Apr 2024 20:38:53 +1000 Subject: [PATCH 03/15] Fix graphical oversight --- res/assets/Graphics/UI/Warehousing_off.png | Bin 0 -> 311 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 res/assets/Graphics/UI/Warehousing_off.png diff --git a/res/assets/Graphics/UI/Warehousing_off.png b/res/assets/Graphics/UI/Warehousing_off.png new file mode 100644 index 0000000000000000000000000000000000000000..8ea1a821e27e6e68f172a1d1f789167a552d92d8 GIT binary patch literal 311 zcmeAS@N?(olHy`uVBq!ia0vp^JRr=$1|-8uW1a&k&H|6fVg?31We{epSZZGe6qGD+ zjVKAuPb(=;EJ|f?Ovz75Rq)JBOiv9;O-!jQJeg_(RCL7C#WAGf*3?OcTrCCyuC_Cm zstdfy@lgyDi+aX1?}+mfFX^patsG*{c*Mfu)gGnAUZ2WaW0&~vG>@kZgWSpQwNp}m zt_ZJ~rDoz=yn5BDvIQDk(*L$<d7c+S!E;8Do+DC>lI=`D#JrLhxLIH#pr zTDDFN;(M`+FHq#>WQpXmBjx|OjuiGJN=!(d$y@V_b-}gA7E0%fztq-$+RwOZd+uun z&84!Pd8)pbyMtpn9yUBKTv70x<$CE}W`C Date: Sat, 20 Apr 2024 16:39:06 +0200 Subject: [PATCH 04/15] Fix some archer issues --- src/building/construction_building.c | 2 +- src/figure/figure.c | 4 ++-- src/figure/figure.h | 2 +- src/figure/movement.c | 6 +++--- src/figuretype/missile.c | 11 ++++++----- src/figuretype/missile.h | 2 +- src/widget/city_figure.c | 2 +- 7 files changed, 15 insertions(+), 14 deletions(-) diff --git a/src/building/construction_building.c b/src/building/construction_building.c index 89e954846e..d2850c6f4a 100644 --- a/src/building/construction_building.c +++ b/src/building/construction_building.c @@ -45,7 +45,7 @@ static void add_fort(int type, building *fort) fort->subtype.fort_figure_type = FIGURE_FORT_MOUNTED; } else if (type == BUILDING_FORT_AUXILIA_INFANTRY) { fort->subtype.fort_figure_type = FIGURE_FORT_INFANTRY; - } else if (BUILDING_FORT_ARCHERS) { + } else if (type == BUILDING_FORT_ARCHERS) { fort->subtype.fort_figure_type = FIGURE_FORT_ARCHER; } diff --git a/src/figure/figure.c b/src/figure/figure.c index dce7116c0d..8b61318f63 100644 --- a/src/figure/figure.c +++ b/src/figure/figure.c @@ -298,7 +298,7 @@ static void figure_save(buffer *buf, const figure *f) buffer_write_u8(buf, f->y); buffer_write_u8(buf, f->previous_tile_x); buffer_write_u8(buf, f->previous_tile_y); - buffer_write_u8(buf, f->missile_damage); + buffer_write_u8(buf, f->missile_height); buffer_write_u8(buf, f->damage); buffer_write_i16(buf, f->grid_offset); buffer_write_u8(buf, f->destination_x); @@ -423,7 +423,7 @@ static void figure_load(buffer *buf, figure *f, int figure_buf_size, int version f->y = buffer_read_u8(buf); f->previous_tile_x = buffer_read_u8(buf); f->previous_tile_y = buffer_read_u8(buf); - f->missile_damage = buffer_read_u8(buf); + f->missile_height = buffer_read_u8(buf); f->damage = buffer_read_u8(buf); f->grid_offset = buffer_read_i16(buf); f->destination_x = buffer_read_u8(buf); diff --git a/src/figure/figure.h b/src/figure/figure.h index 5f51dbbd69..3f5af91292 100644 --- a/src/figure/figure.h +++ b/src/figure/figure.h @@ -33,7 +33,7 @@ typedef struct { unsigned char y; unsigned char previous_tile_x; unsigned char previous_tile_y; - unsigned char missile_damage; + unsigned char missile_height; unsigned char damage; short grid_offset; unsigned char destination_x; diff --git a/src/figure/movement.c b/src/figure/movement.c index 6e674e422a..44a532918c 100644 --- a/src/figure/movement.c +++ b/src/figure/movement.c @@ -736,10 +736,10 @@ int figure_movement_move_ticks_cross_country(figure *f, int num_ticks) int is_at_destination = 0; while (num_ticks > 0) { num_ticks--; - if (f->missile_damage > 0) { - f->missile_damage--; + if (f->missile_height > 0) { + f->missile_height--; } else { - f->missile_damage = 0; + f->missile_height = 0; } if (f->cc_delta_x + f->cc_delta_y <= 0) { is_at_destination = 1; diff --git a/src/figuretype/missile.c b/src/figuretype/missile.c index 175534dd20..f317eef4ce 100644 --- a/src/figuretype/missile.c +++ b/src/figuretype/missile.c @@ -50,16 +50,17 @@ void figure_create_explosion_cloud(int x, int y, int size) sound_effect_play(SOUND_EFFECT_EXPLOSION); } -void figure_create_missile(int building_id, int x, int y, int x_dst, int y_dst, figure_type type) +void figure_create_missile(int figure_id, int x, int y, int x_dst, int y_dst, figure_type type) { figure *f = figure_create(type, x, y, DIR_0_TOP); + figure *launcher = figure_get(figure_id); if (f->id) { - if (type == FIGURE_BOLT || type == FIGURE_FRIENDLY_ARROW) { - f->missile_damage = 60; + if (launcher->type == FIGURE_BALLISTA || launcher->type == FIGURE_WATCHTOWER_ARCHER) { + f->missile_height = 60; } else { - f->missile_damage = 10; + f->missile_height = 10; } - f->building_id = building_id; + f->building_id = figure_id; f->destination_x = x_dst; f->destination_y = y_dst; figure_movement_set_cross_country_direction( diff --git a/src/figuretype/missile.h b/src/figuretype/missile.h index 9b6f5a3fe4..3ef5acc6ad 100644 --- a/src/figuretype/missile.h +++ b/src/figuretype/missile.h @@ -5,7 +5,7 @@ void figure_create_explosion_cloud(int x, int y, int size); -void figure_create_missile(int building_id, int x, int y, int x_dst, int y_dst, figure_type type); +void figure_create_missile(int figure_id, int x, int y, int x_dst, int y_dst, figure_type type); void figure_explosion_cloud_action(figure *f); diff --git a/src/widget/city_figure.c b/src/widget/city_figure.c index e70c631e16..36ed073778 100644 --- a/src/widget/city_figure.c +++ b/src/widget/city_figure.c @@ -209,7 +209,7 @@ static void adjust_pixel_offset(const figure *f, int *pixel_x, int *pixel_y) if (f->use_cross_country) { tile_cross_country_offset_to_pixel_offset( f->cross_country_x % 15, f->cross_country_y % 15, &x_offset, &y_offset); - y_offset -= f->missile_damage; + y_offset -= f->missile_height; } else { int direction = figure_image_normalize_direction(f->direction); tile_progress_to_pixel_offset(direction, f->progress_on_tile, &x_offset, &y_offset); From f7361d0cbd8eff63806aad758fff9cced0743b3c Mon Sep 17 00:00:00 2001 From: Keriew Date: Sat, 20 Apr 2024 16:42:12 +0200 Subject: [PATCH 05/15] Adjust archer stats --- src/figure/properties.c | 2 +- src/figuretype/soldier.c | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/figure/properties.c b/src/figure/properties.c index 3731be2aff..df25daa887 100644 --- a/src/figure/properties.c +++ b/src/figure/properties.c @@ -474,7 +474,7 @@ static const figure_properties properties[FIGURE_TYPE_MAX] = { [FIGURE_FORT_ARCHER] = { .category = FIGURE_CATEGORY_ARMED, .max_damage = 80, .attack_value = 6, .defense_value = 0, - .missile_defense_value = 0, .missile_attack_value = 4, .missile_delay = 50 + .missile_defense_value = 0, .missile_attack_value = 4, .missile_delay = 70 }, }; diff --git a/src/figuretype/soldier.c b/src/figuretype/soldier.c index 64f83ec245..bcc2720e05 100644 --- a/src/figuretype/soldier.c +++ b/src/figuretype/soldier.c @@ -306,6 +306,9 @@ static int soldier_percentage_speed(figure_type type) return 75; case FIGURE_FORT_INFANTRY: return 85; + case FIGURE_FORT_ARCHER: + return 60; + break; default: break; } @@ -314,7 +317,7 @@ static int soldier_percentage_speed(figure_type type) if (type == FIGURE_FORT_INFANTRY) { return 50; } else if (type == FIGURE_FORT_ARCHER) { - return 75; + return 25; } return 0; } From 7eae531bcc683d1ca85baf66417f4284ac118b31 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Cadete?= Date: Sat, 20 Apr 2024 20:21:34 +0100 Subject: [PATCH 06/15] Fix invalid memory access --- src/window/file_dialog.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/window/file_dialog.c b/src/window/file_dialog.c index 8ca16455fd..e73b215882 100644 --- a/src/window/file_dialog.c +++ b/src/window/file_dialog.c @@ -171,8 +171,8 @@ static void init_filtered_file_list(void) memset(data.filtered_file_list.files, 0, sizeof(dir_entry) * data.file_list->num_files); const char *filter = 0; + char filter_utf8[FILTER_TEXT_SIZE]; if (data.dialog_type != FILE_DIALOG_SAVE && *data.filter_text) { - char filter_utf8[FILTER_TEXT_SIZE]; encoding_to_utf8(data.filter_text, filter_utf8, FILTER_TEXT_SIZE, encoding_system_uses_decomposed()); if (strlen(filter_utf8) >= MIN_FILTER_SIZE) { filter = filter_utf8; From 4b0bb2e123adcfa364d2b999460cda3ceb5fc573 Mon Sep 17 00:00:00 2001 From: Ouaz Date: Sat, 20 Apr 2024 23:00:48 +0200 Subject: [PATCH 07/15] Cleaner walker_checkmark assets (#1077) Re-add improved Denied_Walker_Checkmark (from #1075), reverted by error with d4cfc02 Improve Allowed_Walker_Checkmark to be on par Re-delete useless Warehousing.png (not used anymore), added back by error with d4cfc02 --- .../Graphics/UI/Allowed_Walker_Checkmark.png | Bin 398 -> 380 bytes .../Graphics/UI/Denied_Walker_Checkmark.png | Bin 365 -> 357 bytes res/assets/Graphics/UI/Warehousing.png | Bin 446 -> 0 bytes 3 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 res/assets/Graphics/UI/Warehousing.png diff --git a/res/assets/Graphics/UI/Allowed_Walker_Checkmark.png b/res/assets/Graphics/UI/Allowed_Walker_Checkmark.png index 97e079dd6660121574efa81fd09352daedca60ec..d051553422787dd6a2d59985ea05ec046b80ba02 100644 GIT binary patch delta 346 zcmV-g0j2(q1N;JzD}OE{001r{0eGc9b^rhX8FWQhbW?9;ba!ELWdK2BZ(?O2No`?g zWm08fWO;GPWjp`?0SQS&K~#9!WBC97KLaTkOiXllVklu?V2BqIVu+NGfa3@tzJK`e z|9NRC|IaU7@*l5;2uVq>97u6BP+6zE92O12!VJ;k;tbJZVt))#Kzd_q>;D#cd9VhM zMywh@{1~7HkW)a4>wrocWM%(@_;3v{4ATI@UFPQhYk<-nGBW@7&Ybx_R#X(>>1!J| z{-0uG^#AgvO<+?tx3$5YGBY9qEEa>TVT!Tw|4JaUU0V7-NO8S{1XwXh6UZr`Kmhp( zuHnYktzg9}_JjsO4v delta 364 zcmV-y0h9jx0*(WaD}M_U000XU0RWnu7ytkO1ZP1_K>z@;j(q!3lK=n!AY({UO#lFT zB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fdMgRZ-1W80eRCwBylCeudaS+Ep zzxQ6FlWRWwD{=@Tf+n{DaTKCfeVg?}X%TD@GNA`L1`fG2WPcb94T4ykgnz(W>K|}< z(6=Fk9w_O-4R`nb-uLb}BZ*DSS_gFLy1Fl(X)VG{HmfKMncemOS9qw`^*I;-uzh?4 zfU^qxF`4MC(ZH6lQYm&$PJauMmikpDqYCI8^b!PGap2W*>U89EOJqD-<-aunuqZji6h%Oxxy@6q4G-@Oe zAtAWe#CeJ*`BH6YP+aJu$Ew%$>vsk~=AXf)-FS?CwTk0>j(^XDlVxF0t6@7Dfdk!2 z1@&-iND|Jr&7rI7qAANP)-IJ|;4qt^k;}0_vrxd@_wiV*&{7n3rwao1lSvG)(u)O* zeEwA_T&WuE8`&)A!M7f`gyoV$EIF*2l$Zh@LBM51@@}5@9iRqV#Uj_Niz0`TRoHZK z92ST))0rNKj65KjWN*q=N=W_%84*F9aybSzriq@W;V_-1K8_sfsVdgPAyQ5MGM;6= Vc-0q#eGLEr002ovPDHLkV1h68jbZ=* delta 331 zcmV-R0kr<*0__5jD}M_U000XU0RWnu7ytkO1ZP1_K>z@;j(q!3lK=n!AY({UO#lFT zB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fdMgRZ+<4Ht8RCwBykTH(JFcd_e zqezjUrAd<;P&?jDXBsDJEDf>zoc=@(x!^Yv$p zB>sa8pmk3By8hKU;w9m#N?T?+HH{=OoKw>%@{-5_=4D9$uA2ib=xe<;@$z+Zpa62a z1i-`$`?^-}p5p#UGJUBnCV$9xOE*L dE&T=W0RS3Zn9+~k8!G?+002ovPDHLkV1nUdk_!L; diff --git a/res/assets/Graphics/UI/Warehousing.png b/res/assets/Graphics/UI/Warehousing.png deleted file mode 100644 index 532d19f0f36208ee21a2c5c5d5485fd9c61f4ee9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 446 zcmeAS@N?(olHy`uVBq!ia0vp^JRr=$1|-8uW1a&kmUKs7M+S!VC(K#9UIO`&C9V-A z!TD(=<%vb942~)JNvR5+xryniL8*x;m4zo$Z5S9B13X}1{i)s4)Od8!+=Fpm zulDzwFgr2`IQ0Dg|DRnuE_(I(4E&5?iiaoqy^%r1;)|!HdL;MN{pGsG zBjDhp!1P4NQeke?n}Z7&MLabN92Yuv#qXhf zge0e>j$MxD*cclantnZ$zqf&1^VySUESnjbIMy(Vc-c2rg{|LnhJmZ6G<)6R3kpZ? z@2_Le2Kr(`eB-rE##2N!n(y)?ExxR?W(|+@wYv!$wmnG#%5G?T-2VPi>80EJJUnh~ iF+5?D-x)BmNHEyl>nN)?zOW1!0Sun5elF{r5}E)G`n5R# From d070b31b32ae735443a641dc2f3c363a1669e22d Mon Sep 17 00:00:00 2001 From: MSTVD <35646077+MSTVD@users.noreply.github.com> Date: Sun, 21 Apr 2024 13:20:23 -0400 Subject: [PATCH 08/15] Update russian.c --- src/translation/russian.c | 30 ++++++++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/src/translation/russian.c b/src/translation/russian.c index 1ecc1b6fa2..4686211d58 100644 --- a/src/translation/russian.c +++ b/src/translation/russian.c @@ -36,6 +36,7 @@ static translation_string all_strings[] = { {TR_CONFIG_HEADER_GAMEPLAY_CHANGES, "Сложность"}, {TR_CONFIG_LANGUAGE_LABEL, "Язык:"}, {TR_CONFIG_LANGUAGE_DEFAULT, "(по умолчанию)"}, + {TR_CONFIG_DEFAULT_PLAYER_NAME, "Имя игрока по умолчанию:"}, {TR_CONFIG_GAME_SPEED, "Скорость игры:"}, {TR_CONFIG_VIDEO, "Параметры видео"}, {TR_CONFIG_FULLSCREEN, "Полный экран"}, @@ -1122,6 +1123,7 @@ static translation_string all_strings[] = { {TR_PARAMETER_TYPE_INVASION_POINT, "Точка вторжения"}, {TR_PARAMETER_TYPE_TARGET_TYPE, "Тип цели атаки"}, {TR_PARAMETER_TYPE_ENEMY_TYPE, "Тип врага"}, + {TR_PARAMETER_TYPE_GOD, "Бог" }, {TR_CONDITION_TYPE_TIME_PASSED, "Прошедшее время"}, {TR_CONDITION_TYPE_DIFFICULTY, "Сложность"}, {TR_CONDITION_TYPE_MONEY, "Городские средства"}, @@ -1175,6 +1177,9 @@ static translation_string all_strings[] = { {TR_ACTION_TYPE_TRADE_SET_SELL_PRICE_ONLY, "Установить цену продажи только для торговли"}, {TR_ACTION_TYPE_BUILDING_FORCE_COLLAPSE, "Здание вынуждено рухнуть"}, {TR_ACTION_TYPE_INVASION_IMMEDIATE, "Вторжение начинается сразу"}, + {TR_ACTION_TYPE_CAUSE_BLESSING, "Вызвать благословение" }, + {TR_ACTION_TYPE_CAUSE_MINOR_CURSE, "Вызвать недовольствие" }, + {TR_ACTION_TYPE_CAUSE_MAJOR_CURSE, "Вызвать гнев" }, {TR_PARAMETER_VALUE_COMPARISON_TYPE_EQUAL, "Равно"}, {TR_PARAMETER_VALUE_COMPARISON_TYPE_EQUAL_OR_LESS, "Меньше или равно"}, {TR_PARAMETER_VALUE_COMPARISON_TYPE_EQUAL_OR_MORE, "Больше или равно"}, @@ -1310,6 +1315,11 @@ static translation_string all_strings[] = { {TR_PARAMETER_VALUE_ENEMY_9_EGYPTIAN, "Египтяне"}, {TR_PARAMETER_VALUE_ENEMY_10_CARTHAGINIAN, "Карфагеняне"}, {TR_PARAMETER_VALUE_ENEMY_11_CAESAR, "Цезарь"}, + {TR_PARAMETER_VALUE_GOD_CERES, "Цереры"}, + {TR_PARAMETER_VALUE_GOD_MARS, "Марса"}, + {TR_PARAMETER_VALUE_GOD_MERCURY, "Меркурия"}, + {TR_PARAMETER_VALUE_GOD_NEPTUNE, "Нептуна"}, + {TR_PARAMETER_VALUE_GOD_VENUS, "Венеры"}, {TR_PARAMETER_DISPLAY_SET_TO, "установить на"}, {TR_PARAMETER_DISPLAY_ADD_TO, "добавить"}, {TR_PARAMETER_DISPLAY_BETWEEN, "между"}, @@ -1381,8 +1391,12 @@ static translation_string all_strings[] = { {TR_REPLAY_MAP_NOT_FOUND_MESSAGE, "Оригинальный файл карты для этой сохраненной игры не был найден.\nВам нужен следующий файл с расширением .map или .mapx:"}, {TR_BUILDING_FORT_AUXILIA_INFANTRY, "Наемники - Пехотинцы"}, {TR_WINDOW_ADVISOR_MILITARY_INFANTRY, "пехотинец"}, - {TR_TOOLTIP_BUTTON_ROADBLOCK_ORDER_ACCEPT_ALL, "Принимать всех граждан"}, - {TR_TOOLTIP_BUTTON_ROADBLOCK_ORDER_REJECT_ALL, "Отказывать всех граждан"}, + {TR_BUILDING_FORT_ARCHERS, "Наемники - Лучники"}, + {TR_WINDOW_ADVISOR_MILITARY_ARCHER, "лучник"}, + {TR_TOOLTIP_BUTTON_ROADBLOCK_ORDER_ACCEPT_ALL, "Принимать все товары"}, + {TR_TOOLTIP_BUTTON_ROADBLOCK_ORDER_REJECT_ALL, "Отказывать все товары"}, + {TR_TOOLTIP_BUTTON_STORAGE_ORDER_ACCEPT_ALL, "Принимать все goods" }, + {TR_TOOLTIP_BUTTON_STORAGE_ORDER_REJECT_ALL, "Refuse all goods" }, {TR_FIGURE_TYPE_BEGGAR, "Нищий"}, {TR_BUILDING_ARMOURY, "Оружейная"}, {TR_BUILDING_ARMOURY_NO_EMPLOYEES, "Без доступа к сотрудникам арсенал не сможет поставлять оружие нашим солдатам. Пусть Марс защитит вас, потому что безоружные легионы не смогут этого сделать."}, @@ -1408,6 +1422,18 @@ static translation_string all_strings[] = { {TR_WINDOW_ORIGINAL_CAMPAIGN_NAME, "Оригинальная карьера" }, {TR_WINDOW_ORIGINAL_CAMPAIGN_DESC, "Оригинальная кампания Цезаря 3 1998 года во всей своей древней славе."}, {TR_EDITOR_CAESAR_SALARY, "Жалование цезаря"}, + {TR_WINDOW_BARRACKS_PRIORITY, "Приоритет в наборе персонала:"}, + {TR_WINDOW_BARRACKS_FORTS, "Форты"}, + {TR_WINDOW_BARRACKS_TOWERS, "Башни"}, + {TR_TOOLTIP_BARRACKS_PRIORITY_FORT, "Приоритетная подготовка легионеров"}, + {TR_TOOLTIP_BARRACKS_PRIORITY_JAVELIN, "Приоритетная подготовка метателей"}, + {TR_TOOLTIP_BARRACKS_PRIORITY_MOUNTED, "Приоритетная подготовка всадников"}, + {TR_TOOLTIP_BARRACKS_PRIORITY_AUXINF, "Приоритетная подготовка пехотинцев"}, + {TR_TOOLTIP_BARRACKS_PRIORITY_AUXARCH, "Приоритетная подготовка лучников"}, + {TR_TOOLTIP_BARRACKS_PRIORITY_TOWER, "Приоритетная подготовка башен"}, + {TR_TOOLTIP_BARRACKS_PRIORITY_WATCHTOWER, "Приоритетная подготовка сторожевых башен"}, + {TR_TOOLTIP_BUTTON_REJECT_DELIVERY, "Прекращение доставки оружия из оружейной"}, + {TR_TOOLTIP_BUTTON_ACCEPT_DELIVERY, "Разрешение доставки оружия из оружейной"}, }; void translation_russian(const translation_string **strings, int *num_strings) From ff531145ec7538c2e5e38f786d26abb3d170769c Mon Sep 17 00:00:00 2001 From: Keriew Date: Mon, 22 Apr 2024 13:06:07 +0200 Subject: [PATCH 09/15] Reduce by half consumption of goods by 1x1 houses --- src/building/house_evolution.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/building/house_evolution.c b/src/building/house_evolution.c index ee6ab75c8e..afff2e03dd 100644 --- a/src/building/house_evolution.c +++ b/src/building/house_evolution.c @@ -578,7 +578,8 @@ void building_house_process_evolve_and_consume_goods(void) if (!b->has_plague) { has_expanded |= evolve_callback[b->type - BUILDING_HOUSE_VACANT_LOT](b, demands); } - if (game_time_day() == 0 || game_time_day() == 7) { + // 1x1 houses only consume half of the goods + if (game_time_day() == 0 || (game_time_day() == 7 && b->house_size > 1)) { consume_resources(b); } b->last_update = last_update; From 15de09a11a4ce88a4c57c6d29668151872b756cd Mon Sep 17 00:00:00 2001 From: BCfplox <166941230+BCfplox@users.noreply.github.com> Date: Mon, 22 Apr 2024 18:29:16 -0400 Subject: [PATCH 10/15] Update spanish.c -Added translation of barracks priorities. -Added translation of gods event. -Minor changes. --- src/translation/spanish.c | 37 ++++++++++++++++++++++++++++++++----- 1 file changed, 32 insertions(+), 5 deletions(-) diff --git a/src/translation/spanish.c b/src/translation/spanish.c index d645f0e6b1..2ca4ffa48f 100644 --- a/src/translation/spanish.c +++ b/src/translation/spanish.c @@ -37,6 +37,7 @@ static translation_string all_strings[] = { {TR_CONFIG_HEADER_CITY_MANAGEMENT_CHANGES, "Gestión de la ciudad"}, {TR_CONFIG_LANGUAGE_LABEL, "Idioma:"}, {TR_CONFIG_LANGUAGE_DEFAULT, "(Por defecto)"}, + {TR_CONFIG_DEFAULT_PLAYER_NAME, "Nombre de jugador predeterminado:"}, {TR_CONFIG_GAME_SPEED, "Velocidad de juego:"}, {TR_CONFIG_VIDEO, "Opciones de video"}, {TR_CONFIG_FULLSCREEN, "Pantalla completa"}, @@ -278,7 +279,7 @@ static translation_string all_strings[] = { {TR_BUILDING_GRAND_TEMPLE_PHASE_4, "(Praecinctum)"}, {TR_BUILDING_GRAND_TEMPLE_PHASE_5, "(Dedicatio)"}, {TR_BUILDING_GRAND_TEMPLE_PHASE_1_TEXT, "Los trabajadores construyen el podium que elevará el templo y proveerá una sólida fundación para hacer frente al paso del tiempo."}, - {TR_BUILDING_GRAND_TEMPLE_PHASE_2_TEXT, "Los artesanos elaboran el pórtico, que contiene el altar de sacrificios del templo."}, + {TR_BUILDING_GRAND_TEMPLE_PHASE_2_TEXT, "Los artesanos elaboran el pórtico, que albergará el altar de sacrificios del templo."}, {TR_BUILDING_GRAND_TEMPLE_PHASE_3_TEXT, "Los ingenieros elaboran la cella, la cámara que albergará las sagradas imágenes."}, {TR_BUILDING_GRAND_TEMPLE_PHASE_4_TEXT, "Ha comenzado el trabajo en el praecinctum del templo, donde los fieles se reunirán para las ceremonias públicas."}, {TR_BUILDING_GRAND_TEMPLE_PHASE_5_TEXT, "Con el templo casi completo, los sacerdotes se reunen para ejecutar los ritos de dedicación."}, @@ -366,7 +367,7 @@ static translation_string all_strings[] = { {TR_WARNING_NO_MESS_HALL, "Debes construir primero un puesto de suministro para alimentar a tus tropas."}, {TR_WARNING_MAX_GRAND_TEMPLES, "Solo pueden construirse dos Templos magnos."}, {TR_CITY_MESSAGE_TITLE_GRAND_TEMPLE_COMPLETE, "Templo magno completado"}, - {TR_CITY_MESSAGE_TEXT_GRAND_TEMPLE_COMPLETE, "Sacerdotes y fieles se congregan en el nuevo templo magno para los ritos de consagración. Tu gente ve asombrada la majestuosidad de tus obras, y tu deidad elegida te colma de favor."}, + {TR_CITY_MESSAGE_TEXT_GRAND_TEMPLE_COMPLETE, "Sacerdotes y fieles se congregan en el nuevo templo magno para los ritos de consagración. Tu gente ve asombrada la majestuosidad de tus obras, y tu deidad elegida te colma de su favor."}, {TR_CITY_MESSAGE_TITLE_MERCURY_BLESSING, "Bendición de Mercurio"}, {TR_CITY_MESSAGE_TEXT_MERCURY_BLESSING, "Encantado por tu atención, Mercurio bendice tu industria, entregando materias primas a tus artesanos."}, {TR_FIGURE_TYPE_WORK_CAMP_WORKER, "Capataz"}, @@ -550,7 +551,7 @@ static translation_string all_strings[] = { {TR_BUILDING_HIPPODROME_PHASE_2_TEXT, "Accesos y estructuras de apoyo están siendo construidas alrededor de la pista." }, {TR_BUILDING_HIPPODROME_PHASE_3_TEXT, "Los albañiles tallan decenas de miles de asientos de piedra." }, {TR_BUILDING_HIPPODROME_PHASE_4_TEXT, "Más que una simple pista, los artesanos elaboran un monumento digno de los dioses y del pueblo de Roma." }, - {TR_BUILDING_MONUMENT_CONSTRUCTION_DESC, "La construcción de este monumento requiere material de un almacén, trabajadores de un campo de trabajo y arquitectos de un gremio de arquitectos." }, + {TR_BUILDING_MONUMENT_CONSTRUCTION_DESC, "La construcción de este monumento requerirá material de un almacén, trabajadores de un campo de trabajo y arquitectos de un gremio de arquitectos." }, {TR_BUILDING_MONUMENT_CONSTRUCTION_HALTED, "Construcción en pausa." }, {TR_WINDOW_ADVISOR_ENTERTAINMENT_ARENA_COVERAGE, "Arena" }, {TR_WINDOW_ADVISOR_ENTERTAINMENT_ARENA_COVERAGE, "Arenas" }, @@ -929,7 +930,7 @@ static translation_string all_strings[] = { {TR_BUILDING_SAND_PIT_HALF_EMPLOYEES, "Esta cantera tiene poco personal. Tarda más en producir piedra de lo que debería."}, {TR_BUILDING_SAND_PIT_SOME_EMPLOYEES, "Muy pocas personas trabajan en esta cantera. Por ello, la producción de arena es lenta."}, {TR_BUILDING_SAND_PIT_FEW_EMPLOYEES, "Sin apenas trabajadores en la cantera, la producción casi se ha detenido. Producirá poca arena durante el próximo año."}, - {TR_BUILDING_BRICKWORKS, "Ladrillos"}, + {TR_BUILDING_BRICKWORKS, "Ladrillera"}, {TR_BUILDING_BRICKWORKS_DESC, "Aquí, la arena y la arcilla se transforman en ladrillos para la construcción de monumentos."}, {TR_BUILDING_BRICKWORKS_PRODUCTION, "La producción está"}, {TR_BUILDING_BRICKWORKS_COMPLETE, "completa."}, @@ -1116,6 +1117,7 @@ static translation_string all_strings[] = { {TR_PARAMETER_TYPE_INVASION_POINT, "Punto de invasión"}, {TR_PARAMETER_TYPE_TARGET_TYPE, "Tipo de objetivo"}, {TR_PARAMETER_TYPE_ENEMY_TYPE, "Tipo de enemigo"}, + {TR_PARAMETER_TYPE_GOD, "Dios" }, {TR_CONDITION_TYPE_TIME_PASSED, "Tiempo transcurrido"}, {TR_CONDITION_TYPE_DIFFICULTY, "Dificultad"}, {TR_CONDITION_TYPE_MONEY, "Dinero de la ciudad"}, @@ -1169,6 +1171,9 @@ static translation_string all_strings[] = { {TR_ACTION_TYPE_TRADE_SET_SELL_PRICE_ONLY, "Fijar sólo precio de venta"}, {TR_ACTION_TYPE_BUILDING_FORCE_COLLAPSE, "Forzar el derrumbe del edificio"}, {TR_ACTION_TYPE_INVASION_IMMEDIATE, "La invasión se inicia inmediatamente"}, + {TR_ACTION_TYPE_CAUSE_BLESSING, "Causar una bendición" }, + {TR_ACTION_TYPE_CAUSE_MINOR_CURSE, "Causar una maldición menor" }, + {TR_ACTION_TYPE_CAUSE_MAJOR_CURSE, "Causa una gran maldición" }, {TR_PARAMETER_VALUE_COMPARISON_TYPE_EQUAL, "Igual"}, {TR_PARAMETER_VALUE_COMPARISON_TYPE_EQUAL_OR_LESS, "Menor o igual que"}, {TR_PARAMETER_VALUE_COMPARISON_TYPE_EQUAL_OR_MORE, "Mayor o igual que"}, @@ -1304,6 +1309,11 @@ static translation_string all_strings[] = { {TR_PARAMETER_VALUE_ENEMY_9_EGYPTIAN, "Egipcios"}, {TR_PARAMETER_VALUE_ENEMY_10_CARTHAGINIAN, "Cartagineses"}, {TR_PARAMETER_VALUE_ENEMY_11_CAESAR, "Cesar"}, + {TR_PARAMETER_VALUE_GOD_CERES, "Ceres"}, + {TR_PARAMETER_VALUE_GOD_MARS, "Marte"}, + {TR_PARAMETER_VALUE_GOD_MERCURY, "Mercurio"}, + {TR_PARAMETER_VALUE_GOD_NEPTUNE, "Neptuno"}, + {TR_PARAMETER_VALUE_GOD_VENUS, "Venus"}, {TR_PARAMETER_DISPLAY_SET_TO, "ajustado a"}, {TR_PARAMETER_DISPLAY_ADD_TO, "añadir"}, {TR_PARAMETER_DISPLAY_BETWEEN, "entre"}, @@ -1384,6 +1394,8 @@ static translation_string all_strings[] = { {TR_WINDOW_ADVISOR_MILITARY_INFANTRY, "Infantería"}, {TR_TOOLTIP_BUTTON_ROADBLOCK_ORDER_ACCEPT_ALL, "Aceptar a todos los caminantes"}, {TR_TOOLTIP_BUTTON_ROADBLOCK_ORDER_REJECT_ALL, "Rechazar a todos los caminantes"}, + {TR_TOOLTIP_BUTTON_STORAGE_ORDER_ACCEPT_ALL, "Aceptar todas las mercancías"}, + {TR_TOOLTIP_BUTTON_STORAGE_ORDER_REJECT_ALL, "Rechazar todas las mercancías"}, {TR_FIGURE_TYPE_BEGGAR, "Mendigo"}, {TR_BUILDING_ARMOURY, "Armería" }, {TR_BUILDING_ARMOURY_NO_EMPLOYEES, "Sin acceso a los empleados, la armería no puede entregar armas a nuestros soldados. Que Marte nos proteja, ¡Porque las legiones desarmadas seguro que no lo harán!"}, @@ -1414,8 +1426,23 @@ static translation_string all_strings[] = { {TR_WINDOW_CAMPAIGN_MISSION_FAILED_TO_LOAD_TITLE, "No se puede abrir la misión"}, {TR_WINDOW_CAMPAIGN_MISSION_FAILED_TO_LOAD_TEXT, "No se ha podido abrir la misión solicitada.\nPor favor compruebe augustus-log.txt por detalles en su directorio de Augustus."}, {TR_EDITOR_CAESAR_SALARY, "Salario del Cesar"}, - {TR_CITY_MESSAGE_TEXT_CARAVANSERAI_COMPLETE, "El caravasar está terminado. Surgen nuevos horizontes comerciales. Caravanas de todo el mundo están deseando venir a comerciar a tu ciudad."}, + {TR_CITY_MESSAGE_TEXT_CARAVANSERAI_COMPLETE, "El Caravanserai ya está terminado, y seguro que aparecen nuevas oportunidades comerciales. Caravanas de todo el mundo ya anuncian que están deseando venir a comerciar con tu ciudad."}, {TR_CONFIG_SHOW_DESIRABILITY_RANGE, "Mostrar deseabilidad al construir mausoleos y ninfeos"}, + {TR_WINDOW_BARRACKS_PRIORITY, "Prioridad de reclutamiento:"}, + {TR_WINDOW_BARRACKS_FORTS, "Fuertes"}, + {TR_WINDOW_BARRACKS_TOWERS, "Torres"}, + {TR_TOOLTIP_BARRACKS_PRIORITY_FORT, "Priorizar el entrenamiento de legionarios"}, + {TR_TOOLTIP_BARRACKS_PRIORITY_JAVELIN, "Priorizar el entrenamiento de jabalina"}, + {TR_TOOLTIP_BARRACKS_PRIORITY_MOUNTED, "Priorizar el entrenamiento de la Caballería"}, + {TR_TOOLTIP_BARRACKS_PRIORITY_AUXINF, "Priorizar el entrenamiento de infanteria"}, + {TR_TOOLTIP_BARRACKS_PRIORITY_AUXARCH, "Prioritize Archer training"}, + {TR_TOOLTIP_BARRACKS_PRIORITY_TOWER, "Prioritize Tower delivery"}, + {TR_TOOLTIP_BARRACKS_PRIORITY_WATCHTOWER, "Prioritize Watchtower delivery"}, + {TR_TOOLTIP_BUTTON_REJECT_DELIVERY, "Stop weapons delivery from the Armory"}, + {TR_TOOLTIP_BUTTON_ACCEPT_DELIVERY, "Allow weapons delivery from the Armory"}, + {TR_CONFIG_SHOW_DESIRABILITY_RANGE, "Show desirability when building mausolea and nymphaea"}, + {TR_BUILDING_FORT_ARCHERS, "Auxiliares - Arqueros"}, + {TR_WINDOW_ADVISOR_MILITARY_ARCHER, "Arqueros"} }; void translation_spanish(const translation_string **strings, int *num_strings) From 6ded2a723255b60ea4fc2aaa85d466ded54770e7 Mon Sep 17 00:00:00 2001 From: Areldir <72540647+Areldir@users.noreply.github.com> Date: Wed, 24 Apr 2024 07:25:30 +1000 Subject: [PATCH 11/15] Temporary visual fix for warehouse/granary flags --- src/widget/city_without_overlay.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/widget/city_without_overlay.c b/src/widget/city_without_overlay.c index 5446ed707c..d5f6bfb701 100644 --- a/src/widget/city_without_overlay.c +++ b/src/widget/city_without_overlay.c @@ -585,7 +585,7 @@ static int get_warehouse_flag_image_id(const building *b) return 0; } int image_offset = (permissions - 1) * WAREHOUSE_FLAG_FRAMES; - int image_id = assets_get_image_id("Flags", "Warehouse_Flag_Market") + image_offset; + int image_id = assets_get_image_id("UI", "Warehouse_Flag_Market") + image_offset; return image_id; } @@ -614,16 +614,16 @@ static int get_granary_flag_image_id(const building *b) // Can mostly reuse the flags used for Warehouses, with two exceptions // With all granary permissions, use reuse warehouse flag for all permissions if (permissions == permission_mask) { - int image_id = assets_get_image_id("Flags", "Warehouse_Flag_All"); + int image_id = assets_get_image_id("UI", "Warehouse_Flag_All"); return image_id; } // Different flag for all permissions except mess hall if (permissions == warehouse_permission_mask) { - int image_id = assets_get_image_id("Flags", "Granary_Flag_Market_Both_Traders"); + int image_id = assets_get_image_id("UI", "Warehouse_Flag_All"); return image_id; } int image_offset = (permissions - 1) * WAREHOUSE_FLAG_FRAMES; - int image_id = assets_get_image_id("Flags", "Warehouse_Flag_Market") + image_offset; + int image_id = assets_get_image_id("UI", "Warehouse_Flag_Market") + image_offset; return image_id; } From fd037080a61be3c1c74a9d5cbe4d132486b960d4 Mon Sep 17 00:00:00 2001 From: Damien Vincent <81165266+dvincent56@users.noreply.github.com> Date: Wed, 24 Apr 2024 00:33:24 +0200 Subject: [PATCH 12/15] Revamp granary and warehouse permissions (#1069) * Revamp granary and warehouse permissions * Merge branch 'master' into feature/granary * move worker permission button * revert caravanserai as red walker + change cross * quick fixes * Merge branch 'master' into feature/granary * quick fixes again * Merge branch 'master' into feature/granary * Merge branch 'master' into feature/granary * Merge branch 'master' into feature/granary * Merge branch 'master' into feature/granary * separate buttons by priority * rollback priority spacing * Very small code change --- src/building/barracks.c | 4 +- src/building/construction_building.c | 11 +- src/building/distribution.c | 20 ++- src/building/storage.h | 5 + src/figuretype/supplier.c | 2 + src/figuretype/workcamp.c | 7 ++ src/translation/english.c | 7 +- src/translation/french.c | 5 + src/translation/translation.h | 5 + src/window/building/distribution.c | 177 ++++++++++++++++++--------- src/window/building_info.c | 4 - 11 files changed, 173 insertions(+), 74 deletions(-) diff --git a/src/building/barracks.c b/src/building/barracks.c index 260a618587..a06dd1abfc 100644 --- a/src/building/barracks.c +++ b/src/building/barracks.c @@ -3,6 +3,7 @@ #include "building/count.h" #include "building/model.h" #include "building/monument.h" +#include "building/storage.h" #include "core/config.h" #include "city/buildings.h" #include "city/military.h" @@ -20,7 +21,8 @@ static int is_valid_destination(building *b, int road_network_id) { return b->state == BUILDING_STATE_IN_USE && map_has_road_access(b->x, b->y, b->size, 0) && b->distance_from_entry > 0 && b->road_network_id == road_network_id && - b->resources[RESOURCE_WEAPONS] < MAX_WEAPONS_BARRACKS; + b->resources[RESOURCE_WEAPONS] < MAX_WEAPONS_BARRACKS && + building_storage_get_permission(BUILDING_STORAGE_PERMISSION_ARMOURY, b); } int building_get_barracks_for_weapon(int x, int y, int resource, int road_network_id, map_point *dst) diff --git a/src/building/construction_building.c b/src/building/construction_building.c index d2850c6f4a..292ba2ddea 100644 --- a/src/building/construction_building.c +++ b/src/building/construction_building.c @@ -143,6 +143,13 @@ static void add_depot(building *b) add_building(b); } +static void add_granary(building *b) +{ + b->storage_id = building_storage_create(b->id); + add_building(b); + map_tiles_update_area_roads(b->x, b->y, 5); +} + static void add_to_map(int type, building *b, int size, int orientation, int waterside_orientation_abs) { if (building_variant_has_variants(b->type)) { @@ -168,9 +175,7 @@ static void add_to_map(int type, building *b, int size, int orientation, int wat break; // distribution case BUILDING_GRANARY: - b->storage_id = building_storage_create(b->id); - add_building(b); - map_tiles_update_area_roads(b->x, b->y, 5); + add_granary(b); break; // Don't autodistribute wine for new Venus temples case BUILDING_SMALL_TEMPLE_VENUS: diff --git a/src/building/distribution.c b/src/building/distribution.c index 15793c6d01..28e0dbf4b8 100644 --- a/src/building/distribution.c +++ b/src/building/distribution.c @@ -183,10 +183,22 @@ static int building_distribution_get_resource_storages(resource_storage_info inf int permission; - if (type == BUILDING_MESS_HALL) { - permission = BUILDING_STORAGE_PERMISSION_QUARTERMASTER; - } else { - permission = BUILDING_STORAGE_PERMISSION_MARKET; + switch (type) { + case BUILDING_MESS_HALL: + permission = BUILDING_STORAGE_PERMISSION_QUARTERMASTER; + break; + case BUILDING_TAVERN: + permission = BUILDING_STORAGE_PERMISSION_BARKEEP; + break; + case BUILDING_CARAVANSERAI: + permission = BUILDING_STORAGE_PERMISSION_CARAVANSERAI; + break; + case BUILDING_LIGHTHOUSE: + permission = BUILDING_STORAGE_PERMISSION_LIGHTHOUSE; + break; + default: + permission = BUILDING_STORAGE_PERMISSION_MARKET; + break; } if (is_food_needed(info)) { diff --git a/src/building/storage.h b/src/building/storage.h index ff9269263f..97b824cce0 100644 --- a/src/building/storage.h +++ b/src/building/storage.h @@ -38,6 +38,11 @@ typedef enum { BUILDING_STORAGE_PERMISSION_DOCK = 2, BUILDING_STORAGE_PERMISSION_QUARTERMASTER = 3, BUILDING_STORAGE_PERMISSION_WORKER = 4, + BUILDING_STORAGE_PERMISSION_BARKEEP = 5, + BUILDING_STORAGE_PERMISSION_CARAVANSERAI = 6, + BUILDING_STORAGE_PERMISSION_LIGHTHOUSE = 7, + BUILDING_STORAGE_PERMISSION_ARMOURY = 8, + BUILDING_STORAGE_PERMISSION_WORKCAMP = 9, } building_storage_permission_states; diff --git a/src/figuretype/supplier.c b/src/figuretype/supplier.c index ccc2cd2fc2..3a49dff750 100644 --- a/src/figuretype/supplier.c +++ b/src/figuretype/supplier.c @@ -42,8 +42,10 @@ static int take_food_from_granary(figure *f, int market_id, int granary_id) if (!resource_is_food(resource)) { return 0; } + building *granary = building_get(granary_id); building *market = building_get(market_id); + int market_units = market->resources[resource]; int max_units = 0; int granary_units = granary->resources[resource]; diff --git a/src/figuretype/workcamp.c b/src/figuretype/workcamp.c index e921275028..3b8dd58780 100644 --- a/src/figuretype/workcamp.c +++ b/src/figuretype/workcamp.c @@ -4,6 +4,7 @@ #include "building/building.h" #include "building/model.h" #include "building/monument.h" +#include "building/storage.h" #include "building/warehouse.h" #include "city/gods.h" #include "city/resource.h" @@ -115,6 +116,12 @@ void figure_workcamp_worker_action(figure *f) if (!warehouse_id) { continue; } + if (warehouse_id) { + building *b = building_get(warehouse_id); + if (!building_storage_get_permission(BUILDING_STORAGE_PERMISSION_WORKCAMP, b)) { + continue; + } + } f->collecting_item_id = resource; f->destination_building_id = warehouse_id; f->destination_x = dst.x; diff --git a/src/translation/english.c b/src/translation/english.c index ed599b3512..5794e07cc9 100644 --- a/src/translation/english.c +++ b/src/translation/english.c @@ -1442,7 +1442,12 @@ static translation_string all_strings[] = { {TR_TOOLTIP_BUTTON_ACCEPT_DELIVERY, "Allow weapons delivery from the Armory"}, {TR_CONFIG_SHOW_DESIRABILITY_RANGE, "Show desirability when building mausolea and nymphaea"}, {TR_BUILDING_FORT_ARCHERS, "Auxiliaries - Archers"}, - {TR_WINDOW_ADVISOR_MILITARY_ARCHER, "Archers"} + {TR_WINDOW_ADVISOR_MILITARY_ARCHER, "Archers"}, + {TR_TOOLTIP_BUTTON_ACCEPT_BARKEEP, "Allow barkeep to get food here"}, + {TR_TOOLTIP_BUTTON_ACCEPT_CARAVANSERAI, "Allow caravanserai supplier to get food here"}, + {TR_TOOLTIP_BUTTON_ACCEPT_ARMOURY, "Allow armoury to get weapons here"}, + {TR_TOOLTIP_BUTTON_ACCEPT_LIGHTHOUSE, "Allow lighthouse keeper to get timber here"}, + {TR_TOOLTIP_BUTTON_ACCEPT_WORKCAMP, "Allow architect to get materials here"}, }; void translation_english(const translation_string **strings, int *num_strings) diff --git a/src/translation/french.c b/src/translation/french.c index e0d18d7265..9a57ba577d 100644 --- a/src/translation/french.c +++ b/src/translation/french.c @@ -1440,6 +1440,11 @@ static translation_string all_strings[] = { {TR_TOOLTIP_BARRACKS_PRIORITY_WATCHTOWER, "Priorité d'affectation aux Tours de guet"}, {TR_TOOLTIP_BUTTON_REJECT_DELIVERY, "Suspendre la livraison d'armes par l'Armurerie"}, {TR_TOOLTIP_BUTTON_ACCEPT_DELIVERY, "Autoriser la livraison d'armes par l'Armurerie"}, + {TR_TOOLTIP_BUTTON_ACCEPT_BARKEEP, "Autoriser les tavernières à acheter ici"}, + {TR_TOOLTIP_BUTTON_ACCEPT_CARAVANSERAI, "Autoriser le fournisseur du caravansérail à acheter ici"}, + {TR_TOOLTIP_BUTTON_ACCEPT_ARMOURY, "Autoriser les armureries à se fournir ici"}, + {TR_TOOLTIP_BUTTON_ACCEPT_LIGHTHOUSE, "Autoriser le gardien du phare à obtenir du bois ici"}, + {TR_TOOLTIP_BUTTON_ACCEPT_WORKCAMP, "Autoriser les architectes à se fournir ici"}, }; void translation_french(const translation_string **strings, int *num_strings) diff --git a/src/translation/translation.h b/src/translation/translation.h index 268780aa87..8c24853a0c 100644 --- a/src/translation/translation.h +++ b/src/translation/translation.h @@ -1436,6 +1436,11 @@ typedef enum { TR_TOOLTIP_BUTTON_REJECT_DELIVERY, TR_TOOLTIP_BUTTON_ACCEPT_DELIVERY, TR_BUILDING_FORT_ARCHERS, + TR_TOOLTIP_BUTTON_ACCEPT_BARKEEP, + TR_TOOLTIP_BUTTON_ACCEPT_CARAVANSERAI, + TR_TOOLTIP_BUTTON_ACCEPT_ARMOURY, + TR_TOOLTIP_BUTTON_ACCEPT_LIGHTHOUSE, + TR_TOOLTIP_BUTTON_ACCEPT_WORKCAMP, TRANSLATION_MAX_KEY } translation_key; diff --git a/src/window/building/distribution.c b/src/window/building/distribution.c index fbcb6a216f..e01eb39f67 100644 --- a/src/window/building/distribution.c +++ b/src/window/building/distribution.c @@ -95,17 +95,22 @@ static generic_button orders_partial_resource_buttons[] = { }; static generic_button warehouse_distribution_permissions_buttons[] = { - {0, 0, 20, 22, storage_toggle_permissions, button_none, 1, 0}, - {96, 0, 20, 22, storage_toggle_permissions, button_none, 2, 0}, - {228, 0, 20, 22, storage_toggle_permissions, button_none, 3, 0}, - {324, 0, 20, 22, storage_toggle_permissions, button_none, 5, 0}, + {0, 0, 52, 52, storage_toggle_permissions, button_none, 1, 0}, + {62, 0, 52, 52, storage_toggle_permissions, button_none, 2, 0}, + {124, 0, 52, 52, storage_toggle_permissions, button_none, 3, 0}, + {186, 0, 52, 52, storage_toggle_permissions, button_none, 6, 0}, + {248, 0, 52, 52, storage_toggle_permissions, button_none, 10, 0}, + {310, 0, 52, 52, storage_toggle_permissions, button_none, 9, 0}, + {372, 0, 52, 52, storage_toggle_permissions, button_none, 8, 0}, }; static generic_button granary_distribution_permissions_buttons[] = { - {0, 0, 20, 22, storage_toggle_permissions, button_none, 1, 0}, - {96, 0, 20, 22, storage_toggle_permissions, button_none, 4, 0}, - {192, 0, 20, 22, storage_toggle_permissions, button_none, 2, 0}, - {324, 0, 20, 22, storage_toggle_permissions, button_none, 3, 0}, + {0, 0, 52, 52, storage_toggle_permissions, button_none, 1, 0}, + {76, 0, 52, 52, storage_toggle_permissions, button_none, 2, 0}, + {152, 0, 52, 52, storage_toggle_permissions, button_none, 3, 0}, + {228, 0, 52, 52, storage_toggle_permissions, button_none, 6, 0}, + {304, 0, 52, 52, storage_toggle_permissions, button_none, 4, 0}, + {380, 0, 52, 52, storage_toggle_permissions, button_none, 7, 0}, }; static generic_button dock_distribution_permissions_buttons[20]; @@ -129,12 +134,12 @@ static generic_button warehouse_order_buttons[] = { }; static generic_button go_to_caravanserai_action_button[] = { - {0, 0, 400, 100, button_caravanserai_policy, button_none, 0, 0} + {0, 0, 400, 100, button_caravanserai_policy, button_none, 0, 0} }; static image_button image_buttons_maintain[] = { - {324, 0, 30, 19, IB_NORMAL, 0, 0, storage_toggle_permissions, button_none, 5, 0, 1, "UI", "Maintain_1"}, - {324, 0, 30, 19, IB_NORMAL, 0, 0, storage_toggle_permissions, button_none, 5, 0, 1, "UI", "Stop_Maintain_1"}, + {0, 0, 30, 19, IB_NORMAL, 0, 0, storage_toggle_permissions, button_none, 5, 0, 1, "UI", "Maintain_1"}, + {0, 0, 30, 19, IB_NORMAL, 0, 0, storage_toggle_permissions, button_none, 5, 0, 1, "UI", "Stop_Maintain_1"}, }; static struct { @@ -224,41 +229,85 @@ static void draw_accept_none_button(int x, int y, int focused, affect_all_button static void draw_permissions_buttons(int x, int y, int buttons, building_info_context *c) { - building_storage_permission_states rules[] = { - BUILDING_STORAGE_PERMISSION_MARKET, - BUILDING_STORAGE_PERMISSION_TRADERS, - BUILDING_STORAGE_PERMISSION_DOCK, + int images_permission[] = { + assets_get_image_id("Walkers", "marketbuyer_sw_01"), + image_group(GROUP_FIGURE_TRADE_CARAVAN) + 4, + image_group(GROUP_EMPIRE_TRADE_ROUTE_TYPE), + assets_get_image_id("Walkers", "Barkeep SW 01"), + assets_get_image_id("Walkers", "Slave SW 01"), + image_group(GROUP_FIGURE_CARTPUSHER_CART) + 104, + image_group(GROUP_FIGURE_CARTPUSHER_CART) + 80 }; - int offsets[] = { 96, 132, 96, 96 }; - int dx = x; + + int image_offset_x, image_offset_y; + for (int i = 0; i < buttons; i++) { - int rule_id = rules[i]; - button_border_draw(dx, y, 20, 20, data.permission_focus_button_id == i + 1 ? 1 : 0); - if (building_storage_get_permission(rule_id, building_get(data.building_id))) { - image_draw(assets_get_image_id("UI", "Allowed_Walker_Check"), dx + 4, y + 4, - COLOR_MASK_NONE, SCALE_NONE); + int permission = warehouse_distribution_permissions_buttons[i].parameter1 - 1; + int is_sea_trade_route = permission == BUILDING_STORAGE_PERMISSION_DOCK; + + int permission_state = building_storage_get_permission(permission, building_get(data.building_id)); + + if (!permission_state) { + inner_panel_draw(x + 2, y + 2, 3, 3); + } + image_offset_x = is_sea_trade_route ? 12 : 7; + image_offset_y = is_sea_trade_route ? 16 : 7; + + image_draw(images_permission[i], x + image_offset_x, y + image_offset_y, COLOR_MASK_NONE, SCALE_NONE); + + if (!permission_state) { + image_draw(assets_get_image_id("UI", "Large_Widget_Cross"), x + 15, y + 15, + COLOR_MASK_NONE, SCALE_NONE); } - dx += offsets[i]; + + button_border_draw(x, y, 52, 52, data.permission_focus_button_id == i + 1 || !permission_state); + + x += 62; } + building *b = building_get(c->building_id); int button = 1; if (building_storage_get_permission(BUILDING_STORAGE_PERMISSION_WORKER, b)) { button = 2; } - image_buttons_draw(x, y, image_buttons_maintain, button); + image_buttons_draw(c->x_offset + 421, c->y_offset + 10, image_buttons_maintain, button); } static void draw_granary_permissions_buttons(int x, int y, int buttons) -{ - int offsets[] = { 96, 96, 132, 96 }; +{ + static int images_permission[6]; + if (!images_permission[0]) { + images_permission[0] = assets_get_image_id("Walkers", "marketbuyer_sw_01"); + images_permission[1] = image_group(GROUP_FIGURE_TRADE_CARAVAN) + 4; + images_permission[2] = image_group(GROUP_EMPIRE_TRADE_ROUTE_TYPE); + images_permission[3] = assets_get_image_id("Walkers", "Barkeep SW 01"); + images_permission[4] = assets_get_image_id("Walkers", "M Hall SW 01"); + images_permission[5] = assets_get_image_id("Walkers", "caravanserai_walker_sw_01"); + } + + int image_offset_x, image_offset_y; + for (int i = 0; i < buttons; i++) { int permission = granary_distribution_permissions_buttons[i].parameter1 - 1; - button_border_draw(x, y, 20, 20, data.permission_focus_button_id == i + 1 ? 1 : 0); - if (building_storage_get_permission(permission, building_get(data.building_id))) { - image_draw(assets_get_image_id("UI", "Allowed_Walker_Check"), x + 4, y + 4, - COLOR_MASK_NONE, SCALE_NONE); + int is_sea_trade_route = permission == BUILDING_STORAGE_PERMISSION_DOCK; + int permission_state = building_storage_get_permission(permission, building_get(data.building_id)); + + if (!permission_state) { + inner_panel_draw(x + 2, y + 2, 3, 3); + } + image_offset_x = is_sea_trade_route ? 12 : 7; + image_offset_y = is_sea_trade_route ? 16 : 7; + + image_draw(images_permission[i], x + image_offset_x, y + image_offset_y, COLOR_MASK_NONE, SCALE_NONE); + + if (!permission_state) { + image_draw(assets_get_image_id("UI", "Large_Widget_Cross"), x + 15, y + 15, + COLOR_MASK_NONE, SCALE_NONE); } - x += offsets[i]; + + button_border_draw(x, y, 52, 52, data.permission_focus_button_id == i + 1 || !permission_state); + + x += 76; } } @@ -669,7 +718,7 @@ void window_building_draw_granary(building_info_context *c) if (!b->has_plague && c->has_road_access) { y_offset_blocks = ((stored_food_types - 1) / 2 - 3) * 2 + 2; } - c->height_blocks = 22 + y_offset_blocks; + c->height_blocks = 24 + y_offset_blocks; outer_panel_draw(c->x_offset, c->y_offset, c->width_blocks, c->height_blocks); text_draw_label_and_number_centered(lang_get_string(28, b->type), b->storage_id, "", @@ -761,32 +810,25 @@ void window_building_draw_granary(building_info_context *c) lang_text_draw_multiline(99, 15, c->x_offset + 32, c->y_offset + y_offset + 63, BLOCK_SIZE * (c->width_blocks - 3), FONT_NORMAL_BROWN); } - - // Permissions image - image_draw(image_group(GROUP_FIGURE_MARKET_LADY) + 4, c->x_offset + 28, c->y_offset + 19 * c->height_blocks - 140, - COLOR_MASK_NONE, SCALE_NONE); - image_draw(image_group(GROUP_FIGURE_TOWER_SENTRY) + 4, - c->x_offset + 128, c->y_offset + 19 * c->height_blocks - 140, COLOR_MASK_NONE, SCALE_NONE); - image_draw(image_group(GROUP_FIGURE_TRADE_CARAVAN) + 4, - c->x_offset + 218, c->y_offset + 19 * c->height_blocks - 140, COLOR_MASK_NONE, SCALE_NONE); - image_draw(image_group(GROUP_FIGURE_SHIP) + 4, c->x_offset + 308, c->y_offset + 19 * c->height_blocks - 160, - COLOR_MASK_NONE, SCALE_NONE); } void window_building_draw_granary_foreground(building_info_context *c) { + // Permissions buttons + draw_granary_permissions_buttons(c->x_offset + 16, c->y_offset + BLOCK_SIZE * c->height_blocks - 108, 6); + + // special orders button_border_draw(c->x_offset + 80, c->y_offset + BLOCK_SIZE * c->height_blocks - 34, BLOCK_SIZE * (c->width_blocks - 10), 20, data.focus_button_id == 1 ? 1 : 0); lang_text_draw_centered(98, 5, c->x_offset + 80, c->y_offset + BLOCK_SIZE * c->height_blocks - 30, BLOCK_SIZE * (c->width_blocks - 10), FONT_NORMAL_BLACK); - draw_granary_permissions_buttons(c->x_offset + 58, c->y_offset + 19 * c->height_blocks - 122, 4); } int window_building_handle_mouse_granary(const mouse *m, building_info_context *c) { data.building_id = c->building_id; - if (generic_buttons_handle_mouse(m, c->x_offset + 58, c->y_offset + 19 * c->height_blocks - 122, - granary_distribution_permissions_buttons, 4, &data.permission_focus_button_id)) { + if (generic_buttons_handle_mouse(m, c->x_offset + 16, c->y_offset + BLOCK_SIZE * c->height_blocks - 108, + granary_distribution_permissions_buttons, 6, &data.permission_focus_button_id)) { } return generic_buttons_handle_mouse( m, c->x_offset + 80, c->y_offset + BLOCK_SIZE * c->height_blocks - 34, @@ -972,7 +1014,7 @@ void window_building_draw_warehouse(building_info_context *c) generate_warehouse_resource_list(b); y_offset_blocks = ((data.stored_resources.size - 1) / 2 - 3) * 2 + 2; } - c->height_blocks = 22 + y_offset_blocks; + c->height_blocks = 24 + y_offset_blocks; outer_panel_draw(c->x_offset, c->y_offset, c->width_blocks, c->height_blocks); text_draw_label_and_number_centered(lang_get_string(28, b->type), b->storage_id, "", @@ -1059,23 +1101,18 @@ void window_building_draw_warehouse(building_info_context *c) lang_text_draw_multiline(99, 15, c->x_offset + 32, c->y_offset + y_offset + 63, BLOCK_SIZE * (c->width_blocks - 3), FONT_NORMAL_BROWN); } - - image_draw(image_group(GROUP_FIGURE_MARKET_LADY) + 4, - c->x_offset + 32, c->y_offset + BLOCK_SIZE * c->height_blocks - 83, COLOR_MASK_NONE, SCALE_NONE); - image_draw(image_group(GROUP_FIGURE_TRADE_CARAVAN) + 4, - c->x_offset + 128, c->y_offset + BLOCK_SIZE * c->height_blocks - 83, COLOR_MASK_NONE, SCALE_NONE); - image_draw(image_group(GROUP_FIGURE_SHIP) + 4, - c->x_offset + 216, c->y_offset + BLOCK_SIZE * c->height_blocks - 100, COLOR_MASK_NONE, SCALE_NONE); } void window_building_draw_warehouse_foreground(building_info_context *c) { + // permissions + draw_permissions_buttons(c->x_offset + 20, c->y_offset + BLOCK_SIZE * c->height_blocks - 108, 7, c); + + // special orders button_border_draw(c->x_offset + 80, c->y_offset + BLOCK_SIZE * c->height_blocks - 34, BLOCK_SIZE * (c->width_blocks - 10), 20, data.focus_button_id == 1 ? 1 : 0); lang_text_draw_centered(99, 2, c->x_offset + 80, c->y_offset + BLOCK_SIZE * c->height_blocks - 30, BLOCK_SIZE * (c->width_blocks - 10), FONT_NORMAL_BLACK); - - draw_permissions_buttons(c->x_offset + 64, c->y_offset + BLOCK_SIZE * c->height_blocks - 75, 3, c); } int window_building_handle_mouse_warehouse(const mouse *m, building_info_context *c) @@ -1085,8 +1122,8 @@ int window_building_handle_mouse_warehouse(const mouse *m, building_info_context if (generic_buttons_handle_mouse(m, c->x_offset + 80, c->y_offset + BLOCK_SIZE * c->height_blocks - 34, go_to_orders_button, 1, &data.focus_button_id)) { } - if (generic_buttons_handle_mouse(m, c->x_offset + 64, c->y_offset + BLOCK_SIZE * c->height_blocks - 75, - warehouse_distribution_permissions_buttons, 3, &data.permission_focus_button_id)) { + if (generic_buttons_handle_mouse(m, c->x_offset + 20, c->y_offset + BLOCK_SIZE * c->height_blocks - 108, + warehouse_distribution_permissions_buttons, 7, &data.permission_focus_button_id)) { } int button = 1; @@ -1095,7 +1132,7 @@ int window_building_handle_mouse_warehouse(const mouse *m, building_info_context if (building_storage_get_permission(BUILDING_STORAGE_PERMISSION_WORKER, b)) { button = 2; } - if (image_buttons_handle_mouse(m, c->x_offset + 64, c->y_offset + BLOCK_SIZE * c->height_blocks - 75, + if (image_buttons_handle_mouse(m, c->x_offset + 421, c->y_offset + 10, image_buttons_maintain, button, &data.image_button_focus_id)) { return 1; } @@ -1183,6 +1220,18 @@ void window_building_warehouse_get_tooltip_distribution_permissions(int *transla case 3: *translation = TR_TOOLTIP_BUTTON_ACCEPT_TRADE_SHIPS; break; + case 4: + *translation = TR_TOOLTIP_BUTTON_ACCEPT_BARKEEP; + break; + case 5: + *translation = TR_TOOLTIP_BUTTON_ACCEPT_WORKCAMP; + break; + case 6: + *translation = TR_TOOLTIP_BUTTON_ACCEPT_ARMOURY; + break; + case 7: + *translation = TR_TOOLTIP_BUTTON_ACCEPT_LIGHTHOUSE; + break; default: break; } @@ -1203,13 +1252,19 @@ void window_building_granary_get_tooltip_distribution_permissions(int *translati *translation = TR_TOOLTIP_BUTTON_ACCEPT_MARKET_LADIES; break; case 2: - *translation = TR_TOOLTIP_BUTTON_ACCEPT_QUARTERMASTER; + *translation = TR_TOOLTIP_BUTTON_ACCEPT_TRADE_CARAVAN; break; case 3: - *translation = TR_TOOLTIP_BUTTON_ACCEPT_TRADE_CARAVAN; + *translation = TR_TOOLTIP_BUTTON_ACCEPT_TRADE_SHIPS; break; case 4: - *translation = TR_TOOLTIP_BUTTON_ACCEPT_TRADE_SHIPS; + *translation = TR_TOOLTIP_BUTTON_ACCEPT_BARKEEP; + break; + case 5: + *translation = TR_TOOLTIP_BUTTON_ACCEPT_QUARTERMASTER; + break; + case 6: + *translation = TR_TOOLTIP_BUTTON_ACCEPT_CARAVANSERAI; break; default: break; diff --git a/src/window/building_info.c b/src/window/building_info.c index c399ddff46..2ea0ab552f 100644 --- a/src/window/building_info.c +++ b/src/window/building_info.c @@ -218,9 +218,6 @@ static int get_height_id(void) case BUILDING_COLOSSEUM: return 8; - case BUILDING_GRANARY: - return 9; - case BUILDING_GRAND_TEMPLE_MARS: return 10; @@ -457,7 +454,6 @@ static void init(int grid_offset) case 6: context.height_blocks = 38; break; case 7: context.height_blocks = 26; break; case 8: context.height_blocks = 40; context.width_blocks = 30; break; - case 9: context.height_blocks = 20; break; case 10: context.height_blocks = 47; context.width_blocks = 30; break; default: context.height_blocks = 22; break; } From 11ba32d31afe2d48120487cb31681c23e637572f Mon Sep 17 00:00:00 2001 From: Areldir <72540647+Areldir@users.noreply.github.com> Date: Wed, 24 Apr 2024 22:13:39 +1000 Subject: [PATCH 13/15] Update English.c --- src/translation/english.c | 42 +++++++++++++++++++-------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/src/translation/english.c b/src/translation/english.c index 5794e07cc9..bbb9278974 100644 --- a/src/translation/english.c +++ b/src/translation/english.c @@ -91,7 +91,7 @@ static translation_string all_strings[] = { {TR_CONFIG_WOLVES_BLOCK, "Block building around wolves"}, {TR_CONFIG_DYNAMIC_GRANARIES, "Block unconnected granary roads"}, {TR_CONFIG_MORE_STOCKPILE, "Houses stockpile more goods from market"}, - {TR_CONFIG_NO_SUPPLIER_DISTRIBUTION, "Buying market ladies don't distribute goods"}, + {TR_CONFIG_NO_SUPPLIER_DISTRIBUTION, "Market buyers don't distribute goods to houses"}, {TR_CONFIG_IMMEDIATELY_DELETE_BUILDINGS, "Immediately destroy buildings"}, {TR_CONFIG_GETTING_GRANARIES_GO_OFFROAD, "Cart pushers from getting granaries can go off-road"}, {TR_CONFIG_GRANARIES_GET_DOUBLE, "Double the capacity of cart pushers from getting granaries"}, @@ -397,10 +397,10 @@ static translation_string all_strings[] = { {TR_TOOLTIP_BUTTON_DELETE_READ_MESSAGES, "Delete read messages"}, {TR_TOOLTIP_BUTTON_MOTHBALL_ON, "Disable this building"}, {TR_TOOLTIP_BUTTON_MOTHBALL_OFF, "Enable this building"}, - {TR_TOOLTIP_BUTTON_ACCEPT_MARKET_LADIES, "Allow market ladies to buy from here"}, - {TR_TOOLTIP_BUTTON_ACCEPT_TRADE_CARAVAN, "Allow caravans to trade here"}, - {TR_TOOLTIP_BUTTON_ACCEPT_TRADE_SHIPS, "Allow trade ships to trade here"}, - {TR_TOOLTIP_BUTTON_ACCEPT_WORKERS, "Halt resource to workshops or granaries"}, + {TR_TOOLTIP_BUTTON_ACCEPT_MARKET_LADIES, "Allow markets to get from here"}, + {TR_TOOLTIP_BUTTON_ACCEPT_TRADE_CARAVAN, "Allow merchant caravans to get from here"}, + {TR_TOOLTIP_BUTTON_ACCEPT_TRADE_SHIPS, "Allow docked trade ships to get from here"}, + {TR_TOOLTIP_BUTTON_ACCEPT_WORKERS, "Halt resource deliveries to workshops or granaries"}, {TR_TOOLTIP_BUTTON_STOCKPILING_ON, " Enable stockpiling to a warehouse"}, {TR_TOOLTIP_BUTTON_STOCKPILING_OFF, "Disable stockpiling"}, {TR_BUILDING_LIGHTHOUSE, "Lighthouse"}, @@ -1427,27 +1427,27 @@ static translation_string all_strings[] = { {TR_WINDOW_CAMPAIGN_MISSION_FAILED_TO_LOAD_TEXT, "The requested mission could not be opened.\nPlease check augustus-log.txt in your Augustus directory for details."}, {TR_EDITOR_CAESAR_SALARY, "Caesar's salary"}, {TR_CITY_MESSAGE_TEXT_CARAVANSERAI_COMPLETE, "The Caravanserai is now complete, and new commercial opportunities are sure to appear. Caravans from all over the world already announce that they are eager to come and trade with your city."}, - {TR_CONFIG_SHOW_DESIRABILITY_RANGE, "Show desirability when building mausolea and nymphaea"}, + {TR_CONFIG_SHOW_DESIRABILITY_RANGE, "Show desirability when building a Nymphaeum or Mausoleum"}, {TR_WINDOW_BARRACKS_PRIORITY, "Recruitment Priority:"}, {TR_WINDOW_BARRACKS_FORTS, "Forts"}, {TR_WINDOW_BARRACKS_TOWERS, "Towers"}, - {TR_TOOLTIP_BARRACKS_PRIORITY_FORT, "Prioritize Legionary training"}, - {TR_TOOLTIP_BARRACKS_PRIORITY_JAVELIN, "Prioritize Javelin training"}, - {TR_TOOLTIP_BARRACKS_PRIORITY_MOUNTED, "Prioritize Cavalry training"}, - {TR_TOOLTIP_BARRACKS_PRIORITY_AUXINF, "Prioritize Swordsman training"}, - {TR_TOOLTIP_BARRACKS_PRIORITY_AUXARCH, "Prioritize Archer training"}, - {TR_TOOLTIP_BARRACKS_PRIORITY_TOWER, "Prioritize Tower delivery"}, - {TR_TOOLTIP_BARRACKS_PRIORITY_WATCHTOWER, "Prioritize Watchtower delivery"}, - {TR_TOOLTIP_BUTTON_REJECT_DELIVERY, "Stop weapons delivery from the Armory"}, - {TR_TOOLTIP_BUTTON_ACCEPT_DELIVERY, "Allow weapons delivery from the Armory"}, - {TR_CONFIG_SHOW_DESIRABILITY_RANGE, "Show desirability when building mausolea and nymphaea"}, + {TR_TOOLTIP_BARRACKS_PRIORITY_FORT, "Prioritize training of Legionaries"}, + {TR_TOOLTIP_BARRACKS_PRIORITY_JAVELIN, "Prioritize training of Javelins"}, + {TR_TOOLTIP_BARRACKS_PRIORITY_MOUNTED, "Prioritize training of Mounted"}, + {TR_TOOLTIP_BARRACKS_PRIORITY_AUXINF, "Prioritize training of Swords"}, + {TR_TOOLTIP_BARRACKS_PRIORITY_AUXARCH, "Prioritize training of Archers"}, + {TR_TOOLTIP_BARRACKS_PRIORITY_TOWER, "Prioritize training of tower sentries"}, + {TR_TOOLTIP_BARRACKS_PRIORITY_WATCHTOWER, "Prioritize training of watchtower watchmen"}, + {TR_TOOLTIP_BUTTON_REJECT_DELIVERY, "Stop armories from delivering weapons here"}, + {TR_TOOLTIP_BUTTON_ACCEPT_DELIVERY, "Allow armories to deliver weapons here"}, + {TR_CONFIG_SHOW_DESIRABILITY_RANGE, "Show desirability when building a Nymphaeum or Mausoleum"}, {TR_BUILDING_FORT_ARCHERS, "Auxiliaries - Archers"}, {TR_WINDOW_ADVISOR_MILITARY_ARCHER, "Archers"}, - {TR_TOOLTIP_BUTTON_ACCEPT_BARKEEP, "Allow barkeep to get food here"}, - {TR_TOOLTIP_BUTTON_ACCEPT_CARAVANSERAI, "Allow caravanserai supplier to get food here"}, - {TR_TOOLTIP_BUTTON_ACCEPT_ARMOURY, "Allow armoury to get weapons here"}, - {TR_TOOLTIP_BUTTON_ACCEPT_LIGHTHOUSE, "Allow lighthouse keeper to get timber here"}, - {TR_TOOLTIP_BUTTON_ACCEPT_WORKCAMP, "Allow architect to get materials here"}, + {TR_TOOLTIP_BUTTON_ACCEPT_BARKEEP, "Allow taverns to get from here"}, + {TR_TOOLTIP_BUTTON_ACCEPT_CARAVANSERAI, "Allow the Caravanserai to get from here"}, + {TR_TOOLTIP_BUTTON_ACCEPT_ARMOURY, "Allow armories to get from here"}, + {TR_TOOLTIP_BUTTON_ACCEPT_LIGHTHOUSE, "Allow the Lighthouse to get from here"}, + {TR_TOOLTIP_BUTTON_ACCEPT_WORKCAMP, "Allow workcamps to get from here"}, }; void translation_english(const translation_string **strings, int *num_strings) From 4920e4174ba29a5fbc4777661065711ce82c7e25 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Cadete?= Date: Wed, 24 Apr 2024 17:34:05 +0100 Subject: [PATCH 14/15] Fix warehouse and granary image flags --- src/building/storage.h | 1 - src/widget/city_without_overlay.c | 78 ++++++++----------------------- 2 files changed, 20 insertions(+), 59 deletions(-) diff --git a/src/building/storage.h b/src/building/storage.h index 97b824cce0..d39faf1f0c 100644 --- a/src/building/storage.h +++ b/src/building/storage.h @@ -45,7 +45,6 @@ typedef enum { BUILDING_STORAGE_PERMISSION_WORKCAMP = 9, } building_storage_permission_states; - /** * Building storage struct */ diff --git a/src/widget/city_without_overlay.c b/src/widget/city_without_overlay.c index d5f6bfb701..a97e118b64 100644 --- a/src/widget/city_without_overlay.c +++ b/src/widget/city_without_overlay.c @@ -576,67 +576,31 @@ static void draw_dock_workers(const building *b, int x, int y, color_t color_mas } } -static int get_warehouse_flag_image_id(const building *b) +static void draw_permissions_flag(building *b, int x, int y, color_t color_mask) { - const building_storage *storage = building_storage_get(b->storage_id); - int permission_mask = 0x7; - int permissions = (~storage->permissions) & permission_mask; - if (!permissions) { - return 0; + if (b->has_plague) { + return; } - int image_offset = (permissions - 1) * WAREHOUSE_FLAG_FRAMES; - int image_id = assets_get_image_id("UI", "Warehouse_Flag_Market") + image_offset; - return image_id; -} - -static void draw_warehouse_flag(const building *b, int x, int y, color_t color_mask) -{ - if (!b->has_plague) { - int image_id = get_warehouse_flag_image_id(b); - if (!image_id) { - return; - } - image_id += b->data.warehouse.flag_frame; - image_draw(image_id, x + 19, y - 56, color_mask, draw_context.scale); + static int base_permission_image[7]; + if (!base_permission_image[0]) { + base_permission_image[0] = 0xdeadbeef; // Invalid image ID, just to confirm the other values have been set + base_permission_image[1] = assets_get_image_id("UI", "Warehouse_Flag_Market"); + base_permission_image[2] = assets_get_image_id("UI", "Warehouse_Flag_Land"); + base_permission_image[3] = assets_get_image_id("UI", "Warehouse_Flag_Market_Land"); + base_permission_image[4] = assets_get_image_id("UI", "Warehouse_Flag_Sea"); + base_permission_image[5] = assets_get_image_id("UI", "Warehouse_Flag_Market_Sea"); + base_permission_image[6] = assets_get_image_id("UI", "Warehouse_Flag_Land_Sea"); + base_permission_image[7] = assets_get_image_id("UI", "Warehouse_Flag_All"); } -} - -static int get_granary_flag_image_id(const building *b) -{ const building_storage *storage = building_storage_get(b->storage_id); - int permission_mask = 0xf; - int warehouse_permission_mask = 0x7; - int permissions = (~storage->permissions) & permission_mask; + int flag_permission_mask = 0x7; + int permissions = (~storage->permissions) & flag_permission_mask; if (!permissions) { - return 0; + return; } + image_draw(base_permission_image[permissions] + b->data.warehouse.flag_frame, x, y, color_mask, draw_context.scale); - // Can mostly reuse the flags used for Warehouses, with two exceptions - // With all granary permissions, use reuse warehouse flag for all permissions - if (permissions == permission_mask) { - int image_id = assets_get_image_id("UI", "Warehouse_Flag_All"); - return image_id; - } - // Different flag for all permissions except mess hall - if (permissions == warehouse_permission_mask) { - int image_id = assets_get_image_id("UI", "Warehouse_Flag_All"); - return image_id; - } - int image_offset = (permissions - 1) * WAREHOUSE_FLAG_FRAMES; - int image_id = assets_get_image_id("UI", "Warehouse_Flag_Market") + image_offset; - return image_id; -} - -static void draw_granary_flag(const building *b, int x, int y, color_t color_mask) -{ - if (!b->has_plague) { - int image_id = get_granary_flag_image_id(b); - if (!image_id) { - return; - } - image_id += b->data.warehouse.flag_frame; - image_draw(image_id, x + 81, y - 101, color_mask, draw_context.scale); - } + building_animation_advance_storage_flag(b, base_permission_image[permissions]); } static void draw_warehouse_ornaments(int x, int y, color_t color_mask) @@ -694,12 +658,10 @@ static void draw_animation(int x, int y, int grid_offset) draw_dock_workers(b, x, y, color_mask); } else if (b->type == BUILDING_WAREHOUSE) { draw_warehouse_ornaments(x, y, color_mask); - draw_warehouse_flag(b, x, y, color_mask); - building_animation_advance_storage_flag(b, get_warehouse_flag_image_id(b)); + draw_permissions_flag(b, x + 19, y - 56, color_mask); } else if (b->type == BUILDING_GRANARY) { draw_granary_stores(img, b, x, y, color_mask); - draw_granary_flag(b, x, y, color_mask); - building_animation_advance_storage_flag(b, get_granary_flag_image_id(b)); + draw_permissions_flag(b, x + 81, y - 101, color_mask); } else if (b->type == BUILDING_BURNING_RUIN && b->has_plague) { image_draw(image_group(GROUP_PLAGUE_SKULL), x + 18, y - 32, color_mask, draw_context.scale); } From a35dd1594022b9ad288253bef4521fd6f419d493 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Cadete?= Date: Wed, 24 Apr 2024 18:54:35 +0100 Subject: [PATCH 15/15] Fix some bugs with the mission selection --- src/window/mission_end.c | 4 ++-- src/window/mission_selection.c | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/window/mission_end.c b/src/window/mission_end.c index 09d57d5191..f27020eae6 100644 --- a/src/window/mission_end.c +++ b/src/window/mission_end.c @@ -306,14 +306,14 @@ static void advance_to_next_mission(void) int personal_savings = calc_bound(city_emperor_personal_savings(), 0, mission_info->max_personal_savings); setting_set_personal_savings_for_mission(0, personal_savings); window_mission_selection_show(); - } else if (scenario_campaign_rank() >= 11 || scenario_is_custom()) { + } else if (scenario_campaign_rank() >= 10 || scenario_is_custom()) { window_main_menu_show(1); setting_clear_personal_savings(); scenario_settings_init(); scenario_set_campaign_rank(2); } else { - setting_set_personal_savings_for_mission(scenario_campaign_rank() + 1, city_emperor_personal_savings()); scenario_set_campaign_rank(scenario_campaign_rank() + 1); + setting_set_personal_savings_for_mission(scenario_campaign_rank(), city_emperor_personal_savings()); scenario_set_campaign_mission(game_mission_peaceful()); window_mission_selection_show(); } diff --git a/src/window/mission_selection.c b/src/window/mission_selection.c index cd125d545c..e6270571f0 100644 --- a/src/window/mission_selection.c +++ b/src/window/mission_selection.c @@ -88,15 +88,15 @@ static void load_original_campaign_rank_scenarios(int rank) DEFAULT_SCENARIOS[0].name = lang_get_string(144, 1 + 3 * rank + 1); DEFAULT_SCENARIOS[0].description = 0; DEFAULT_SCENARIOS[0].fanfare = "wavs/fanfare_nu1.wav"; - DEFAULT_SCENARIOS[0].x = CAMPAIGN_SELECTION[rank].x_peaceful; - DEFAULT_SCENARIOS[0].y = CAMPAIGN_SELECTION[rank].y_peaceful; + DEFAULT_SCENARIOS[0].x = CAMPAIGN_SELECTION[rank - 2].x_peaceful; + DEFAULT_SCENARIOS[0].y = CAMPAIGN_SELECTION[rank - 2].y_peaceful; DEFAULT_SCENARIOS[1].id = game_mission_military(); DEFAULT_SCENARIOS[1].name = lang_get_string(144, 1 + 3 * rank + 2); DEFAULT_SCENARIOS[1].description = 0; DEFAULT_SCENARIOS[1].fanfare = "wavs/fanfare_nu5.wav"; - DEFAULT_SCENARIOS[1].x = CAMPAIGN_SELECTION[rank].x_military; - DEFAULT_SCENARIOS[1].y = CAMPAIGN_SELECTION[rank].y_military; + DEFAULT_SCENARIOS[1].x = CAMPAIGN_SELECTION[rank - 2].x_military; + DEFAULT_SCENARIOS[1].y = CAMPAIGN_SELECTION[rank - 2].y_military; data.mission.scenarios[0] = &DEFAULT_SCENARIOS[0]; data.mission.scenarios[1] = &DEFAULT_SCENARIOS[1];