diff --git a/__pycache__/adventurers.cpython-312.pyc b/__pycache__/adventurers.cpython-312.pyc index d2c5d26..61f9698 100644 Binary files a/__pycache__/adventurers.cpython-312.pyc and b/__pycache__/adventurers.cpython-312.pyc differ diff --git a/__pycache__/app.cpython-312.pyc b/__pycache__/app.cpython-312.pyc index 77a4919..b4b5c63 100644 Binary files a/__pycache__/app.cpython-312.pyc and b/__pycache__/app.cpython-312.pyc differ diff --git a/__pycache__/main.cpython-312.pyc b/__pycache__/main.cpython-312.pyc index b3863c4..fbc2f36 100644 Binary files a/__pycache__/main.cpython-312.pyc and b/__pycache__/main.cpython-312.pyc differ diff --git a/adventurers.py b/adventurers.py index d2131c2..48fb9c4 100755 --- a/adventurers.py +++ b/adventurers.py @@ -44,6 +44,12 @@ class Adventurer: def __str__(self): return f"{self.player_class}" + def get_subclass_dict(): + subclasses = {} + for subclass in Adventurer.__subclasses__(): + subclasses[subclass.adv_class] = subclass + return subclasses + def get_json(self): char_dict = self.__dict__ char_json = json.dumps(char_dict) @@ -113,6 +119,7 @@ class Adventurer: class Fighter(Adventurer): + adv_class = "fighter" prime_requisite = "strength" requirements = None progression = [ @@ -133,12 +140,13 @@ class Fighter(Adventurer): ] def __init__(self, c_id, level, attributes={}) -> None: Adventurer.__init__(self, c_id, level, attributes) - self.player_class = "fighter" + self.player_class = Fighter.adv_class self.progression = Fighter.progression self.hp = roll_dice(self.level, 8) self.ac = armor[self.armor] class MagicUser(Adventurer): + adv_class = "magic user" prime_requisite = "intelligence" requirements = None progression = [ @@ -175,7 +183,7 @@ class MagicUser(Adventurer): } def __init__(self,c_id, level, attributes={}) -> None: Adventurer.__init__(self, c_id, level, attributes) - self.player_class = "magic user" + self.player_class = MagicUser.adv_class self.progression = MagicUser.progression self.hp = roll_dice(self.level, 4) self.armor = "None" @@ -185,6 +193,7 @@ class MagicUser(Adventurer): self.spell_book = self.select_spells() class Cleric(Adventurer): + adv_class = "cleric" prime_requisite = "wisdom" requirements = None progression = [ @@ -221,7 +230,7 @@ class Cleric(Adventurer): } def __init__(self,c_id, level, attributes={}) -> None: Adventurer.__init__(self, c_id, level, attributes) - self.player_class = "cleric" + self.player_class = Cleric.adv_class self.progression = Cleric.progression self.hp = roll_dice(self.level, 6) self.armor = random.choice(list(armor.keys())) @@ -234,6 +243,7 @@ class Cleric(Adventurer): self.spell_book = self.select_spells() class Thief(Adventurer): + adv_class = "thief" prime_requisite = "dexterity" requirements = None progression = [ @@ -254,13 +264,14 @@ class Thief(Adventurer): ] def __init__(self,c_id, level, attributes={}) -> None: Adventurer.__init__(self, c_id, level, attributes) - self.player_class = "thief" - self.progression = Fighter.progression + self.player_class = Thief.adv_class + self.progression = Thief.progression self.hp = roll_dice(self.level, 4) self.armor = random.choice(list(armor.keys())) self.ac = armor[self.armor] class Dwarf(Adventurer): + adv_class = "dwarf" prime_requisite = "strength" requirements = {'constitution' : 9 } progression = [ @@ -279,13 +290,14 @@ class Dwarf(Adventurer): ] def __init__(self,c_id, level, attributes={}) -> None: Adventurer.__init__(self, c_id, level, attributes) - self.player_class = "dwarf" + self.player_class = Dwarf.adv_class self.progression = Dwarf.progression self.hp = roll_dice(self.level, 8) self.armor = random.choice(list(armor.keys())) self.ac = armor[self.armor] class Elf(Adventurer): + adv_class = "elf" prime_requisite = "intellgence" requirements = {'intelligence' : 9 } progression = [ @@ -314,7 +326,7 @@ class Elf(Adventurer): } def __init__(self,c_id, level, attributes={}) -> None: Adventurer.__init__(self, c_id, level, attributes) - self.player_class = "elf" + self.player_class = Elf.adv_class self.progression = Elf.progression self.hp = roll_dice(self.level, 6) self.armor = random.choice(list(armor.keys())) @@ -323,6 +335,7 @@ class Elf(Adventurer): self.spell_book = self.select_spells() class Halfling(Adventurer): + adv_class = "halfling" prime_requisite = "dexterity" requirements = {'constitution' : 9, 'dexterity' : 9 } progression = [ @@ -337,7 +350,7 @@ class Halfling(Adventurer): ] def __init__(self,c_id, level, attributes={}) -> None: Adventurer.__init__(self, c_id, level, attributes) - self.player_class = "halfling" + self.player_class = Halfling.adv_class self.progression = Halfling.progression self.hp = roll_dice(self.level, 6) self.armor = random.choice(list(armor.keys())) diff --git a/app.py b/app.py index 310c56f..e9ae2f1 100644 --- a/app.py +++ b/app.py @@ -1,6 +1,7 @@ #!/usr/bin/python3 import zlib from main import * +from adventurers import * from flask import Flask, render_template, redirect, request, make_response from flask_session import Session @@ -37,6 +38,20 @@ def party(): @app.route('/character', methods = ["GET","POST"]) def characters(): if request.method == "GET": - c_id = request.args.get("id", default=0, type=int) - character = returnCharacter(c_id) - return render_template("character.html", character=character) + c_id = str(request.args.get("id", default=0, type=int)) + cookie_encoded = request.cookies[c_id] + cookie_compressed = base64.urlsafe_b64decode(cookie_encoded) + character_dict = json.loads(zlib.decompress(cookie_compressed).decode()) + chosen_class = character_dict['player_class'] + c_id = character_dict['id'] + level = character_dict['level'] + adv_dict = Adventurer.get_subclass_dict() + chosen_class = adv_dict[chosen_class] + # note, i wonder if i can find a way to use the dict in a one liner, like from hw1 + # makes a new character of the correct player class + new_char = chosen_class(c_id=c_id, level=level) + # loads in all the values from the dict + for k, v in character_dict.items(): + # https://realpython.com/ref/builtin-functions/setattr/ + setattr(new_char,k, v) + return render_template("character.html", character=new_char) diff --git a/main.py b/main.py index 9adc1ae..76a92a5 100755 --- a/main.py +++ b/main.py @@ -102,7 +102,11 @@ def returnCharacter(c_id): def main(): adventurer_party = returnParty(party_size=2, party_level=2) for adv in adventurer_party.adventurers: - print(adv.get_json()) + print(adv.adv_class) + adv_dict = Adventurer.get_subclass_dict() + test_class = adv_dict['fighter'] + new_char = test_class(c_id=1,level=1) + print(new_char.adv_class) # for line in adv.vertical_sheet: # print(f"{line}") # print() diff --git a/templates/character.html b/templates/character.html index 2f14812..048d536 100644 --- a/templates/character.html +++ b/templates/character.html @@ -46,7 +46,7 @@
{{character.vertical_sheet | join("\n")}}
+ {{character.vertical_sheet() | join("\n")}}