TorroesPrime

dungeon.py

Aug 8th, 2020 (edited)
1,588
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.67 KB | None | 0 0
  1. from filemedia import save_file_ext,save_file_version,default_save_file,top_level_delimiter,second_level_delim,rooms_marker,exits_marker,file_name_leader,room_states_marker
  2. #from room import roomInstance
  3. import room
  4. #from room import Room
  5. class Dungeon:
  6.     def __init__(self,title,entry):
  7.         self.filename = None
  8.         self.title = title
  9.         self.entry = entry
  10.         self.rooms = {}
  11.  
  12.     def manual_Dungeon(self,title,entry):
  13.         """manual dungeon instantiation method"""
  14.         self.filename = None
  15.         self.title = title
  16.         self.entry = entry
  17.         self.rooms = {}
  18.         return self
  19.  
  20.     def dungeon(self,filename,entry):
  21.         """Read from the .zork filename passed, and instantiate a Dungeon object based on it."""
  22.         self.filename = filename
  23.         with open(filename) as f:
  24.         #fileReader = open(filename)
  25.             self.title = f.readline()
  26.          #   if test==True:
  27.          #       print(f"title:{self.title}")
  28.             if f.readline()!=top_level_delimiter:
  29.                 raise Exception(f"No {top_level_delimiter} after version indicator")
  30.             if f.readline()!=rooms_marker:
  31.                 raise Exception(F"No {rooms_marker} line were expected")
  32.             try:
  33.                 self.add_room(self.entry)
  34.                 self.entry = self.get_room(entry)
  35.             except:
  36.                 raise Exception("No room found")
  37.             #try:
  38.                 #self.addRoom(RoomInstance.RoomMaker(f))
  39.             #except:
  40.             #    raise Exception(f"no more rooms")
  41.             #if f.readline()!=self.EXITS_MARKER:
  42.             #    raise Exception(f"Illegal dungeon file format")
  43.     def scanner(self,filename):
  44.         with open(filename) as a:
  45.             dungeon_title = a.readline()
  46.             if a.readline().startswith("description: ")== False:
  47.                 pass
  48.  
  49.     def store_state(self,saveFile):
  50.         saveFile.write(file_name_leader +str(self.filename))
  51.         saveFile.write(room_states_marker)
  52.         for room in self.rooms:
  53.             room.storeState(saveFile)
  54.         saveFile.print(top_level_delimiter)
  55.  
  56.     def restore_state(self, readFile):
  57.         if(readFile.readLine()!=room_states_marker):
  58.             raise Exception(F"no {room_states_marker} after dungeon filename in file")
  59.         roomName = readFile.nextLine()
  60.         while(roomName!=top_level_delimiter):
  61.             print("need to check this")
  62.    
  63.     def add_room(self, room):
  64.         roomName = room.name
  65.         self.rooms.update({roomName:room})
  66.    
  67.     def get_room(self, roomName):
  68.         return self.rooms.get(roomName)
  69.  
  70. #dungeonInstance = Dungeon("dungeon instance",roomInstance)    
Add Comment
Please, Sign In to add comment