File size: 2,411 Bytes
f4db97a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
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