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):
|
def __str__(self):
|
||||||
return f"{self.player_class}"
|
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):
|
def get_json(self):
|
||||||
char_dict = self.__dict__
|
char_dict = self.__dict__
|
||||||
char_json = json.dumps(char_dict)
|
char_json = json.dumps(char_dict)
|
||||||
@@ -113,6 +119,7 @@ class Adventurer:
|
|||||||
|
|
||||||
|
|
||||||
class Fighter(Adventurer):
|
class Fighter(Adventurer):
|
||||||
|
adv_class = "fighter"
|
||||||
prime_requisite = "strength"
|
prime_requisite = "strength"
|
||||||
requirements = None
|
requirements = None
|
||||||
progression = [
|
progression = [
|
||||||
@@ -133,12 +140,13 @@ class Fighter(Adventurer):
|
|||||||
]
|
]
|
||||||
def __init__(self, c_id, level, attributes={}) -> None:
|
def __init__(self, c_id, level, attributes={}) -> None:
|
||||||
Adventurer.__init__(self, c_id, level, attributes)
|
Adventurer.__init__(self, c_id, level, attributes)
|
||||||
self.player_class = "fighter"
|
self.player_class = Fighter.adv_class
|
||||||
self.progression = Fighter.progression
|
self.progression = Fighter.progression
|
||||||
self.hp = roll_dice(self.level, 8)
|
self.hp = roll_dice(self.level, 8)
|
||||||
self.ac = armor[self.armor]
|
self.ac = armor[self.armor]
|
||||||
|
|
||||||
class MagicUser(Adventurer):
|
class MagicUser(Adventurer):
|
||||||
|
adv_class = "magic user"
|
||||||
prime_requisite = "intelligence"
|
prime_requisite = "intelligence"
|
||||||
requirements = None
|
requirements = None
|
||||||
progression = [
|
progression = [
|
||||||
@@ -175,7 +183,7 @@ class MagicUser(Adventurer):
|
|||||||
}
|
}
|
||||||
def __init__(self,c_id, level, attributes={}) -> None:
|
def __init__(self,c_id, level, attributes={}) -> None:
|
||||||
Adventurer.__init__(self, c_id, level, attributes)
|
Adventurer.__init__(self, c_id, level, attributes)
|
||||||
self.player_class = "magic user"
|
self.player_class = MagicUser.adv_class
|
||||||
self.progression = MagicUser.progression
|
self.progression = MagicUser.progression
|
||||||
self.hp = roll_dice(self.level, 4)
|
self.hp = roll_dice(self.level, 4)
|
||||||
self.armor = "None"
|
self.armor = "None"
|
||||||
@@ -185,6 +193,7 @@ class MagicUser(Adventurer):
|
|||||||
self.spell_book = self.select_spells()
|
self.spell_book = self.select_spells()
|
||||||
|
|
||||||
class Cleric(Adventurer):
|
class Cleric(Adventurer):
|
||||||
|
adv_class = "cleric"
|
||||||
prime_requisite = "wisdom"
|
prime_requisite = "wisdom"
|
||||||
requirements = None
|
requirements = None
|
||||||
progression = [
|
progression = [
|
||||||
@@ -221,7 +230,7 @@ class Cleric(Adventurer):
|
|||||||
}
|
}
|
||||||
def __init__(self,c_id, level, attributes={}) -> None:
|
def __init__(self,c_id, level, attributes={}) -> None:
|
||||||
Adventurer.__init__(self, c_id, level, attributes)
|
Adventurer.__init__(self, c_id, level, attributes)
|
||||||
self.player_class = "cleric"
|
self.player_class = Cleric.adv_class
|
||||||
self.progression = Cleric.progression
|
self.progression = Cleric.progression
|
||||||
self.hp = roll_dice(self.level, 6)
|
self.hp = roll_dice(self.level, 6)
|
||||||
self.armor = random.choice(list(armor.keys()))
|
self.armor = random.choice(list(armor.keys()))
|
||||||
@@ -234,6 +243,7 @@ class Cleric(Adventurer):
|
|||||||
self.spell_book = self.select_spells()
|
self.spell_book = self.select_spells()
|
||||||
|
|
||||||
class Thief(Adventurer):
|
class Thief(Adventurer):
|
||||||
|
adv_class = "thief"
|
||||||
prime_requisite = "dexterity"
|
prime_requisite = "dexterity"
|
||||||
requirements = None
|
requirements = None
|
||||||
progression = [
|
progression = [
|
||||||
@@ -254,13 +264,14 @@ class Thief(Adventurer):
|
|||||||
]
|
]
|
||||||
def __init__(self,c_id, level, attributes={}) -> None:
|
def __init__(self,c_id, level, attributes={}) -> None:
|
||||||
Adventurer.__init__(self, c_id, level, attributes)
|
Adventurer.__init__(self, c_id, level, attributes)
|
||||||
self.player_class = "thief"
|
self.player_class = Thief.adv_class
|
||||||
self.progression = Fighter.progression
|
self.progression = Thief.progression
|
||||||
self.hp = roll_dice(self.level, 4)
|
self.hp = roll_dice(self.level, 4)
|
||||||
self.armor = random.choice(list(armor.keys()))
|
self.armor = random.choice(list(armor.keys()))
|
||||||
self.ac = armor[self.armor]
|
self.ac = armor[self.armor]
|
||||||
|
|
||||||
class Dwarf(Adventurer):
|
class Dwarf(Adventurer):
|
||||||
|
adv_class = "dwarf"
|
||||||
prime_requisite = "strength"
|
prime_requisite = "strength"
|
||||||
requirements = {'constitution' : 9 }
|
requirements = {'constitution' : 9 }
|
||||||
progression = [
|
progression = [
|
||||||
@@ -279,13 +290,14 @@ class Dwarf(Adventurer):
|
|||||||
]
|
]
|
||||||
def __init__(self,c_id, level, attributes={}) -> None:
|
def __init__(self,c_id, level, attributes={}) -> None:
|
||||||
Adventurer.__init__(self, c_id, level, attributes)
|
Adventurer.__init__(self, c_id, level, attributes)
|
||||||
self.player_class = "dwarf"
|
self.player_class = Dwarf.adv_class
|
||||||
self.progression = Dwarf.progression
|
self.progression = Dwarf.progression
|
||||||
self.hp = roll_dice(self.level, 8)
|
self.hp = roll_dice(self.level, 8)
|
||||||
self.armor = random.choice(list(armor.keys()))
|
self.armor = random.choice(list(armor.keys()))
|
||||||
self.ac = armor[self.armor]
|
self.ac = armor[self.armor]
|
||||||
|
|
||||||
class Elf(Adventurer):
|
class Elf(Adventurer):
|
||||||
|
adv_class = "elf"
|
||||||
prime_requisite = "intellgence"
|
prime_requisite = "intellgence"
|
||||||
requirements = {'intelligence' : 9 }
|
requirements = {'intelligence' : 9 }
|
||||||
progression = [
|
progression = [
|
||||||
@@ -314,7 +326,7 @@ class Elf(Adventurer):
|
|||||||
}
|
}
|
||||||
def __init__(self,c_id, level, attributes={}) -> None:
|
def __init__(self,c_id, level, attributes={}) -> None:
|
||||||
Adventurer.__init__(self, c_id, level, attributes)
|
Adventurer.__init__(self, c_id, level, attributes)
|
||||||
self.player_class = "elf"
|
self.player_class = Elf.adv_class
|
||||||
self.progression = Elf.progression
|
self.progression = Elf.progression
|
||||||
self.hp = roll_dice(self.level, 6)
|
self.hp = roll_dice(self.level, 6)
|
||||||
self.armor = random.choice(list(armor.keys()))
|
self.armor = random.choice(list(armor.keys()))
|
||||||
@@ -323,6 +335,7 @@ class Elf(Adventurer):
|
|||||||
self.spell_book = self.select_spells()
|
self.spell_book = self.select_spells()
|
||||||
|
|
||||||
class Halfling(Adventurer):
|
class Halfling(Adventurer):
|
||||||
|
adv_class = "halfling"
|
||||||
prime_requisite = "dexterity"
|
prime_requisite = "dexterity"
|
||||||
requirements = {'constitution' : 9, 'dexterity' : 9 }
|
requirements = {'constitution' : 9, 'dexterity' : 9 }
|
||||||
progression = [
|
progression = [
|
||||||
@@ -337,7 +350,7 @@ class Halfling(Adventurer):
|
|||||||
]
|
]
|
||||||
def __init__(self,c_id, level, attributes={}) -> None:
|
def __init__(self,c_id, level, attributes={}) -> None:
|
||||||
Adventurer.__init__(self, c_id, level, attributes)
|
Adventurer.__init__(self, c_id, level, attributes)
|
||||||
self.player_class = "halfling"
|
self.player_class = Halfling.adv_class
|
||||||
self.progression = Halfling.progression
|
self.progression = Halfling.progression
|
||||||
self.hp = roll_dice(self.level, 6)
|
self.hp = roll_dice(self.level, 6)
|
||||||
self.armor = random.choice(list(armor.keys()))
|
self.armor = random.choice(list(armor.keys()))
|
||||||
|
|||||||
21
app.py
21
app.py
@@ -1,6 +1,7 @@
|
|||||||
#!/usr/bin/python3
|
#!/usr/bin/python3
|
||||||
import zlib
|
import zlib
|
||||||
from main import *
|
from main import *
|
||||||
|
from adventurers import *
|
||||||
from flask import Flask, render_template, redirect, request, make_response
|
from flask import Flask, render_template, redirect, request, make_response
|
||||||
from flask_session import Session
|
from flask_session import Session
|
||||||
|
|
||||||
@@ -37,6 +38,20 @@ def party():
|
|||||||
@app.route('/character', methods = ["GET","POST"])
|
@app.route('/character', methods = ["GET","POST"])
|
||||||
def characters():
|
def characters():
|
||||||
if request.method == "GET":
|
if request.method == "GET":
|
||||||
c_id = request.args.get("id", default=0, type=int)
|
c_id = str(request.args.get("id", default=0, type=int))
|
||||||
character = returnCharacter(c_id)
|
cookie_encoded = request.cookies[c_id]
|
||||||
return render_template("character.html", character=character)
|
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():
|
def main():
|
||||||
adventurer_party = returnParty(party_size=2, party_level=2)
|
adventurer_party = returnParty(party_size=2, party_level=2)
|
||||||
for adv in adventurer_party.adventurers:
|
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:
|
# for line in adv.vertical_sheet:
|
||||||
# print(f"{line}")
|
# print(f"{line}")
|
||||||
# print()
|
# print()
|
||||||
|
|||||||
@@ -46,7 +46,7 @@
|
|||||||
<div class="block has-text-centered">
|
<div class="block has-text-centered">
|
||||||
<div class="columns">
|
<div class="columns">
|
||||||
<div class="column" >
|
<div class="column" >
|
||||||
<pre>{{character.vertical_sheet | join("\n")}}</pre>
|
<pre>{{character.vertical_sheet() | join("\n")}}</pre>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user