mirror of
https://github.com/yairm210/Unciv.git
synced 2025-07-12 08:49:22 +07:00
Standardized 'add in capital' action
This commit is contained in:
@ -336,7 +336,7 @@ object SpecificUnitAutomation {
|
||||
if (unit.movement.canReach(capitalTile))
|
||||
unit.movement.headTowards(capitalTile)
|
||||
if (unit.getTile() == capitalTile) {
|
||||
UnitActionsFromUniques.getAddInCapitalAction(unit, capitalTile).action?.invoke()
|
||||
UnitActions.invokeUnitAction(unit, UnitActionType.AddInCapital)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -49,7 +49,9 @@ object UnitActions {
|
||||
UnitActionType.EnhanceReligion to UnitActionsReligion::getEnhanceReligionActions,
|
||||
UnitActionType.CreateImprovement to UnitActionsFromUniques::getImprovementCreationActions,
|
||||
UnitActionType.SpreadReligion to UnitActionsReligion::addSpreadReligionActions,
|
||||
UnitActionType.RemoveHeresy to UnitActionsReligion::getRemoveHeresyActions
|
||||
UnitActionType.RemoveHeresy to UnitActionsReligion::getRemoveHeresyActions,
|
||||
UnitActionType.TriggerUnique to UnitActionsFromUniques::getTriggerUniqueActions,
|
||||
UnitActionType.AddInCapital to UnitActionsFromUniques::getAddInCapitalActions
|
||||
)
|
||||
|
||||
private fun getNormalActions(unit: MapUnit): List<UnitAction> {
|
||||
@ -59,10 +61,6 @@ object UnitActions {
|
||||
for (getActionsFunction in actionTypeToFunctions.values)
|
||||
actionList.addAll(getActionsFunction(unit, tile))
|
||||
|
||||
// Determined by unit uniques
|
||||
UnitActionsFromUniques.addTriggerUniqueActions(unit, actionList)
|
||||
UnitActionsFromUniques.addAddInCapitalAction(unit, actionList, tile)
|
||||
|
||||
// General actions
|
||||
addAutomateAction(unit, actionList, true)
|
||||
if (unit.isMoving()) {
|
||||
@ -293,11 +291,10 @@ object UnitActions {
|
||||
private fun addAutomateAction(
|
||||
unit: MapUnit,
|
||||
actionList: ArrayList<UnitAction>,
|
||||
showingAdditionalActions: Boolean
|
||||
showingPrimaryActions: Boolean
|
||||
) {
|
||||
|
||||
// If either of these are true it goes in primary actions, else in additional actions
|
||||
if ((unit.hasUnique(UniqueType.AutomationPrimaryAction) || unit.cache.hasUniqueToBuildImprovements) != showingAdditionalActions)
|
||||
val shouldAutomationBePrimaryAction = unit.cache.hasUniqueToBuildImprovements || unit.hasUnique(UniqueType.AutomationPrimaryAction)
|
||||
if (shouldAutomationBePrimaryAction != showingPrimaryActions)
|
||||
return
|
||||
|
||||
if (unit.isAutomated()) return
|
||||
|
@ -159,7 +159,7 @@ object UnitActionsFromUniques {
|
||||
}
|
||||
))
|
||||
}
|
||||
fun addTriggerUniqueActions(unit: MapUnit, actionList: ArrayList<UnitAction>) {
|
||||
fun getTriggerUniqueActions(unit: MapUnit, tile: Tile) = sequence {
|
||||
for (unique in unit.getUniques()) {
|
||||
// not a unit action
|
||||
if (unique.conditionals.none { it.type?.targetTypes?.contains(UniqueTarget.UnitActionModifier) == true }) continue
|
||||
@ -175,16 +175,16 @@ object UnitActionsFromUniques {
|
||||
else unique.text.removeConditionals()
|
||||
val title = UnitActionModifiers.actionTextWithSideEffects(baseTitle, unique, unit)
|
||||
|
||||
val unitAction = UnitAction(type = UnitActionType.TriggerUnique, title) {
|
||||
yield(UnitAction(UnitActionType.TriggerUnique, title) {
|
||||
UniqueTriggerActivation.triggerUnitwideUnique(unique, unit)
|
||||
UnitActionModifiers.activateSideEffects(unit, unique)
|
||||
}
|
||||
actionList += unitAction
|
||||
})
|
||||
}
|
||||
}
|
||||
}.asIterable()
|
||||
|
||||
fun getAddInCapitalAction(unit: MapUnit, tile: Tile): UnitAction {
|
||||
return UnitAction(UnitActionType.AddInCapital,
|
||||
fun getAddInCapitalActions(unit: MapUnit, tile: Tile): List<UnitAction> {
|
||||
if (!unit.hasUnique(UniqueType.AddInCapital)) return listOf()
|
||||
return listOf(UnitAction(UnitActionType.AddInCapital,
|
||||
title = "Add to [${
|
||||
unit.getMatchingUniques(UniqueType.AddInCapital).first().params[0]
|
||||
}]",
|
||||
@ -195,15 +195,9 @@ object UnitActionsFromUniques {
|
||||
tile.isCityCenter() && tile.getCity()!!
|
||||
.isCapital() && tile.getCity()!!.civ == unit.civ
|
||||
}
|
||||
)
|
||||
))
|
||||
}
|
||||
|
||||
fun addAddInCapitalAction(unit: MapUnit, actionList: ArrayList<UnitAction>, tile: Tile) {
|
||||
if (!unit.hasUnique(UniqueType.AddInCapital)) return
|
||||
actionList += getAddInCapitalAction(unit, tile)
|
||||
}
|
||||
|
||||
|
||||
fun getImprovementCreationActions(unit: MapUnit, tile: Tile) = sequence {
|
||||
val waterImprovementAction = getWaterImprovementAction(unit, tile)
|
||||
if (waterImprovementAction != null) yield(waterImprovementAction)
|
||||
|
Reference in New Issue
Block a user