temp: half finished but ineffective EventBuilder, to be reworked
fix: deleted duplicate equals fix: changed language level temp: half finished but ineffective EventBuilder, to be reworked
This commit is contained in:
parent
82fa54bd2d
commit
608cd829c4
@ -1,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<project version="4">
|
<project version="4">
|
||||||
<component name="ExternalStorageConfigurationManager" enabled="true" />
|
<component name="ExternalStorageConfigurationManager" enabled="true" />
|
||||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_16" project-jdk-name="15" project-jdk-type="JavaSDK" />
|
<component name="ProjectRootManager" version="2" languageLevel="JDK_15" project-jdk-name="15" project-jdk-type="JavaSDK" />
|
||||||
</project>
|
</project>
|
@ -29,17 +29,6 @@ public class EntityID {
|
|||||||
return type == other;
|
return type == other;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean equals(Object obj){
|
|
||||||
if(this == obj) return true;
|
|
||||||
|
|
||||||
if(!(obj instanceof EntityID)) return false;
|
|
||||||
|
|
||||||
EntityID other = (EntityID)obj;
|
|
||||||
|
|
||||||
return this.id == other.id && this.type == other.type;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Clones this entity id.
|
* Clones this entity id.
|
||||||
* @return The cloned {@link EntityID}
|
* @return The cloned {@link EntityID}
|
||||||
|
@ -21,6 +21,7 @@ public class EventBuilder {
|
|||||||
private EntityID targetEntity;
|
private EntityID targetEntity;
|
||||||
private IntVector2 targetField;
|
private IntVector2 targetField;
|
||||||
private Integer amount;
|
private Integer amount;
|
||||||
|
private Entity entity;
|
||||||
|
|
||||||
// Keys used primarily in CharacterEvents
|
// Keys used primarily in CharacterEvents
|
||||||
private EntityID originEntity;
|
private EntityID originEntity;
|
||||||
@ -28,21 +29,21 @@ public class EventBuilder {
|
|||||||
private StoneType stoneType;
|
private StoneType stoneType;
|
||||||
|
|
||||||
// Keys used primarily in GameEvents
|
// Keys used primarily in GameEvents
|
||||||
private int roundCount;
|
private Integer roundCount = null;
|
||||||
private int turnCount;
|
private Integer turnCount = null;
|
||||||
private EntityID[] characterOrder;
|
private EntityID[] characterOrder;
|
||||||
private EntityID nextCharacter;
|
private EntityID nextCharacter;
|
||||||
|
|
||||||
private int playerWon;
|
private Integer playerWon;
|
||||||
|
|
||||||
private String message;
|
private String message;
|
||||||
private int timeLeft;
|
private Integer timeLeft;
|
||||||
|
|
||||||
// Keys used primarily in GamestateEvents
|
// Keys used primarily in GamestateEvents
|
||||||
private Entity[] entities;
|
private Entity[] entities;
|
||||||
private EntityID[] turnOrder;
|
private EntityID[] turnOrder;
|
||||||
private EntityID activeCharacter;
|
private EntityID activeCharacter;
|
||||||
private boolean winCondition;
|
private Boolean winCondition;
|
||||||
|
|
||||||
// Keys used in CustomEvents
|
// Keys used in CustomEvents
|
||||||
private String teamIdentifier;
|
private String teamIdentifier;
|
||||||
@ -78,6 +79,12 @@ public class EventBuilder {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public EventBuilder withEntity(Entity entity) {
|
||||||
|
this.entity = entity;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
public EventBuilder withOriginEntity(EntityID originEntity) {
|
public EventBuilder withOriginEntity(EntityID originEntity) {
|
||||||
this.originEntity = originEntity;
|
this.originEntity = originEntity;
|
||||||
return this;
|
return this;
|
||||||
@ -159,7 +166,7 @@ public class EventBuilder {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Builds a {@link GameEvent} from the values given to the builder
|
* Builds a generic {@link GameEvent} from the values given to the builder
|
||||||
* <ul>
|
* <ul>
|
||||||
* <li>type is the {@link EventType} of the {@link GameEvent}.</li>
|
* <li>type is the {@link EventType} of the {@link GameEvent}.</li>
|
||||||
* <li>roundCount describes the count of rounds in the RoundSetupEvent</li>
|
* <li>roundCount describes the count of rounds in the RoundSetupEvent</li>
|
||||||
@ -172,7 +179,7 @@ public class EventBuilder {
|
|||||||
* </ul>
|
* </ul>
|
||||||
* @return a {@link GameEvent} based on the builder. Caution: non-given fields are null!
|
* @return a {@link GameEvent} based on the builder. Caution: non-given fields are null!
|
||||||
*/
|
*/
|
||||||
public GameEvent buildGameEvent() {
|
public GameEvent buildGenericGameEvent() {
|
||||||
var gameEvent = new GameEvent();
|
var gameEvent = new GameEvent();
|
||||||
gameEvent.type = this.type;
|
gameEvent.type = this.type;
|
||||||
gameEvent.roundCount = this.roundCount;
|
gameEvent.roundCount = this.roundCount;
|
||||||
@ -188,7 +195,7 @@ public class EventBuilder {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Builds an {@link EntityEvent} from the values given to the builder.
|
* Builds a generic {@link EntityEvent} from the values given to the builder.
|
||||||
* <ul>
|
* <ul>
|
||||||
* <li>type is the {@link EventType} of the EntityEvent</li>
|
* <li>type is the {@link EventType} of the EntityEvent</li>
|
||||||
* <li>targetEntity is the target {@link Entity}</li>
|
* <li>targetEntity is the target {@link Entity}</li>
|
||||||
@ -197,17 +204,18 @@ public class EventBuilder {
|
|||||||
* </ul>
|
* </ul>
|
||||||
* @return a {@link EntityEvent} based on the builder. Caution: non-given fields are null!
|
* @return a {@link EntityEvent} based on the builder. Caution: non-given fields are null!
|
||||||
*/
|
*/
|
||||||
public EntityEvent buildEntityEvent() {
|
public EntityEvent buildGenericEntityEvent() {
|
||||||
var entityEvent = new EntityEvent();
|
var entityEvent = new EntityEvent();
|
||||||
entityEvent.type = this.type;
|
entityEvent.type = this.type;
|
||||||
entityEvent.targetEntity = this.targetEntity;
|
entityEvent.targetEntity = this.targetEntity;
|
||||||
entityEvent.targetField = this.targetField;
|
entityEvent.targetField = this.targetField;
|
||||||
entityEvent.amount = this.amount;
|
entityEvent.amount = this.amount;
|
||||||
|
entityEvent.entity = this.entity;
|
||||||
return entityEvent;
|
return entityEvent;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Builds a {@link CharacterEvent} from the values given to the builder.
|
* Builds a generic {@link CharacterEvent} from the values given to the builder.
|
||||||
* <ul>
|
* <ul>
|
||||||
* <li>type is the {@link EventType} of the EntityEvent</li>
|
* <li>type is the {@link EventType} of the EntityEvent</li>
|
||||||
* <li>originEntity is the origin {@link Entity}</li>
|
* <li>originEntity is the origin {@link Entity}</li>
|
||||||
@ -217,7 +225,7 @@ public class EventBuilder {
|
|||||||
* </ul>
|
* </ul>
|
||||||
* @return a {@link CharacterEvent} based on the builder. Caution: non-given fields are null!
|
* @return a {@link CharacterEvent} based on the builder. Caution: non-given fields are null!
|
||||||
*/
|
*/
|
||||||
public CharacterEvent buildCharacterEvent() {
|
public CharacterEvent buildGenericCharacterEvent() {
|
||||||
var characterEvent = new CharacterEvent();
|
var characterEvent = new CharacterEvent();
|
||||||
characterEvent.type = this.type;
|
characterEvent.type = this.type;
|
||||||
characterEvent.originEntity = this.originEntity;
|
characterEvent.originEntity = this.originEntity;
|
||||||
@ -230,7 +238,7 @@ public class EventBuilder {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Builds a {@link GameStateEvent} from the values given to the builder.
|
* Builds a generic {@link GameStateEvent} from the values given to the builder.
|
||||||
* <ul>
|
* <ul>
|
||||||
* <li>type is the {@link EventType} of the {@link GameStateEvent}</li>
|
* <li>type is the {@link EventType} of the {@link GameStateEvent}</li>
|
||||||
* <li>entities is an array of {@link Entity Entities}</li>
|
* <li>entities is an array of {@link Entity Entities}</li>
|
||||||
@ -240,7 +248,7 @@ public class EventBuilder {
|
|||||||
* </ul>
|
* </ul>
|
||||||
* @return a {@link GameStateEvent} based on the builder. Caution: non-given fields are null!
|
* @return a {@link GameStateEvent} based on the builder. Caution: non-given fields are null!
|
||||||
*/
|
*/
|
||||||
public GameStateEvent buildGamestateEvent() {
|
public GameStateEvent buildGenericGameStateEvent() {
|
||||||
var gamestateEvent = new GameStateEvent();
|
var gamestateEvent = new GameStateEvent();
|
||||||
gamestateEvent.type = this.type;
|
gamestateEvent.type = this.type;
|
||||||
gamestateEvent.entities = this.entities;
|
gamestateEvent.entities = this.entities;
|
||||||
@ -258,12 +266,351 @@ public class EventBuilder {
|
|||||||
* </ul>
|
* </ul>
|
||||||
* @return a {@link CustomEvent} based on the builder. Caution: non-given fields are null!
|
* @return a {@link CustomEvent} based on the builder. Caution: non-given fields are null!
|
||||||
*/
|
*/
|
||||||
public CustomEvent buildCustomEvent() {
|
public CustomEvent buildGenericCustomEvent() {
|
||||||
var customEvent = new CustomEvent();
|
var customEvent = new CustomEvent();
|
||||||
customEvent.type = this.type;
|
customEvent.type = this.type;
|
||||||
customEvent.teamIdentifier = this.teamIdentifier;
|
customEvent.teamIdentifier = this.teamIdentifier;
|
||||||
customEvent.customContent = this.customContent;
|
customEvent.customContent = this.customContent;
|
||||||
return customEvent;
|
return customEvent;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Builds a new Ack {@link GameStateEvent}. Can have a no declared type. */
|
||||||
|
public GameStateEvent buildAckEvent() throws IllegalStateException {
|
||||||
|
if (this.type == null || this.type != EventType.Ack) throw new IllegalStateException("EventType was not Ack");
|
||||||
|
var ackEvent = new GameStateEvent();
|
||||||
|
ackEvent.type = EventType.Ack;
|
||||||
|
return ackEvent;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Builds a new Nack {@link GameStateEvent}. Can have no declared type. */
|
||||||
|
public GameStateEvent buildNackEvent() throws IllegalStateException {
|
||||||
|
if (this.type == null || this.type != EventType.Nack) throw new IllegalStateException("EventType was not Ack");
|
||||||
|
var nackEvent = new GameStateEvent();
|
||||||
|
nackEvent.type = EventType.Nack;
|
||||||
|
return nackEvent;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Builds a new Req {@link GameStateEvent}. Can have no declared type. */
|
||||||
|
public GameStateEvent buildReqEvent() throws IllegalStateException {
|
||||||
|
if (this.type == null || this.type != EventType.Req) throw new IllegalStateException("EventType was not Req");
|
||||||
|
var reqEvent = new GameStateEvent();
|
||||||
|
reqEvent.type = EventType.Req;
|
||||||
|
return reqEvent;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Builds a new {@link GameStateEvent}.
|
||||||
|
* This event needs the fields <b>entities, turnOrder, activeCharacter</b> and <b>winCondition</b>.
|
||||||
|
*/
|
||||||
|
public GameStateEvent buildGameStateEvent() throws IllegalStateException {
|
||||||
|
if (this.type == null || this.type != EventType.GameStateEvent ||
|
||||||
|
this.entities == null ||
|
||||||
|
this.turnOrder == null ||
|
||||||
|
this.activeCharacter == null ||
|
||||||
|
this.winCondition == null
|
||||||
|
) {
|
||||||
|
throw new IllegalStateException("Properties malformed for GameStateEvent");
|
||||||
|
}
|
||||||
|
var gameStateEvent = new GameStateEvent();
|
||||||
|
gameStateEvent.type = EventType.GameStateEvent;
|
||||||
|
gameStateEvent.entities = this.entities;
|
||||||
|
gameStateEvent.turnOrder = this.turnOrder;
|
||||||
|
gameStateEvent.activeCharacter = this.activeCharacter;
|
||||||
|
gameStateEvent.winCondition = this.winCondition;
|
||||||
|
|
||||||
|
return gameStateEvent;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Builds a new {@link CustomEvent}.
|
||||||
|
* This event needs the field <b>customContent</b>.
|
||||||
|
*/
|
||||||
|
public CustomEvent buildCustomEvent() throws IllegalStateException {
|
||||||
|
if (this.type == null || this.type != EventType.CustomEvent ||
|
||||||
|
this.customContent == null
|
||||||
|
) {
|
||||||
|
throw new IllegalStateException("Properties malformed for CustomEvent");
|
||||||
|
}
|
||||||
|
var customEvent = new CustomEvent();
|
||||||
|
customEvent.type = EventType.CustomEvent;
|
||||||
|
customEvent.customContent = this.customContent;
|
||||||
|
|
||||||
|
return customEvent;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Builds a new {@link EntityEvent}.
|
||||||
|
* This event needs the fields <b>targetField</b> and <b>targetEntity</b>.
|
||||||
|
*/
|
||||||
|
public EntityEvent buildDestroyedEntityEvent() throws IllegalStateException {
|
||||||
|
if (this.type == null || this.type != EventType.DestroyedEntityEvent ||
|
||||||
|
this.targetField == null ||
|
||||||
|
this.targetEntity == null
|
||||||
|
) {
|
||||||
|
throw new IllegalStateException("Properties malformed for DestroyedEntityEvent");
|
||||||
|
}
|
||||||
|
var destroyedEntityEvent = new EntityEvent();
|
||||||
|
destroyedEntityEvent.type = EventType.DestroyedEntityEvent;
|
||||||
|
destroyedEntityEvent.targetField = this.targetField;
|
||||||
|
destroyedEntityEvent.targetEntity = this.targetEntity;
|
||||||
|
|
||||||
|
return destroyedEntityEvent;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Builds a new {@link EntityEvent}.
|
||||||
|
* This event needs the fields <b>targetField, targetEntity</b> and <b>amount</b>.
|
||||||
|
*/
|
||||||
|
public EntityEvent buildTakenDamageEvent() throws IllegalStateException {
|
||||||
|
if (this.type == null || this.type != EventType.TakenDamageEvent ||
|
||||||
|
this.targetField == null ||
|
||||||
|
this.targetEntity == null ||
|
||||||
|
this.amount == null
|
||||||
|
) {
|
||||||
|
throw new IllegalStateException("Properties malformed for TakenDamageEvent");
|
||||||
|
}
|
||||||
|
var takenDamageEvent = new EntityEvent();
|
||||||
|
takenDamageEvent.type = EventType.TakenDamageEvent;
|
||||||
|
takenDamageEvent.targetField = this.targetField;
|
||||||
|
takenDamageEvent.targetEntity = this.targetEntity;
|
||||||
|
takenDamageEvent.amount = this.amount;
|
||||||
|
|
||||||
|
return takenDamageEvent;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Builds a new {@link EntityEvent}.
|
||||||
|
* This event needs the fields <b>targetField, targetEntity</b> and <b>amount</b>.
|
||||||
|
*/
|
||||||
|
public EntityEvent buildConsumedAPEvent() throws IllegalStateException {
|
||||||
|
if (this.type == null || this.type != EventType.ConsumedAPEvent ||
|
||||||
|
this.targetField == null ||
|
||||||
|
this.targetEntity == null ||
|
||||||
|
this.amount == null
|
||||||
|
) {
|
||||||
|
throw new IllegalStateException("Properties malformed for ConsumedAPEvent");
|
||||||
|
}
|
||||||
|
var consumedAPEvent = new EntityEvent();
|
||||||
|
consumedAPEvent.type = EventType.ConsumedAPEvent;
|
||||||
|
consumedAPEvent.targetField = this.targetField;
|
||||||
|
consumedAPEvent.targetEntity = this.targetEntity;
|
||||||
|
consumedAPEvent.amount = this.amount;
|
||||||
|
|
||||||
|
return consumedAPEvent;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Builds a new {@link EntityEvent}.
|
||||||
|
* This event needs the fields <b>targetField, targetEntity</b> and <b>amount</b>.
|
||||||
|
*/
|
||||||
|
public EntityEvent buildConsumedMPEvent() throws IllegalStateException {
|
||||||
|
if (this.type == null || this.type != EventType.ConsumedMPEvent ||
|
||||||
|
this.targetField == null ||
|
||||||
|
this.targetEntity == null ||
|
||||||
|
this.amount == null
|
||||||
|
) {
|
||||||
|
throw new IllegalStateException("Properties malformed for ConsumedMPEvent");
|
||||||
|
}
|
||||||
|
var consumedAPEvent = new EntityEvent();
|
||||||
|
consumedAPEvent.type = EventType.ConsumedMPEvent;
|
||||||
|
consumedAPEvent.targetField = this.targetField;
|
||||||
|
consumedAPEvent.targetEntity = this.targetEntity;
|
||||||
|
consumedAPEvent.amount = this.amount;
|
||||||
|
|
||||||
|
return consumedAPEvent;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Builds a new {@link EntityEvent}.
|
||||||
|
* This event needs the field <b>entity</b>.
|
||||||
|
*/
|
||||||
|
public EntityEvent buildSpawnEntityEvent() throws IllegalStateException {
|
||||||
|
if (this.type == null || this.type != EventType.SpawnEntityEvent ||
|
||||||
|
this.targetField == null ||
|
||||||
|
this.targetEntity == null ||
|
||||||
|
this.amount == null
|
||||||
|
) {
|
||||||
|
throw new IllegalStateException("Properties malformed for SpawnEntityEvent");
|
||||||
|
}
|
||||||
|
var spawnEntityEvent = new EntityEvent();
|
||||||
|
spawnEntityEvent.type = EventType.SpawnEntityEvent;
|
||||||
|
spawnEntityEvent.entity = this.entity;
|
||||||
|
|
||||||
|
return spawnEntityEvent;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Builds a new {@link EntityEvent}.
|
||||||
|
* This event needs the fields <b>targetField, targetEntity</b> and <b>amount</b>.
|
||||||
|
*/
|
||||||
|
public EntityEvent buildHealedEvent() throws IllegalStateException {
|
||||||
|
if (this.type == null || this.type != EventType.HealedEvent ||
|
||||||
|
this.targetField == null ||
|
||||||
|
this.targetEntity == null ||
|
||||||
|
this.amount == null
|
||||||
|
) {
|
||||||
|
throw new IllegalStateException("Properties malformed for HealedEvent");
|
||||||
|
}
|
||||||
|
var healedEvent = new EntityEvent();
|
||||||
|
healedEvent.type = EventType.HealedEvent;
|
||||||
|
healedEvent.targetField = this.targetField;
|
||||||
|
healedEvent.targetEntity = this.targetEntity;
|
||||||
|
healedEvent.amount = this.amount;
|
||||||
|
|
||||||
|
return healedEvent;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Builds a new {@link CharacterEvent}.
|
||||||
|
* This event needs the fields <b>originField, targetField, originEntity</b> and <b>targetEntity</b>.
|
||||||
|
*/
|
||||||
|
public CharacterEvent buildMeleeAttackEvent() throws IllegalStateException {
|
||||||
|
if (this.type == null || this.type != EventType.MeleeAttackEvent ||
|
||||||
|
this.originField == null ||
|
||||||
|
this.targetField == null ||
|
||||||
|
this.originEntity == null ||
|
||||||
|
this.targetEntity == null
|
||||||
|
) {
|
||||||
|
throw new IllegalStateException("Properties malformed for MeleeAttackEvent");
|
||||||
|
}
|
||||||
|
var meleeAttackEvent = new CharacterEvent();
|
||||||
|
meleeAttackEvent.type = EventType.MeleeAttackEvent;
|
||||||
|
meleeAttackEvent.originField = this.originField;
|
||||||
|
meleeAttackEvent.targetField = this.targetField;
|
||||||
|
meleeAttackEvent.originEntity = this.originEntity;
|
||||||
|
meleeAttackEvent.targetEntity = this.targetEntity;
|
||||||
|
|
||||||
|
return meleeAttackEvent;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Builds a new {@link CharacterEvent}.
|
||||||
|
* This event needs the fields <b>originField, targetField, originEntity</b> and <b>targetEntity</b>.
|
||||||
|
*/
|
||||||
|
public CharacterEvent buildRangedAttackEvent() throws IllegalStateException {
|
||||||
|
if (this.type == null || this.type != EventType.RangedAttackEvent ||
|
||||||
|
this.originField == null ||
|
||||||
|
this.targetField == null ||
|
||||||
|
this.originEntity == null ||
|
||||||
|
this.targetEntity == null
|
||||||
|
) {
|
||||||
|
throw new IllegalStateException("Properties malformed for RangedAttackEvent");
|
||||||
|
}
|
||||||
|
var rangedAttackEvent = new CharacterEvent();
|
||||||
|
rangedAttackEvent.type = EventType.RangedAttackEvent;
|
||||||
|
rangedAttackEvent.originField = this.originField;
|
||||||
|
rangedAttackEvent.targetField = this.targetField;
|
||||||
|
rangedAttackEvent.originEntity = this.originEntity;
|
||||||
|
rangedAttackEvent.targetEntity = this.targetEntity;
|
||||||
|
|
||||||
|
return rangedAttackEvent;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Builds a new {@link CharacterEvent}.
|
||||||
|
* This event needs the fields <b>stoneType, originField, targetField, originEntity</b> and <b>targetEntity</b>.
|
||||||
|
*/
|
||||||
|
public CharacterEvent buildExchangeInfinityStoneEvent() throws IllegalStateException {
|
||||||
|
if (this.type == null || this.type != EventType.ExchangeInfinityStoneEvent ||
|
||||||
|
this.originField == null ||
|
||||||
|
this.targetField == null ||
|
||||||
|
this.originEntity == null ||
|
||||||
|
this.targetEntity == null ||
|
||||||
|
this.stoneType == null
|
||||||
|
) {
|
||||||
|
throw new IllegalStateException("Properties malformed for ExchangeInfinityStoneEvent");
|
||||||
|
}
|
||||||
|
var exchangeInfinityStoneEvent = new CharacterEvent();
|
||||||
|
exchangeInfinityStoneEvent.type = EventType.ExchangeInfinityStoneEvent;
|
||||||
|
exchangeInfinityStoneEvent.originField = this.originField;
|
||||||
|
exchangeInfinityStoneEvent.targetField = this.targetField;
|
||||||
|
exchangeInfinityStoneEvent.originEntity = this.originEntity;
|
||||||
|
exchangeInfinityStoneEvent.targetEntity = this.targetEntity;
|
||||||
|
|
||||||
|
return exchangeInfinityStoneEvent;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Builds a new {@link CharacterEvent}.
|
||||||
|
* This event needs the fields <b>originField, targetField</b> and <b>originEntity</b>.
|
||||||
|
*/
|
||||||
|
public CharacterEvent buildMoveEvent() throws IllegalStateException {
|
||||||
|
if (this.type == null || this.type != EventType.MoveEvent ||
|
||||||
|
this.originField == null ||
|
||||||
|
this.targetField == null ||
|
||||||
|
this.originEntity == null
|
||||||
|
) {
|
||||||
|
throw new IllegalStateException("Properties malformed for MoveEvent");
|
||||||
|
}
|
||||||
|
var moveEvent = new CharacterEvent();
|
||||||
|
moveEvent.type = EventType.ExchangeInfinityStoneEvent;
|
||||||
|
moveEvent.originField = this.originField;
|
||||||
|
moveEvent.targetField = this.targetField;
|
||||||
|
moveEvent.originEntity = this.originEntity;
|
||||||
|
|
||||||
|
return moveEvent;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Builds a new {@link CharacterEvent}.
|
||||||
|
* This event needs the fields <b>stoneType, originField, targetField, originEntity</b> and <b>targetEntity</b>.
|
||||||
|
*/
|
||||||
|
public CharacterEvent buildUseInfinityStoneEvent() throws IllegalStateException {
|
||||||
|
if (this.type == null || this.type != EventType.UseInfinityStoneEvent ||
|
||||||
|
this.originField == null ||
|
||||||
|
this.targetField == null ||
|
||||||
|
this.originEntity == null ||
|
||||||
|
this.targetEntity == null ||
|
||||||
|
this.stoneType == null
|
||||||
|
) {
|
||||||
|
throw new IllegalStateException("Properties malformed for UseInfinityStoneEvent");
|
||||||
|
}
|
||||||
|
var useInfinityStoneEvent = new CharacterEvent();
|
||||||
|
useInfinityStoneEvent.type = EventType.UseInfinityStoneEvent;
|
||||||
|
useInfinityStoneEvent.originField = this.originField;
|
||||||
|
useInfinityStoneEvent.targetField = this.targetField;
|
||||||
|
useInfinityStoneEvent.originEntity = this.originEntity;
|
||||||
|
useInfinityStoneEvent.targetEntity = this.targetEntity;
|
||||||
|
|
||||||
|
return useInfinityStoneEvent;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Builds a new {@link GameEvent}.
|
||||||
|
* This event needs the fields <b>roundCount</b> and <b>characterOrder</b>.
|
||||||
|
*/
|
||||||
|
public GameEvent buildRoundSetupEvent() throws IllegalStateException {
|
||||||
|
if (this.type == null || this.type != EventType.RoundSetupEvent ||
|
||||||
|
this.roundCount == null ||
|
||||||
|
this.characterOrder == null
|
||||||
|
) {
|
||||||
|
throw new IllegalStateException("Properties malformed for RoundSetupEvent");
|
||||||
|
}
|
||||||
|
var roundSetupEvent = new GameEvent();
|
||||||
|
roundSetupEvent.type = EventType.UseInfinityStoneEvent;
|
||||||
|
roundSetupEvent.roundCount = this.roundCount;
|
||||||
|
roundSetupEvent.characterOrder = this.characterOrder;
|
||||||
|
|
||||||
|
return roundSetupEvent;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -0,0 +1,77 @@
|
|||||||
|
package uulm.teamname.marvelous.gamelibrary.events;
|
||||||
|
|
||||||
|
import org.junit.jupiter.api.BeforeEach;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import static org.assertj.core.api.Assertions.*;
|
||||||
|
import uulm.teamname.marvelous.gamelibrary.IntVector2;
|
||||||
|
import uulm.teamname.marvelous.gamelibrary.entities.*;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
|
||||||
|
import static org.mockito.Mockito.*;
|
||||||
|
import static org.junit.jupiter.api.Assertions.*;
|
||||||
|
|
||||||
|
class EventBuilderTest {
|
||||||
|
|
||||||
|
@BeforeEach
|
||||||
|
void setUp() {
|
||||||
|
EventBuilder builder = new EventBuilder()
|
||||||
|
.withType(EventType.CustomEvent)
|
||||||
|
.withTargetEntity(new EntityID(EntityType.P1, 1))
|
||||||
|
.withTargetField(new IntVector2(11, 13))
|
||||||
|
.withAmount(15)
|
||||||
|
.withOriginEntity(new EntityID(EntityType.P2, 4))
|
||||||
|
.withOriginField(new IntVector2(15, 3))
|
||||||
|
.withStoneType(StoneType.MindStone)
|
||||||
|
.withRoundCount(3)
|
||||||
|
.withTurnCount(4)
|
||||||
|
.withCharacterOrder(new EntityID[] {
|
||||||
|
new EntityID(EntityType.P1, 4),
|
||||||
|
new EntityID(EntityType.P1, 1),
|
||||||
|
new EntityID(EntityType.P2, 2),
|
||||||
|
new EntityID(EntityType.P2, 4),
|
||||||
|
new EntityID(EntityType.P1, 3),
|
||||||
|
new EntityID(EntityType.P2, 5),})
|
||||||
|
.withNextCharacter(new EntityID(EntityType.P2, 2))
|
||||||
|
.withPlayerWon(2)
|
||||||
|
.withMessage("Some message")
|
||||||
|
.withTimeLeft(11)
|
||||||
|
.withEntities(new Entity[] {})
|
||||||
|
.withTurnOrder(new EntityID[] {
|
||||||
|
new EntityID(EntityType.P1, 4),
|
||||||
|
new EntityID(EntityType.P1, 1),
|
||||||
|
new EntityID(EntityType.P2, 2),
|
||||||
|
new EntityID(EntityType.P2, 4),
|
||||||
|
new EntityID(EntityType.P1, 3),
|
||||||
|
new EntityID(EntityType.P2, 5),})
|
||||||
|
.withActiveCharacter(new EntityID(EntityType.P1, 1))
|
||||||
|
.withWinCondition(false)
|
||||||
|
.withTeamIdentifier("Team25")
|
||||||
|
.withCustomContent(new HashMap<>());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void buildGameEvent() {
|
||||||
|
var gameEvent = new EventBuilder()
|
||||||
|
.withType(EventType.DisconnectEvent)
|
||||||
|
.buildEntityEvent();
|
||||||
|
|
||||||
|
assertThat(gameEvent).isEqualTo()
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void buildEntityEvent() {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void buildCharacterEvent() {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void buildGamestateEvent() {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void buildCustomEvent() {
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user