File size: 1,487 Bytes
cf1ebab
ba4c3a1
 
 
 
6fe0d0c
ba4c3a1
 
 
 
 
8750468
ba4c3a1
 
 
 
 
 
 
 
 
 
 
8750468
ba4c3a1
 
 
 
 
 
 
 
 
 
 
 
 
 
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
# portfolio/npc_social_network/manager/simulation_manager.py
import pickle
import os
from npc_social_network.npc.npc_manager import NPCManager

SAVE_DIR = "npc_social_network/data/saves"
if not os.path.exists(SAVE_DIR):
    os.makedirs(SAVE_DIR)

def save_simulation(npc_manager: NPCManager, filename: str = "simulation_state.pkl"):
    """
    ํ˜„์žฌ NPC ๋งค๋‹ˆ์ €์˜ ์ƒํƒœ๋ฅผ ํŒŒ์ผ์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
    """
    filepath = os.path.join(SAVE_DIR, filename)
    try:
        with open(filepath, "wb") as f:
            pickle.dump(npc_manager, f)
        print(f"โœ… ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ์ƒํƒœ๊ฐ€ '{filepath}'์— ์„ฑ๊ณต์ ์œผ๋กœ ์ €์žฅ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.")
    except Exception as e:
        print(f"โŒ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ์ €์žฅ์— ์‹คํŒจํ–ˆ์Šต๋‹ˆ๋‹ค: {e}")

def load_simulation(filename: str = "simulation_state.pkl") -> NPCManager | None:
    """
    ํŒŒ์ผ์—์„œ NPC ๋งค๋‹ˆ์ €์˜ ์ƒํƒœ๋ฅผ ๋ถˆ๋Ÿฌ์˜ต๋‹ˆ๋‹ค.
    """
    filepath = os.path.join(SAVE_DIR, filename)
    if not os.path.exists(filepath):
        print("โ„น๏ธ ์ €์žฅ๋œ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ํŒŒ์ผ์ด ์—†์Šต๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ์‹œ๋ฎฌ๋ ˆ์ด์…˜์„ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.")
        return None
    
    try:
        with open(filepath, "rb") as f:
            npc_manager = pickle.load(f)
        print(f"โœ… ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ์ƒํƒœ๋ฅผ '{filepath}'์—์„œ ์„ฑ๊ณต์ ์œผ๋กœ ๋ถˆ๋Ÿฌ์™”์Šต๋‹ˆ๋‹ค.")
        return npc_manager
    except Exception as e:
        print(f"โŒ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ์— ์‹คํŒจํ–ˆ์Šต๋‹ˆ๋‹ค: {e}")
        return None