invoking comment added to gamestate initalizer
parent
94cb64f37a
commit
5b97b4b219
|
@ -1,4 +1,5 @@
|
||||||
import { DatabaseService } from "../db/services/Database";
|
import { DatabaseService } from "../db/services/Database";
|
||||||
|
import { Comment } from "../rdrama/models/Comment";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Represents the state of a game session for an Oregon Trail-style game.
|
* Represents the state of a game session for an Oregon Trail-style game.
|
||||||
|
@ -6,7 +7,9 @@ import { DatabaseService } from "../db/services/Database";
|
||||||
* to load from and save to a database.
|
* to load from and save to a database.
|
||||||
*/
|
*/
|
||||||
class GameState {
|
class GameState {
|
||||||
authorId: number = 0;
|
comment: Comment;
|
||||||
|
authorId: number;
|
||||||
|
authorName: string;
|
||||||
amountSpentOnAnimals: number = 0;
|
amountSpentOnAnimals: number = 0;
|
||||||
amountSpentOnAmmunition: number = 0;
|
amountSpentOnAmmunition: number = 0;
|
||||||
actualResponseTimeForBang: number = 0;
|
actualResponseTimeForBang: number = 0;
|
||||||
|
@ -16,7 +19,7 @@ class GameState {
|
||||||
yesNoResponseToQuestions: string = '';
|
yesNoResponseToQuestions: string = '';
|
||||||
eventCounter: number = 0;
|
eventCounter: number = 0;
|
||||||
turnNumberForSettingDate: number = 0;
|
turnNumberForSettingDate: number = 0;
|
||||||
currentDate: string = '';
|
currentDate: string = 'MONDAY MARCH 29 1847';
|
||||||
shootingExpertiseLevelChoice: number = 0;
|
shootingExpertiseLevelChoice: number = 0;
|
||||||
eatingChoice: number = 0;
|
eatingChoice: number = 0;
|
||||||
amountSpentOnFood: number = 0;
|
amountSpentOnFood: number = 0;
|
||||||
|
@ -43,8 +46,10 @@ class GameState {
|
||||||
phase: PHASE_ENUM = PHASE_ENUM.SETUP;
|
phase: PHASE_ENUM = PHASE_ENUM.SETUP;
|
||||||
subPhase: number = 0;
|
subPhase: number = 0;
|
||||||
|
|
||||||
private constructor(authorId: number, state?: Partial<GameState>) {
|
private constructor(comment: Comment, state?: Partial<GameState>) {
|
||||||
this.authorId = authorId;
|
this.comment = comment
|
||||||
|
this.authorId = comment.author_id;
|
||||||
|
this.authorName = comment.author_name;
|
||||||
Object.assign(this, state); // Initialize with loaded state or undefined
|
Object.assign(this, state); // Initialize with loaded state or undefined
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -57,20 +62,21 @@ class GameState {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Loads an existing game state from the database or creates a new one if it doesn't exist.
|
* Loads an existing game state from the database or creates a new one if it doesn't exist.
|
||||||
* @param {number} authorId - The ID of the author/player.
|
* @param {Comment} comment - The invoking comment of the author/player.
|
||||||
* @returns {Promise<GameState>} - The loaded or newly created game state.
|
* @returns {Promise<GameState>} - The loaded or newly created game state.
|
||||||
*/
|
*/
|
||||||
public static async load(authorId: number): Promise<GameState> {
|
public static async load(comment: Comment): Promise<GameState> {
|
||||||
const loadedState = await DatabaseService.loadGameState(authorId);
|
const loadedState = await DatabaseService.loadGameState(comment.author_id);
|
||||||
if (loadedState) {
|
if (loadedState) {
|
||||||
return new GameState(authorId, loadedState);
|
return new GameState(comment, loadedState);
|
||||||
} else {
|
} else {
|
||||||
// Create a new GameState with default values
|
// Create a new GameState with default values
|
||||||
const newState = new GameState(authorId);
|
const newState = new GameState(comment);
|
||||||
await newState.save(); // Optionally save the new state to the database
|
await newState.save(); // Optionally save the new state to the database
|
||||||
return newState;
|
return newState;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export default GameState
|
export default GameState
|
||||||
|
|
Loading…
Reference in New Issue