Commit Graph

4788 Commits

Author SHA1 Message Date
5353f3337c Fix Gdx.files being garbage collected in MultiplayerTurnCheckWorker (#6817)
* Add logging to MultiplayerTurnCheckWorker

* Fix NullPointerException in turn check worker: Gdx.files is null
2022-05-18 07:35:00 +03:00
4986505363 Great General typed uniques and improved moddability (#6818)
* Great General UniqueTyped and improved moddability - draft

* Great General UniqueTyped and improved moddability - reviews

* Great General UniqueTyped and improved moddability - no reason not to cache another

* Integration with JackRainy's solution

* Integration with JackRainy's solution - part 2

* Revert of maxGreatGeneralBonusRadius logic

* Minor refactoring

* Code review: minor refactoring

* Keep the warning for the modders about the obsolete unique

* Code review: Better wording for the unique

Co-authored-by: SomeTroglodyte <63000004+SomeTroglodyte@users.noreply.github.com>
2022-05-18 00:02:53 +03:00
7079619fe2 Great improvements can again be constructed on forest (#6823)
* Great improvements can again be constructed on forest
This PR fixes a bug where great improvements couldn't be build on 
forests/marshes/jungles/etc. It does so by creating a unique which 
specifically allows for removing features, and checking for that.
Additionally, we only remove these features when we have the tech to 
remove them. For example, you can no longer plonk an Academy down over a 
forest without having researched mining.

* Missed the file for vanilla

* Reviews

* Fixed logic
2022-05-17 20:04:49 +03:00
919812f775 Fixed MP refresher not working after rate limit (#6847) 2022-05-17 20:02:30 +03:00
fa2c5f7cde Added 'in puppeted cities' cityFilter (#6843)
* Added 'in puppetted cities' cityFilter

* Added to list of unique parameters
2022-05-17 17:43:20 +02:00
df9b62ff6f Fix coroutines not being added to desktop:dist (#6822)
* Use kotlin coroutines instead of raw threads (+ refactorings)

Equal to f8e0f572

* Fix coroutine class files not being added to desktop:dist
2022-05-17 08:37:12 -07:00
7b3a4c741f Added more unit tests for uniques (#6841) 2022-05-17 15:42:27 +02:00
88585bcf7d Fix MayWithdraw modifier calculation (#6829)
* Fix MayWithdraw modifier calculation

* Readability changes

Co-authored-by: OptimizedForDensity <>
2022-05-16 17:37:05 +03:00
8329d56131 Allow generation of "Default" Deciv redux maps (#6821) 2022-05-16 13:03:06 +03:00
96780be1d2 Fix and improve real time autofix while typing on multipleServer URL (#6772)
Sometime `TextField.cursorPosition` becomes greater than `TextField.text.length` for unknown reasons
In those cases we need to bring the cursor down to its maximum possible position which is `TextField.text.length`
Otherwise we will get `java.lang.StringIndexOutOfBoundsException` thrown from `kotlin.text.substring`
Not knowing the reason why it happens, I followed the libGDX implementation from here:
e03b757cae/gdx/src/com/badlogic/gdx/scenes/scene2d/ui/TextField.java (L689)
And it seems to have fixed the errors we were getting
2022-05-15 23:40:55 +02:00
ef08bda50d Revert "Use kotlin coroutines instead of raw threads (+ refactorings) (#6801)"
This reverts commit f8e0f572
2022-05-15 19:21:37 +03:00
7ef2bbc56c Revert "Use kotlin coroutines instead of raw threads (+ refactorings) (#6801)"
This reverts commit f8e0f572
2022-05-15 19:20:23 +03:00
c4de3530f6 Possibility to liberate a traded city (#6797) 2022-05-15 17:57:29 +03:00
66feebae8d Disabled CS buttons when at war; CS keep influence when at war with ally (#6813)
* Disabled CS buttons when at war; CS keep influence when at war with ally
This PR does two things:
- When you are at war with a city state, you can no longer give them 
money, demand stuff, etc.
- When at war with the ally of a city state, your influence is frozen, 
and after the end of the conflict set back to its original value.
To implement this last thing, I had to split the getter of `influence` 
off of the underlying field, as otherwise when copying over the old 
value in `.clone()`, we would copy over -60 when at war, instead of the 
original value. Most of the changes in that PR are a result of that.
Also resets the `simulateUntilTurns` variable after completing 
simulations

* Updated comment
2022-05-15 17:56:26 +03:00
07562f23ff Accelerate custom map selection a tiny bit (#6815) 2022-05-15 15:15:58 +02:00
6021dcadb8 Allow editor to generate rectangular Deciv redux maps (#6816) 2022-05-15 15:49:51 +03:00
049df797f3 Minor Map Editor improvements (#6795)
* Map Editor - fix changing resources bugged by tileResource lazy

* Map Editor - apply resource deposit abundance from map's parameters

* Map Editor - resource abundance - readability
2022-05-15 09:56:18 +02:00
03579a884d Fix TabbedPager stealing arrow keys from TextFields (#6809) 2022-05-15 01:11:15 +02:00
05f656b6c1 Crash Report omits GameInfo stuff when crashing from MainMenu, MapEditor or Options (#6808) 2022-05-15 00:32:39 +02:00
f8e0f572e4 Use kotlin coroutines instead of raw threads (+ refactorings) (#6801)
* Refactor: Move classes into their own files

* Handle 404 FileNotFound in UncivServer

* Refactor: Rename method

* Make GameSaver.saveGame throw the exception by default if it is not handled

* Add possibility to work with FileHandles in GameSaver

* Make OnlineMultiplayerGameSaver load the multiplayerServer setting each time it does something

This theoretically makes it unnecessary for the OnlineMultiplayerGameSaver to be re-instantiated each time it is used

* Refactor: Remove duplicated code

* Refactor: Extract NextTurnButton from WorldScreen

* Refactor: Remove WorldScreen-specific code from OptionsPopup

* Use kotlin coroutines everywhere instead of plain threads

This probably also cuts down on our raw thread usage, improving performance, since we now use a cached thread pool (in addition to coroutines being able to reuse threads anyway)

* Improve deep load from notification

* Refactor: Give music download coroutine the proper name
2022-05-15 00:52:45 +03:00
4e72906488 Capital movement tweaks (#6800)
* Capital movement changes

* Cleanup

* Fix liberation condition

* Cleanup

* Fix wrong condition

* Fixed oversights

* One more

Co-authored-by: OptimizedForDensity <>
2022-05-14 23:39:49 +03:00
457b20d2de Bump kotlin language version to latest 1.6.21 (#6744)
Co-authored-by: Yair Morgenstern <yairm210@hotmail.com>
2022-05-14 23:24:55 +03:00
816e542e1c Notifications not scrollable far enough after in-turn notifications got added (#6796) 2022-05-14 23:19:02 +03:00
2cb63c8a42 Fixed a bug where roads could no longer be removed (#6806) 2022-05-14 23:18:31 +03:00
345ca0ec25 Pedia from mainmenu (#6788)
* Make Civilopedia independent of worldScreen or gameInfo

* Make Civilopedia callable from Main Menu

* Era category for Civilopedia

* Era category for Civilopedia - atlas
2022-05-13 12:36:06 +03:00
ab82328211 Missing typed uniques for the units - part 2 (#6749)
* Replacements for existing UniqueTypes

* More typed uniques are added

* Migration to the typed uniques

* Minor optimization

* More general approach on UniqueType usage

* Better wording for the UniqueType
2022-05-13 12:34:10 +03:00
f0461121e4 Resolved #6767 - AI will not declare war if it definitely can't take a city (#6771)
* Resolved #6767 - AI will not declare war if it definitely can't take a city

* Not sure what would happen if you try to calculate damage for civilian attacker and don't care to find out
2022-05-13 12:33:21 +03:00
09b4e82589 Rate limit handling for Dropbox (#6416)
* Added rate limit handling to dropbox

+ some refactor to make the whole file one object

* Added error messages on rate limit reached

+ refactored some popup code to reduce repetition

* Fixed merge error

* Made variables private

* Fixed file upload not working

because of missing override flag for dropbox

* Stop multiplayer refresher if rate limit reached

* Fixed typo

* Various code changes/fixes

- ErrorResponse var name has to be `error` because that's how DropBox's json property is named
- Change FileStorageRateLimitReached exception to store the seconds remaining as its own property instead of in the message
- Use toIntOrNull to avoid setting defaults in two places

* Fixed missed exception message

Co-authored-by: Azzurite <azzurite@gmail.com>
2022-05-13 09:16:52 +03:00
4ab7d56c14 Use ranged strength when defending against ranged attacks (#6783)
* Ranged units should use ranged strength when defending against ranged attacks.

* Renamed variable plus some minor style cleanup

Co-authored-by: OptimizedForDensity <>
2022-05-13 00:11:04 +03:00
940f361a5f Fixed a bug where improvements could no longer be built by workers (#6780) 2022-05-12 18:28:59 +02:00
574b94e417 Hide cities where wonders are built until city is explored (#6773)
* Hide city on wonder screen until city tile is explored

* Forgot to delete commented out line

Co-authored-by: OptimizedForDensity <>
2022-05-12 07:22:55 +03:00
c9dc0bae06 Fixed a bug where roads seemingly removed improvements (#6770) 2022-05-12 00:40:10 +03:00
dc8dadfcab Fixed proxy issues when starting a new multiplayer game (#6757)
* vpn/proxy issues when creating new mp game

replaced redundant ping with opening a connection to dropbox to fix the proxy issue

* updated error message to include dropbox

* check multiplayerServer url if the user is playing on it

* use `https://content.dropboxapi.com` instead of `https://www.dropbox.com`

* fixed proxy issues on android

if connected to proxy but no internet access it will freeze for a couple seconds (until it finishes the for loop) but it works

* forgot to add the imports

* removed android sdk network check to fix proxy issues

* check for internet now separate from check for multiplayerServer
removed frunctions from PlatformSpecificHelpers__

* added improvements made by touhidurrr

* removed unused imports and replaced setter with property access syntax

Co-authored-by: Md. Touhidur Rahman <46617994+touhidurrr@users.noreply.github.com>
2022-05-11 16:58:20 +03:00
eb5e8ae226 Switchable gzipping of saved games (#6735)
* Switchable gzipping of saved games

* Switchable gzipping of saved games - consensus says default off
2022-05-11 16:23:11 +03:00
45739a172d improve autofix on multiplayerServer from url input (#6759) 2022-05-11 15:18:00 +03:00
5a78c59405 Hide Unmet Civ and Capital Names in the Victory Status Screen (#6742)
* Hide the names of unmet yet alive civs in the victory screen.

Mainly affects the DestroyAllPlayers victory but the CaptureAllCapitals (as capital name) and WorldReligion victory code is updated accordingly.

* Redundant condition since dead civs can't hold cities.

* Formatting + undid CaptureAllCapitals name obscuring since there could be some cases where the known capital name suddenly becomes unknown.

* Parameterized if statement

* Hide other capital names until the tile is explored.

* New constant for an unknown city name.

Co-authored-by: OptimizedForDensity <>
2022-05-11 11:46:37 +03:00
531906f5ba Autofix Multiplayer Server URL on input (#6743)
* Autofix Multiplayer Server URL on input, resolves #6583

* some improvements
2022-05-11 09:36:08 +02:00
8fcfbf752b Improved clarity and moddability of building improvements (#6712)
* Renamed tile.hasUnique, deprecated `Indestructable`, unique for citadels
Also refactored the consumption of (great) people out of UnitActions.

* Reworked when improvements can be build somewhere for more clarity

* Made resources improvable by multiple improvements; Offshore Platform

* Fix compatability

* WIP

* Fixed the tests, but better

* I suppose I might as well update this now that we're a version later
2022-05-11 00:35:21 +02:00
7b4833741d Fix missing translatables, again (#6705) 2022-05-11 00:21:38 +03:00
7841f57fc8 Fix spectator not being able to view tile improvements or city buttons (#6741) 2022-05-10 12:33:10 +02:00
ecd328afc3 Four Uniques typed - Blitz, Haka Dance, Hakkapeliitta, Amphibious (#6740)
* Four Uniques typed - Blitz, Haka Dance, Hakkapeliitta, Amphibious
2022-05-10 01:04:05 +03:00
0ba71e2c6b Allow untyped Uniques in MapUnit UniqueMap (#6739) 2022-05-09 23:49:35 +03:00
ba96bea556 4.0.14 2022-05-08 21:42:19 +03:00
4290373cf1 Move UncivServer to own module (and jar) (#6468)
* Move UncivServer to own module (and jar)

* UncivServer isalive logged

* Separate UncivServer - some wiki hints

* Separate UncivServer - how to build UncivServer.jar

Co-authored-by: Yair Morgenstern <yairm210@hotmail.com>
2022-05-08 21:22:43 +03:00
3ea9c6503b Font choice rework (#6670)
* Font choice rework

* Font choice rework - naming

* Font choice rework - fix default font selection
2022-05-08 21:22:23 +03:00
4b7edca7a8 Rework of the "Creates improvement on a specific tile" Unique (#6687)
* Make Citadel tile takeover a unique

* CreatesOneImprovement unique overhaul step 1

* CreatesOneImprovement unique overhaul - increase highlights alpha

* Fix missing translatables, again

* CreatesOneImprovement unique overhaul - review suggestions

Co-authored-by: Yair Morgenstern <yairm210@hotmail.com>
2022-05-08 21:22:01 +03:00
7c24b0b6af Fix old barbarian camps not being properly loaded after 86d5011 (#6724)
* Fix old barbarian camps not being properly loaded after 86d5011

* Fix first load resulting in error
2022-05-08 21:21:25 +03:00
d00b72806b Leftovers from previous PRs (#6725)
* Leftovers from #6698

* Leftovers from #6718

* Better naming
2022-05-08 21:19:55 +03:00
86d5011da1 In-depth serialization improvement, fixes Barbarian Camps revealed by Honor not showing immediately in multiplayer
* Fix Barbarian Camp Spawned notification not revealing the camp on the map in multiplayer

* Fix lastSeenImprovement not being cloned

* Use HashMapVector2 in BarbarianManager

* Fix value not having its class written out for proper deserializing

* Refactor: various code improvements
2022-05-08 12:35:41 +02:00
569b51cb27 Missing uniques are added (#6721) 2022-05-08 11:23:55 +02:00