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