From 0171a05c1922eed80bd0c8e1d9c9b197bc857d36 Mon Sep 17 00:00:00 2001 From: Zachary Watts Date: Wed, 29 Apr 2026 21:32:06 -0400 Subject: [PATCH] cleaning templates, getting levels are party counts cached properly --- __pycache__/adventurers.cpython-312.pyc | Bin 25176 -> 25342 bytes __pycache__/app.cpython-312.pyc | Bin 3446 -> 5105 bytes __pycache__/main.cpython-312.pyc | Bin 6465 -> 7275 bytes adventurers.py | 8 +- app.py | 100 ++++++++++++++++-------- main.py | 37 ++++++--- templates/character.html | 41 +++++----- templates/index.html | 2 +- templates/party_sheet.html | 70 +++++++++-------- 9 files changed, 157 insertions(+), 101 deletions(-) diff --git a/__pycache__/adventurers.cpython-312.pyc b/__pycache__/adventurers.cpython-312.pyc index 61f9698fc2eda3a6b328d9ffd5f384d30c813885..494437dc80a7e86441b84c1981cfbaa5af7351ac 100644 GIT binary patch delta 1909 zcmb7Edu)?c6u-Bx*_L+DG3jcy)q<90QeMeiny^<8s}m#+0&$G4Y*jup5pOpp1JceI zEM^LL#TN*j55}CZ;nfHtX34-UaVEdB$2>lk*w&uw%C=kgFauUNhTmT2pLC zi}r{X6KcCP!7ZMml&LdU{cMv95{(9Qk^Lbz!hg~Q@Cw_@_p(UV#Mo{o*1#aZMG1Zk zq8dJ5TX)3TBF(W~vF14L_Ikw}nvTa>^y&8bRZY9#{8kYY!Rxb6!J@d8v3V@X#`EDm z&)WnZ8gR;|eRmq;EkgGCf_%R`9LbYE_?$c}fA>|{uDYyd&*ZJ#T&z|toHDxJ#w~U+ zA3kC=LZ?hGze_&h4_FSvFup-ngm07Q{SVlmMQaM-fSkLy%GOD%0rsi7#orltr_7WV zsM?ZKhQteKI)s2eghY4|;U$EZ5n2JXOK^WtfGm{<>?pFieqd=}6W(>eJjg1K0eb_O zIDv2wp$!emGR_2sp#5^6fr)o;E+d^LCXVCe=(iRox@9UDs72r8mOS=2g#{<@7IXnR zd)iLk$uapPZ!^x;Lz5Mu0#&&5Q_hddE6bkagYwbkWxNmcYqfj=j^o{=UFnJ=x4#R+ z9;=ukAs&1`!g~m(KM0H@P4DMSt8}=HOenBSBs~_UdAoA5sqL2epvLx)} z4jBsX(ZlSeFhOD_5dKi(VQ8H}^-;|+9;BR5UE)I^sEgo3B~qt_Gao3$O>)dT#72!^u}`1Ac7 zmVJh6@p%!HEj^5393$kbob??BKCBKrIMHgC0G}4RSaB)(3>f5+$6l^!-cr2S^x4gF1#T%tFk_|~u?-=?**r?7# xE^Dk9eiu#nQm}-E67h|$7TFAeYUqlzpd7Sg&Um4=mHu+by?q3hK*3kd} delta 1717 zcma)6e@xV682`TC?{UJxNt_mVZR$8wP6iazbfg>>qBO@WowM`?GTr(*lItaNt`)GQ z9hes4~w?>|%iFa3U>#lMrazqzps{wzm5N(-DVo`at7d=qnSWI49G+dPxgsl0)^ zdOSzxnHxSTw8MT{99r(U`<|u^p$dAVI-la9`RXC+4Xw-jJ&=CC+!qi$1UO6=OV|10vWelKQQ<4Likno~ zWqZjHgpUDU1e^dI2fPFzN>&tY>t*WRv4a1fVm7n1iCGY=uAkX!*vQ1vM*#=0(6w4w z8dr3$H`_uvQilUXl`_mNvkz4Xe3OOwYGphV^W4hK* zXvQlqDIbpi=xJ)-w}+;(%PDd1R`n_Qt5&O#Sz~;ps~S~;KB@Yk>@06Sm!mU0Ldk~# z=Kya5b^+GX)zTv02q@rXbE*1shjVf>%;{B!>>Xm@oc!Cmh|~KS+@G?TEdopAG81EC zh0I{Ao2pe#g@1d1a<6=(XIXgY#xPH%uSbEb-6z_r7I` zFE?v;IqDj<)b3PcG*-J_T_-0JW(&$AN4&pqqK+B5Ty;175c$pvNAyJ+tX|+tfC9$N zH+AngydPqF>pxWgIW4h<*=b4g%%(+kEn_C4WIV(vY49k@U|RIM0O-{30U+MBp5nQY zX-Tf-h^9B@s~k#gd^RoREs>H$KER*m`9>c4q=|0o zSDj+77i%^^S}65VF#Q_jvgtQ~m~^igoCay^1piG|zh}r=#kvs$@vp;BU zVx=dhc~(W^FjhJN7Z}1mExt=tDJZohucVZ0(hF%)A0?wfvwYiCr6$FchVA!xH?Scc z$7OW;wm+9Sx|65_C^HW{_Jyq`jc4a7rOwcrXmIcUY_mRzByu;gMJ_0|h#7OYluL_C z;>ZAwi3LL@89kr^Uvc1;woc8qb)~l%3fe`%x6RSaiJd|gz$0dB%a~GA6lg73D yEF}O*fHYqO%b5^jG9Y=({>onSWc%*@ZF_3<*VNHklDAi>;I9_&kH=}Kb;sW`v$8Y* diff --git a/__pycache__/app.cpython-312.pyc b/__pycache__/app.cpython-312.pyc index b4b5c6392fceb40a37e3b0ab60153852e537eed5..7689690d88a7a0edb4f7036415a7506680b75ec9 100644 GIT binary patch literal 5105 zcmbUlTWlN0agXHjO_3rgi=y?QB1XJ_VS=W&0x*~|#qA3l8&`>!3Lujq@~*xKaj7=zGV#37DJpb#B33FeO) zMww}9Gi^ef)P;0OHpC|NA$`&iG9-;5ql~3Xn3Cp@nL!$ab=Yzb=+PFkaxAvSy~;$JcOu_4@74pBoY-cIWU7$ z!N~ml(ENhL$~1`+s5s!^ZP498k4&EB&XQ@Mpcx=^c~Kvnj}T!&(!MltRnlF4dFm<^ zKZ%9eG{=8O8WW()(wxv!X=YFsj5Eu?qY(h4w0P~4s_%5QocY>YL7J zQ860h5<~tXw5soo3&kM8rLI1kf@)FOW-ae<(m49rZ$N(r(GYJ_DK|#WtkU6`_u8I) zqG;%Vjaj3xN8KN%3tO6KR4HanLfsAR0347h&oX-cMRZXo8VSa z_gnNkjmjB=LSxB>AYm2zXuw!kSZ zi?EQj@4|(B2QI+J5PuUFjvcsgh~S+>hZkjAccI++UCP1>DqjM88>Mlumtu+RedoPe zs8-L)I)UyEGQqcf8{~0`uJ~b&9i%wvg7;2Svcm|8p_MxwJA03?GKTZLInurC5nG@YJ{VP4Wk zxEqUhiWE!D_+q?IM%)8YF*SpIa(MH}&SQQ3a>A>Mr$CwM2**ph#YF77WTv3xJS023q_3g1M+t`1 z=!}|2yb5H;V^Kk7Thc>D0a}nuJQl*TB9*Buo@4<@aSGVQgeNpo%lV6Bj&ZOWn~q^3 zv0NrO&r3!SGAuJ>Y;b^6GNaAB*OtumI7Rk=M{>~Q2Xo=NUL|X7MgE5MH<`aJIw!qU z<4ja)QOJdr6F8~0_O7ynIY3dB5avJwk}-u}3)3~?qeM)yMbOkxawdTxUiH zmquuqkXXeGUxB$B9{#W3KJTD^w|5kD?ux7Z&PBPa8d~1E_4=*lwvwT{>S(`f{lHpw z_=*l+zJ0y-^S*+^S8|Ny*#84G@HsE5^{*ed$U$kwwU!sSNe(4&dhj|Zd zxQ8mf{xxgScX;W1HE?+S+Jj6fFi{R%DF&_-+yj;VBZZL*#r_LRlNFWLTFV3WL1x1} z@eERxeTUaW>#@SVQ%jc`8*S^E2YACh{ta;2`}>~43upeeQ2046BuQcM_BRMUcUtol zOz20NoN-f+ynW@4p<>6-6U3TEbLT6a{pHT#V&`z~Qq|MBYF;ttkC*$76#I^p`i_-6 zBf0a{j;__Nm9G3kdGJ_q@K|Z^c&Xz=?n2e;D|-(Xy$9D%l)PhQ??ll%QS!c&`*FqU zE?aww)}Fj=?UxU&FK$}kpiL`scyjj5IR+Vflmf;atlyvSlq=NB%H_&B1Q95{;8kh6 zmnh^jL9NG|@uA$=+Tyer+S24wrC!!FN&+>AW}9i&ONRy#k`NJzH}Saxj)>%xn-Q$) zzBv3**xJN;c?qQ%t@7j+r%`uH6Y3>Eyq?52P{exDx>I7mEuGK`d)2+7wl1|UWfkiG z3^Ogwk1Tcxbg?z68qwha6YQa}t7X*Wzen)i`|v^xZyWIkPwXL2NiKMA^M7}z*NQO0RE zLA$fi@zh*o=c~9{bKMkq@+yEXQyi$az~4Sn{p*+DU+vCcAES<~?CLAJ`tswlhjsOp zTw^8s$(*iAUF16_SA=TUzSZzbctJrO>KiEgMvA_X2i+y#xq`K;+SR)nS_$3P zeQN*2UKlxF@?R+XuN3`PO8%)**HzfjKD2hL)IRq1xkv52`QH5LU)|1~t6IE;z5Ca1 zZdgtgbf@G?6mZI_kaWpNEJbKqDzVe_?+KyyEUSUgTcD_z26@RQ!^6DtpM=o+AQ{8q z6r@ezFr;Mj^O8QAPEE&VB$lKz@Nbm1Yo@K4nHAH5}a?v3;vEqJ0n{~hgH=GV;yOLr0VRJsDn zYi_KFy#GLkoc2vCU}@O5I$rO{9eShtYYoE;KGh78z<)J`!f1YCZ6H5Ju?~K%F*Bzbigrku$^!il*=$kC delta 1728 zcmaJ?No*5W7@pm;#p9LOiDL(n5S%nP0SY2OXsRGVN%(s8_dmt33Z(@*F`X)e zIvB&u%Z!hx(B>~xf}{$)<^(&?#b|w~=FAZO`+}5XuOi&ISs@u%d^l zusT^tqEt7nvz^o6*qwV6rjzHeBxm}$)aZ(DDGRh~8FfKXwEYX(VlhcNTvoo4apRyH zE(2oFCBvqVk6#dgqAi2c>!=B!D+M%kjsQE963i$-bx2hM4w07~s-Tuj4lOS)E~yUt zk)mbX0JT!gUvk)7d2tCSs_HOGDOZ*i^8-FS(S{BqD=6gfDs0M?%a`*?l6$ck5J!tr zuzSf&h$kry4$Y6nUDYEHpi5PMh0eep)8dVb*DtOv|4hePV(@PIR=O$1EHPGldn5a8 zt|7*3and;Te<^RYHdGJW-eDuz;&$DuHinP>@NVO+3ys{ugYLY|6^y|h1`G8ygZr#t zb>CBrCdZ9@E7V=%J{La|?a+`h*Ybtd`8B?FwAnjm^^V!SDcd)0oN4*P>wRl|wQJ2p z%1Wf{#DwiXV7%4}M4EvSD=@M#X$KBB11GG&2|IAonBAt>8)vVdU7f2Rdq|~r1h~?U zi1A)y6d=N_@F_DZB?#W-H~Cnj&1ouV{wTeK^XBi;FfJlCm~%c>@WOJ}3VsxO8Sjt> zvOVxT7w(`JPYvO{8gPkl7&$(}vn3 z43pWaXN&7h2l>v=10+4L7da$ufYx@zrDFD)0y4Q`R#n?fCmbr5$;<9w#aqoSWI;Bk zDWEM692|gs$sq8cITFaBML|DuyOBfEbUba=s$dL_{L7%IWT)zhegVEo7s|bHG_`k;Flfzii%#B{m9Hm{_g559HEO+e}nEnIug8h zuHMye=}jqNNr^h;DoIM%(xfdMGiF-h*m`CyQ-8w>j~MfB<96hg1{H3F zqwD9_&VNaLC4C_^#;5K6SDXE3to}20|EwKO8}r-2-Sz5zD>z}Kw}ohJ&=L~H%(mE5 zJ7S3gP^(h3DUDjvs4a~dr?-Q>wX_vX8tEqt=8M%s8*e_44jQK)`QlCApyeC1eS4o` z1f94=-NbKBJZ7a;w&t%*KV;)OGz|a2V0^R@P2PX!0XNkkrd%N<16}QZgj&qzOJLCa zCU9X4y;%Ud7JxniZXNJL^cQ=4u`Dkal__uz4$)UY-7+VGl_Or<`;5eh)D8jB&K|gn g8`100o5$;?Hul!1jHrztctQm5lc?yRi`-fN29V*xKmY&$ diff --git a/__pycache__/main.cpython-312.pyc b/__pycache__/main.cpython-312.pyc index fbc2f369af378b3c52144859335649ca8aeaa40e..cffa1dc8cd2e6f0698965ca413e24271e69a012d 100644 GIT binary patch delta 1925 zcmZ`(U2GFa5Z?9O`R^Q`6Wg&JCyqk`!6cB>bcV zXT=hOxq zG;NwTMI86O{LO~<(GTrA?Irj$9}(#T`+i{$pl;Hj*o|+~F)?Kh!#sm%UfhX4rPYo@ zn>NNxss)_J(C{KISu>#0Ce>D&A*7i!`iIp^=NvW*7w6Kv#?ePro?RMBIxCnpeF2k) z8Xw0qRS<<&t1BxSSBal=(<8Vplom`#6ErUAsX*2=WO%R2%W+8`gE|(u(o&i$r9SX~ zsTBcI^Amkgto<4;9|8l~v=+N!B?ENP9BO}csAQl5Thpc7)aewlQGohaZ-oNjxrcPX zd2qIM8cm~!aEJsU$_yWkU)W68N&aM)9jPJ>phy=J+d$}?q7uTE$aXe$Or42N%Va!u zCaNf82lER|NNmxbh|4K8aWWwjQqR005D_zB_15{=cp^^ru&U9Q&U(QNMwkYr4s$11 zN-Z6d)&&ENpEobWKa1o7ZP|h4K=Z=DUH&`!J^NB%H_b|W8uINux%Qs>yYjumx!&PN zBjfpzRBj}-G%~f+aE|^eh0XIl*ZZ&a(U(#OuBL6S&Ye6&uMGB|>;Nwe8Zr{0@yZ&~ zIGB~`1_Z-&m)JB**x@3)@e4*(bRjl*KBXGfP+06R4B`euw<)qZJ{2YE^o)Oqse^J# zCQ)^gY*}6D1)vfJkwFDdAj{9$3f?+U_Cjz&mVa#Z7sBhZ{1a;fSr4EXeJMI<(sc=U z(Z5|EUZY|Y!Dw*WBX`%j`%aD=2XnHr+cYOXS%y9*zq-?|%Lvy)A*fwVEv z4npS=@EeThq?-wLGSbfk3rvpO@HA~^G`NgbOuW#%(7A#@-5oa6_eWo_S<&GX25>QK zn6%&X1Ma4rcf0To>>H(fy{GUP{ldEe2k6h<~%&~m|^1$?uI0U{kFlU+a|KN zVn=xTmCrw`3kg*|tLPSBP*hb(#Hu@Er=uhqQ{ffH6ERhH#7<8ta;p3!R|Du)c-kd| zH6>phXS;Mfq2mjR6_PO8vQeV0FGl33D)&|*A4{mG`ylu%ISJS^@G0j&0BPM#3tMvT zt(n1s7?^L*iLIHwf}?JJN6yil*}p6W@={w)YFm;vXWlHhgY$zqcO*0TR0=M5ZjC&a zI>GA-6&%EdcNn0HMGKk`*+cuIZUT&?{mT(Gwt;4 zz!o~;3)amDtYvLA+7}svLqUUKd?Q_S!ROgVjx(2_y8s2v=sbZk8E=xj%RnbU=yp|B z)N;LI;JD$h70!Zwp9cL$%@=PSc`S9%^ZszBSbFm26H!I(+C~OhgjObup4Y)FBQ>L_ zQ7LkkKJc%zPr;mVPdQAV`J1}h@%rZoL~#s@*judQu&-#hVNcO-!J(BJ#5=Mxzi@%4 Py!C?vD;(nM4EFv5%d@ud delta 1185 zcmY*YU2Icj82-NV)199FoOV6!`ZEe_dbyZm?DspauYrHLrGPr3JKTUTfaH! z04%9Tq^guq;Yan2K$_dXBo?(uuI0-KL|n&c0?xW-J^Q%&A=%L5i_(%4esCS3AA#Z? zi$yJ36y`mIEKsxUc^oF0R^Sggpb0j%AQb6>XbEuHtxMeKhRYtki>+DWcC=_}|3wQo zsVz_Yd5)M<5{M;P!gM>_bp%9#XSR8eTca@Haf-r=nLBohMR8`BpZ*xHwcWz=^vL13 zM~A-^HB1RM^M8{qql29^2wyqcB<}ZO?-HX+Yv6ak248#S4w4JB`yrHgZ>%V0k4VPFCn)p{LR!H~hyx^6@Jt7l$85x>tv<_uM{kV#){)HlSNV|+M-jUagwV!_?}4{`BhvMI=N_iA#JaCT?B#qMYSLapib$Z6V)LnZit z4ncRQUp~V_vM>>vqFHzt+Dn7*EEG*z1lQi6O96`(1WLw<#Am~t+&Lk#(^#=Jj-v<& zY>+b;?da~yav{$@!`}4ATDY$D)U=)^5#)|Val_@kn!1u&&VDwu5eR*n-jX>C*CT79 zbW4Vr=-~;+*i)Q7&-pTE3=h<3o2*Qg%@S*^#CEmT_!AC>?YCNK$aAbRYqBr`xF8Mx zRLRU4@1Ae%My^;Xn6MQM_Kc%V$rs;iK@HU`8K%8I4F$KNP|h>h6${DdxZ@-Y#xSeJ_Tfxn`W2EB9lp}lm^ q7U86Mn!0GP85L None: + def __init__(self, c_id: str, level=1, attributes={}) -> None: # using a get() method to pull an attribute else use a default value, https://python-academy.org/en/handbook/get - self.id = c_id + self.identifier = c_id self.player_class = None self.level = level self.strength = attributes.get('strength', roll_dice(3,6)) @@ -117,6 +117,10 @@ class Adventurer: spell_book.append(random_spell) return spell_book + def set_level(self, new_level): + self.level = new_level + + class Fighter(Adventurer): adv_class = "fighter" diff --git a/app.py b/app.py index e9ae2f1..f439c63 100644 --- a/app.py +++ b/app.py @@ -19,39 +19,73 @@ def index(): @app.route('/party', methods = ["GET","POST"]) def party(): - if request.method == "GET": - count = request.args.get("count", default=4, type=int) - level = request.args.get("level", default=1, type=int) - adv_party = returnParty(count, level) - resp = make_response(render_template("party_sheet.html", adv_party=adv_party, count=count, level=level)) - # make a cookie for each character - # this took a while to figure out, json alone was too large, b64 encoded json was too large, but it turns out you can compress json as a cookie - for character in adv_party.adventurers: - cookie_string = str(character.id) - char_json = json.dumps(character.get_json()) - compressed = zlib.compress(char_json.encode()) - cookie_data = base64.urlsafe_b64encode(compressed).decode() - resp.set_cookie(cookie_string, cookie_data) - return resp -# return render_template("party_sheet.html", adv_party=adv_party, count=count, level=level) + stored_adv_party = [] + stored_count = None + stored_level = None + if request.method == "GET": + count = request.args.get("count", default=4, type=int) + level = request.args.get("level", default=1, type=int) + cache = request.args.get("cache", default='true', type=str) + adv_party = returnParty(count, level) + # check for cookies present + if request.cookies: + print('there are cookies') + stored_count = len(request.cookies) + #print(request.cookies) + for c in request.cookies: + if c.startswith('adv'): + cookie_encoded = request.cookies[c] + cookie_compressed = base64.urlsafe_b64decode(cookie_encoded) + character_dict = json.loads(zlib.decompress(cookie_compressed).decode()) + new_char = createCharacterWithDict(character_dict) + stored_level = new_char.level + stored_adv_party.append(new_char) + # if request arguments match the adventure party count & level stored in the cookies, just use the cookies + if cache == 'true': + print('caching is true') + if level != stored_level: + print(f'change party level to {level}') + for adv in stored_adv_party: + print('...editing') + adv.set_level(level) + print(adv.level) + if count == stored_count: + print('counts and levels are the same') + adv_party.set_party(stored_adv_party, count, level) + if count > stored_count: + print('extend the party!') + extension = count - stored_count + more_party_members = returnParty(extension,level).adventurers + extended_party = stored_adv_party + more_party_members + adv_party.set_party(extended_party, count, level) + if count < stored_count: + print('reduce the party!') + reduction = count - stored_count + reduced_party = stored_adv_party[:reduction] + adv_party.set_party(reduced_party, count, level) + + + # generate page + response = make_response(render_template("party_sheet.html", adv_party=adv_party, count=count, level=level, cache=cache)) + # make a cookie for each character + # this took a while to figure out, json was too large, b64 encoded json was too large, but it turns out you can compress json as a cookie + for character in adv_party.adventurers: + cookie_string = character.identifier + char_json = json.dumps(character.get_json()) + compressed = zlib.compress(char_json.encode()) + cookie_data = base64.urlsafe_b64encode(compressed).decode() + response.set_cookie(cookie_string, cookie_data) + return response @app.route('/character', methods = ["GET","POST"]) def characters(): - if request.method == "GET": - 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) + if request.method == "GET": + c_id = str(request.args.get("id", default=0, type=str)) + if request.cookies and c_id: + cookie_encoded = request.cookies[c_id] + cookie_compressed = base64.urlsafe_b64decode(cookie_encoded) + character_dict = json.loads(zlib.decompress(cookie_compressed).decode()) + new_char = createCharacterWithDict(character_dict) + else: + new_char = Adventurer(1,1) + return render_template("character.html", character=new_char) diff --git a/main.py b/main.py index 76a92a5..e05c87d 100755 --- a/main.py +++ b/main.py @@ -43,27 +43,33 @@ class ClassSelector(): class PartyGenerator(): def __init__(self, party_size: int, party_level: int) -> None: - self.size = party_size self.size = party_size self.level = party_level self.adventurers = [] self.adventurer_types = [] def gen_party(self): - c_id = 0 + c_id = 1 while len(self.adventurers) < self.size: - c_id += 1 - new_player = Adventurer(c_id, self.level) + identifier = "adv-" + str(c_id) + new_player = Adventurer(identifier, self.level) attempts = 0 while new_player.player_class not in self.adventurer_types: attempts += 1 selected_class = ClassSelector(new_player).selection() - new_player = selected_class(new_player.id, new_player.level, new_player.get_attributes()) + new_player = selected_class(new_player.identifier, new_player.level, new_player.get_attributes()) # i couldnt randomly generate a scenario where a character couldn't be added, but it seems possible, so this is the hard cut off if (new_player.player_class not in self.adventurer_types) or (attempts > 10): + c_id += 1 self.adventurers.append(new_player) self.adventurer_types.append(new_player.player_class) + def set_party(self, adventurers, count, level): + self.size = count + self.level = level + self.adventurers = adventurers + self.adventurer_types = [] + def get_character_sheets(self): sheet_string = "" character_sheets = [] @@ -94,22 +100,31 @@ def returnParty(party_size, party_level): # return the created adventurer party return new_party -def returnCharacter(c_id): +def returnCharacter(identifer): for adv in new_party.adventurers: - if adv.id == c_id: + if adv.identifier == identifier: return adv +def createCharacterWithDict(character_dict): + chosen_class = character_dict['player_class'] + c_id = character_dict['identifier'] + level = character_dict['level'] + adv_dict = Adventurer.get_subclass_dict() + chosen_class = adv_dict[chosen_class] + new_char = chosen_class(c_id=c_id, level=level) + for k, v in character_dict.items(): + setattr(new_char,k, v) + return new_char + + def main(): adventurer_party = returnParty(party_size=2, party_level=2) for adv in adventurer_party.adventurers: print(adv.adv_class) adv_dict = Adventurer.get_subclass_dict() test_class = adv_dict['fighter'] - new_char = test_class(c_id=1,level=1) + new_char = test_class(c_id="adv-1",level=1) print(new_char.adv_class) -# for line in adv.vertical_sheet: -# print(f"{line}") -# print() if __name__ == "__main__": main() diff --git a/templates/character.html b/templates/character.html index 048d536..2042ee2 100644 --- a/templates/character.html +++ b/templates/character.html @@ -10,31 +10,26 @@ -
diff --git a/templates/index.html b/templates/index.html index 197cf6e..158f3d1 100644 --- a/templates/index.html +++ b/templates/index.html @@ -23,7 +23,7 @@