feat: implement GameLogic.executeRequest
This commit is contained in:
parent
3b286b4667
commit
bebe721788
@ -4,9 +4,10 @@
|
||||
<component name="GradleSettings">
|
||||
<option name="linkedExternalProjectsSettings">
|
||||
<GradleProjectSettings>
|
||||
<option name="delegatedBuild" value="true" />
|
||||
<option name="testRunner" value="GRADLE" />
|
||||
<option name="distributionType" value="DEFAULT_WRAPPED" />
|
||||
<option name="externalProjectPath" value="$PROJECT_DIR$" />
|
||||
<option name="gradleJvm" value="#JAVA_HOME" />
|
||||
<option name="modules">
|
||||
<set>
|
||||
<option value="$PROJECT_DIR$" />
|
||||
|
@ -23,4 +23,4 @@ dependencies {
|
||||
testImplementation "org.mockito:mockito-all:2.0.2-beta"
|
||||
testImplementation "org.assertj:assertj-core:3.19.0"
|
||||
testRuntimeOnly "org.junit.jupiter:junit-jupiter-engine:5.8.0-M1"
|
||||
}
|
||||
}
|
||||
|
@ -13,12 +13,6 @@ public class CharacterEvent extends Event {
|
||||
public Integer amount = null;
|
||||
public StoneType stoneType = null;
|
||||
|
||||
@Override
|
||||
public CharacterEvent type(EventType type) {
|
||||
this.type = type;
|
||||
return this;
|
||||
}
|
||||
|
||||
public CharacterEvent setOriginEntity(EntityID originEntity) {
|
||||
this.originEntity = originEntity;
|
||||
return this;
|
||||
|
@ -9,12 +9,6 @@ public class EntityEvent extends Event {
|
||||
public IntVector2 targetField = null;
|
||||
public Integer amount = null;
|
||||
|
||||
@Override
|
||||
public EntityEvent type(EventType type) {
|
||||
this.type = type;
|
||||
return this;
|
||||
}
|
||||
|
||||
public EntityEvent setTargetEntity(EntityID targetEntity) {
|
||||
this.targetEntity = targetEntity;
|
||||
return this;
|
||||
|
@ -1,11 +1,12 @@
|
||||
package uulm.teamname.marvelous.gamelibrary.gamelogic;
|
||||
|
||||
import uulm.teamname.marvelous.gamelibrary.Tuple;
|
||||
import uulm.teamname.marvelous.gamelibrary.events.Event;
|
||||
import uulm.teamname.marvelous.gamelibrary.events.*;
|
||||
import uulm.teamname.marvelous.gamelibrary.requests.CharacterRequest;
|
||||
import uulm.teamname.marvelous.gamelibrary.requests.Request;
|
||||
import uulm.teamname.marvelous.gamelibrary.requests.RequestType;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
|
||||
/** Contains game logic handling. */
|
||||
class GameLogic {
|
||||
@ -14,18 +15,63 @@ class GameLogic {
|
||||
* @return The list of resulting events
|
||||
*/
|
||||
public static ArrayList<Event> executeRequest(Request request) {
|
||||
ArrayList<Event> result = new ArrayList<Event>();
|
||||
ArrayList<Event> result = new ArrayList<>();
|
||||
|
||||
//TODO: implement GameLogic.executeRequest
|
||||
switch(request.type) {
|
||||
case MeleeAttackRequest, RangedAttackRequest -> {
|
||||
CharacterRequest data = (CharacterRequest)request;
|
||||
result.add(new CharacterEvent()
|
||||
.setOriginEntity(data.originEntity)
|
||||
.setTargetEntity(data.targetEntity)
|
||||
.setOriginField(data.originField)
|
||||
.setTargetField(data.targetField)
|
||||
.setAmount(data.value)
|
||||
.type(request.type == RequestType.MeleeAttackRequest ? EventType.MeleeAttackEvent : EventType.RangedAttackEvent));
|
||||
result.add(new EntityEvent()
|
||||
.setTargetEntity(data.originEntity)
|
||||
.setTargetField(data.originField)
|
||||
.setAmount(1)
|
||||
.type(EventType.ConsumedAPEvent));
|
||||
result.add(new EntityEvent()
|
||||
.setTargetEntity(data.targetEntity)
|
||||
.setTargetField(data.targetField)
|
||||
.setAmount(data.value)
|
||||
.type(EventType.TakenDamageEvent));
|
||||
}
|
||||
case MoveRequest -> {
|
||||
CharacterRequest data = (CharacterRequest)request;
|
||||
result.add(new CharacterEvent()
|
||||
.setOriginEntity(data.originEntity)
|
||||
.setOriginField(data.originField)
|
||||
.setTargetField(data.targetField)
|
||||
.type(EventType.MoveEvent));
|
||||
result.add(new EntityEvent()
|
||||
.setTargetEntity(data.originEntity)
|
||||
.setTargetField(data.targetField) //when this event gets handled, the character already moved to the target field
|
||||
.setAmount(1)
|
||||
.type(EventType.ConsumedMPEvent));
|
||||
}
|
||||
case ExchangeInfinityStoneRequest, UseInfinityStoneRequest -> {
|
||||
CharacterRequest data = (CharacterRequest)request;
|
||||
result.add(new CharacterEvent()
|
||||
.setOriginEntity(data.originEntity)
|
||||
.setTargetEntity(data.targetEntity)
|
||||
.setOriginField(data.originField)
|
||||
.setTargetField(data.targetField)
|
||||
.setStone(data.stoneType)
|
||||
.type(request.type == RequestType.ExchangeInfinityStoneRequest ? EventType.ExchangeInfinityStoneEvent : EventType.UseInfinityStoneEvent));
|
||||
result.add(new EntityEvent()
|
||||
.setTargetEntity(data.originEntity)
|
||||
.setTargetField(data.originField)
|
||||
.setAmount(1)
|
||||
.type(EventType.ConsumedAPEvent));
|
||||
|
||||
/* Example Code:
|
||||
switch (event.type) {
|
||||
case EventType.MeleeAttack:
|
||||
result.add(Event.Construct(EventType.APReduced, event.sourceEntity, event.ap));
|
||||
result.add(Event.Construct(EventType.DamageTaken, event.targetEntity, event.value));
|
||||
break;
|
||||
}
|
||||
case DisconnectRequest -> {
|
||||
result.add(new GameEvent()
|
||||
.type(EventType.DisconnectEvent));
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
return result;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user