class PlayerHandler: def __init__(self, pl=Player(), mh=MapHandler()): self.pl = pl plinfo = self.pl.info self.mh = mh self.psave = { 'player': plinfo, 'map': { "name": "", "location": "" }, 'xp': [] } if pl != None: fname = pl.get("name").lower() if " " in fname: fname = fname.split(" ") res = "" for i in range(0, len(fname) - 1): res += fname[i] + "_" res += fname[len(fname) - 1] fname = res res = None print(res) print(fname) self.ps = Save(str(fname) + ".json") fname = None else: self.ps = Save() def __del__(self): self.mh = None self.pl = None self.psave = None self.ps = None # set the map json setup to the save location def setMap(self, mname="", location=""): self.psave['map'] = {"name": mname, "location": location} # Load Player object def loadPl(self): loadDict = None if (self.pl != None and self.ps != None): loadDict = self.ps.loadFile() self.pl.info = loadDict["player"] self.mh.loadMap(loadDict["map"]["name"]) self.mh.loadLocation(loadDict["map"]["location"]) self.pl.toObject() loadDict = None # Save the player info def savePl(self): if (self.psave != None and self.ps != None): self.pl.info = self.pl.toJson() self.psave["player"] = self.pl.info self.ps.saveFile(self.psave) # If the player ris dead def isDead(self): return self.pl.info["hp"] <= 0 # If an item exists. def exists(self, array=[], item=None): res = False try: if len(array) > 0: for i in array: if (item == i): res = True break finally: return res # Add xp to the player def addXp(self, amount=0): if (amount > 0): xp = self.pl.get("xp") self.pl.setV("xp", xp + amount) # add an amount to the max hp def upgradeHp(self, amount=0): mhp = self.pl.get("mhp") if amount > 0: self.pl.setV("mhp", mhp + amount) mhp = None # add or subtract the hp amount def setHp(self, amount=None): hp = self.pl.get("hp") if amount != None: if ((hp + amount) > self.pl.info["mhp"]): self.pl.setV("hp", self.pl.info["mhp"]) elif (hp + amount < 0): self.pl.setV("hp", 0) else: self.pl.setV("hp", hp + amount) hp = None # add or subtract the mp amount def setMp(self, amount=0): mp = self.pl.get("mp") if amount >= 0: if (mp + amount > self.pl.info["mmp"]): self.pl.setV("mp", self.pl.info["mmp"]) elif (mp + amount < 0): self.pl.setV("mp", 0) else: self.pl.setV("mp", mp + amount) mp = None # add more mp to the max mp def upgradeMp(self, amount=0): mmp = self.pl.get("mmp") if amount > 0: self.pl.setV("mmp", mmp + amount) mmp = None # equip a weapon def equipWeapon(self, weapon): if self.exists(list(self.pl.get("inventory")["weapons"]), weapon): self.pl.info["equipped"][0] = weapon else: print("Does not exist.") # equip armor def equipArmor(self, armor): if armor == None: print( "Your item does note exist because you did not ask for an item." ) elif self.exists(list(self.pl.get("inventory")["armors"]), armor): self.pl.info["equipped"][1] = armor else: print("Does not exist.") # equip an item def equipItem(self, item, place=""): if item == None: print( "Your item does note exist because you did not ask for an item." ) elif self.exists(list(self.pl.get("inventory")["items"]), item): if place in self.pl.get("equipped").keys(): self.pl.info["equipped"][place] = item else: print("That is not a part of the equipped section") else: print("Does not exist.") # ONLY Used for battle def getMean(self): if (self.pl != None): return (self.pl.get("atk") + self.pl.get("def") + self.pl.get("spd") + self.pl.get("level")) / 4 else: return 0 # checks to see if an item is in your inventory by name def inInventory(self, name=""): res = False for x in self.pl.get("inventory").keys(): for i in self.pl.get("inventory")[x]: if i.get("name") == name: res = True break return res # get an item based on the name and place def getItem(self, name="", place=""): if self.inInventory(name): for x in self.pl.get("inventory").keys(): for i in self.pl.get("inventory")[x]: if i.get("name") == name: return i else: print("Does not exist") return -1 # Get the item's id within a specific place def getItemId(self, name="", place=""): if self.inInventory(name) and (place in self.pl.get("inventory").keys()): return self.pl.get("inventory")[place].index(self.getItem(name)) else: return -1 # gain money to your wallet def gainMoney(self, amt=0): total = (self.pl.get("money") + amt) % 999999 if total < 0: total = 0 self.pl.setV("money", total) # Change player abilities def affectPl(self, name="", amt=0): if name in self.pl.info: self.pl.setV(name, self.pl.get(name) + amt)
class MapHandler: def __init__(self, mp=Map()): self.map = mp self.current_location = Level() self.msave = {} if mp != None: self.msave = mp.info self.ms = Save(str(mp.get("name")) + ".json") else: self.ms = Save("") def __del__(self): self.map = None self.current_location = None self.msave = None self.ms = None def exists(self, name=""): return self.ms.exists(name) def welcomeScreen(self): print(self.map.get("msg")) def printMsg(self): print(self.current_location.get("msg")) def lexists(self, location=""): res = False for i in self.map.get("levels"): if i.get("name") == location: res = True break return res def goto(self, location): if self.lexists(location): self.current_location = location else: print(location + " does not exist.") def saveMap(self): if (self.ms.fn == ".json"): self.ms = Save(str(self.map.get("name")) + ".json") if (self.msave != self.map.info): self.msave = self.map.info self.ms.saveFile(self.msave) def loadMapFile(self): self.map.info = self.ms.loadFile() print(self.map.info) def loadMap(self, name=""): if self.ms.exists(name): self.ms.fn = name self.loadMapFile() def loadLocation(self, name=""): if self.map.levelExists(name): if (self.map.getLevel(name) != None): self.current_location = self.map.getLevel(name) else: print("Location does not exist in the game or on the map.") def locationType(self): for i in self.current_location.info.keys(): if (self.current_location[i] == True): return i return ""