rorshi's picture
์†Œ๋ฌธ ๋ฐ ํ‰ํŒ ์‹œ์Šคํ…œ ์ˆ˜์ •์ค‘
8750468
# 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