All units can be automated

Modders can choose which units get it as a primary action
This commit is contained in:
Yair Morgenstern
2023-03-13 16:55:50 +02:00
parent 10caf8e93e
commit cd8b68253b
6 changed files with 22 additions and 11 deletions

View File

@ -4,7 +4,6 @@ import com.badlogic.gdx.math.Vector2
import com.unciv.Constants
import com.unciv.logic.IsPartOfGameInfoSerialization
import com.unciv.logic.automation.unit.UnitAutomation
import com.unciv.logic.automation.unit.WorkerAutomation
import com.unciv.logic.battle.Battle
import com.unciv.logic.battle.MapUnitCombatant
import com.unciv.logic.city.City
@ -478,7 +477,7 @@ class MapUnit : IsPartOfGameInfoSerialization {
return
}
if (isAutomated()) WorkerAutomation.automateWorkerAction(this)
if (isAutomated()) UnitAutomation.automateUnitMoves(this)
if (isExploring()) UnitAutomation.automatedExplore(this)
}

View File

@ -375,6 +375,8 @@ enum class UniqueType(val text: String, vararg targets: UniqueTarget, val flags:
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),
AutomationPrimaryAction("Automation is a primary action", UniqueTarget.Unit, flags = UniqueFlag.setOfHiddenToUsers),
// Strength bonuses
Strength("[relativeAmount]% Strength", UniqueTarget.Unit, UniqueTarget.Global),
StrengthNearCapital("[relativeAmount]% Strength decreasing with distance from the capital", UniqueTarget.Unit, UniqueTarget.Global),

View File

@ -4,7 +4,6 @@ import com.unciv.Constants
import com.unciv.GUI
import com.unciv.UncivGame
import com.unciv.logic.automation.unit.UnitAutomation
import com.unciv.logic.automation.unit.WorkerAutomation
import com.unciv.logic.civilization.Civilization
import com.unciv.logic.civilization.NotificationCategory
import com.unciv.logic.civilization.NotificationIcon
@ -55,7 +54,8 @@ object UnitActions {
UnitActionsReligion.addEnhanceReligionAction(unit, actionList)
actionList += getImprovementConstructionActions(unit, tile)
UnitActionsReligion.addActionsWithLimitedUses(unit, actionList, tile)
addAutomateBuildingImprovementsAction(unit, actionList)
addAutomateAction(unit, actionList, true)
addTriggerUniqueActions(unit, actionList)
addAddInCapitalAction(unit, actionList, tile)
@ -88,6 +88,7 @@ object UnitActions {
addSleepActions(actionList, unit, true)
addFortifyActions(actionList, unit, true)
addAutomateAction(unit, actionList, false)
addSwapAction(unit, actionList)
addDisbandAction(actionList, unit)
@ -437,15 +438,19 @@ object UnitActions {
}
}
private fun addAutomateBuildingImprovementsAction(unit: MapUnit, actionList: ArrayList<UnitAction>) {
if (!unit.cache.hasUniqueToBuildImprovements) return
private fun addAutomateAction(unit: MapUnit, actionList: ArrayList<UnitAction>, showingAdditionalActions: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)
return
if (unit.isAutomated()) return
actionList += UnitAction(UnitActionType.Automate,
isCurrentAction = unit.isAutomated(),
action = {
unit.action = UnitActionType.Automate.value
WorkerAutomation.automateWorkerAction(unit)
UnitAutomation.automateUnitMoves(unit)
}.takeIf { unit.currentMovement > 0 }
)
}