fix: add configs to GameInstance and fix GameState snapshots
This commit is contained in:
parent
ab011e54da
commit
7c36ea5c5c
@ -3,6 +3,9 @@ package uulm.teamname.marvelous.gamelibrary.gamelogic;
|
|||||||
import uulm.teamname.marvelous.gamelibrary.IntVector2;
|
import uulm.teamname.marvelous.gamelibrary.IntVector2;
|
||||||
import uulm.teamname.marvelous.gamelibrary.events.Event;
|
import uulm.teamname.marvelous.gamelibrary.events.Event;
|
||||||
import uulm.teamname.marvelous.gamelibrary.events.EventType;
|
import uulm.teamname.marvelous.gamelibrary.events.EventType;
|
||||||
|
import uulm.teamname.marvelous.gamelibrary.json.config.CharacterConfig;
|
||||||
|
import uulm.teamname.marvelous.gamelibrary.json.config.PartyConfig;
|
||||||
|
import uulm.teamname.marvelous.gamelibrary.json.config.ScenarioConfig;
|
||||||
import uulm.teamname.marvelous.gamelibrary.requests.Request;
|
import uulm.teamname.marvelous.gamelibrary.requests.Request;
|
||||||
|
|
||||||
import java.util.Observer;
|
import java.util.Observer;
|
||||||
@ -22,8 +25,8 @@ public class GameInstance {
|
|||||||
private final EventEmitter emitter = new EventEmitter();
|
private final EventEmitter emitter = new EventEmitter();
|
||||||
|
|
||||||
/** Constructs a new {@link GameInstance}. */
|
/** Constructs a new {@link GameInstance}. */
|
||||||
public GameInstance(IntVector2 mapSize) {
|
public GameInstance(PartyConfig partyConfig, CharacterConfig characterConfig, ScenarioConfig scenarioConfig) {
|
||||||
_state = new GameState(mapSize);
|
_state = new GameState(partyConfig, characterConfig, scenarioConfig);
|
||||||
this.state = new GameStateView(_state);
|
this.state = new GameStateView(_state);
|
||||||
manager = new GameStateManager(_state);
|
manager = new GameStateManager(_state);
|
||||||
}
|
}
|
||||||
|
@ -2,6 +2,9 @@ package uulm.teamname.marvelous.gamelibrary.gamelogic;
|
|||||||
|
|
||||||
import uulm.teamname.marvelous.gamelibrary.IntVector2;
|
import uulm.teamname.marvelous.gamelibrary.IntVector2;
|
||||||
import uulm.teamname.marvelous.gamelibrary.entities.*;
|
import uulm.teamname.marvelous.gamelibrary.entities.*;
|
||||||
|
import uulm.teamname.marvelous.gamelibrary.json.config.CharacterConfig;
|
||||||
|
import uulm.teamname.marvelous.gamelibrary.json.config.PartyConfig;
|
||||||
|
import uulm.teamname.marvelous.gamelibrary.json.config.ScenarioConfig;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
@ -12,6 +15,10 @@ class GameState {
|
|||||||
/** The size of the map */
|
/** The size of the map */
|
||||||
public final IntVector2 mapSize;
|
public final IntVector2 mapSize;
|
||||||
|
|
||||||
|
public final PartyConfig partyConfig;
|
||||||
|
public final CharacterConfig characterConfig;
|
||||||
|
public final ScenarioConfig scenarioConfig;
|
||||||
|
|
||||||
/** The list of {@link Entity}s inside the game */
|
/** The list of {@link Entity}s inside the game */
|
||||||
public final EntityManager entities = new EntityManager();
|
public final EntityManager entities = new EntityManager();
|
||||||
|
|
||||||
@ -40,11 +47,13 @@ class GameState {
|
|||||||
public final WinConditionManager winConditions = new WinConditionManager();
|
public final WinConditionManager winConditions = new WinConditionManager();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructs a new {@link GameState}.
|
* Constructs a new {@link GameState} with the given config.
|
||||||
* @param mapSize The size of the map
|
|
||||||
*/
|
*/
|
||||||
public GameState(IntVector2 mapSize) {
|
public GameState(PartyConfig partyConfig, CharacterConfig characterConfig, ScenarioConfig scenarioConfig) {
|
||||||
this.mapSize = mapSize;
|
this.mapSize = new IntVector2(scenarioConfig.scenario[0].length, scenarioConfig.scenario.length);
|
||||||
|
this.partyConfig = partyConfig;
|
||||||
|
this.characterConfig = characterConfig;
|
||||||
|
this.scenarioConfig = scenarioConfig;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -52,10 +61,12 @@ class GameState {
|
|||||||
* @return The cloned game state
|
* @return The cloned game state
|
||||||
*/
|
*/
|
||||||
public GameState snapshot() {
|
public GameState snapshot() {
|
||||||
GameState clone = new GameState(this.mapSize);
|
GameState clone = new GameState(partyConfig, characterConfig, scenarioConfig);
|
||||||
|
|
||||||
clone.entities.cloneFrom(entities);
|
clone.entities.cloneFrom(entities);
|
||||||
|
|
||||||
|
clone.unvomitedStones = new HashSet<>(unvomitedStones);
|
||||||
|
|
||||||
clone.roundNumber = roundNumber;
|
clone.roundNumber = roundNumber;
|
||||||
|
|
||||||
clone.turnOrder = new ArrayList<>();
|
clone.turnOrder = new ArrayList<>();
|
||||||
@ -85,6 +96,8 @@ class GameState {
|
|||||||
|
|
||||||
entities.cloneFrom(state.entities);
|
entities.cloneFrom(state.entities);
|
||||||
|
|
||||||
|
unvomitedStones = new HashSet<>(state.unvomitedStones);
|
||||||
|
|
||||||
roundNumber = state.roundNumber;
|
roundNumber = state.roundNumber;
|
||||||
|
|
||||||
turnOrder = new ArrayList<>();
|
turnOrder = new ArrayList<>();
|
||||||
|
@ -7,6 +7,9 @@ import uulm.teamname.marvelous.gamelibrary.entities.*;
|
|||||||
import uulm.teamname.marvelous.gamelibrary.entities.Character;
|
import uulm.teamname.marvelous.gamelibrary.entities.Character;
|
||||||
import uulm.teamname.marvelous.gamelibrary.events.Event;
|
import uulm.teamname.marvelous.gamelibrary.events.Event;
|
||||||
import uulm.teamname.marvelous.gamelibrary.events.EventBuilder;
|
import uulm.teamname.marvelous.gamelibrary.events.EventBuilder;
|
||||||
|
import uulm.teamname.marvelous.gamelibrary.json.config.CharacterConfig;
|
||||||
|
import uulm.teamname.marvelous.gamelibrary.json.config.PartyConfig;
|
||||||
|
import uulm.teamname.marvelous.gamelibrary.json.config.ScenarioConfig;
|
||||||
import uulm.teamname.marvelous.gamelibrary.requests.*;
|
import uulm.teamname.marvelous.gamelibrary.requests.*;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@ -20,7 +23,7 @@ class GameLogicTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
void executeRequest() {
|
void executeRequest() {
|
||||||
GameState state = new GameState(new IntVector2(10, 10));
|
GameState state = new GameState(new PartyConfig(), new CharacterConfig(), new ScenarioConfig());
|
||||||
//build a nice state (add entities and stuff)
|
//build a nice state (add entities and stuff)
|
||||||
ArrayList<Event> result = GameLogic.executeRequest(state, new RequestBuilder(RequestType.MeleeAttackRequest)
|
ArrayList<Event> result = GameLogic.executeRequest(state, new RequestBuilder(RequestType.MeleeAttackRequest)
|
||||||
//build a nice request to check
|
//build a nice request to check
|
||||||
|
@ -6,6 +6,9 @@ import uulm.teamname.marvelous.gamelibrary.entities.EntityID;
|
|||||||
import uulm.teamname.marvelous.gamelibrary.entities.EntityType;
|
import uulm.teamname.marvelous.gamelibrary.entities.EntityType;
|
||||||
import uulm.teamname.marvelous.gamelibrary.entities.Rock;
|
import uulm.teamname.marvelous.gamelibrary.entities.Rock;
|
||||||
import uulm.teamname.marvelous.gamelibrary.events.Event;
|
import uulm.teamname.marvelous.gamelibrary.events.Event;
|
||||||
|
import uulm.teamname.marvelous.gamelibrary.json.config.CharacterConfig;
|
||||||
|
import uulm.teamname.marvelous.gamelibrary.json.config.PartyConfig;
|
||||||
|
import uulm.teamname.marvelous.gamelibrary.json.config.ScenarioConfig;
|
||||||
import uulm.teamname.marvelous.gamelibrary.requests.CharacterRequest;
|
import uulm.teamname.marvelous.gamelibrary.requests.CharacterRequest;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@ -18,7 +21,7 @@ class GameStateTest {
|
|||||||
//TODO: test all properties in GameStateTest.testSnapshot
|
//TODO: test all properties in GameStateTest.testSnapshot
|
||||||
|
|
||||||
//base state
|
//base state
|
||||||
GameState state = new GameState(new IntVector2(10, 10));
|
GameState state = new GameState(new PartyConfig(), new CharacterConfig(), new ScenarioConfig());
|
||||||
|
|
||||||
//set up game
|
//set up game
|
||||||
state.entities.addEntity(new Rock(new EntityID(EntityType.Rocks, 0), new IntVector2(0, 0), 100));
|
state.entities.addEntity(new Rock(new EntityID(EntityType.Rocks, 0), new IntVector2(0, 0), 100));
|
||||||
|
Loading…
Reference in New Issue
Block a user