Files
Wyvern-Castle/game.py
2026-01-29 16:55:45 +01:00

43 lines
1.4 KiB
Python

from serializable import Serializable
from dice import Dice
from events.event import Event
from entities.player import Player
from entities.npc import NPC
from items.item import Item
class Game(Serializable):
def __init__(self, seed:int=42):
self.active_players:list[Player] = []
self.active_npcs:list[NPC] = []
self.active_items:list[Item] = []
self.events:list[Event] = []
def get_player(self, player_id:str):
for player in self.active_players:
if player.id == player_id:
return player
raise ReferenceError(f"The player #{player_id} doesn't exist!")
def get_npc(self, npc_id:str):
for npc in self.active_npcs:
if npc.id == npc_id:
return npc
raise ReferenceError(f"The npc #{npc_id} doesn't exist!")
def get_item(self, item_id:str):
for item in self.active_items:
if item.id == item_id:
return item
raise ReferenceError(f"The item #{item_id} doesn't exist!")
def get_current_event(self):
idx = len(self.events) - 1
if idx < 0:
raise IndexError("There is no event yet, you should create one!")
return self.events[idx]
def add_event(self, new_event:Event):
self.events.append(new_event)
#TODO: Add State Summary as Resource?