from datetime import datetime from src.database import interactions class RPGGame: def __init__(self): self.current_session_id = None self.turn_number = 0 def start_game(self, player_name: str, genre: str, scenario: str) -> str: session_id = f"session_{datetime.now().strftime('%Y%m%d%H%M%S')}_{player_name}" self.current_session_id = session_id self.turn_number = 0 # Create initial interaction with all session data interactions.insert([{ 'session_id': session_id, 'player_name': player_name, 'genre': genre, 'initial_scenario': scenario, 'turn_number': 0, 'player_input': "Game starts", 'timestamp': datetime.now() }]) # Get initial story and options initial_response = interactions.select(interactions.story_text).where( (interactions.session_id == session_id) & (interactions.turn_number == 0) ).collect()['story_text'][0] return session_id, initial_response def process_action(self, action: str) -> str: if not self.current_session_id: return "No active game session. Please start a new game." self.turn_number += 1 # Get session info from previous turn prev_turn = interactions.select( interactions.player_name, interactions.genre, interactions.initial_scenario ).where( (interactions.session_id == self.current_session_id) & (interactions.turn_number == 0) ).collect() # Record player action with session data interactions.insert([{ 'session_id': self.current_session_id, 'player_name': prev_turn['player_name'][0], 'genre': prev_turn['genre'][0], 'initial_scenario': prev_turn['initial_scenario'][0], 'turn_number': self.turn_number, 'player_input': action, 'timestamp': datetime.now() }]) # Get AI response response = interactions.select(interactions.story_text).where( (interactions.session_id == self.current_session_id) & (interactions.turn_number == self.turn_number) ).collect()['story_text'][0] return response