* Minor refactoring
* Refactoring: special function Battle.nuke() for missiles
* Special BattleTable.simulateNuke() function for missiles
* Refactoring: BugReport popup moved into a separate function
* Refactoring: call defaults().pad once in the init()
* Refactoring: not using "syntax sugar"
* Fix community popup not opening
Fixes a regression in b95844d2f4. This commit refactored popups and it was thought that the "screen has popup -> don't show popup" was correct for all popups. That assumption was incorrect, the community popup was not opening anymore as well as the game menu popups (editor and normal game) could not be opened over other popups anymore.
This commit fixes that by introducing a queue for popups. When you try to open a popup and one is already open, the popup you tried to open only gets shown when the popup that was already open is closed. This can be manually overridden with a calling the `open` method with a `(force = true)` argument.
Also, all popups are now and should be opened and closed only with their `open()` and `close()` methods to ensure this behavior works.
* Refactor: Remove all open() methods from popup constructors
While it may be a little less to type, it should be up to the caller to decide to open a popup over other popups (via the `force = true` parameter) or not. This is not possible if a popup is opened automatically within its constructor, which is why that is the wrong place to open the popup-
Implemented with @Azzurite's suggestions to match the button's behavior with the player's own city buttons:
* First tap slides the city button down so that the underlying tile is visible.
* Second tap on the button presents the diplomacy screen focused on the city's owner civ.
* Add missing Forge and Seaport production bonus uniques
Parital fix for #1762
- Forge gets "+15% production of land units"
- Seaport gets "+15% production of naval units"
* Adds missing translation "+15% production of land units"
* Implemented aircraft carrier "Flight Deck" and "Armor Plating" promotions
* Template for the translation strings
* New icons are added
Co-authored-by: ltrcao <ltrcao@users.noreply.github.com>
First, `PopupTable` and all extending classes had the `Table` at the end removed. Second, the popup base classes `Popup(Table)` and `YesNoPopup(Table)` were moved from the worldscreen to the util package.
Third: The popups were inconsistent. In CameraStageBaseScreen, there was a check with 3 parts, one if any tutorial was showing, second if any child is a TradePopup, and third if the boolean field "hasPopupOpen" is true.
However, all of these checks were, in the end, `Popup(Table)`s on the screen. So, this check has simply been changed to check if any child is a `Popup(Table)`. All the other checks and their relating code could simply be removed.