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 998631a59a..0000000000 Binary files a/res/assets/Graphics/Flags/flag_grey_a1.png and /dev/null differ diff --git a/res/assets/Graphics/Flags/flag_grey_a2.png b/res/assets/Graphics/Flags/flag_grey_a2.png deleted file mode 100644 index d9dea74f6d..0000000000 Binary files a/res/assets/Graphics/Flags/flag_grey_a2.png and /dev/null differ 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 c38f3c56c3..0000000000 Binary files a/res/assets/Graphics/Flags/flag_grey_a3.png and /dev/null differ 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 201770395a..0000000000 Binary files a/res/assets/Graphics/Flags/flag_grey_a4.png and /dev/null differ 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 88a7b37e6d..0000000000 Binary files a/res/assets/Graphics/Flags/flag_grey_a5.png and /dev/null differ diff --git a/res/assets/Graphics/Flags/flag_grey_a6.png b/res/assets/Graphics/Flags/flag_grey_a6.png deleted file mode 100644 index e642105559..0000000000 Binary files a/res/assets/Graphics/Flags/flag_grey_a6.png and /dev/null differ 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 49f1f5ccf6..0000000000 Binary files a/res/assets/Graphics/Flags/flag_grey_a7.png and /dev/null differ diff --git a/res/assets/Graphics/Flags/flag_grey_a8.png b/res/assets/Graphics/Flags/flag_grey_a8.png deleted file mode 100644 index 6aa430062c..0000000000 Binary files a/res/assets/Graphics/Flags/flag_grey_a8.png and /dev/null differ 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 862201a2d4..0000000000 Binary files a/res/assets/Graphics/Flags/flag_market_mess_sea_trade_a1.png and /dev/null differ diff --git a/res/assets/Graphics/Flags/flag_market_mess_sea_trade_a2.png b/res/assets/Graphics/Flags/flag_market_mess_sea_trade_a2.png deleted file mode 100644 index d68f396290..0000000000 Binary files a/res/assets/Graphics/Flags/flag_market_mess_sea_trade_a2.png and /dev/null differ diff --git a/res/assets/Graphics/Flags/flag_market_mess_sea_trade_a3.png b/res/assets/Graphics/Flags/flag_market_mess_sea_trade_a3.png deleted file mode 100644 index 6d5328c31b..0000000000 Binary files a/res/assets/Graphics/Flags/flag_market_mess_sea_trade_a3.png and /dev/null differ 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 301fe0dfa2..0000000000 Binary files a/res/assets/Graphics/Flags/flag_market_mess_sea_trade_a4.png and /dev/null differ diff --git a/res/assets/Graphics/Flags/flag_market_mess_sea_trade_a5.png b/res/assets/Graphics/Flags/flag_market_mess_sea_trade_a5.png deleted file mode 100644 index c7b88b9d49..0000000000 Binary files a/res/assets/Graphics/Flags/flag_market_mess_sea_trade_a5.png and /dev/null differ diff --git a/res/assets/Graphics/Flags/flag_market_mess_sea_trade_a6.png b/res/assets/Graphics/Flags/flag_market_mess_sea_trade_a6.png deleted file mode 100644 index 163acb4e02..0000000000 Binary files a/res/assets/Graphics/Flags/flag_market_mess_sea_trade_a6.png and /dev/null differ 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 658962d31c..0000000000 Binary files a/res/assets/Graphics/Flags/flag_market_mess_sea_trade_a7.png and /dev/null differ diff --git a/res/assets/Graphics/Flags/flag_market_mess_sea_trade_a8.png b/res/assets/Graphics/Flags/flag_market_mess_sea_trade_a8.png deleted file mode 100644 index 9203e5f258..0000000000 Binary files a/res/assets/Graphics/Flags/flag_market_mess_sea_trade_a8.png and /dev/null differ diff --git a/res/assets/Graphics/Flags/flag_market_mess_trade_a1.png b/res/assets/Graphics/Flags/flag_market_mess_trade_a1.png deleted file mode 100644 index aee33de3a3..0000000000 Binary files a/res/assets/Graphics/Flags/flag_market_mess_trade_a1.png and /dev/null differ diff --git a/res/assets/Graphics/Flags/flag_market_mess_trade_a2.png b/res/assets/Graphics/Flags/flag_market_mess_trade_a2.png deleted file mode 100644 index 408f15012c..0000000000 Binary files a/res/assets/Graphics/Flags/flag_market_mess_trade_a2.png and /dev/null differ diff --git a/res/assets/Graphics/Flags/flag_market_mess_trade_a3.png b/res/assets/Graphics/Flags/flag_market_mess_trade_a3.png deleted file mode 100644 index 8df8110fb2..0000000000 Binary files a/res/assets/Graphics/Flags/flag_market_mess_trade_a3.png and /dev/null differ diff --git a/res/assets/Graphics/Flags/flag_market_mess_trade_a4.png b/res/assets/Graphics/Flags/flag_market_mess_trade_a4.png deleted file mode 100644 index a87a39e134..0000000000 Binary files a/res/assets/Graphics/Flags/flag_market_mess_trade_a4.png and /dev/null differ diff --git a/res/assets/Graphics/Flags/flag_market_mess_trade_a5.png b/res/assets/Graphics/Flags/flag_market_mess_trade_a5.png deleted file mode 100644 index 4bbfac56cb..0000000000 Binary files a/res/assets/Graphics/Flags/flag_market_mess_trade_a5.png and /dev/null differ 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 3aa21c39d6..0000000000 Binary files a/res/assets/Graphics/Flags/flag_market_mess_trade_a6.png and /dev/null differ diff --git a/res/assets/Graphics/Flags/flag_market_mess_trade_a7.png b/res/assets/Graphics/Flags/flag_market_mess_trade_a7.png deleted file mode 100644 index 9de0c1d813..0000000000 Binary files a/res/assets/Graphics/Flags/flag_market_mess_trade_a7.png and /dev/null differ diff --git a/res/assets/Graphics/Flags/flag_market_mess_trade_a8.png b/res/assets/Graphics/Flags/flag_market_mess_trade_a8.png deleted file mode 100644 index c9925e99ea..0000000000 Binary files a/res/assets/Graphics/Flags/flag_market_mess_trade_a8.png and /dev/null differ 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 b50cbe1b3f..0000000000 Binary files a/res/assets/Graphics/Flags/flag_market_sea_trade_a1.png and /dev/null differ diff --git a/res/assets/Graphics/Flags/flag_market_sea_trade_a2.png b/res/assets/Graphics/Flags/flag_market_sea_trade_a2.png deleted file mode 100644 index 153f2ed325..0000000000 Binary files a/res/assets/Graphics/Flags/flag_market_sea_trade_a2.png and /dev/null differ 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 18d54aa01f..0000000000 Binary files a/res/assets/Graphics/Flags/flag_market_sea_trade_a3.png and /dev/null differ 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 0944e5d4a0..0000000000 Binary files a/res/assets/Graphics/Flags/flag_market_sea_trade_a4.png and /dev/null differ diff --git a/res/assets/Graphics/Flags/flag_market_sea_trade_a5.png b/res/assets/Graphics/Flags/flag_market_sea_trade_a5.png deleted file mode 100644 index 887f01af17..0000000000 Binary files a/res/assets/Graphics/Flags/flag_market_sea_trade_a5.png and /dev/null differ diff --git a/res/assets/Graphics/Flags/flag_market_sea_trade_a6.png b/res/assets/Graphics/Flags/flag_market_sea_trade_a6.png deleted file mode 100644 index b42df2c6b5..0000000000 Binary files a/res/assets/Graphics/Flags/flag_market_sea_trade_a6.png and /dev/null differ diff --git a/res/assets/Graphics/Flags/flag_market_sea_trade_a7.png b/res/assets/Graphics/Flags/flag_market_sea_trade_a7.png deleted file mode 100644 index 0ebcb7ded6..0000000000 Binary files a/res/assets/Graphics/Flags/flag_market_sea_trade_a7.png and /dev/null differ 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 f5c8855ab6..0000000000 Binary files a/res/assets/Graphics/Flags/flag_market_sea_trade_a8.png and /dev/null differ 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 312f3768b4..0000000000 Binary files a/res/assets/Graphics/Flags/flag_mess_both_traders_a1.png and /dev/null differ diff --git a/res/assets/Graphics/Flags/flag_mess_both_traders_a2.png b/res/assets/Graphics/Flags/flag_mess_both_traders_a2.png deleted file mode 100644 index 37dcbc8464..0000000000 Binary files a/res/assets/Graphics/Flags/flag_mess_both_traders_a2.png and /dev/null differ 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 214357a86b..0000000000 Binary files a/res/assets/Graphics/Flags/flag_mess_both_traders_a3.png and /dev/null differ 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 37df1e0186..0000000000 Binary files a/res/assets/Graphics/Flags/flag_mess_both_traders_a4.png and /dev/null differ diff --git a/res/assets/Graphics/Flags/flag_mess_both_traders_a5.png b/res/assets/Graphics/Flags/flag_mess_both_traders_a5.png deleted file mode 100644 index 6a8b07f668..0000000000 Binary files a/res/assets/Graphics/Flags/flag_mess_both_traders_a5.png and /dev/null differ 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 6f91287d54..0000000000 Binary files a/res/assets/Graphics/Flags/flag_mess_both_traders_a6.png and /dev/null differ 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 68f9560938..0000000000 Binary files a/res/assets/Graphics/Flags/flag_mess_both_traders_a7.png and /dev/null differ 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 70e4d283e0..0000000000 Binary files a/res/assets/Graphics/Flags/flag_mess_both_traders_a8.png and /dev/null differ 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 a72dc07b13..0000000000 Binary files a/res/assets/Graphics/Flags/flag_mess_sea_trade_a1.png and /dev/null differ diff --git a/res/assets/Graphics/Flags/flag_mess_sea_trade_a2.png b/res/assets/Graphics/Flags/flag_mess_sea_trade_a2.png deleted file mode 100644 index c0ba08ebbf..0000000000 Binary files a/res/assets/Graphics/Flags/flag_mess_sea_trade_a2.png and /dev/null differ 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 5a930ff380..0000000000 Binary files a/res/assets/Graphics/Flags/flag_mess_sea_trade_a3.png and /dev/null differ 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 0f28c9301c..0000000000 Binary files a/res/assets/Graphics/Flags/flag_mess_sea_trade_a4.png and /dev/null differ diff --git a/res/assets/Graphics/Flags/flag_mess_sea_trade_a5.png b/res/assets/Graphics/Flags/flag_mess_sea_trade_a5.png deleted file mode 100644 index 01f01ada3a..0000000000 Binary files a/res/assets/Graphics/Flags/flag_mess_sea_trade_a5.png and /dev/null differ diff --git a/res/assets/Graphics/Flags/flag_mess_sea_trade_a6.png b/res/assets/Graphics/Flags/flag_mess_sea_trade_a6.png deleted file mode 100644 index 7317fbb718..0000000000 Binary files a/res/assets/Graphics/Flags/flag_mess_sea_trade_a6.png and /dev/null differ 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 49baa55cd5..0000000000 Binary files a/res/assets/Graphics/Flags/flag_mess_sea_trade_a7.png and /dev/null differ diff --git a/res/assets/Graphics/Flags/flag_mess_sea_trade_a8.png b/res/assets/Graphics/Flags/flag_mess_sea_trade_a8.png deleted file mode 100644 index 2a70e92fdd..0000000000 Binary files a/res/assets/Graphics/Flags/flag_mess_sea_trade_a8.png and /dev/null differ 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 530dfd6202..0000000000 Binary files a/res/assets/Graphics/Flags/flag_mess_trade_a1.png and /dev/null differ 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 9cf86d2df6..0000000000 Binary files a/res/assets/Graphics/Flags/flag_mess_trade_a2.png and /dev/null differ diff --git a/res/assets/Graphics/Flags/flag_mess_trade_a3.png b/res/assets/Graphics/Flags/flag_mess_trade_a3.png deleted file mode 100644 index e47f111a7d..0000000000 Binary files a/res/assets/Graphics/Flags/flag_mess_trade_a3.png and /dev/null differ diff --git a/res/assets/Graphics/Flags/flag_mess_trade_a4.png b/res/assets/Graphics/Flags/flag_mess_trade_a4.png deleted file mode 100644 index 742303aa0e..0000000000 Binary files a/res/assets/Graphics/Flags/flag_mess_trade_a4.png and /dev/null differ 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 bbda9e733d..0000000000 Binary files a/res/assets/Graphics/Flags/flag_mess_trade_a5.png and /dev/null differ 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 6f29635a5a..0000000000 Binary files a/res/assets/Graphics/Flags/flag_mess_trade_a6.png and /dev/null differ 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 432875e46d..0000000000 Binary files a/res/assets/Graphics/Flags/flag_mess_trade_a7.png and /dev/null differ 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 8d2be81791..0000000000 Binary files a/res/assets/Graphics/Flags/flag_mess_trade_a8.png and /dev/null differ 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 3f16453231..0000000000 Binary files a/res/assets/Graphics/Flags/flag_sea_trade_a1.png and /dev/null differ 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 4bc855e20a..0000000000 Binary files a/res/assets/Graphics/Flags/flag_sea_trade_a2.png and /dev/null differ 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 6fb4e07968..0000000000 Binary files a/res/assets/Graphics/Flags/flag_sea_trade_a3.png and /dev/null differ diff --git a/res/assets/Graphics/Flags/flag_sea_trade_a4.png b/res/assets/Graphics/Flags/flag_sea_trade_a4.png deleted file mode 100644 index 992512a8f0..0000000000 Binary files a/res/assets/Graphics/Flags/flag_sea_trade_a4.png and /dev/null differ diff --git a/res/assets/Graphics/Flags/flag_sea_trade_a5.png b/res/assets/Graphics/Flags/flag_sea_trade_a5.png deleted file mode 100644 index 1d308e990f..0000000000 Binary files a/res/assets/Graphics/Flags/flag_sea_trade_a5.png and /dev/null differ 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 f00ee22dac..0000000000 Binary files a/res/assets/Graphics/Flags/flag_sea_trade_a6.png and /dev/null differ 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 361c66aee7..0000000000 Binary files a/res/assets/Graphics/Flags/flag_sea_trade_a7.png and /dev/null differ 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 e1785466f0..0000000000 Binary files a/res/assets/Graphics/Flags/flag_sea_trade_a8.png and /dev/null differ diff --git a/res/assets/Graphics/UI/Allowed_Walker_Checkmark.png b/res/assets/Graphics/UI/Allowed_Walker_Checkmark.png index 97e079dd66..d051553422 100644 Binary files a/res/assets/Graphics/UI/Allowed_Walker_Checkmark.png and b/res/assets/Graphics/UI/Allowed_Walker_Checkmark.png differ diff --git a/res/assets/Graphics/Flags/flag_blue_a1.png b/res/assets/Graphics/UI/flag_blue_a1.png similarity index 100% rename from res/assets/Graphics/Flags/flag_blue_a1.png rename to res/assets/Graphics/UI/flag_blue_a1.png diff --git a/res/assets/Graphics/Flags/flag_blue_a2.png b/res/assets/Graphics/UI/flag_blue_a2.png similarity index 100% rename from res/assets/Graphics/Flags/flag_blue_a2.png rename to res/assets/Graphics/UI/flag_blue_a2.png diff --git a/res/assets/Graphics/Flags/flag_blue_a3.png b/res/assets/Graphics/UI/flag_blue_a3.png similarity index 100% rename from res/assets/Graphics/Flags/flag_blue_a3.png rename to res/assets/Graphics/UI/flag_blue_a3.png diff --git a/res/assets/Graphics/Flags/flag_blue_a4.png b/res/assets/Graphics/UI/flag_blue_a4.png similarity index 100% rename from res/assets/Graphics/Flags/flag_blue_a4.png rename to res/assets/Graphics/UI/flag_blue_a4.png diff --git a/res/assets/Graphics/Flags/flag_blue_a5.png b/res/assets/Graphics/UI/flag_blue_a5.png similarity index 100% rename from res/assets/Graphics/Flags/flag_blue_a5.png rename to res/assets/Graphics/UI/flag_blue_a5.png diff --git a/res/assets/Graphics/Flags/flag_blue_a6.png b/res/assets/Graphics/UI/flag_blue_a6.png similarity index 100% rename from res/assets/Graphics/Flags/flag_blue_a6.png rename to res/assets/Graphics/UI/flag_blue_a6.png diff --git a/res/assets/Graphics/Flags/flag_blue_a7.png b/res/assets/Graphics/UI/flag_blue_a7.png similarity index 100% rename from res/assets/Graphics/Flags/flag_blue_a7.png rename to res/assets/Graphics/UI/flag_blue_a7.png diff --git a/res/assets/Graphics/Flags/flag_blue_a8.png b/res/assets/Graphics/UI/flag_blue_a8.png similarity index 100% rename from res/assets/Graphics/Flags/flag_blue_a8.png rename to res/assets/Graphics/UI/flag_blue_a8.png diff --git a/res/assets/Graphics/Flags/flag_icon_land_a3.png b/res/assets/Graphics/UI/flag_icon_land_a3.png similarity index 100% rename from res/assets/Graphics/Flags/flag_icon_land_a3.png rename to res/assets/Graphics/UI/flag_icon_land_a3.png diff --git a/res/assets/Graphics/Flags/flag_icon_land_a4.png b/res/assets/Graphics/UI/flag_icon_land_a4.png similarity index 100% rename from res/assets/Graphics/Flags/flag_icon_land_a4.png rename to res/assets/Graphics/UI/flag_icon_land_a4.png diff --git a/res/assets/Graphics/Flags/flag_icon_land_a5.png b/res/assets/Graphics/UI/flag_icon_land_a5.png similarity index 100% rename from res/assets/Graphics/Flags/flag_icon_land_a5.png rename to res/assets/Graphics/UI/flag_icon_land_a5.png diff --git a/res/assets/Graphics/Flags/flag_icon_market_a1.png b/res/assets/Graphics/UI/flag_icon_market_a1.png similarity index 100% rename from res/assets/Graphics/Flags/flag_icon_market_a1.png rename to res/assets/Graphics/UI/flag_icon_market_a1.png diff --git a/res/assets/Graphics/Flags/flag_icon_market_a3.png b/res/assets/Graphics/UI/flag_icon_market_a3.png similarity index 100% rename from res/assets/Graphics/Flags/flag_icon_market_a3.png rename to res/assets/Graphics/UI/flag_icon_market_a3.png diff --git a/res/assets/Graphics/Flags/flag_icon_market_a4.png b/res/assets/Graphics/UI/flag_icon_market_a4.png similarity index 100% rename from res/assets/Graphics/Flags/flag_icon_market_a4.png rename to res/assets/Graphics/UI/flag_icon_market_a4.png diff --git a/res/assets/Graphics/Flags/flag_icon_market_a5.png b/res/assets/Graphics/UI/flag_icon_market_a5.png similarity index 100% rename from res/assets/Graphics/Flags/flag_icon_market_a5.png rename to res/assets/Graphics/UI/flag_icon_market_a5.png diff --git a/res/assets/Graphics/UI/flag_icon_sea_a1_2_6_8.png b/res/assets/Graphics/UI/flag_icon_sea_a1_2_6_8.png new file mode 100644 index 0000000000..7ae8b57ea8 Binary files /dev/null and b/res/assets/Graphics/UI/flag_icon_sea_a1_2_6_8.png differ 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 0000000000..21c93f1302 Binary files /dev/null and b/res/assets/Graphics/UI/flag_icon_sea_a3.png differ 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 0000000000..00c79e5409 Binary files /dev/null and b/res/assets/Graphics/UI/flag_icon_sea_a4.png differ diff --git a/res/assets/Graphics/UI/flag_icon_sea_a5.png b/res/assets/Graphics/UI/flag_icon_sea_a5.png new file mode 100644 index 0000000000..582871b60b Binary files /dev/null and b/res/assets/Graphics/UI/flag_icon_sea_a5.png differ 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 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 b84315f6f7..89a95104bd 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; } @@ -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/house_evolution.c b/src/building/house_evolution.c index 05e51e028d..e6f2065550 100644 --- a/src/building/house_evolution.c +++ b/src/building/house_evolution.c @@ -586,7 +586,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; diff --git a/src/building/storage.h b/src/building/storage.h index ff9269263f..d39faf1f0c 100644 --- a/src/building/storage.h +++ b/src/building/storage.h @@ -38,9 +38,13 @@ 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; - /** * Building storage struct */ 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/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/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/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; } 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/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; diff --git a/src/translation/english.c b/src/translation/english.c index 39de210611..be727d1112 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,22 +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 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"}, {TR_BUILDING_LATRINES, "Latrines"}, {TR_BUILDING_LATRINES_DESC_1, "A place of comfort appreciated by the population to talk about the news of the day or their business."}, {TR_BUILDING_LATRINES_DESC_2, "Latrines are used by citizens having only access to a well, and help to slightly improve the housing and health levels. Houses in range of a fountain won't make use of public latrines."}, diff --git a/src/translation/french.c b/src/translation/french.c index 49730bb4fc..9f1d05bd17 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"}, {TR_BUILDING_LATRINES, "Latrines"}, {TR_BUILDING_LATRINES_DESC_1, "Lieu d'aisance apprécié de la population pour parler des nouvelles du jour ou de leurs affaires."}, {TR_BUILDING_LATRINES_DESC_2, "Les latrines sont utilisées par les citoyens n'ayant accès qu'à un puits, et améliorent légèrement le rang de logement et l'hygiène. Les maisons avec accès à une fontaine ne feront pas usage des latrines publiques."}, 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) 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) diff --git a/src/translation/translation.h b/src/translation/translation.h index 55528f0128..568116ae83 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, TR_BUILDING_LATRINES, TR_BUILDING_LATRINES_DESC_1, TR_BUILDING_LATRINES_DESC_2, 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); diff --git a/src/widget/city_without_overlay.c b/src/widget/city_without_overlay.c index 5446ed707c..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("Flags", "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("Flags", "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"); - return image_id; - } - int image_offset = (permissions - 1) * WAREHOUSE_FLAG_FRAMES; - int image_id = assets_get_image_id("Flags", "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); } 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 21981080e4..35c1d21bcb 100644 --- a/src/window/building_info.c +++ b/src/window/building_info.c @@ -219,9 +219,6 @@ static int get_height_id(void) case BUILDING_COLOSSEUM: return 8; - case BUILDING_GRANARY: - return 9; - case BUILDING_GRAND_TEMPLE_MARS: return 10; @@ -458,7 +455,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; } 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; 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];