* Redefine ICountable.matches, getDeprecationAnnotation is not part of the "engine" character of that interface
* Add a way to mark not-yet-finished Countables
* Add an empty framework for @AutumnPizazz's Expression engine
* Make "which does not fit parameter type" constant for pattern match robustness
* New expression evaluator engine
* Fix countable tests: correct expected failures
* All syntax errors MUST indicate position.
Otherwise, modders can't actually debug.
* Better positions + documentation
* Get rid of functions that modders *should not* be using
* Fix tests given the new changes
* Add modder-visible expression parsing errors
* Revert Countables to current state
* Fix the rest of the damn owl - compilation, not tests
* Fix all tests as well
* Detect countables at parse; Don't crash
* Add error detection for all types of expression errors
* Better documentation
* Countables catches first matching, to avoid parsing known countables as Expressions
---------
Co-authored-by: yairm210 <yairm210@hotmail.com>
* Faster TestGame class
* Fix fragile unit tests
* Prerequisites for a Countables.FilteredBuildings unit test
* A Countables.FilteredBuildings unit test
* Revert buildingFilter duplicate tagUnique support
* TranslationFileWriter support for Countables
* Minor Countables Kdoc update
* Code deduplication in UniqueTriggerActivation, also for future reuse
* Sync UniqueParameterType.PolicyFilter checks and doc with implementation
* Improve testRulesetValidation
* Fix equalsPlaceholderText again
* Fix implementation details and linting
* Fix placeholder parameters validation
* Edit Kdoc to match new structure and improve clarity
* Add unit test checking the Class itself for convention violations
* Split off the ForEveryCountable test from testRulesetValidation and give it full coverage
* Silence warnings
* Make deprecated Uniques that are no longer implemented show up in Red in mod checker
* Refactor Countables into an empowered enum
* Refactor Countables into an empowered enum: RulesetValidator support
* Refactor Countables into an empowered enum: UniqueDocsWriter support
* Refactor Countables into an empowered enum: More unit tests
* Refactor Countables into an empowered enum: Streamline a little
* Refactor Countables into an empowered enum: Deprecation support with unit test
* Deprecation level ERROR now shown as Orange as requested
* Linting and deprecations
* Trial and error for Locale factories
* Reworked Locale handling
* Clean up fastlane for Rusyn
* Decide open question in favour of supported methods
* Add a field for global unit uniques
* Whoops
* docs
* Fix this check only ever being done once
* Revert
* Add ruleset uniques when adding rulesets together
* Add ruleset to unitTypes for tests in case it's relevant
* My suggested changes: Implement a separate rulesetMap for units, remove any additional checks to the type where unnecessary
* Remove unit type code, update ruleset info by setter rather than by lazy
* Type information is needed before we set the ruleset here
* So should unique information
* Added support for new historyranking serialization - saved ~10% of save file size!
* Convert RankingType strings to chars
* Join to string using ranking char instead of generic delimiter
* Keep writing old format for now :)
* Handle negative rankings
* Fix test
* Minor perf
* Revert "Minor perf"
This reverts commit 470b3e92861e8a5f7be0fe3fe74d9b7ca110c67b.
* Wrote some failing unit tests to simulate the crash
* Fix escort movement crash
* getDistanceToTiles now searches once using both escorting units
* Added an extra test
* Moved checking for escort unit movement outside of getMovementCostBetweenAdjacentTiles
* implement number translation
* fix previous error
* maybe this will fix things?
* try to make the regex more concise and fix the issues
* update implementation
* Transient cache
* implement Number.tr()
* Update core/src/com/unciv/models/metadata/GameSettings.kt
Co-authored-by: Yair Morgenstern <yairm210@hotmail.com>
* fix formatting
* move getNumberFormatFromLanguage() to Translations.kt and cache NumberFormat
* remove null cases and resolve suggestions
* why was I doing this? I forgot.
* move getLocaleFromLanguage() to Translations.kt
* add tests
* Update TranslationTests.kt
fix issues
* also remove also
* fix all given cases
* fix missing language param
---------
Co-authored-by: Yair Morgenstern <yairm210@hotmail.com>
* Diacritics support - achieving 1-Char-Per-Glyph via a fake alphabet
* Diacritics support - Redesign state engine and polishing
* Diacritics support - Unit test
* Diacritics support - Expand unit test to cover more cases
* Diacritics support - Expand unit test to cover more cases
* Clarify a function name
* Change format of diacritic definitions
* Refactor DiacriticSupport to per-language class with statics in Companion
* Update DiacriticSupport to use CharCategory and enable support of surrogate pairs
* Documentation
* AI Civs now are happy for good trades
* Each gift point is worth 100 gold without inflation
* Gifts can now be used as credit for future trades
* Fixed giftAmount conversions
* Fixed get inflation returning NAN when gpt is negative
* diplomatic gifts are now rounded when checking trade acceptability
* Changed gold gift scaling to account for relationship level
* Fixed percent based value reduction
* Added gold gifting functions to DiplomacyManager
* Added tests
* Declaring war removes gold gifts
* Reversed trade evaluation
* Added more tests for trading
* Fixed who the gifts are given to
* Added more comments
* Added more tests and fixed stuff
* Gifting does not occur with trade treaties
* Renamed handleGoldGifted to GiftGold
* Added two more tests
* Improved comments
* Liberating a civ no longer gives positive relations from open borders