can now load a character from a cookie
This commit is contained in:
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -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()))
|
||||
|
||||
21
app.py
21
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)
|
||||
|
||||
6
main.py
6
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()
|
||||
|
||||
@@ -46,7 +46,7 @@
|
||||
<div class="block has-text-centered">
|
||||
<div class="columns">
|
||||
<div class="column" >
|
||||
<pre>{{character.vertical_sheet | join("\n")}}</pre>
|
||||
<pre>{{character.vertical_sheet() | join("\n")}}</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user