43 lines
1.4 KiB
Python
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? |