mirror of
https://github.com/yairm210/Unciv.git
synced 2025-09-24 03:53:12 -04:00
Initial Great Writer functionality (#10721)
* Initial Great Writer functionality * Cleanup code * And then ignore the fact that I cleaned it * Temporary copy of Culture icon for unitActionIcons
This commit is contained in:
parent
2768042700
commit
24c888ef19
BIN
android/Images.Construction/UnitActionIcons/HurryPolicy.png
Normal file
BIN
android/Images.Construction/UnitActionIcons/HurryPolicy.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.1 KiB |
@ -31,6 +31,8 @@ class PolicyManager : IsPartOfGameInfoSerialization {
|
||||
internal val adoptedPolicies = HashSet<String>()
|
||||
var numberOfAdoptedPolicies = 0
|
||||
|
||||
var cultureOfLast8Turns = IntArray(8) { 0 }
|
||||
|
||||
/** Indicates whether we should *check* if policy is adoptible, and if so open */
|
||||
var shouldOpenPolicyPicker = false
|
||||
|
||||
@ -90,6 +92,7 @@ class PolicyManager : IsPartOfGameInfoSerialization {
|
||||
toReturn.freePolicies = freePolicies
|
||||
toReturn.shouldOpenPolicyPicker = shouldOpenPolicyPicker
|
||||
toReturn.storedCulture = storedCulture
|
||||
toReturn.cultureOfLast8Turns = cultureOfLast8Turns.clone()
|
||||
return toReturn
|
||||
}
|
||||
|
||||
@ -121,6 +124,7 @@ class PolicyManager : IsPartOfGameInfoSerialization {
|
||||
|
||||
fun endTurn(culture: Int) {
|
||||
addCulture(culture)
|
||||
addCurrentCultureToCultureOfLast8Turns(culture)
|
||||
}
|
||||
|
||||
// from https://forums.civfanatics.com/threads/the-number-crunching-thread.389702/
|
||||
@ -251,6 +255,15 @@ class PolicyManager : IsPartOfGameInfoSerialization {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
fun getCultureFromGreatWriter(): Int {
|
||||
return (cultureOfLast8Turns.sum() * civInfo.gameInfo.speed.cultureCostModifier).toInt()
|
||||
}
|
||||
|
||||
private fun addCurrentCultureToCultureOfLast8Turns(culture: Int) {
|
||||
cultureOfLast8Turns[civInfo.gameInfo.turns % 8] = culture
|
||||
}
|
||||
|
||||
fun allPoliciesAdopted(checkEra: Boolean) =
|
||||
getRulesetPolicies().values.none { isAdoptable(it, checkEra) }
|
||||
}
|
||||
|
@ -143,6 +143,8 @@ enum class UnitActionType(
|
||||
null, false, UncivSound.Chimes),
|
||||
HurryResearch("{Hurry Research} (${Fonts.death})",
|
||||
{ ImageGetter.getUnitActionPortrait("HurryResearch") }, UncivSound.Chimes),
|
||||
HurryPolicy("{Hurry Policy} (${Fonts.death})",
|
||||
{ ImageGetter.getUnitActionPortrait("HurryPolicy") }, UncivSound.Chimes),
|
||||
StartGoldenAge("Start Golden Age",
|
||||
{ ImageGetter.getUnitActionPortrait("StartGoldenAge") }, UncivSound.Chimes),
|
||||
HurryWonder("{Hurry Wonder} (${Fonts.death})",
|
||||
|
@ -342,6 +342,7 @@ enum class UniqueType(
|
||||
CanSpeedupConstruction("Can speed up construction of a building", UniqueTarget.Unit),
|
||||
CanSpeedupWonderConstruction("Can speed up the construction of a wonder", UniqueTarget.Unit),
|
||||
CanHurryResearch("Can hurry technology research", UniqueTarget.Unit),
|
||||
CanHurryPolicy("Can generate a large amount of culture", UniqueTarget.Unit),
|
||||
CanTradeWithCityStateForGoldAndInfluence("Can undertake a trade mission with City-State, giving a large sum of gold and [amount] Influence", UniqueTarget.Unit),
|
||||
CanTransform("Can transform to [unit]", UniqueTarget.Unit),
|
||||
|
||||
|
@ -43,6 +43,7 @@ object UnitActions {
|
||||
UnitActionType.ConnectRoad to UnitActionsFromUniques::getConnectRoadActions,
|
||||
UnitActionType.Repair to UnitActionsFromUniques::getRepairActions,
|
||||
UnitActionType.HurryResearch to UnitActionsGreatPerson::getHurryResearchActions,
|
||||
UnitActionType.HurryPolicy to UnitActionsGreatPerson::getHurryPolicyActions,
|
||||
UnitActionType.HurryWonder to UnitActionsGreatPerson::getHurryWonderActions,
|
||||
UnitActionType.HurryBuilding to UnitActionsGreatPerson::getHurryBuildingActions,
|
||||
UnitActionType.ConductTradeMission to UnitActionsGreatPerson::getConductTradeMissionActions,
|
||||
|
@ -29,6 +29,18 @@ object UnitActionsGreatPerson {
|
||||
}
|
||||
}.asIterable()
|
||||
|
||||
fun getHurryPolicyActions(unit:MapUnit, tile: Tile) = sequence {
|
||||
for (unique in unit.getMatchingUniques(UniqueType.CanHurryPolicy)){
|
||||
yield(UnitAction(
|
||||
UnitActionType.HurryPolicy,
|
||||
action = {
|
||||
unit.civ.policies.addCulture(unit.civ.policies.getCultureFromGreatWriter())
|
||||
unit.consume()
|
||||
}.takeIf {unit.currentMovement > 0}
|
||||
))
|
||||
}
|
||||
}.asIterable()
|
||||
|
||||
fun getHurryWonderActions(unit: MapUnit, tile: Tile) = sequence {
|
||||
for (unique in unit.getMatchingUniques(UniqueType.CanSpeedupWonderConstruction)) {
|
||||
val canHurryWonder =
|
||||
|
Loading…
x
Reference in New Issue
Block a user