# 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