mirror of
https://github.com/yairm210/Unciv.git
synced 2025-07-21 13:18:56 +07:00
All units can be automated
Modders can choose which units get it as a primary action
This commit is contained in:
@ -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)
|
||||
}
|
||||
|
@ -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),
|
||||
|
@ -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 }
|
||||
)
|
||||
}
|
||||
|
Reference in New Issue
Block a user