From 1a165222d12a3c6da3fd0da1b7e236c9a34cce5b Mon Sep 17 00:00:00 2001 From: Jodi-Pa Date: Sat, 9 Mar 2024 11:13:08 +0100 Subject: [PATCH 1/6] Translated to German --- .../game/strategy/AbstractStrategy.kt | 12 +- .../planetsudo/level/levelobjects/Agent.kt | 8 +- .../level/levelobjects/AgentBasicInterface.kt | 7 +- .../AgentBasicInterfaceGermanWrapper.kt | 246 ++++++++++++++++++ .../levelobjects/AgentBattleInterface.kt | 6 +- .../AgentBattleInterfaceGermanWrapper.kt | 82 ++++++ .../levelobjects/AgentLegacyInterface.kt | 4 +- .../level/levelobjects/AgentMock.kt | 4 +- .../levelobjects/AgentSpecialInterface.kt | 4 +- .../AgentSpecialInterfaceGermanWrapper.kt | 119 +++++++++ .../levelobjects/GlobalAgentInterface.kt | 4 +- .../GlobalAgentInterfaceGermanWrapper.kt | 2 +- .../level/levelobjects/GlobalAgentProxy.kt | 2 +- .../level/levelobjects/MothershipInterface.kt | 3 + .../MothershipInterfaceGermanWrapper.kt | 99 +++++++ 15 files changed, 580 insertions(+), 22 deletions(-) create mode 100644 src/main/kotlin/org/openbase/planetsudo/level/levelobjects/AgentBasicInterfaceGermanWrapper.kt create mode 100644 src/main/kotlin/org/openbase/planetsudo/level/levelobjects/AgentBattleInterfaceGermanWrapper.kt create mode 100644 src/main/kotlin/org/openbase/planetsudo/level/levelobjects/AgentSpecialInterfaceGermanWrapper.kt create mode 100644 src/main/kotlin/org/openbase/planetsudo/level/levelobjects/MothershipInterfaceGermanWrapper.kt diff --git a/src/main/kotlin/org/openbase/planetsudo/game/strategy/AbstractStrategy.kt b/src/main/kotlin/org/openbase/planetsudo/game/strategy/AbstractStrategy.kt index 50ac8f49..f2835e51 100644 --- a/src/main/kotlin/org/openbase/planetsudo/game/strategy/AbstractStrategy.kt +++ b/src/main/kotlin/org/openbase/planetsudo/game/strategy/AbstractStrategy.kt @@ -14,22 +14,22 @@ import org.slf4j.LoggerFactory import java.beans.PropertyChangeEvent import java.util.* -typealias StrategyLevel1 = AbstractStrategy -typealias StrategyLevel2 = AbstractStrategy -typealias StrategyLevel3 = AbstractStrategy +typealias StrategyLevel1 = AbstractStrategy> +typealias StrategyLevel2 = AbstractStrategy> +typealias StrategyLevel3 = AbstractStrategy> typealias StrategyLevelLegacy = AbstractStrategy /** * * @author [Divine Threepwood](mailto:divine@openbase.org) */ -abstract class AbstractStrategy(val agent: LEVEL) : Runnable { +abstract class AbstractStrategy>(val agent: AgentInterface) : Runnable { private val logger: Logger = LoggerFactory.getLogger(javaClass) private val strategyOwner: Agent by lazy { agent as Agent } val mothership: MothershipInterface by lazy { strategyOwner.mothership } - val enemyAgent: GlobalAgentInterface get() = strategyOwner.enemyAgent - val teamAgent: GlobalAgentInterface get() = strategyOwner.teamAgent + val enemyAgent: GlobalAgentInterface<*> get() = strategyOwner.enemyAgent + val teamAgent: GlobalAgentInterface<*> get() = strategyOwner.teamAgent private val mothershipInternal: Mothership by lazy { strategyOwner.mothership } private val rules: TreeMap = TreeMap() private val gameManager: GameManager = GameManager.gameManager diff --git a/src/main/kotlin/org/openbase/planetsudo/level/levelobjects/Agent.kt b/src/main/kotlin/org/openbase/planetsudo/level/levelobjects/Agent.kt index cb300fbe..c0e61304 100644 --- a/src/main/kotlin/org/openbase/planetsudo/level/levelobjects/Agent.kt +++ b/src/main/kotlin/org/openbase/planetsudo/level/levelobjects/Agent.kt @@ -58,8 +58,8 @@ class Agent( private var helpLevelObjectOld: AbstractLevelObject? = null private var enemyObject: AbstractLevelObject? = null private var catchedfuel = 0 - private var lastEnemyAgent: GlobalAgentInterface? = null - private var lastTeamAgent: GlobalAgentInterface? = null + private var lastEnemyAgent: GlobalAgentInterface? = null + private var lastTeamAgent: GlobalAgentInterface? = null val mothership: Mothership val team: Team @@ -877,13 +877,13 @@ class Agent( } } - override val enemyAgent: GlobalAgentInterface + override val enemyAgent: GlobalAgentInterface get() = GlobalAgentProxy( lastEnemyAgent ?: error("No adversary agent seen!"), ) - override val teamAgent: GlobalAgentInterface + override val teamAgent: GlobalAgentInterface get() = GlobalAgentProxy( lastTeamAgent ?: error("No team agent seen!"), diff --git a/src/main/kotlin/org/openbase/planetsudo/level/levelobjects/AgentBasicInterface.kt b/src/main/kotlin/org/openbase/planetsudo/level/levelobjects/AgentBasicInterface.kt index dfda96b4..cfff30b8 100644 --- a/src/main/kotlin/org/openbase/planetsudo/level/levelobjects/AgentBasicInterface.kt +++ b/src/main/kotlin/org/openbase/planetsudo/level/levelobjects/AgentBasicInterface.kt @@ -1,6 +1,9 @@ package org.openbase.planetsudo.level.levelobjects -interface AgentBasicInterface : GlobalAgentInterface { +interface AgentBasicInterface : GlobalAgentInterface { + + override val de: AgentBasicInterfaceGermanWrapper get() = AgentBasicInterfaceGermanWrapper(this) + /** * Gibt an, ob ein Zusammenstoß mit einer Wand bevorsteht. * @@ -160,7 +163,7 @@ interface AgentBasicInterface : GlobalAgentInterface { /** * Liefert Informationen über einen Agenten deines Teams in der Nähe. */ - val teamAgent: GlobalAgentInterface + val teamAgent: GlobalAgentInterface /** * Zeigt an, ob sich in Sicht des Agenten ein Teammitglied ohne Treibstoff diff --git a/src/main/kotlin/org/openbase/planetsudo/level/levelobjects/AgentBasicInterfaceGermanWrapper.kt b/src/main/kotlin/org/openbase/planetsudo/level/levelobjects/AgentBasicInterfaceGermanWrapper.kt new file mode 100644 index 00000000..e06647af --- /dev/null +++ b/src/main/kotlin/org/openbase/planetsudo/level/levelobjects/AgentBasicInterfaceGermanWrapper.kt @@ -0,0 +1,246 @@ +package org.openbase.planetsudo.level.levelobjects + +open class AgentBasicInterfaceGermanWrapper(private val agent: AgentBasicInterface<*>) + : GlobalAgentInterfaceGermanWrapper(agent) { + /** + * Gibt an, ob ein Zusammenstoß mit einer Wand bevorsteht. + * + * @return true oder false. + */ + val istKollisionErkannt get() = agent.isCollisionDetected + + /** + * Gibt zurück, ob der Agent Bewegungsunfähig ist. (Zerstört + * oder ohne Treibstoff) + * + * @return true oder false. + */ + val istBewegungsunfaehig get() = agent.isDisabled + + /** + * Der Agent übergibt die Resource dem Mutterschiff, sofern er sich am Mutterschiff befindet. + * Treibstoff: 1 + * Aktionspunkte: 10 + * Gewinn: + * ResourceType.Normal -> 10 Punkte + * ResourceType.DoublePoints -> 20 Punkte + * ResourceType.ExtremPoint -> 50 Punkte + * ResourceType.ExtraMothershipFuel -> 20 % Mutterschiff Treibstoff + */ + fun uebertrageRessourceAnMutterschiff() = agent.transferResourceToMothership() + + /** + * Der Agent bewegt sich geradeaus. + * Aktionspunkte: 3 (+ 3 wenn resource geladen) + * Treibstoff: 1 + */ + fun gehe() = agent.go() + + /** + * Der Agent bewegt sich geradeaus und dreht sich anschließend um `beta`° nach links. + * Aktionspunkte: 3 (+ 3 wenn resource geladen) + * Treibstoff: 1 + * + * + * @param beta Drehwinkel + */ + fun geheLinks(beta: Int) = agent.goLeft(beta) + + /** + * Der Agent bewegt sich geradeaus und dreht sich anschließend um `beta`° nach rechts. + * Aktionspunkte: 3 (+ 3 wenn resource geladen) + * Treibstoff: 1 + * + * @param beta Drehwinkel + */ + fun geheRechts(beta: Int) = agent.goRight(beta) + + /** + * Der Agent bewegt sich auf das Mutterschiff zu. Hierbei wird ein Weg + * berechnet, welcher auf kürzester Distanz zum Mutterschiff + * fährt. Um Hindernisse bewegt sich der Agent hierbei automatisch + * herum. + * + * Achtung: Der Agent bewegt sich erst geradeaus und dreht sich danach. + * + * Aktionspunkte: 4 (+ 4 wenn resource geladen) + * Treibstoff: 1 + */ + fun geheZuMutterschiff() = agent.goToMothership() + + /** + * Der Agent bewegt sich zur Resource. + * + * Achtung: Der Agent bewegt sich erst geradeaus und dreht sich danach. + * + * Aktionspunkte: 4 (+ 4 wenn resource geladen) + * Treibstoff: 1 + */ + fun geheZuRessource() = agent.goToResource() + + /** + * Der Agent fordert so viel Treibstoff vom Mutterschiff an bis sein Tank zu `percent` Prozent voll ist. + * + * @param percent Der anzufordernde Treibstoffwert in Prozent als ganze Zahl + * zwischen 0 - 100. + * Aktionspunkte: 20 + 2 für jeden getankten Treibstoff. + */ + fun bestelleTreibstoff(percent: Int) = agent.orderFuel(percent) + + /** + * Der Befehl zum Aufnehmen einer Resource, wenn der Agent sie anfassen kann. + * Treibstoff: 1 + * Aktionspunkte: 10 + + * ResourceType.Normal -> 200 AP + * ResourceType.DoublePoints -> 400 AP + * ResourceType.ExtremPoint -> 700 AP + * ResourceType.Tonic -> 1000 AP + * ResourceType.ExtraAgentFuel -> 400 AP + * ResourceType.ExtraMothershipFuel -> 400 AP + * ResourceType.Mine -> 0 AP + * + * Gewinn: + * ResourceType.Normal -> 1 Resource wird getragen + * ResourceType.DoublePoints -> 1 Resource wird getragen + * ResourceType.ExtremPoint -> 1 Resource wird getragen + * ResourceType.Tonic -> 1 Tonic + * ResourceType.ExtraAgentFuel -> 10 % Agenten Treibstoff + * ResourceType.ExtraMothershipFuel -> 1 Resource wird getragen + * ResourceType.Mine -> 1 Tod + * + */ + fun nehemRessourceAuf() = agent.pickupResource() + + /** + * Wenn der Agent eine Resource trägt, lässt er sie wieder fallen. + * Treibstoff: 0 + * Aktionspunkte: 0 + */ + fun ressourceFallenLassen() = agent.releaseResource() + + /** + * Der Agent dreht sich einmal im Kreis. Sieht er während der Drehung eine + * Resource, unterbricht er und schaut in ihre Richtung. + * Aktionspunkte: 10 pro 20° Drehung + * Treibstoff: 1 pro 20° Drehung + */ + fun sucheRessource() = agent.searchResources() + + /** + * Der Agent bewegt sich zur Resource vom angegebenen Typen. + * + * Achtung: Der Agent bewegt sich erst geradeaus und dreht sich danach. + * + * Aktionspunkte: 4 + (+ 4 wenn resource geladen) + * Treibstoff: 1 + * @param resourceType + */ + fun geheZuRessource(resourceType: Resource.ResourceType) = agent.goToResource(resourceType) + + /** + * Zeigt an, ob der Agent eine Resource sehen kann. + * + * @return true oder false. + */ + val seheRessource get() = agent.seeResource + + /** + * Zeigt an, ob der Agent eine Resource vom angegebenen Typen sehen kann. + * + * @return true oder false. + */ + fun seheRessource(resourceType: Resource.ResourceType) : Boolean = agent.seeResource(resourceType) + + /** + * Zeigt an, ob der Agent einen Agenten des eigenen Teams sieht. + * + * @return true oder false. + */ + val seheTeamAgent get() = agent.seeTeamAgent + + /** + * Liefert Informationen über einen Agenten deines Teams in der Nähe. + */ + val teamAgent get() = agent.teamAgent + + /** + * Zeigt an, ob sich in Sicht des Agenten ein Teammitglied ohne Treibstoff + * befindet. + * + * @return true oder false. + */ + fun seheVerlorenenTeamAgent(): Boolean = agent.seeLostTeamAgent() + + /** + * Der Agent spendet einem Teammitglied Treibstoff + * + * @param value Treibstoff. Ein Agent ist Bewegungsunfhig, solange er + * Treibstoff spendet! + * Aktionspunkte: value * 2 + * Treibstoff: 1 + value + * @param value Der zu spendende Treibstoff. + */ + fun spendeTreibstoffAnTeamAgent(value: Int) = agent.spendTeamAgentFuel(value) + + /** + * Der Agent dreht sich um 180 Grad in die entgegengesetzte Richtung. + * Aktionspunkte: 1 + * Treibstoff: 1 + */ + fun dreheUm() = agent.turnAround() + + /** + * Der Agent dreht sich um Winkel beta nach links. + * + * @param beta Gewünschter Winkel in Grad (0 - 360) + * Aktionspunkte: 1 + * Treibstoff: 1 + */ + fun dreheLinks(beta: Int) = agent.turnLeft(beta) + + /** + * Der Agent dreht sich in eine zufällige Richtung. + * Aktionspunkte: 1 + * Treibstoff: 1 + */ + fun dreheZufaellig() = agent.turnRandom() + + /** + * Der Agent dreht sich in eine beliebige, zufällige Richtung mit dem + * Öffnungswinkel. + * + * `opening`°. Aktionspunkte: 1 + * Treibstoff: 1 + * + * @param opening + */ + fun dreheZufaellig(opening: Int) = agent.turnRandom(opening) + + /** + * Der Agent dreht sich um Winkel `beta`° nach rechts. + * + * @param beta Gewünschter Winkel in Grad (0 - 360) + * Aktionspunkte: 1 + * Treibstoff: 1 + */ + fun dreheRechts(beta: Int) = agent.turnRight(beta) + + /** + * Der Agent dreht sich zu einer nahen Resource. + * Falls er keine findet, dreht er sich nicht + * + * Aktionspunkte: 1 + * Treibstoff: 1 + */ + fun dreheZuRessource() = agent.turnToResource() + + /** + * Der Agent dreht sich zu einer nahen Resource eines bestimmten Typs. + * Falls er keine findet, dreht er sich nicht + * + * Aktionspunkte: 1 + * Treibstoff: 1 + * @param resourceType Der Typ der Resource + */ + fun dreheZuRessource(resourceType: Resource.ResourceType) = agent.turnToResource(resourceType) +} diff --git a/src/main/kotlin/org/openbase/planetsudo/level/levelobjects/AgentBattleInterface.kt b/src/main/kotlin/org/openbase/planetsudo/level/levelobjects/AgentBattleInterface.kt index 99df99de..17154be3 100644 --- a/src/main/kotlin/org/openbase/planetsudo/level/levelobjects/AgentBattleInterface.kt +++ b/src/main/kotlin/org/openbase/planetsudo/level/levelobjects/AgentBattleInterface.kt @@ -1,6 +1,8 @@ package org.openbase.planetsudo.level.levelobjects -interface AgentBattleInterface : AgentBasicInterface { +interface AgentBattleInterface : AgentBasicInterface { + + override val de get() = AgentBattleInterfaceGermanWrapper(this) /** * Zeigt an, ob der Agent einen feindlichen Agenten sieht. @@ -12,7 +14,7 @@ interface AgentBattleInterface : AgentBasicInterface { /** * Liefert Informationen über einen feindlichen Agenten in der Nähe. */ - val enemyAgent: GlobalAgentInterface + val enemyAgent: GlobalAgentInterface /** * Der Agent dreht sich zu einem feindlichen Agenten in Sichtweite. diff --git a/src/main/kotlin/org/openbase/planetsudo/level/levelobjects/AgentBattleInterfaceGermanWrapper.kt b/src/main/kotlin/org/openbase/planetsudo/level/levelobjects/AgentBattleInterfaceGermanWrapper.kt new file mode 100644 index 00000000..caba6355 --- /dev/null +++ b/src/main/kotlin/org/openbase/planetsudo/level/levelobjects/AgentBattleInterfaceGermanWrapper.kt @@ -0,0 +1,82 @@ +package org.openbase.planetsudo.level.levelobjects + +open class AgentBattleInterfaceGermanWrapper(private val agent: AgentBattleInterface<*>) + : AgentBasicInterfaceGermanWrapper(agent) { + + /** + * Zeigt an, ob der Agent einen feindlichen Agenten sieht. + * + * @return true oder false. + */ + val seheGegerischenAgent get() = agent.seeEnemyAgent + + /** + * Liefert Informationen über einen feindlichen Agenten in der Nähe. + */ + val gegnerischerAgent get() = agent.enemyAgent + + /** + * Der Agent dreht sich zu einem feindlichen Agenten in Sichtweite. + * Falls kein feindlicher Agent in der Nähe ist, kostet diese Aktion nur APs. + * + * Optional kann ein Winkel `beta`° angegeben werden, um den Agenten zusätzlich weiter rechts rum zu drehen. + * + * Aktionspunkte: 1 + * Treibstoff: 1 + */ + fun dreheZuGegnerischemAgent(beta: Int = 0) = agent.turnToEnemyAgent(beta) + + /** + * Gehe zu einem feindlichen Agenten in der Nähe. + * + * Achtung: Der Agent bewegt sich erst geradeaus und dreht sich danach. + * + * Aktionspunkte: 4 + (+ 4 wenn resource geladen) + * Treibstoff: 1 + */ + fun geheZuGegnerischemAgent() = agent.goToEnemyAgent() + + /** + * Der Befehl zum Bekämpfen eines feindlichen Agenten. + * Wenn ein Agent einen anderen erfolgreich angreift, bekommt er eine Treibstoffbelohnung. + * Aktionspunkte: 21 + * Treibstoff: 1 + */ + fun kaempfeMitGegnerischemAgent() = agent.fightWithEnemyAgent() + + /** + * Der Befehl zum Angreifen des feindlichen Mutterschiffs. + * Aktionspunkte: 30 + * Treibstoff: 1 + */ + fun kaempfeMitGegnerischemMutterschiff() = agent.fightWithEnemyMothership() + + /** + * Gibt zurück, ob der Agent seine Mine noch trägt. + * + * @return true oder false. + */ + val hatMine get() = agent.hasMine + + /** + * Der Agent legt seine Mine an seiner aktuellen Position ab. + * Aktionspunkte: 50 + * Treibstoff: 5 + */ + fun legeMine() = agent.deployMine() + + /** + * Zeigt an, ob der Agent das feindliche Mutterschiff sieht. + * + * @return true oder false. + */ + val seheGegnerischesMutterschiff get() = agent.seeEnemyMothership + + /** + * Der Befehl zum Reparieren des eigenen Mutterschiffs. Hierzu muss sich der + * Agent am Mutterschiff befinden! + * Aktionspunkte: 30 + * Treibstoff: 1 + */ + fun reparireMutterschiff() = agent.repairMothership() +} diff --git a/src/main/kotlin/org/openbase/planetsudo/level/levelobjects/AgentLegacyInterface.kt b/src/main/kotlin/org/openbase/planetsudo/level/levelobjects/AgentLegacyInterface.kt index a780d6b3..dcc9286c 100644 --- a/src/main/kotlin/org/openbase/planetsudo/level/levelobjects/AgentLegacyInterface.kt +++ b/src/main/kotlin/org/openbase/planetsudo/level/levelobjects/AgentLegacyInterface.kt @@ -2,7 +2,7 @@ package org.openbase.planetsudo.level.levelobjects import org.openbase.planetsudo.game.SwatTeam -interface AgentLegacyInterface : AgentSpecialInterface { +interface AgentLegacyInterface : AgentSpecialInterface { /** * Gibt zurück, ob der Agent den Turm sieht. @@ -88,7 +88,7 @@ interface AgentLegacyInterface : AgentSpecialInterface { "Please use enemyAgent instead", replaceWith = ReplaceWith("enemyAgent"), ) - val adversaryAgent: GlobalAgentInterface get() = enemyAgent + val adversaryAgent: GlobalAgentInterface<*> get() = enemyAgent @Deprecated( "Please use turnToEnemyAgent instead", diff --git a/src/main/kotlin/org/openbase/planetsudo/level/levelobjects/AgentMock.kt b/src/main/kotlin/org/openbase/planetsudo/level/levelobjects/AgentMock.kt index 51c3dffe..a99972a7 100644 --- a/src/main/kotlin/org/openbase/planetsudo/level/levelobjects/AgentMock.kt +++ b/src/main/kotlin/org/openbase/planetsudo/level/levelobjects/AgentMock.kt @@ -98,7 +98,7 @@ class AgentMock : AgentInterface { get() = error("Mock does not offer any functionality.") override val isAtMothership: Boolean get() = error("Mock does not offer any functionality.") - override val enemyAgent: GlobalAgentInterface + override val enemyAgent: GlobalAgentInterface get() = error("Mock does not offer any functionality.") override val isCarryingResource: Boolean get() = error("Mock does not offer any functionality.") @@ -164,7 +164,7 @@ class AgentMock : AgentInterface { get() { error("Mock does not offer any functionality.") } - override val teamAgent: GlobalAgentInterface + override val teamAgent: GlobalAgentInterface get() { error("Mock does not offer any functionality.") } diff --git a/src/main/kotlin/org/openbase/planetsudo/level/levelobjects/AgentSpecialInterface.kt b/src/main/kotlin/org/openbase/planetsudo/level/levelobjects/AgentSpecialInterface.kt index aeb9e3e9..8c241d79 100644 --- a/src/main/kotlin/org/openbase/planetsudo/level/levelobjects/AgentSpecialInterface.kt +++ b/src/main/kotlin/org/openbase/planetsudo/level/levelobjects/AgentSpecialInterface.kt @@ -1,6 +1,8 @@ package org.openbase.planetsudo.level.levelobjects -interface AgentSpecialInterface : AgentBattleInterface { +interface AgentSpecialInterface : AgentBattleInterface { + + override val de get() = AgentSpecialInterfaceGermanWrapper(this) /** * Gibt an, ob ein Zusammenstoß mit einer Wand zur linken Seite bevorsteht. diff --git a/src/main/kotlin/org/openbase/planetsudo/level/levelobjects/AgentSpecialInterfaceGermanWrapper.kt b/src/main/kotlin/org/openbase/planetsudo/level/levelobjects/AgentSpecialInterfaceGermanWrapper.kt new file mode 100644 index 00000000..dfd2e529 --- /dev/null +++ b/src/main/kotlin/org/openbase/planetsudo/level/levelobjects/AgentSpecialInterfaceGermanWrapper.kt @@ -0,0 +1,119 @@ +package org.openbase.planetsudo.level.levelobjects + +open class AgentSpecialInterfaceGermanWrapper(private val agent: AgentSpecialInterface) + : AgentBattleInterfaceGermanWrapper(agent) { + + /** + * Gibt an, ob ein Zusammenstoß mit einer Wand zur linken Seite bevorsteht. + * + * @return true oder false. + */ + fun istKollisionLinksErkannt(beta: Int) = agent.isCollisionDetectedAtLeft(beta) + + /** + * Gibt an, ob ein Zusammenstoß mit einer Wand zur rechten Seite bevorsteht. + * + * @return true oder false. + */ + fun istKollisionRechtsErkannt(beta: Int) = agent.isCollisionDetectedAtRight(beta) + + /** + * Abfrage, ob der Agent aktuell unsichtbar ist. + */ + val istUnsichtbar get() = agent.isInvisible + + /** + * Abfrage, ob der Agent aktuell sichtbar ist. + */ + val istSichtbar: Boolean get() = !istUnsichtbar + + /** + * Sofern der Agent 3 Tonic besitzt, kann er sich hiermit unsichtbar machen. + * Unsichtbar heißt, dass kein feindlicher Agent (außer der feindliche Commander) diesen Agenten sehen oder angreifen kann. + * Ein Agent ist so lange unsichtbar, bis er eine feindliche Einheit angreift oder eine Mine setzt. + */ + fun unsichtbarMachen() = agent.makeInvisible() + + /** + * Diese Abfrage checkt das bevorstehende Ende des Spiels. Wenn es bald + * vorbei ist, gibt sie true zurück, dann sollte man schleunigst zum + * Mutterschiff. + * + * @return true oder false + */ + val istSpielBaldVorbei get() = agent.isGameOverSoon + + /** + * Gibt die Punkte des Teams wieder. + * + * @return Den Punktestand als ganze Zahl (z.B. 47) + */ + val teamPunkte get() = agent.teamPoints + + /** + * Setzt eine Markierung, die für das ganze Team sichtbar ist. Alle Agenten + * des Teams können sich auf diese Markierung zubewegen. + * Treibstoff: 1 + * Aktionspunkte: 5 + */ + fun setzeMarkierung() = agent.deployMarker() + + /** + * Gibt zurück, ob der Agent den Marker sieht. + * + * @return true oder false + */ + fun seheMarkierung() = agent.seeMarker() + + /** + * Der Agent bewegt sich in Richtung einer Markierung, falls dieser gesetzt + * wurde. Hierbei wird ein Weg berechnet, welcher auf kürzester Distanz + * zum Marker fährt. Um Hindernisse bewegt sich der Agent hierbei + * automatisch herum. + * + * Achtung: Der Agent bewegt sich erst geradeaus und dreht sich danach. + * + * Aktionspunkte: 4 (+ 4 wenn resource geladen) + * Treibstoff: 1 + */ + fun geheZuMarkierung() = agent.goToMarker() + + /** + * Befehl zum Aussenden des Hilferufs. + * Treibstoff: 0 + * Aktionspunkte: 5 + */ + fun fordereHilfeAn() = agent.requestSupport() + + /** + * Gehe zu einem Agenten der Hilfe benötigt. + * + * Achtung: Der Agent bewegt sich erst geradeaus und dreht sich danach. + * + * Aktionspunkte: 4 + (+ 4 wenn resource geladen) + * Treibstoff: 1 + */ + fun geheZuHilfeBenoetigendemAgenten() = agent.goToSupportAgent() + + /** + * Der angeforderte Support des Agenten wird beendet. + * Treibstoff: 1 + * Aktionspunkte: 5 + */ + fun brecheHilfeAb() = agent.cancelSupport() + + /** + * Mit einem Shift bewegt sich der Agent für die nächsten Schritte (agent.go...) besonders schnell, sofern er genug Tonic besitzt. + * Dies kann z. B. strategisch genutzt werden, um feindlichen Angriffen zu entkommen, schneller Hilfe leisten zu können oder + * Ressourcen schneller zu transportieren. + * + * Aktionspunkte: 1 + * Tonic: 1 + */ + fun shifte() = agent.shift() + + /** + * Der Agent läuft amok. + */ + fun töteDich() = agent.kill() +} diff --git a/src/main/kotlin/org/openbase/planetsudo/level/levelobjects/GlobalAgentInterface.kt b/src/main/kotlin/org/openbase/planetsudo/level/levelobjects/GlobalAgentInterface.kt index 6c8188fe..e5de7ff8 100644 --- a/src/main/kotlin/org/openbase/planetsudo/level/levelobjects/GlobalAgentInterface.kt +++ b/src/main/kotlin/org/openbase/planetsudo/level/levelobjects/GlobalAgentInterface.kt @@ -1,6 +1,8 @@ package org.openbase.planetsudo.level.levelobjects -interface GlobalAgentInterface { +interface GlobalAgentInterface { + + val de get() = GlobalAgentInterfaceGermanWrapper(this) /** * Gibt an, ob der Agent noch lebt. diff --git a/src/main/kotlin/org/openbase/planetsudo/level/levelobjects/GlobalAgentInterfaceGermanWrapper.kt b/src/main/kotlin/org/openbase/planetsudo/level/levelobjects/GlobalAgentInterfaceGermanWrapper.kt index 8f95b784..b1d1c611 100644 --- a/src/main/kotlin/org/openbase/planetsudo/level/levelobjects/GlobalAgentInterfaceGermanWrapper.kt +++ b/src/main/kotlin/org/openbase/planetsudo/level/levelobjects/GlobalAgentInterfaceGermanWrapper.kt @@ -1,6 +1,6 @@ package org.openbase.planetsudo.level.levelobjects -class GlobalAgentInterfaceGermanWrapper(private val agent: GlobalAgentInterface) { +open class GlobalAgentInterfaceGermanWrapper(private val agent: GlobalAgentInterface<*>) { /** * Gibt an, ob der Agent noch lebt. diff --git a/src/main/kotlin/org/openbase/planetsudo/level/levelobjects/GlobalAgentProxy.kt b/src/main/kotlin/org/openbase/planetsudo/level/levelobjects/GlobalAgentProxy.kt index e22181c3..97fcf650 100644 --- a/src/main/kotlin/org/openbase/planetsudo/level/levelobjects/GlobalAgentProxy.kt +++ b/src/main/kotlin/org/openbase/planetsudo/level/levelobjects/GlobalAgentProxy.kt @@ -1,6 +1,6 @@ package org.openbase.planetsudo.level.levelobjects -class GlobalAgentProxy(val agent: GlobalAgentInterface) : GlobalAgentInterface { +class GlobalAgentProxy(val agent: GlobalAgentInterface) : GlobalAgentInterface { override val isAlive: Boolean get() = agent.isAlive override val isAtMothership: Boolean diff --git a/src/main/kotlin/org/openbase/planetsudo/level/levelobjects/MothershipInterface.kt b/src/main/kotlin/org/openbase/planetsudo/level/levelobjects/MothershipInterface.kt index ccdca9ac..49ceddef 100644 --- a/src/main/kotlin/org/openbase/planetsudo/level/levelobjects/MothershipInterface.kt +++ b/src/main/kotlin/org/openbase/planetsudo/level/levelobjects/MothershipInterface.kt @@ -26,6 +26,9 @@ package org.openbase.planetsudo.level.levelobjects * @author Divine Threepwood */ interface MothershipInterface { + + val de get() = MothershipInterfaceGermanWrapper(this) + /** * Löscht den Marker sofern dieser gesetzt wurde. */ diff --git a/src/main/kotlin/org/openbase/planetsudo/level/levelobjects/MothershipInterfaceGermanWrapper.kt b/src/main/kotlin/org/openbase/planetsudo/level/levelobjects/MothershipInterfaceGermanWrapper.kt new file mode 100644 index 00000000..d4080176 --- /dev/null +++ b/src/main/kotlin/org/openbase/planetsudo/level/levelobjects/MothershipInterfaceGermanWrapper.kt @@ -0,0 +1,99 @@ +package org.openbase.planetsudo.level.levelobjects + +/*- + * #%L + * PlanetSudo GameEngine + * %% + * Copyright (C) 2009 - 2024 openbase.org + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * . + * #L% + */ +/** + * + * @author Divine Threepwood + */ +class MothershipInterfaceGermanWrapper (private val mothership: MothershipInterface){ + /** + * Löscht den Marker sofern dieser gesetzt wurde. + */ + fun loescheMarkierung() = mothership.clearMarker() + + /** + * Gibt zurück, wie viele Agenten das Team hat. + * @return Anzahl der Agenten + */ + val agentenZahl get() = mothership.agentCount + + /** + * Gibt die Schildstaerke des Mutterschiffs wieder. + * @return Schildstaerke von 0 - 100 als ganze Zahl. + */ + val schildstaerke get() = mothership.shieldForce + + /** + * Gibt zurück, ob das Mutterschiff Treibstoff hat. + * @return true oder false. + */ + fun hatTreibstoff() = mothership.hasFuel() + + /** + * Gibt an wie viel Treibstoff das Mutterschiff noch besitzt. + * @return + */ + val treibstoff get() = mothership.fuel + + /** + * Gibt an wie viel Treibstoff das Mutterschiff maximal besitzen kann. + * @return + */ + val treibstoffVolumen get() = mothership.fuelVolume + + /** + * Gibt prozentual an wie viel Treibstoff das Mutterschiff aktuell besitzt. + * @return + */ + val treibstoffInProzent get() = mothership.fuelInPercent + + /** + * Gibt zurück, ob das Mutterschiff brennt und somit Treibstoff verliert. + * @return true oder false. + */ + val istAmBrennen get() = mothership.isBurning + + /** + * Gibt zurück, ob das Mutterschiff und somit der Schutzschild beschdigt ist. + * @return true oder false. + */ + val istBeschaedigt get() = mothership.isDamaged + + /** + * Gibt zurück ob der Marker gesetzt wurde. + * @return true oder false. + */ + val istMarkierungGesetzt get() = mothership.isMarkerDeployed + + /** + * Gibt zurück, ob das Mutterschiff maximal beschdigt wurde. (Das Schutzschild is komplett zerstrt) + * @return true oder false. + */ + val istMaximalBeschaedigt get() = mothership.isMaxDamaged + + /** + * Gibt zurück ob ein Agent des eigenen Teams Hilfe benötigt. + * @return true oder false. + */ + fun braucheUnterstuetzung() = mothership.needSomeoneSupport() +} From 924b99115f6a1a55c1ade0ab3e313a9ff3a3ffd4 Mon Sep 17 00:00:00 2001 From: Jodi-Pa <157152964+Jodi-Pa@users.noreply.github.com> Date: Sat, 9 Mar 2024 11:36:16 +0100 Subject: [PATCH 2/6] Fixed Typot Co-authored-by: Marian Pohling --- .../level/levelobjects/AgentBasicInterfaceGermanWrapper.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/kotlin/org/openbase/planetsudo/level/levelobjects/AgentBasicInterfaceGermanWrapper.kt b/src/main/kotlin/org/openbase/planetsudo/level/levelobjects/AgentBasicInterfaceGermanWrapper.kt index e06647af..56ef0f82 100644 --- a/src/main/kotlin/org/openbase/planetsudo/level/levelobjects/AgentBasicInterfaceGermanWrapper.kt +++ b/src/main/kotlin/org/openbase/planetsudo/level/levelobjects/AgentBasicInterfaceGermanWrapper.kt @@ -109,7 +109,7 @@ open class AgentBasicInterfaceGermanWrapper(private val agent: AgentBasicInterfa * ResourceType.Mine -> 1 Tod * */ - fun nehemRessourceAuf() = agent.pickupResource() + fun nehmeRessourceAuf() = agent.pickupResource() /** * Wenn der Agent eine Resource trägt, lässt er sie wieder fallen. From 459597ce045224c28e98eb359e7a40e78d938a21 Mon Sep 17 00:00:00 2001 From: Jodi-Pa <157152964+Jodi-Pa@users.noreply.github.com> Date: Sat, 9 Mar 2024 11:36:32 +0100 Subject: [PATCH 3/6] Fixed typo Co-authored-by: Marian Pohling --- .../level/levelobjects/AgentSpecialInterfaceGermanWrapper.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/kotlin/org/openbase/planetsudo/level/levelobjects/AgentSpecialInterfaceGermanWrapper.kt b/src/main/kotlin/org/openbase/planetsudo/level/levelobjects/AgentSpecialInterfaceGermanWrapper.kt index dfd2e529..0e257e26 100644 --- a/src/main/kotlin/org/openbase/planetsudo/level/levelobjects/AgentSpecialInterfaceGermanWrapper.kt +++ b/src/main/kotlin/org/openbase/planetsudo/level/levelobjects/AgentSpecialInterfaceGermanWrapper.kt @@ -115,5 +115,5 @@ open class AgentSpecialInterfaceGermanWrapper(private val agent: AgentSpecialInt /** * Der Agent läuft amok. */ - fun töteDich() = agent.kill() + fun toeteDich() = agent.kill() } From 42b4cae2accd1d4afa39ca68969af02021094fcc Mon Sep 17 00:00:00 2001 From: Jodi-Pa <157152964+Jodi-Pa@users.noreply.github.com> Date: Sat, 9 Mar 2024 11:36:44 +0100 Subject: [PATCH 4/6] Update src/main/kotlin/org/openbase/planetsudo/game/strategy/AbstractStrategy.kt Co-authored-by: Marian Pohling --- .../org/openbase/planetsudo/game/strategy/AbstractStrategy.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/kotlin/org/openbase/planetsudo/game/strategy/AbstractStrategy.kt b/src/main/kotlin/org/openbase/planetsudo/game/strategy/AbstractStrategy.kt index f2835e51..f426a67a 100644 --- a/src/main/kotlin/org/openbase/planetsudo/game/strategy/AbstractStrategy.kt +++ b/src/main/kotlin/org/openbase/planetsudo/game/strategy/AbstractStrategy.kt @@ -28,8 +28,8 @@ abstract class AbstractStrategy>(val agent: Agen private val strategyOwner: Agent by lazy { agent as Agent } val mothership: MothershipInterface by lazy { strategyOwner.mothership } - val enemyAgent: GlobalAgentInterface<*> get() = strategyOwner.enemyAgent - val teamAgent: GlobalAgentInterface<*> get() = strategyOwner.teamAgent + val enemyAgent get() = strategyOwner.enemyAgent + val teamAgent get() = strategyOwner.teamAgent private val mothershipInternal: Mothership by lazy { strategyOwner.mothership } private val rules: TreeMap = TreeMap() private val gameManager: GameManager = GameManager.gameManager From a2ee8e203f150a17d9f0ae207f9c0ff2bac5cbb7 Mon Sep 17 00:00:00 2001 From: Jodi-Pa <157152964+Jodi-Pa@users.noreply.github.com> Date: Sat, 9 Mar 2024 11:36:51 +0100 Subject: [PATCH 5/6] Update src/main/kotlin/org/openbase/planetsudo/level/levelobjects/AgentLegacyInterface.kt Co-authored-by: Marian Pohling --- .../planetsudo/level/levelobjects/AgentLegacyInterface.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/kotlin/org/openbase/planetsudo/level/levelobjects/AgentLegacyInterface.kt b/src/main/kotlin/org/openbase/planetsudo/level/levelobjects/AgentLegacyInterface.kt index dcc9286c..52d00547 100644 --- a/src/main/kotlin/org/openbase/planetsudo/level/levelobjects/AgentLegacyInterface.kt +++ b/src/main/kotlin/org/openbase/planetsudo/level/levelobjects/AgentLegacyInterface.kt @@ -88,7 +88,7 @@ interface AgentLegacyInterface : AgentSpecialInterface get() = enemyAgent + val adversaryAgent get() = enemyAgent @Deprecated( "Please use turnToEnemyAgent instead", From 8d8c94f190b73a24aba600b50cf4b34839d5fe3b Mon Sep 17 00:00:00 2001 From: Divine Threepwood Date: Sat, 9 Mar 2024 11:40:30 +0100 Subject: [PATCH 6/6] fix formatting --- .../planetsudo/level/levelobjects/AgentBasicInterface.kt | 2 +- .../levelobjects/AgentBasicInterfaceGermanWrapper.kt | 8 ++++---- .../planetsudo/level/levelobjects/AgentBattleInterface.kt | 2 +- .../levelobjects/AgentBattleInterfaceGermanWrapper.kt | 4 ++-- .../level/levelobjects/AgentSpecialInterface.kt | 4 ++-- .../levelobjects/AgentSpecialInterfaceGermanWrapper.kt | 4 ++-- .../planetsudo/level/levelobjects/GlobalAgentInterface.kt | 2 +- .../levelobjects/MothershipInterfaceGermanWrapper.kt | 2 +- 8 files changed, 14 insertions(+), 14 deletions(-) diff --git a/src/main/kotlin/org/openbase/planetsudo/level/levelobjects/AgentBasicInterface.kt b/src/main/kotlin/org/openbase/planetsudo/level/levelobjects/AgentBasicInterface.kt index cfff30b8..ee97b2f7 100644 --- a/src/main/kotlin/org/openbase/planetsudo/level/levelobjects/AgentBasicInterface.kt +++ b/src/main/kotlin/org/openbase/planetsudo/level/levelobjects/AgentBasicInterface.kt @@ -1,6 +1,6 @@ package org.openbase.planetsudo.level.levelobjects -interface AgentBasicInterface : GlobalAgentInterface { +interface AgentBasicInterface : GlobalAgentInterface { override val de: AgentBasicInterfaceGermanWrapper get() = AgentBasicInterfaceGermanWrapper(this) diff --git a/src/main/kotlin/org/openbase/planetsudo/level/levelobjects/AgentBasicInterfaceGermanWrapper.kt b/src/main/kotlin/org/openbase/planetsudo/level/levelobjects/AgentBasicInterfaceGermanWrapper.kt index 56ef0f82..c5cf9a7b 100644 --- a/src/main/kotlin/org/openbase/planetsudo/level/levelobjects/AgentBasicInterfaceGermanWrapper.kt +++ b/src/main/kotlin/org/openbase/planetsudo/level/levelobjects/AgentBasicInterfaceGermanWrapper.kt @@ -1,7 +1,7 @@ package org.openbase.planetsudo.level.levelobjects -open class AgentBasicInterfaceGermanWrapper(private val agent: AgentBasicInterface<*>) - : GlobalAgentInterfaceGermanWrapper(agent) { +open class AgentBasicInterfaceGermanWrapper(private val agent: AgentBasicInterface<*>) : + GlobalAgentInterfaceGermanWrapper(agent) { /** * Gibt an, ob ein Zusammenstoß mit einer Wand bevorsteht. * @@ -27,7 +27,7 @@ open class AgentBasicInterfaceGermanWrapper(private val agent: AgentBasicInterfa * ResourceType.ExtremPoint -> 50 Punkte * ResourceType.ExtraMothershipFuel -> 20 % Mutterschiff Treibstoff */ - fun uebertrageRessourceAnMutterschiff() = agent.transferResourceToMothership() + fun uebertrageRessourceAnMutterschiff() = agent.transferResourceToMothership() /** * Der Agent bewegt sich geradeaus. @@ -149,7 +149,7 @@ open class AgentBasicInterfaceGermanWrapper(private val agent: AgentBasicInterfa * * @return true oder false. */ - fun seheRessource(resourceType: Resource.ResourceType) : Boolean = agent.seeResource(resourceType) + fun seheRessource(resourceType: Resource.ResourceType): Boolean = agent.seeResource(resourceType) /** * Zeigt an, ob der Agent einen Agenten des eigenen Teams sieht. diff --git a/src/main/kotlin/org/openbase/planetsudo/level/levelobjects/AgentBattleInterface.kt b/src/main/kotlin/org/openbase/planetsudo/level/levelobjects/AgentBattleInterface.kt index 17154be3..034dbecc 100644 --- a/src/main/kotlin/org/openbase/planetsudo/level/levelobjects/AgentBattleInterface.kt +++ b/src/main/kotlin/org/openbase/planetsudo/level/levelobjects/AgentBattleInterface.kt @@ -1,6 +1,6 @@ package org.openbase.planetsudo.level.levelobjects -interface AgentBattleInterface : AgentBasicInterface { +interface AgentBattleInterface : AgentBasicInterface { override val de get() = AgentBattleInterfaceGermanWrapper(this) diff --git a/src/main/kotlin/org/openbase/planetsudo/level/levelobjects/AgentBattleInterfaceGermanWrapper.kt b/src/main/kotlin/org/openbase/planetsudo/level/levelobjects/AgentBattleInterfaceGermanWrapper.kt index caba6355..a1b56539 100644 --- a/src/main/kotlin/org/openbase/planetsudo/level/levelobjects/AgentBattleInterfaceGermanWrapper.kt +++ b/src/main/kotlin/org/openbase/planetsudo/level/levelobjects/AgentBattleInterfaceGermanWrapper.kt @@ -1,7 +1,7 @@ package org.openbase.planetsudo.level.levelobjects -open class AgentBattleInterfaceGermanWrapper(private val agent: AgentBattleInterface<*>) - : AgentBasicInterfaceGermanWrapper(agent) { +open class AgentBattleInterfaceGermanWrapper(private val agent: AgentBattleInterface<*>) : + AgentBasicInterfaceGermanWrapper(agent) { /** * Zeigt an, ob der Agent einen feindlichen Agenten sieht. diff --git a/src/main/kotlin/org/openbase/planetsudo/level/levelobjects/AgentSpecialInterface.kt b/src/main/kotlin/org/openbase/planetsudo/level/levelobjects/AgentSpecialInterface.kt index 8c241d79..43e86f4d 100644 --- a/src/main/kotlin/org/openbase/planetsudo/level/levelobjects/AgentSpecialInterface.kt +++ b/src/main/kotlin/org/openbase/planetsudo/level/levelobjects/AgentSpecialInterface.kt @@ -1,8 +1,8 @@ package org.openbase.planetsudo.level.levelobjects -interface AgentSpecialInterface : AgentBattleInterface { +interface AgentSpecialInterface : AgentBattleInterface { - override val de get() = AgentSpecialInterfaceGermanWrapper(this) + override val de get() = AgentSpecialInterfaceGermanWrapper(this) /** * Gibt an, ob ein Zusammenstoß mit einer Wand zur linken Seite bevorsteht. diff --git a/src/main/kotlin/org/openbase/planetsudo/level/levelobjects/AgentSpecialInterfaceGermanWrapper.kt b/src/main/kotlin/org/openbase/planetsudo/level/levelobjects/AgentSpecialInterfaceGermanWrapper.kt index 0e257e26..92224ed4 100644 --- a/src/main/kotlin/org/openbase/planetsudo/level/levelobjects/AgentSpecialInterfaceGermanWrapper.kt +++ b/src/main/kotlin/org/openbase/planetsudo/level/levelobjects/AgentSpecialInterfaceGermanWrapper.kt @@ -1,7 +1,7 @@ package org.openbase.planetsudo.level.levelobjects -open class AgentSpecialInterfaceGermanWrapper(private val agent: AgentSpecialInterface) - : AgentBattleInterfaceGermanWrapper(agent) { +open class AgentSpecialInterfaceGermanWrapper(private val agent: AgentSpecialInterface) : + AgentBattleInterfaceGermanWrapper(agent) { /** * Gibt an, ob ein Zusammenstoß mit einer Wand zur linken Seite bevorsteht. diff --git a/src/main/kotlin/org/openbase/planetsudo/level/levelobjects/GlobalAgentInterface.kt b/src/main/kotlin/org/openbase/planetsudo/level/levelobjects/GlobalAgentInterface.kt index e5de7ff8..522896ed 100644 --- a/src/main/kotlin/org/openbase/planetsudo/level/levelobjects/GlobalAgentInterface.kt +++ b/src/main/kotlin/org/openbase/planetsudo/level/levelobjects/GlobalAgentInterface.kt @@ -1,6 +1,6 @@ package org.openbase.planetsudo.level.levelobjects -interface GlobalAgentInterface { +interface GlobalAgentInterface { val de get() = GlobalAgentInterfaceGermanWrapper(this) diff --git a/src/main/kotlin/org/openbase/planetsudo/level/levelobjects/MothershipInterfaceGermanWrapper.kt b/src/main/kotlin/org/openbase/planetsudo/level/levelobjects/MothershipInterfaceGermanWrapper.kt index d4080176..8932c64a 100644 --- a/src/main/kotlin/org/openbase/planetsudo/level/levelobjects/MothershipInterfaceGermanWrapper.kt +++ b/src/main/kotlin/org/openbase/planetsudo/level/levelobjects/MothershipInterfaceGermanWrapper.kt @@ -25,7 +25,7 @@ package org.openbase.planetsudo.level.levelobjects * * @author Divine Threepwood */ -class MothershipInterfaceGermanWrapper (private val mothership: MothershipInterface){ +class MothershipInterfaceGermanWrapper(private val mothership: MothershipInterface) { /** * Löscht den Marker sofern dieser gesetzt wurde. */