From c7f5852c34b7b3a915eb153f077176ea43a703a1 Mon Sep 17 00:00:00 2001 From: "theo@manjaro" Date: Fri, 10 Sep 2021 19:22:30 +0200 Subject: [PATCH] First commit, engine import --- gamedata/assets/empty.png | Bin 0 -> 620 bytes gamedata/assets/grid.png | Bin 0 -> 6421 bytes gamedata/assets/gui/button/base/corner_dl.png | Bin 0 -> 5829 bytes gamedata/assets/gui/button/base/corner_dr.png | Bin 0 -> 5848 bytes gamedata/assets/gui/button/base/corner_ul.png | Bin 0 -> 5645 bytes gamedata/assets/gui/button/base/corner_ur.png | Bin 0 -> 5617 bytes gamedata/assets/gui/button/base/down.png | Bin 0 -> 5831 bytes gamedata/assets/gui/button/base/left.png | Bin 0 -> 5733 bytes gamedata/assets/gui/button/base/middle.png | Bin 0 -> 6484 bytes gamedata/assets/gui/button/base/right.png | Bin 0 -> 5770 bytes gamedata/assets/gui/button/base/up.png | Bin 0 -> 5880 bytes .../assets/gui/button/baseAct/corner_dl.png | Bin 0 -> 6104 bytes .../assets/gui/button/baseAct/corner_dr.png | Bin 0 -> 6087 bytes .../assets/gui/button/baseAct/corner_ul.png | Bin 0 -> 5892 bytes .../assets/gui/button/baseAct/corner_ur.png | Bin 0 -> 5906 bytes gamedata/assets/gui/button/baseAct/down.png | Bin 0 -> 6082 bytes gamedata/assets/gui/button/baseAct/left.png | Bin 0 -> 6064 bytes gamedata/assets/gui/button/baseAct/middle.png | Bin 0 -> 6286 bytes gamedata/assets/gui/button/baseAct/right.png | Bin 0 -> 6047 bytes gamedata/assets/gui/button/baseAct/up.png | Bin 0 -> 6086 bytes gamedata/assets/gui/slider/base/circle.png | Bin 0 -> 9814 bytes gamedata/assets/gui/slider/base/left.png | Bin 0 -> 795 bytes gamedata/assets/gui/slider/base/middle.png | Bin 0 -> 612 bytes gamedata/assets/gui/slider/base/right.png | Bin 0 -> 848 bytes gamedata/assets/gui/title.png | Bin 0 -> 12861 bytes gamedata/assets/icon.png | Bin 0 -> 909 bytes gamedata/assets/particles/bolt/0.png | Bin 0 -> 5784 bytes gamedata/assets/particles/bolt/1.png | Bin 0 -> 6004 bytes gamedata/assets/particles/bolt/2.png | Bin 0 -> 5628 bytes gamedata/assets/shadow.png | Bin 0 -> 58221 bytes gamedata/assets/solid.png | Bin 0 -> 4797 bytes gamedata/definitions.py | 70 +++++ gamedata/font.ttf | Bin 0 -> 75864 bytes gamedata/game.py | 243 ++++++++++++++++++ gamedata/objects/base.py | 18 ++ gamedata/objects/bg/backgrounddrawer.py | 31 +++ gamedata/objects/bg/menubackground.py | 23 ++ gamedata/objects/bg/movingbackground.py | 12 + gamedata/objects/button.py | 89 +++++++ gamedata/objects/gameloop.py | 68 +++++ gamedata/objects/info.py | 37 +++ gamedata/objects/menu/mainmenu.py | 32 +++ gamedata/objects/menu/menu.py | 51 ++++ gamedata/objects/menu/optionmenu.py | 16 ++ gamedata/objects/particles.py | 46 ++++ gamedata/objects/sliders/bgmslider.py | 16 ++ gamedata/objects/sliders/sfxslider.py | 16 ++ gamedata/objects/sliders/slider.py | 79 ++++++ gamedata/scenes.py | 24 ++ gamedata/sounds/sfx/click.wav | Bin 0 -> 21190 bytes launcher.py | 14 + 51 files changed, 885 insertions(+) create mode 100644 gamedata/assets/empty.png create mode 100644 gamedata/assets/grid.png create mode 100644 gamedata/assets/gui/button/base/corner_dl.png create mode 100644 gamedata/assets/gui/button/base/corner_dr.png create mode 100644 gamedata/assets/gui/button/base/corner_ul.png create mode 100644 gamedata/assets/gui/button/base/corner_ur.png create mode 100644 gamedata/assets/gui/button/base/down.png create mode 100644 gamedata/assets/gui/button/base/left.png create mode 100644 gamedata/assets/gui/button/base/middle.png create mode 100644 gamedata/assets/gui/button/base/right.png create mode 100644 gamedata/assets/gui/button/base/up.png create mode 100644 gamedata/assets/gui/button/baseAct/corner_dl.png create mode 100644 gamedata/assets/gui/button/baseAct/corner_dr.png create mode 100644 gamedata/assets/gui/button/baseAct/corner_ul.png create mode 100644 gamedata/assets/gui/button/baseAct/corner_ur.png create mode 100644 gamedata/assets/gui/button/baseAct/down.png create mode 100644 gamedata/assets/gui/button/baseAct/left.png create mode 100644 gamedata/assets/gui/button/baseAct/middle.png create mode 100644 gamedata/assets/gui/button/baseAct/right.png create mode 100644 gamedata/assets/gui/button/baseAct/up.png create mode 100644 gamedata/assets/gui/slider/base/circle.png create mode 100644 gamedata/assets/gui/slider/base/left.png create mode 100644 gamedata/assets/gui/slider/base/middle.png create mode 100644 gamedata/assets/gui/slider/base/right.png create mode 100755 gamedata/assets/gui/title.png create mode 100644 gamedata/assets/icon.png create mode 100644 gamedata/assets/particles/bolt/0.png create mode 100644 gamedata/assets/particles/bolt/1.png create mode 100644 gamedata/assets/particles/bolt/2.png create mode 100644 gamedata/assets/shadow.png create mode 100644 gamedata/assets/solid.png create mode 100644 gamedata/definitions.py create mode 100644 gamedata/font.ttf create mode 100644 gamedata/game.py create mode 100644 gamedata/objects/base.py create mode 100644 gamedata/objects/bg/backgrounddrawer.py create mode 100644 gamedata/objects/bg/menubackground.py create mode 100644 gamedata/objects/bg/movingbackground.py create mode 100644 gamedata/objects/button.py create mode 100644 gamedata/objects/gameloop.py create mode 100644 gamedata/objects/info.py create mode 100644 gamedata/objects/menu/mainmenu.py create mode 100644 gamedata/objects/menu/menu.py create mode 100644 gamedata/objects/menu/optionmenu.py create mode 100644 gamedata/objects/particles.py create mode 100644 gamedata/objects/sliders/bgmslider.py create mode 100644 gamedata/objects/sliders/sfxslider.py create mode 100644 gamedata/objects/sliders/slider.py create mode 100644 gamedata/scenes.py create mode 100644 gamedata/sounds/sfx/click.wav create mode 100644 launcher.py diff --git a/gamedata/assets/empty.png b/gamedata/assets/empty.png new file mode 100644 index 0000000000000000000000000000000000000000..11313bb07e8417bac29661efa4928ca15cfeffac GIT binary patch literal 620 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1SD0tpLH@YFt%noI|q0=J1Z0v<)>xlq%tsQ zOst(~>v7mY=4gEIR;8(YZx=k8u+S<}V1L0CEs=#zD@CJ94R(HU&bTyT$qoyyb*$|6 zVypS|&h4_=!PWGDy<_(5$&0$D{Mf(bg3__($8~#lf8SBf&hgbK_-tRG!&M#SxgFg% z?{rC2xQhQ0Jfw0+$oT8c5G~I0A4~b=Xr-_B z^F97DiK?E8cItA5FPe_@$4rl{dmK{|@nEK)^5l8SeFEJ_&8FR+F_mX(MU%y<6;e;R zBd3d=i=K0}XsYS^lkpN~vQK-*EVt}n5!=uq;&Ng|5_4)q$Hi3>lazda7xMpacYPK+ZwxHPg8r(INjRe{$xGLNys-hQB9;->31_wL@kcYA;OtiOL5CT}R(vi0agKVZCY7I;J!Gcf2WgD_*o zQu{KXAbW|YuPgggHc5UnmbHraOMya?C9V-A&iT2ysd*&~&PAz-C8;S2<(VZJ3hti1 z0pX2&;y^{Ao-U3d8Ta1aauj4R;5odZOy}@?kHRNv#ux6-PFb~@O{Fqe4ycS+aDcxd b_x^i+?>v^3JYEu~LE1cB{an^LB{Ts51MBja literal 0 HcmV?d00001 diff --git a/gamedata/assets/grid.png b/gamedata/assets/grid.png new file mode 100644 index 0000000000000000000000000000000000000000..698feaf1c3db9cbdeb3f75f11933cd1b5f434731 GIT binary patch literal 6421 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 literal 0 HcmV?d00001 diff --git a/gamedata/assets/gui/button/base/corner_dl.png b/gamedata/assets/gui/button/base/corner_dl.png new file mode 100644 index 0000000000000000000000000000000000000000..ecd051c72a99ee2a091771da9f6aa0f9343cfe97 GIT binary patch literal 5829 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Ɍi9vEMv5NODOGBef+y=y3Tjd* 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 literal 0 HcmV?d00001 diff --git a/gamedata/assets/gui/button/base/corner_ul.png b/gamedata/assets/gui/button/base/corner_ul.png new file mode 100644 index 0000000000000000000000000000000000000000..6527f46ef8a623a3f6559d98b235b21bf4b2ad35 GIT binary patch literal 5645 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 KK6||uE&DfhaAsow literal 0 HcmV?d00001 diff --git a/gamedata/assets/gui/button/base/corner_ur.png b/gamedata/assets/gui/button/base/corner_ur.png new file mode 100644 index 0000000000000000000000000000000000000000..b605b861319135d58f76d5348f137ecb9e6c8f76 GIT binary patch literal 5617 zcmeHKX;>3i7mkW-N)@aN6eR?0u{dNB0$G}{2mw;rBot6vaWXSW2C^}kkbqioK?MZ0 zYK4N;qIGR;#jWlOpe>49(YBz7N&z=eu@n@gGXXJv^|PPP^Yx#3o+NYceb0N&eeXGE zX0l_V!W`^f>}fQbgCsm8mi)J)zP8rnZ~b!Xp){J6b4FYu5epgVI$SHqR4AQD*P(RO zgvn_%Q_bD@X?t#X4(?J6-)S|r-@M=N2^DGJskQxwH5nd93D$HTNK<{kL_B$1cEQuL zSIfGx=C2uaB0bMNYewo14NeN8M3i6Jf?V0}7FGjXsjcdq2RZF3J=wO$`0M#iPm0^e z63%l3HKQw=J8$O}?>%(6_Eg%B_s^dXr4y%BwNGb!;8eHx^8JswCCf_cfNw8~cGhk* z9V+&;aSI>alK*XTcyrjEsAGzvz_8!N`S)$U+H~!~Ea%Fj<)4I4Xqhl;-O3x4-w$hv z|Ljae6=3U#4HYH>3M_F`|XcXtfF5tQ$Ox>P4j+tR<}#+jVY_mxhVwqQi|wuq`L zLI;O<$%U~KpXMYw7IcQ=`xLN`0}^bRKZMyi`Bjr z=-Aj!n?DOj24rsvj4xbeD-3O3F}JuP)m@r>u*rJmosj<9et0_PF)7EW2XGe_`;OPp`=1=n%=o8iSS za0KhUC|S(L*%SRY7Q|LMuaKM0bO_*(Gg-NBC(N=FPnxi$A?Mzf?T=ixUP_c!coIw`Q zT-~zu^6LH0Bd=b_b6e#j-5>3#*hmbi6y0vmN>*#E4deHeo|_Q+E&U1TsV^T=d#818 zilH3m0^G#*ZRWNA=}z!?<_fdX1X)-%SdGE z7`yQWO#$n=@q`>Pc5;2m31inq%riP`z%1m>E>qDi8}+`gl;O@U3v!~-m7DiXx<7S5 z=i%bj``X-pN?!5X!Y}J9o0NGEJM3~wJM)HYxLR=HSp0{A3|p*Vay1~;jOngwvVS)_ zrFDA8$VXGYZX^Df)Y0g1`%&fjVNbmtWv3iJ(r?b!SA}ieW1ciFy`&$|d+Afy{@MCp znz?7Yj)WcQj2X2i|FA=MLNoWf1>N28?ng?l9&~#8-8rrQ+o4x^k0Kvc&AiyO&v&hz z$IZq=x7ws#b8-S2i!Rs7n)~e~lYm?6BMLl%SgbJse zC>~pJjeof1+KtDQAt2Q1sL{W|yPF?aBb^>++Q zjmBN=?X88Oa{|V=;aOD&zo?_phU8*o(@uhM8ADUQ^Rd2HgxHQbdfz$QXLC7DwqEZ;m$zh)q};o8fOy7vhLq5E~NOOF@oA z3?)J61WcyUX!JJvcx!P5lf~!rnIN0VW&GS`D4z zgk)L+A!0Ddb$Ty3xeAL-H-yzkq(GmpK-*u7VIPY@nPbCPNS(4j|{SL4d>J z`2dhFhX-)vJQVb0u{b`ymK4!AMpgo(vW$wNLP#o@&*yUZTpxhTmBC~*kPP7akVBZo zmh)w>4-W+S=4hyM5Cp|YL=3h!_NgR@_8L!88wr%vXW` z#w1m0jhg?B=Q*^GB?u>sT0A8hkCr8)F!5@hmx243V#!{oC-8L1KWyqhaKfH+4JU22 zc)EpuDVo|d>S;(S%q$h1Zf*hs2=0+z52c|!iAL(!vji(4jRGaRZEvYPo5x;~#t0kc z`LehO0D`_`^72?*K*p7WfG^5Ld_j(!BZE-$0r#=%wQ|A;;b@S8%mMP8$seQ#3!les0V$2wT6ODBs~NkkhpuXO(sU=KqC2BR9i_En)2xBtdSHkf69xKf_(!-Q9Dn`)6j)wGAw0 hgocJ%3#Nu8iD{g@R*u({yiO8IlZc~2wojZf?=PMZSakpZ literal 0 HcmV?d00001 diff --git a/gamedata/assets/gui/button/base/down.png b/gamedata/assets/gui/button/base/down.png new file mode 100644 index 0000000000000000000000000000000000000000..c089a42bf020b772c64a3b615a58def50e6df973 GIT binary patch literal 5831 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 SY=qIg31PF`9g9|Piu)I1D9`c$ literal 0 HcmV?d00001 diff --git a/gamedata/assets/gui/button/base/right.png b/gamedata/assets/gui/button/base/right.png new file mode 100644 index 0000000000000000000000000000000000000000..50cf5dff3d1460ff1cd23c7ce4c0aa7c7ff267c3 GIT binary patch literal 5770 zcmeHLc~}!?8jo8Ai>S0!5wsZMh2Z3v9Ashwas)`1AOhtOD@-PnFp|s3K!Spxf<>v~ zfvgCvrKq(QtcX~PQmt0S1FF`$9!T*P0Y%hBWoH6H*t&LocKe?^Pm=HWy}$SU-s@v# zNoYvmU^{0!8jUts7UUmB{=Q3n2HKF{^($>0XtZ~3&W(sB!eA5Kfa_J52Bi}z29%DP zF%^wwzE~X@v#QbE{@J-nHwFexUikaAwb`acre`wt^*cE0*Gi(09Y1`8Y|}VLZD;4X z+e4YHikg&Vu37Ph9~xIFgTK1)9XL;*YwuWdw&wd}(R_!slLL02J+@uH4XL{emC2uM ze__}$p@{SF+!%aTJD$ioR{V2CN!GpxKUQFOv#!@1^=)jwS>=#5?9q*cvaO$A1`pnC zD*dQs!I@%{BEoOKc$OPqU52$jZkf=3Tv^z%L9af=c~9Sq`eBqitdzR%UG4 zCAlGr_05@3xby_3bO*Q8yOvM=y>9s^_5D4y<@f;qiG^+fE8UYXGIj)oHJ!M$EZ~w< zyS+9bDDFLv5h`d~%O%g+CilRf(~#0(i@7dylCZY+YX$9f)0@Yt&7rB+>~<;rdGYqw z19Crh$n0nsw)E77wL`zUI?FG5(17O~poWYKd6%WFsmp*Vgv*8IlSLOQ3M&EIF9*(> zm*L|D2^N&y+!r9ta}o#KTD@Rq>FWIv1=ats$!jPb>|h&{QQf-y!OR@rs>10K*Uazx z{ov#px;VNnB{R1wD7*MxndwSL{h7e^sY3*x*$?tL;C3LUO!UY(fF-B;hRH@=iB0QVi=J@SX#7i z3(`NhDK>HE&=t@5PYM0yr=L9=Gd9*`{QCQ4Q@p3PPYHZ{=JQ`_zE?rdvLW4*8l=OLzoi`+ z`OiV$)!i13?ets`Yo-FjDw3U*e15-yIj0?|+8$Mu4_CVF1u4H%-%$GPqHpN~=Vu5Z(WI)NC7pk_0~BK6 z{lmNGZHq4gW3fDPjn*zkr(UJVmA7tenbH54H%_!gR{J4>2uWDO^ZvAz%uYFGR!v62s zxx0Ot4KjAz*$^FcV*cp^-nX8N$0s$qXRJi}jZawdq4$$9&+eZ+8WOTg_LG}~xx6X& zy)V-oH%DnZI?nIBJ29ivY1gU37h!|fJ{?zm@$~+{sm%hzoXe;4B=xxMNHeGmPafwj zcP$)n<(FH9r>1rSCn|5WpFMy0_B$&!Y;Ew|_meAoUCF(qT$5=>dwX+1K)Scf7(AnXpo?K$&K(fo#zgkj+okz;C^#h_at zM52TdEf1yp>2Z|KWAd16Kx)R4L57zdU5qPLqA>q}ZVGZHVI&ZQLBwL2OeUs@%hcm) z76*bL78_)NAV4AjV~UP|&4A80mZIq5@JEdZju{9{ucK3(utJ|iNEi%qpWaPQ?jlk% zx!A3Mnp^0NgpwsACp_{zB!C67*+PH~0wBb)mM3@R@*ZiOvD=HJKUrqjz~V63EUmVW zgprUY_v(A4gfW7=30YyNQJ;h(s5BYX5o4{D8Z=2pYn@3(lv=Xbtx>92q)`^l)-r)I zd1#LekyQpBFUK;$-_leN<=^gRSEIf01pHqK%sykfXfl^xrhLQIVfmF zF%8GaN`N)iR#8++k_u6BIH*v;19)tnC%{8M1Q7BR5P#W_&3Pa$C`9=v3a}Ljc^)Ci2Oy-_cdEkw}Z?o&IyWYqHZv=juUH>;lBXL CO@6ij literal 0 HcmV?d00001 diff --git a/gamedata/assets/gui/button/base/up.png b/gamedata/assets/gui/button/base/up.png new file mode 100644 index 0000000000000000000000000000000000000000..5e23727ad34ce3cbbd2a9c1115c8c25ab332a3ed GIT binary patch literal 5880 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 Sn!;{CgrSg!2W}ZLIrU%B37zi% literal 0 HcmV?d00001 diff --git a/gamedata/assets/gui/button/baseAct/corner_dl.png b/gamedata/assets/gui/button/baseAct/corner_dl.png new file mode 100644 index 0000000000000000000000000000000000000000..1713b3535cccf498ed73182e39d825dec7e1ea61 GIT binary patch literal 6104 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 literal 0 HcmV?d00001 diff --git a/gamedata/assets/gui/button/baseAct/corner_ur.png b/gamedata/assets/gui/button/baseAct/corner_ur.png new file mode 100644 index 0000000000000000000000000000000000000000..966214a57951478e2e5ccc20628bf3b96f901b0c GIT binary patch literal 5906 zcmeHLc~}$I77s3n!37@5BBC+4pf<^52uUUq5dlNg2m(b!R3?*2GLnsCLIR3XwFT6& zh;?bTTCwg+5d{%i6+x=vR#982ma0{sXcbXWD){aMM11wx=l8Y$neR(x?!CYBJLjJ5 zW+pRyiljGv0G&po^_GSPM}TWj>g!++e(Q4WooKXfF)2|oWCUtq7>s%)p}`qsvH@q{ zRzgXmSufv6q&r`K~;|H5uV?H2y_z+aUFom}6=<<_~9;y;Ez(~RN9*bmu0aj)#f z{a?`5BS)66O`L^=4v87aE~)TXr_RpbIeL2W?yB6RNli(nvGJ?B?Yi4gcF!y65%J5G zZyjbHTc4Gb4yUv>Gj3@)O;7fE8RwDvyq!eRMcS|*vld%|e?PEi%*LFJSGBt?e7m=H zv$bW+)IMW#L~&j-F65le)~xGthTqleGdJO}!D(N9aY@gDyBczGiJtM^2t)g!6= z!bI3TbmM_v&Hbg0R>x7!U6@xC%QRt-zMw?@sIp;1?PYj6ESx?jHQ@I3yW;PI8jDV% zheUMMTuFW9l-48cTkt%$sb#yXi=F)hxd#zlj8}dow|RgjF3E0gpSh8%cI_NwzcTaU z=dOlPt%Fi$s>(gIMg4yujzue?j>wqyRf`7to#1WVQxp-Bku_#??9CH3&q?rVoDg7VPe!u)MJP7*r(Rb)XT?^v}5(=%+RlUrDb z_p;+Zm&yA%d{w~hp05m?JmPF|)zIj}8)ici4ODA9;Pd6~%gc{9R?p8q|C4vAv^I&B z@lBBg`hJ9jpJSyfKAWDIhII?@$SoAI6{B*Ses&r*CYNT+=^o>0T5&Pv$-LE5#es`g zrR`kC@LBZ1E&m(&>;Y<@xecf14lZlHop&a%y!sm_UNyY-!sDaSg-zu?jXVAAKWo=3~F8T?Lyz_Y`n@ zXZ}3?yz7iPC6VbX4%UB{zFYjHrZKJNlU{=74ndNE#ErcDr|yUova3_i4A5S*IuAQ` zdQ;gq_JwyUyPq;%8=;C{=JiqHx?bbX`Xhz8Yp)-V3%poouK1pQCgX=N;{e&Q!yD== z=AS)&<+GA4Wgc#`uYEdrjc?w;Fi17r+_$>rM6Juk%kw;HDt|mNzHr=r_-3i^^`L<@1hCKY~{0Y&Fhf^9_qWbqwCbh{c&Pm9GLAN3%W!tmU zi_b6aH!vC5m2Vvy2~y@d_vz|y78>WMA~I| zcgC5%$?>zYS}m);=!>@0oHJGL$q1;dr9H^5)6V)_*f4)w?TSzNX>9Ka~;>Uul`CIiS*A;>WKF4iCkJK;br$4E;NhC-D zE)h9NRua10L+{`cT{@g2-(lVUP(WQ3!U0KV;k7+c!#Y9k0xHKr}Wsd=! zWo>G%IP~baft9l(EB7o}=(SU**gC~EIAq{{ddOC%IUh%RO=h<&9Nt^HWNCg~tl#w7 zv@rUE!e;R^$F3f!_?miNy7N)yN=D$~g)rTxe8S@Bb^RQBUd}Fh(6?lMW*ohQ9)BZd zT+acDOMP2=94g(vH_v5O1cScsknnVs!`TAIno(Jesdt6@T@JtK75DGn3%1d#=PjQ_ zsDJg|p!Ym*K&L)2$WYR?*I19eBTJXB-<)%*%YD@&84+LSdV5x5%8vWjAK8UQOl$D0 zt8;QcHT6l#Qj3M(^yL1Ulm!8SUdFuR8!KFCG^ZH^==m|S$s$azWupqc9A{g#25=_O zX#N3K1BxZ!Btwp?2%VUDzw{83K`6w`X?`+DW(dO7L}-c;k4%{og{355h=Lg~mhNvA z0Rk;fq7186qce%DVy2B(1n#M64wGSnkO^XDj4YfHq&MOW9-GI8SRqy-31*I^GyIJT zr6?kJLOTT*iJ5AWG>AAHi^amW__Fmz6^Dx;2nT{WFw6o7mMK|BqE?p9`oTyxHCdEu9SZB18gH%bYzMvV=lz&N-D z*8)RKfSLOmo+Om70`%H`sFgn%0@QWzzlMJ4FPkkkzlwtOn3+;44Hh#gdqoO8MkqwK zTRwy-g$lVJ3&IgTi-+*|EL17?Wyx^?mxn@-0D%;psH8d*iRv(%q5|Y>0`MS0r9dH9 z__APMfr7>3b1{~jk0@DOOvvZ+m3~5=QqYMa%t(MrKsBAMqNo&r3PTV94-xpX1Ohn* ztU={0#1{-PF04f4n6D6m5E~U02T@?SRLq3g(5snn4N5BYMy;4Rnb4W7uNI;REgngt zl+(C;h==$hFduLUcs%$OC>l4KK$26OT!;;~ttc?j1i*-bWFxew3g;MfDw_xu77^GC za4bsI24J?$gT07?j5tc_jZu2NM$DvaWl)s1l4AI`7mH}J9pGAz8>h8iT^)vo#fk# z?61T-!`h^S^oC^6gw$l1MfX%F_)$ph~MexF@`o4e?*-WcFI z@W<5x-UqmsyT^lf3HI_yl3?nk0*&@8sB{6i^fZJ{H_>QpZ|ZAj{W>5CO!gq9vXCA( z9D6!>`kb66I|QaY$dDK^NUxeea`*}>GRzE#6 qjs|g^>@p&2&YnFyPEvn+hXXC!+|5}kDd`HJG-=3`;N9cn7ybtlkDUJi literal 0 HcmV?d00001 diff --git a/gamedata/assets/gui/button/baseAct/down.png b/gamedata/assets/gui/button/baseAct/down.png new file mode 100644 index 0000000000000000000000000000000000000000..44b6b3524989fcb8ee19266c0a445cc66c2cd07e GIT binary patch literal 6082 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 literal 0 HcmV?d00001 diff --git a/gamedata/assets/gui/button/baseAct/left.png b/gamedata/assets/gui/button/baseAct/left.png new file mode 100644 index 0000000000000000000000000000000000000000..ba149782247c6a301efbd373d0b414ef15edaae5 GIT binary patch literal 6064 zcmeHLX;f3!7LH1pQBlhvC^1?F^(MKQ6A6Qiu|#M(USBm3Rsb#*7FKYeTZ6o_zRo*B&c9?tlR?Fh7izVVMU+)o-s-~^n?0j1JN7vPw zz>>=qiMhYHNo-v{|Cl;A+~-Qy*dp)y^5Y43F_Fxz9I#w;{_ODDs_##&4%pv$$a`DW z)3OWAG2yidUbl}uxN~XtrjXT&h;jY5Es$Tm$;Ib@A&@ z1r4cis+}&gxt1|$>EcLNcj46m)oU)#gpcZl2lsun!7nqjxU56u711(gP)!xJw5!?I z^P$sz*9p%y%vy~<_5RA3w>dC;%+$QA%!1>GFL!cmJU*Xw^2@U6b(mk#iY3@qc7lU% z_KAoDg~<1Ue8#9exiT#L!-g?ZZNr&QwnycCS0BIE_Cnj~>`g}wM$NEt%_?v_*XX-k zP%s7`GHS8?e%tE#-UmdE%CKyJufWC;2I&zP!P|_3$6gd{?SuX4^-@pu(@$kGmZ^>j^tQ=LE;Ht&ZFiDfX}Ej%+a{O8hwcpAlhX7}=g6b&mt$*fl5>8Zap_$3g4*HGCF78f ztT&F_cWPhy++cJDel9-*Z%so$4-S)P9#g zLR7J0N!iN1@elMfsi$z`bDC=gt!&<(pt1(cD9x2_3C%PpCf>P0#PtKi=z}(=TA1ag+N_@v&h4ZuO?%p~ujkII9k@Gs?)h87*$;~ee0Vv2az{84ub z&!*)R#g8v~E_~)Nz`95ofa~Wk5Ie2LX!`}CY@TKv2!yN3ctog2W(2<2%GwqMq zC*GbGWH(&)%b=GwCrXPCZWuaSLbgA2f_JXc_I#m3-PqNS7Chh;4?X#Z#i&M= z7F2l>$v@DjMbKo7AWJa?t`<^SN>5P8xJ*cy$`;eb+7K)Wk4)ELvFVfJ(DY=KFQWto z*!vp=fIx*22-&Dos`Ub+kYeT)fVOFvMj@LaM6!@FO&miG(daNTi^`(Xp)ez!%Af?; zll^rvxj+&c-a`R;LP`=rXazKy!C;^om{g5UL4)~xK8?9Q_ffymRezb|A zn(Oc?F(PO3|v)xLWoCb_CYqpe$5Q$@YWlU~V;3}f4xC{)?=FalOaG|FMl8OD}R}7G5b{zszFmsN=2bUipgGq zOoQSwfw?KgKw3%+j<9QA3WeL_128}K`S{E&ygQ3LRdENx>Ws-nerzdo2qQ6+w zzu^44!!;7fYIJE9`eU)V-M#LDq{PjxB9qNUK!Bj#?$;x!J%I-N*gb_NA!-E%s%=lI zy&A{g5XO82<+Axq2E>G!2*hG=V2ICS(jggN%41167)K6E%^TdyuGh#31ERx%6(9z{ zK7-UU?=#ug9DRO$(S{@p#K<^0ETGdV-P_x<-G9$|*cc|`gA9fc1Opj_@}!WI&H*c9 z^1ukfLwKC-*#AFSkBrObVkjG|hsEMREH*eucnpjKp;88hFqkky3S)ge{@?G9Kh1RD zy$U~n(~%$+3oHZF-*jXMM5f9Ro1)b!aZJ}Ya9<_zzrk6^_Y{r461RkPONVH*X`rYk z5zz+qTh+e-*v$}yqnKK+d7J5$kZ!kF+zWus-DBXs0j@8!-up{W+JX@KJ3l?;;O|sH zCcjtmPX2xGuJ`VGCl9<6_F8kMSKrl79h#SEBja7H^so>p+ zwe;hNQ1e?7(zB4#MWAJ;jr>$kB2h=1zWt0l0#m`D4IvVT+1z%p8|>kwKXvb0Fyu~z zO(Q}yD$_$Psps*DY`}>mvguiC>XL!30OTPG4UTiWh$@qkp4Kk5VX;_rIy|^v_=hl1 XZDr-$zPctGz(}I7$)Vp&Ow9Nvb)(CN literal 0 HcmV?d00001 diff --git a/gamedata/assets/gui/button/baseAct/middle.png b/gamedata/assets/gui/button/baseAct/middle.png new file mode 100644 index 0000000000000000000000000000000000000000..27eb98ae1222a68b12f40ddb8b82093171aab228 GIT binary patch literal 6286 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 literal 0 HcmV?d00001 diff --git a/gamedata/assets/gui/button/baseAct/right.png b/gamedata/assets/gui/button/baseAct/right.png new file mode 100644 index 0000000000000000000000000000000000000000..8e918366a34266d5e06fc761fd0134384b9a17bd GIT binary patch literal 6047 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 L67*F-Qr5o#6S>v% literal 0 HcmV?d00001 diff --git a/gamedata/assets/gui/slider/base/circle.png b/gamedata/assets/gui/slider/base/circle.png new file mode 100644 index 0000000000000000000000000000000000000000..9ca48262ea63c9abb15948a0dc11f8dc6a12e263 GIT binary patch literal 9814 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 literal 0 HcmV?d00001 diff --git a/gamedata/assets/gui/slider/base/left.png b/gamedata/assets/gui/slider/base/left.png new file mode 100644 index 0000000000000000000000000000000000000000..605384a05d3536f3e7262151da5abb6ebe80492e GIT binary patch literal 795 zcmV+$1LXXPP)EX>4Tx04R}tkv&MmKpe$iTcsi`4i*$~$WWauh)U_GRVYG*P%E_RU~=gfG-*gu zTpR`0f`cE6RRVO2K4+PavLUx?vG-5XUzy zo%23%gq0e3JS*_Mt`=0!Tp@O!u%ypWhNMR965FtQD9TikzAx5i4iir&ECq4Wlj$b5~Os)zT zITlcZ3d!+<|H1EW&EoWwn-od{y)U-?F$M&8fmXw|zmILZbpiyQfh(=!uQh?hC+Urj z7Ciz6wteSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{008qzL_t(2&!y8bj)Wi>1>gq?Mo7Q{8_(mh4K|#>b6A;Z zp%J#2z>d4aI+-=GG4IREFFyo-KjGC!au*)Q5kd$s#y}~3iBi}(ho)&Dr9@R#D2f7v zkjMKISZiU7fl>-Why*C5AmkA*pKGkO=(-MCYt(fO&Upd=exU#W#u#X=A*IZMOOtaB zN~zRPmgV;hyL%Hw;9mj$5JmI}Z2mv94d(`(m z)^$xd!W^b?E0$%!wr$w={T7nvbDE|JZQH(mP6R-h=NX)H0D$*C3qRVue{cE6_vx*h Z`vu%{WRSIPr~&{0002ovPDHLkV1l)ePOks} literal 0 HcmV?d00001 diff --git a/gamedata/assets/gui/slider/base/middle.png b/gamedata/assets/gui/slider/base/middle.png new file mode 100644 index 0000000000000000000000000000000000000000..995c18fc95ec91d4de78731197d7e177db5a5052 GIT binary patch literal 612 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 j2HPLX|32MQR3ZwMt0L7(t?n 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

S-(L@eCd_&Aa#^dp4Tc&^9(*_ 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.get_width(): + px = 0 + if center: + px = (surface.get_width()-x+space)//2 + surface.blit(linesurf,(px,0)) + linesurf.fill([0]*4) + x=pos[0] + y+=font.size(' ')[1] + linesurf.blit(word_surface,(x,y)) + x+=word_width+space + linebreak = True + px = 0 + if center: + px = (surface.get_width()-x+space)//2 + surface.blit(linesurf,(px,0)) + linesurf.fill([0]*4) + x=pos[0] + y+=font.size(' ')[1] + +class Timer(): + def __init__(self,maxcount): + self.maxcount = maxcount + self.timer = maxcount + self.loops = 0 + def tick(self,avancement): + result = self.timer<=0 + self.timer-=avancement + if result: + self.timer+=self.maxcount + self.loops+=1 + return result + def getloops(self): + return self.loops + def getmax(self): + return self.maxcount + def getratio(self): + return max(min(1,self.timer/self.maxcount),0) + def reset(self): + self.timer = self.maxcount + def add(self,amount): + self.timer+=amount + self.maxcount+=amount + diff --git a/gamedata/font.ttf b/gamedata/font.ttf new file mode 100644 index 0000000000000000000000000000000000000000..dcca687a434d5c7b6a3027e65e0b7d8728b25c71 GIT binary patch literal 75864 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 literal 0 HcmV?d00001 diff --git a/gamedata/game.py b/gamedata/game.py new file mode 100644 index 0000000..3046d79 --- /dev/null +++ b/gamedata/game.py @@ -0,0 +1,243 @@ +import pygame, os, math, time +import gamedata.definitions as lib +import gamedata.scenes as scenes +import gamedata.objects.gameloop as gameloop +from gamedata.objects.particles import Particle + +class Game(): + def __init__(self): + + self.DISPLAY_WIDTH, self.DISPLAY_HEIGHT = 1280, 720 + self.window = pygame.Surface((self.DISPLAY_WIDTH,self.DISPLAY_HEIGHT)) + self.realwindow = pygame.display.set_mode((self.DISPLAY_WIDTH,self.DISPLAY_HEIGHT)) + pygame.display.set_caption("VimJam2") + pygame.init() + pygame.mixer.init() + + font = "gamedata/font.ttf" + self.fontfile = pygame.font.Font(font,25) + self.fontfilesmall = pygame.font.Font(font,18) + self.fontfilebig = pygame.font.Font(font,60) + + self.logs = [] + + self.running = True + self.init_inputs() + self.gameloop = gameloop.GameLoop() # Je crée une boucle de jeu + def load_image(filename): + return pygame.image.load(filename).convert_alpha() + self.sprite_lib = self.init_assets("gamedata/assets/",load_image) # Dico qui contient chaques images du dossier assets + pygame.display.set_icon(self.sprite_lib["icon.png"]) + self.sound_lib = self.init_assets("gamedata/sounds/",pygame.mixer.Sound) # Pareil, mais pour les musiques / sons + + self.sound_volumes = {} + for i in self.sound_lib.keys(): + self.sound_volumes[i] = 1 + self.spriteLists = {} # Tiendra des listes préarrangées + + self.scenes = scenes # Je stoque mes modules à l'intérieur de ma classe pour y avoir accès partout + self.scene = None + self.lib = lib + self.pygame = pygame + self.math = math + + self.elapsedtime = 0 + + self.globals = {} # Un dico pour ranger toute les valeurs globales, pour communiquer entre objets par exemples + self.globals["camerax"] = 0 + self.globals["cameray"] = 0 + self.globals["scamerax"] = 3 + self.globals["scameray"] = 0 + self.globals["players"] = [] + self.globals["hitpose"] = False + self.scaleCamera() + + settings = {"sfx":1,"bgm":1} + self.globals["bgmvolume"] = settings["bgm"] + self.globals["sfxvolume"] = settings["sfx"] + + self.reinit_volumes() + + self.pasttime = time.time() + + # Je charge la scene de base + scenes.main(self) + + def set_camera(self,posx,posy): + self.globals["camerax"], self.globals["cameray"] = posx,posy + + def log(*args): + args[0].logs.append(" ".join(args[1:])) + print(" ".join(args[1:])) + + def reinit_volumes(self): + + for i in self.sound_lib.keys(): # J'applique de base les volumes + if i.startswith("sfx/"): + self.sound_lib[i].set_volume(self.globals["sfxvolume"]*self.sound_volumes[i]) + if i.startswith("bgm/"): + self.sound_lib[i].set_volume(self.globals["bgmvolume"]*self.sound_volumes[i]) + + def set_volume(self,sound,newvolume): + self.sound_volumes[sound] = newvolume + self.reinit_volumes() + + def game_loop(self): + + self.dt = time.time()-self.pasttime + self.elapsedtime += self.dt + self.pasttime = time.time() + + self.check_events() # Détecte les entrées clavier + self.window.fill((0)*3) # Remplis l'écran de noir + if self.gameloop: # Si j'ai une boucle de jeu, la lancer + self.gameloop.step(self) # La logique de la boucle + self.gameloop.draw(self) # L'affichage de la boucle + if self.scene : + self.scene(self) + self.scene = False + pygame.display.update() # Mettre à jour l'affichage + + + def init_inputs(self): + + self.inputs = {} + self.inputs["unicode"] = "" + self.inputs["mouse"] = { + "pos" : [0,0], # Position + "rel" : [0,0], # Mouvement relatif + "click" : 0 # Timer du click + } + self.inputs["keys"] = { + "escape":{ + "timer" : 0, # Timer de la touche + "realtime" : 0, # Temps réel préssé + "pressed" : False, + "keycode" : pygame.K_ESCAPE # Code pygame de la touche en question + }, + "backspace":{ + "timer" : 0, # Timer de la touche + "realtime" : 0, # Temps réel préssé + "pressed" : False, + "keycode" : pygame.K_BACKSPACE # Code pygame de la touche en question + }, + "enter":{ + "timer" : 0, # Timer de la touche + "realtime" : 0, # Temps réel préssé + "pressed" : False, + "keycode" : pygame.K_RETURN # Code pygame de la touche en question + }, + "left":{ + "timer" : 0, # Timer de la touche + "realtime" : 0, # Temps réel préssé + "pressed" : False, + "keycode" : pygame.K_q # Code pygame de la touche en question + }, + "right":{ + "timer" : 0, # Timer de la touche + "realtime" : 0, # Temps réel préssé + "pressed" : False, + "keycode" : pygame.K_d # Code pygame de la touche en question + }, + "up":{ + "timer" : 0, # Timer de la touche + "realtime" : 0, # Temps réel préssé + "pressed" : False, + "keycode" : pygame.K_z # Code pygame de la touche en question + }, + "down":{ + "timer" : 0, # Timer de la touche + "realtime" : 0, # Temps réel préssé + "pressed" : False, + "keycode" : pygame.K_s # Code pygame de la touche en question + } + + } + + self.no_unicode = [pygame.K_ESCAPE,pygame.K_BACKSPACE,pygame.K_RETURN] + + + def check_events(self): + self.inputs["unicode"] = "" + for event in pygame.event.get(): + if event.type == pygame.QUIT: + self.running = False + if event.type == pygame.KEYDOWN: + for i in self.inputs["keys"].keys(): + if event.key == self.inputs["keys"][i]["keycode"]: # Vérifie si une des touches du dico est préssée + self.inputs["keys"][i]["pressed"] = True + else: + if event.key not in self.no_unicode: + self.inputs["unicode"] = event.unicode # Je récupère la "lettre" de la touche préssée + if event.type == pygame.KEYUP: + for i in self.inputs["keys"].keys(): + if event.key == self.inputs["keys"][i]["keycode"]: # Vérifie si une des touches du dico est préssée + self.inputs["keys"][i]["pressed"] = False + + self.inputs["mouse"]["pos"] = pygame.mouse.get_pos() # Position + self.inputs["mouse"]["rel"] = pygame.mouse.get_rel() # Déplacement par rapport à la frame précédente + + # Augmente le timer si la touche est préssée, le reset sinon + for i in self.inputs["keys"].keys(): + if self.inputs["keys"][i]["pressed"]: + self.inputs["keys"][i]["timer"]+=1 + self.inputs["keys"][i]["realtime"]+=self.dt + else: + self.inputs["keys"][i]["timer"]=0 + self.inputs["keys"][i]["realtime"]=0 + # Timer du click + boutons = pygame.mouse.get_pressed() + if boutons[0]: # Si click gauche + self.inputs["mouse"]["click"]+=1 + else: + self.inputs["mouse"]["click"] = 0 + + def init_assets(self,path,function,recursive=True): + dico = {} + self.scan_dir(path,path,dico,function,recursive) + return dico + + def scan_dir(self,dirpath,origin,dico,function,recursive=True): + scanner = os.scandir(path=dirpath) + for i in scanner: # Je passe à travers toutes les données d'un dossier, fichiers et sous dossiers compris + # i.path est le chemin du fichier, par exemple + # Si c'est une image, je l'importe et l'ajoute à la librairie + finalpath = i.path.replace("\\","/") + if i.is_file() or not recursive: + finalpath = finalpath.replace(origin,'') # J'enleve l'origine (dans ce cas 'assets/' car c'est redontant, tout les sprites sont dedans + dico[finalpath] = function(i.path) + # Si c'est un dossier, je répete l'opération mais à l'intérieur de celui ci + if i.is_dir() and recursive: + self.scan_dir(i.path,origin,dico,function,recursive) + scanner.close() + + def getSpriteDir(self,directory,ext=".png",assetdir="sprite_lib"): + keys = (directory,ext,assetdir) + assetdir = getattr(self,assetdir) # Si je ne précise pas quel type de ressource, je cherche dans mes sprites + if keys in self.spriteLists.keys(): + return self.spriteLists[keys] + else: + # Organise les sprites + sprite_list = [] + index = 0 + while directory+str(index)+ext in assetdir.keys(): + sprite_list.append(assetdir[directory+str(index)+ext]) + index+=1 + # Le stoque pour éviter de les réorganiser à chaque fois + self.spriteLists[keys] = sprite_list + + return sprite_list + + def addParticle(self,sprites,posx,posy,velx=0,vely=0,modvelx=0,modvely=0,flipx=False,flipy=False,fps=15): + p = Particle(self,sprites,posx,posy,velx,vely,modvelx,modvely,flipx,flipy,fps) + self.gameloop.summon(p) + + def scaleCamera(self,neww=None,newh=None): + if not neww: + neww=self.DISPLAY_WIDTH + if not newh: + newh=self.DISPLAY_HEIGHT + self.globals["cameraw"] = neww + self.globals["camerah"] = newh + + self.globals["tempsubsurface"] = pygame.Surface((neww,newh)) diff --git a/gamedata/objects/base.py b/gamedata/objects/base.py new file mode 100644 index 0000000..1bb1b63 --- /dev/null +++ b/gamedata/objects/base.py @@ -0,0 +1,18 @@ +import pygame + +class BaseObject(): + def __init__(self,x,y,game,w=10,h=10): + self.rect = pygame.Rect([x,y,w,h]) + self.baserect = self.rect.copy() + self.game = game + self.sprite = game.sprite_lib["icon.png"] + self.spriteoffset = 0,0 + self.depth = 1 # Sa "profondeur", déterminera l'odre d'affichage des objets + + def step(self): + pass + + def draw(self): + if self.sprite: + self.game.window.blit(self.sprite,self.rect[:2]) + diff --git a/gamedata/objects/bg/backgrounddrawer.py b/gamedata/objects/bg/backgrounddrawer.py new file mode 100644 index 0000000..d6661c4 --- /dev/null +++ b/gamedata/objects/bg/backgrounddrawer.py @@ -0,0 +1,31 @@ +from gamedata.objects.base import BaseObject + +class BackgroundDrawer(BaseObject): + + def __init__(self,x,y,game,w,h,sprite,ratio): + super().__init__(x,y,game,w,h) + self.ratio = ratio + self.depth = -1 + self.fill(sprite) # Générer notre sprite de l'objet, le remplissant avec le sprite argument + + def fill(self,sprite): + game = self.game + self.tilew = sprite.get_width() + self.tileh = sprite.get_height() + nbw = round(self.rect[2]/self.tilew+1.5) + nbh = round(self.rect[3]/self.tileh+1.5) + sw = nbw*self.tileh + sh = nbh*self.tileh + self.sprite = game.pygame.Surface((sw,sh),game.pygame.SRCALPHA) + + for i in range(nbw): + for j in range(nbh): + self.sprite.blit(sprite,(i*self.tilew,j*self.tileh)) + + def draw(self): + game = self.game + # Affichage du sprite de mannière répétée + px = (self.rect[0]-game.globals["camerax"]*self.ratio)%self.tilew + py = (self.rect[1]-game.globals["cameray"]*self.ratio)%self.tileh + + game.window.blit(self.sprite,(self.baserect[0]+px-self.tilew,self.baserect[1]+py-self.tileh)) diff --git a/gamedata/objects/bg/menubackground.py b/gamedata/objects/bg/menubackground.py new file mode 100644 index 0000000..fa2259d --- /dev/null +++ b/gamedata/objects/bg/menubackground.py @@ -0,0 +1,23 @@ +from gamedata.objects.bg.backgrounddrawer import BackgroundDrawer + +class MenuBackground(BackgroundDrawer): + + def __init__(self,game): + super().__init__(0,0,game,game.DISPLAY_WIDTH,game.DISPLAY_HEIGHT,game.sprite_lib["grid.png"],0.025) + + # Initialise son sprite + shadow = game.sprite_lib["shadow.png"] + self.shadow = game.pygame.transform.scale(shadow,(1500,1500)) # J'augmente la taille de l'ombre + + def step(self): + game = self.game + super().step() + destx = (game.inputs["mouse"]["pos"][0]-game.DISPLAY_WIDTH/2) + desty = (game.inputs["mouse"]["pos"][1]-game.DISPLAY_HEIGHT/2) + game.globals["camerax"] += (destx-game.globals["camerax"])/6 + game.globals["cameray"] += (desty-game.globals["cameray"])/6 + + def draw(self): + game = self.game + super().draw() + game.lib.drawcenter(game,self.shadow,game.DISPLAY_WIDTH/2,game.DISPLAY_HEIGHT*3/5) diff --git a/gamedata/objects/bg/movingbackground.py b/gamedata/objects/bg/movingbackground.py new file mode 100644 index 0000000..269c33e --- /dev/null +++ b/gamedata/objects/bg/movingbackground.py @@ -0,0 +1,12 @@ +from gamedata.objects.bg.backgrounddrawer import BackgroundDrawer + +class MovingBackground(BackgroundDrawer): + + def __init__(self,x,y,game,w,h,sprite,ratio,spdx,spdy): + super().__init__(x,y,game,w,h,sprite,ratio) + self.spdx = spdx + self.spdy = spdy + + def step(self): + self.rect[0]+=self.spdx + self.rect[1]+=self.spdy diff --git a/gamedata/objects/button.py b/gamedata/objects/button.py new file mode 100644 index 0000000..da16527 --- /dev/null +++ b/gamedata/objects/button.py @@ -0,0 +1,89 @@ +import gamedata.objects.base as base + +class Button(base.BaseObject): + def __init__(self,x,y,game,w=100,h=64,folder="base",folderact="baseAct"): + super().__init__(x,y,game,w,h) # initialise l'objet de base avec les bons arguments + self.text = "Hello" + + self.spritenon = self.gensprite(w,h,folder) + self.spriteact = self.gensprite(w,h,folderact) + + self.sfx = game.sound_lib["sfx/click.wav"] + + self.trigger = False + self.collision = False + + def click(self,game): + print("hello world ! ") + self.click = click + self.skip = False # Si je passe l'effet sonore de base + + def gensprite(self,w,h,foldername): + game = self.game + # Initialisation des parties de sprites + sprites = {} + for i in ("middle","left","right","up","down","corner_ul","corner_ur","corner_dl","corner_dr"): + sprites[i] = game.sprite_lib["gui/button/"+foldername+"/"+i+".png"] # Je récupère tout les sprites correspondant aux boutons + basewidth = w-sprites["left"].get_width()-sprites["right"].get_width() # Largeur du sprite du milieu + baseheight = h-sprites["up"].get_height()-sprites["down"].get_height() # Hauteur du sprite du milieu + for i in ("left","right"): + sprites[i] = base.pygame.transform.scale(sprites[i],(sprites[i].get_width(),baseheight)) + for i in ("up","down"): + sprites[i] = base.pygame.transform.scale(sprites[i],(basewidth,sprites[i].get_height())) + + # Initialisation de son sprite + finalsprite = base.pygame.Surface((w,h)) + # Bordures haut et bas + finalsprite.blit(sprites["up"],(sprites["left"].get_width(),0)) + finalsprite.blit(sprites["down"],(sprites["left"].get_width(),sprites["up"].get_height()+baseheight)) + # Bordures gauche et droite + finalsprite.blit(sprites["left"],(0,sprites["up"].get_height())) + finalsprite.blit(sprites["right"],(sprites["left"].get_width()+basewidth,sprites["up"].get_height())) + # Coins du bouton + # Coins du bas + sprites["corner_dr"] = base.pygame.transform.scale(sprites["corner_dr"],(sprites["right"].get_width(),sprites["down"].get_height())) + finalsprite.blit(sprites["corner_dr"],(sprites["left"].get_width()+basewidth,sprites["up"].get_height()+baseheight)) + sprites["corner_dl"] = base.pygame.transform.scale(sprites["corner_dl"],(sprites["left"].get_width(),sprites["down"].get_height())) + finalsprite.blit(sprites["corner_dl"],(0,sprites["up"].get_height()+baseheight)) + # Coins du haut + sprites["corner_ur"] = base.pygame.transform.scale(sprites["corner_ur"],(sprites["right"].get_width(),sprites["up"].get_height())) + finalsprite.blit(sprites["corner_ur"],(sprites["left"].get_width()+basewidth,0)) + sprites["corner_ul"] = base.pygame.transform.scale(sprites["corner_ul"],(sprites["left"].get_width(),sprites["up"].get_height())) + finalsprite.blit(sprites["corner_ul"],(0,0)) + # Sprite du milieu + finalsprite.blit(base.pygame.transform.scale(sprites["middle"],(basewidth,baseheight)),(sprites["left"].get_width(),sprites["up"].get_height())) + return finalsprite + def step(self): + game = self.game + # Je vérifie si mon curseur de souris est dans le rectangle de l'objet + self.collision = True + nb = len(self.rect)//2 # Le nombre de dimensions, dans ce cas 2 + for i in range(nb): + self.collision = self.collision and self.rect[i]<=game.inputs["mouse"]["pos"][i]<=self.rect[i+nb]+self.rect[i] + + if self.collision and game.inputs["mouse"]["click"]==1: + self.trigger = True + + if self.trigger: + self.click(self,game) + if self.skip: + self.skip = False + else: + self.sfx.play() + self.trigger = False + + def draw(self): + game = self.game + # J'utilise le sprite special selection quand j'ai la souris dessus + self.sprite = self.spritenon + if self.collision: + self.sprite = self.spriteact + super().draw() + # Affichage du texte centré + value = 150 + if self.collision: # Eclaircissement du texte + value+=75 + img = game.fontfile.render(self.text, False, [value]*4) + posx = self.rect[0]+self.rect[2]/2-img.get_width()/2 + posy = self.rect[1]+self.rect[3]/2-img.get_height()/2 + self.game.window.blit(img, (posx, posy)) diff --git a/gamedata/objects/gameloop.py b/gamedata/objects/gameloop.py new file mode 100644 index 0000000..a005996 --- /dev/null +++ b/gamedata/objects/gameloop.py @@ -0,0 +1,68 @@ +class GameLoop(): + def __init__(self): + self.reinit() + + def reinit(self): + # Réinitialise la boucle de jeu + self.objects = {} + self.maxid = 0 + + def summon(self,obj): + # Ajoute un objet à la boucle de jeu + obj.id = self.maxid # Donne un identifiant unique à l'objet + self.objects[self.maxid] = obj # Ajoute l'objet à la boucle + self.maxid+=1 # Change le prochain id disponible + + return obj # Retourne l'objet stocké, au cas ou !!!! + + def findname(self,name): + # Retournes tout les objets portants ce nom + result = [] + for i in self.objects.values(): + if type(i).__name__==name: # Si le nom de la classe correspond au nom donné, je retourne la classe + result.append(i) + return result + + def delid(self,id): + # Supprime un objet à partir de son id + del(self.objects[id]) + + def delname(self,name): + # Supprimes les objet à partir d'un nom + for i in self.findname(name): + self.delid(i.id) + + def step(self,game): + # Addoucie le secouement de la caméra + for i in ["x","y"]: + game.globals["scamera"+i]-=game.dt*5 + game.globals["scamera"+i]= max(0,game.globals["scamera"+i]) + + objs = list(self.objects.values()) + for i in objs: + i.step() + + def draw(self,game): + #Je secoue ma caméra + vx = game.globals["scamerax"] + vy = game.globals["scameray"] + rx = game.lib.random()*2*vx-vx + ry = game.lib.random()*2*vy-vy + game.globals["camerax"]+=rx + game.globals["cameray"]+=ry + # Je dessine + values = list(self.objects.values()) + tri = lambda x: x.depth # Donne la profondeur de l'objet + values.sort(key=tri) + for i in values: + i.draw() # Lancer le script d'affichage de chaques objets + # Je stabilise la caméra + game.globals["camerax"]-=rx + game.globals["cameray"]-=ry + + # Get the right ratio + widthratio = game.DISPLAY_WIDTH/game.globals["cameraw"] + heightratio = game.DISPLAY_HEIGHT/game.globals["camerah"] + game.globals["tempsubsurface"].blit(game.window,[0,0]) + temp = game.pygame.transform.scale(game.globals["tempsubsurface"],(game.DISPLAY_WIDTH,game.DISPLAY_HEIGHT)) + game.realwindow.blit(temp,[0,0]) diff --git a/gamedata/objects/info.py b/gamedata/objects/info.py new file mode 100644 index 0000000..256aed6 --- /dev/null +++ b/gamedata/objects/info.py @@ -0,0 +1,37 @@ +from gamedata.objects.base import BaseObject + +class Info(BaseObject): + + def __init__(self,game,message,color=[255]*3,temps=1): + + super().__init__(0,0,game,game.DISPLAY_WIDTH,game.DISPLAY_HEIGHT) + + self.timer = game.lib.Timer(temps) + + self.depth = 999 + + self.txtSurface = game.fontfilebig.render(message,False,color) + self.blackSurface = game.pygame.Surface((game.DISPLAY_WIDTH,game.DISPLAY_HEIGHT)) + self.blackSurface.fill([0]*3) + self.blackSurface.set_alpha(100) + + def step(self): + game = self.game + self.timer.tick(game.dt) + if self.timer.getloops()>1: + game.gameloop.delid(self.id) + + def draw(self): + game = self.game + self.txtSurface.set_alpha(255) + self.blackSurface.set_alpha(255) + + if self.timer.getloops()==1: + alpha = min(1,self.timer.getratio()) + self.txtSurface.set_alpha(alpha*100) + self.blackSurface.set_alpha(alpha*255) + + game.window.blit(self.blackSurface,[0,0]) + game.lib.drawcenter(game,self.txtSurface,game.DISPLAY_WIDTH/2,game.DISPLAY_HEIGHT/2) + + diff --git a/gamedata/objects/menu/mainmenu.py b/gamedata/objects/menu/mainmenu.py new file mode 100644 index 0000000..fa9cfad --- /dev/null +++ b/gamedata/objects/menu/mainmenu.py @@ -0,0 +1,32 @@ +import gamedata.objects.menu.menu as menu + +class MainMenu(menu.Menu): + def __init__(self,x,y,game,w=100,h=100): + super().__init__(x,y,game,w,h) # initialise l'objet de base avec les bons arguments + # Les dicos des boutons + def fnPlay(self,game): + pass + btnPlay = {"name":"Play","function":fnPlay} + def fnOptions(self,game): + game.scene = game.scenes.options + btnOptions= {"name":"Options","function": fnOptions} + def fnQuit(self,game): + game.running = False + btnQuit= {"name":"Quit","function": fnQuit} + + # Spacing between buttons + self.vpadding = 20 + self.hpadding = 20 + + # Initialising grid + self.grid = [ + [btnPlay], + [btnOptions], + [btnQuit] + ] + + self.create(self.grid,self.rect) + + def draw(self): + # Display game title + self.game.window.blit(self.game.sprite_lib["gui/title.png"],(0,self.baserect[1]-self.game.DISPLAY_HEIGHT/8)) diff --git a/gamedata/objects/menu/menu.py b/gamedata/objects/menu/menu.py new file mode 100644 index 0000000..ffbd4aa --- /dev/null +++ b/gamedata/objects/menu/menu.py @@ -0,0 +1,51 @@ +import gamedata.objects.base as base +import gamedata.objects.button as button + +class Menu(base.BaseObject): + def __init__(self,x,y,game,w=100,h=100): + + super().__init__(x,y,game,w,h) # initialise l'objet de base avec les bons arguments + self.init = False + + # Initialisation de son sprite + self.sprite = None + + # Variables de styles + self.hpadding = 2 # Les espaces entre les différents boutons + self.vpadding = 2 + + # Liste qui se remplira avec les objets bouttons + self.lbuttons = [] + # Les dicos des boutons + def fnExemple(self,game): + print("Exemple") + btnExemple = {"name":"Bouton !!","function": fnExemple} + + # Initialisation de la grille du menu + self.grid = [ + [btnExemple], + [btnExemple,None] + ] + + def create(self,grid,rect): + game = self.game + elementheight = (rect[3]-(len(grid)-1)*self.vpadding)//len(grid) + for i in range(len(grid)): + elementwidth = (rect[2]-(len(grid[i])-1)*self.hpadding)//len(grid[i]) + for j in range(len(grid[i])): + posx = rect[0]+j*(elementwidth+self.hpadding) + posy = rect[1]+i*(elementheight+self.vpadding) + if type(grid[i][j]).__name__=="dict": + # Si c'est un dico, l'emplacement est un bouton + folder = "base" + if "folder" in grid[i][j].keys(): + folder = grid[i][j]["folder"] + btn = button.Button(posx,posy,game,elementwidth,elementheight,folder) + btn.text = grid[i][j]["name"] + btn.click = grid[i][j]["function"] + btn.menuowner = self # Le bouton a une référence à son menu + self.lbuttons.append(btn) # Je le garde en memoire + game.gameloop.summon(btn) + if type(grid[i][j]).__name__ in ("tuple","list"): + # Sinon, c'est une sous-grille + self.create(grid[i][j],[posx,posy,elementwidth,elementheight],game) diff --git a/gamedata/objects/menu/optionmenu.py b/gamedata/objects/menu/optionmenu.py new file mode 100644 index 0000000..73a075a --- /dev/null +++ b/gamedata/objects/menu/optionmenu.py @@ -0,0 +1,16 @@ +import gamedata.objects.menu.menu as menu + +class OptionMenu(menu.Menu): + def __init__(self,x,y,game,w=100,h=100): + super().__init__(x,y,game,w,h) # initialise l'objet de base avec les bons arguments + # Les dicos des boutons + def fnRetour(self,game): + game.scene = game.scenes.main + btnRetour= {"name":"Retour","function": fnRetour} + + # Initialisation de la grille du menu + self.grid = [ + [btnRetour] + ] + + self.create(self.grid,self.rect) diff --git a/gamedata/objects/particles.py b/gamedata/objects/particles.py new file mode 100644 index 0000000..022495a --- /dev/null +++ b/gamedata/objects/particles.py @@ -0,0 +1,46 @@ +from gamedata.objects.base import BaseObject + +class Particle(BaseObject): + + def __init__(self,game,sprites,posx,posy,velx=0,vely=0,modvelx=0,modvely=0,flipx=False,flipy=False,fps=15): + + super().__init__(posx,posy,game) + self.vel = [velx,vely] + self.mod = [modvelx,modvely] + self.timer = game.lib.Timer(1/fps) # Les particules s'animent en 15 FPS par défaut + + self.sprites = [] + self.offsets = [] + for i in sprites: + self.sprites.append(game.pygame.transform.flip(i,flipx,flipy)) + w,h = i.get_size() + self.offsets.append([w/2,h/2]) + + self.alpha = 1 + + def step(self): + + game = self.game + + for j in range(2): + self.rect[j]+=self.vel[j]*game.dt*60 + self.vel[j]+=self.mod[j]*game.dt*60 + + self.timer.tick(game.dt) + if self.timer.getloops()>=len(self.sprites): # Je me supprimme une fois l'animation finie + game.gameloop.delid(self.id) + + self.alpha = max(1-(((self.timer.getloops()+1-self.timer.getratio())/len(self.sprites)))**3,0) + + + def draw(self): + + game = self.game + + spriteindex = self.timer.getloops() + posx,posy = self.rect[:2] + offx,offy = self.offsets[spriteindex] + pos = posx-offx-game.globals["camerax"],posy-offy-game.globals["cameray"] + self.sprites[spriteindex].set_alpha(self.alpha*255) + game.window.blit(self.sprites[spriteindex],pos) + self.sprites[spriteindex].set_alpha(255) diff --git a/gamedata/objects/sliders/bgmslider.py b/gamedata/objects/sliders/bgmslider.py new file mode 100644 index 0000000..6aa1561 --- /dev/null +++ b/gamedata/objects/sliders/bgmslider.py @@ -0,0 +1,16 @@ +from gamedata.objects.sliders.slider import Slider + +class BGMSlider(Slider): + def __init__(self,x,y,game,w=100,h=64,folder="base"): + super().__init__(x,y,game,w,h,folder) # initialise l'objet de base avec les bons arguments + + self.currentvalue = self.getvalue() + + self.posttext = " % Musique" + + def change(self): + self.game.globals["bgmvolume"] = self.currentvalue/100 + self.game.reinit_volumes() + + def getvalue(self): + return self.game.globals["bgmvolume"]*100 diff --git a/gamedata/objects/sliders/sfxslider.py b/gamedata/objects/sliders/sfxslider.py new file mode 100644 index 0000000..b36cdac --- /dev/null +++ b/gamedata/objects/sliders/sfxslider.py @@ -0,0 +1,16 @@ +from gamedata.objects.sliders.slider import Slider + +class SFXSlider(Slider): + def __init__(self,x,y,game,w=100,h=64,folder="base"): + super().__init__(x,y,game,w,h,folder) # initialise l'objet de base avec les bons arguments + + self.currentvalue = self.getvalue() + + self.posttext = " % Effets Sonores" + + def change(self): + self.game.globals["sfxvolume"] = self.currentvalue/100 + self.game.reinit_volumes() + + def getvalue(self): + return self.game.globals["sfxvolume"]*100 diff --git a/gamedata/objects/sliders/slider.py b/gamedata/objects/sliders/slider.py new file mode 100644 index 0000000..e9f3887 --- /dev/null +++ b/gamedata/objects/sliders/slider.py @@ -0,0 +1,79 @@ +import gamedata.objects.base as base + +class Slider(base.BaseObject): + def __init__(self,x,y,game,w=100,h=64,folder="base"): + super().__init__(x,y,game,w,h) # initialise l'objet de base avec les bons arguments + + self.posttext = " %" + + self.max = 100 + + self.currentvalue = self.getvalue() + + self.bgsprite = self.gensprite(w,h,folder) + + self.sprite = game.pygame.transform.scale(game.sprite_lib["gui/slider/"+folder+"/circle.png"],(h,h)) + + self.maxwidth = w-h + self.rect = [self.getvalue()/self.max*(self.maxwidth)+self.baserect[0],self.baserect[1],h,h] + + self.sfx = game.sound_lib["sfx/click.wav"] + + self.dragged = False + + def change(self): + print("Value : "+self.currentvalue) + + def getvalue(self): + return self.game.globals["sfxvolume"]*100 + + def postovalue(self): + self.currentvalue = (self.rect[0]-self.baserect[0])/(self.maxwidth)*self.max + + def gensprite(self,w,h,folder): + game = self.game + left = game.sprite_lib["gui/slider/"+folder+"/left.png"] + left = game.pygame.transform.scale(left,(round(h/left.get_height()*left.get_width()),h)) + right = game.sprite_lib["gui/slider/"+folder+"/right.png"] + right = game.pygame.transform.scale(right,(round(h/right.get_height()*right.get_width()),h)) + + middle = game.sprite_lib["gui/slider/"+folder+"/middle.png"] + middle = game.pygame.transform.scale(middle,(w-left.get_width()-right.get_width(),h)) + + surface = game.pygame.Surface((w,h),game.pygame.SRCALPHA) + surface.blit(left,(0,0)) + surface.blit(middle,(left.get_width(),0)) + surface.blit(right,(left.get_width()+middle.get_width(),0)) + + return surface + + + def step(self): + game = self.game + if self.rect[0]<=game.inputs["mouse"]["pos"][0]+game.globals["camerax"]<=self.rect[0]+self.rect[2]: + if self.rect[1]<=game.inputs["mouse"]["pos"][1]+game.globals["cameray"]<=self.rect[1]+self.rect[3]: + if game.inputs["mouse"]["click"]>1: + self.rect[0] = game.inputs["mouse"]["pos"][0]+game.globals["camerax"]-self.rect[3]/2 + self.rect[0] = min(self.rect[0],self.baserect[0]+self.maxwidth) + self.rect[0] = max(self.rect[0],self.baserect[0]) + self.dragged = True + + self.postovalue() + + if self.dragged and game.inputs["mouse"]["click"]==0: + # Le slider a été laché + self.change() + self.dragged = False + + def draw(self): + + game = self.game + + game.window.blit(self.bgsprite,(self.baserect[0]-game.globals["camerax"],self.baserect[1]-game.globals["cameray"])) + game.window.blit(self.sprite,(self.rect[0]-game.globals["camerax"],self.rect[1]-game.globals["cameray"])) + + + txt = game.fontfile.render(str(round(self.currentvalue))+self.posttext,False,[255]*3) + px = self.baserect[0]+self.baserect[2]+50-game.globals["camerax"] + py = self.rect[1]+self.rect[3]/2-txt.get_height()/2-game.globals["camerax"] + game.window.blit(txt,[px,py]) diff --git a/gamedata/scenes.py b/gamedata/scenes.py new file mode 100644 index 0000000..604c5ee --- /dev/null +++ b/gamedata/scenes.py @@ -0,0 +1,24 @@ +from gamedata.objects.menu.mainmenu import MainMenu +from gamedata.objects.bg.movingbackground import MovingBackground +from gamedata.objects.bg.menubackground import MenuBackground +from gamedata.objects.menu.optionmenu import OptionMenu +from gamedata.objects.sliders.bgmslider import BGMSlider +from gamedata.objects.sliders.sfxslider import SFXSlider + +def main(game): + game.scaleCamera() + game.gameloop.reinit() # Je réinitialis la boucle + bg = MenuBackground(game) + menu = MainMenu(game.DISPLAY_WIDTH/4,round(game.DISPLAY_HEIGHT*3/8),game,game.DISPLAY_WIDTH//2,game.DISPLAY_HEIGHT//2) + game.gameloop.summon(bg) + game.gameloop.summon(menu) + +def options(game): + game.gameloop.reinit() + game.globals["camerax"] = 0 + game.globals["cameray"] = 0 + s = BGMSlider(40,40,game,400,40) + s2 = SFXSlider(40,100,game,400,40) + menu = OptionMenu(round(game.DISPLAY_WIDTH/8),round(game.DISPLAY_HEIGHT*9/10),game,round(game.DISPLAY_WIDTH*6/8),round(game.DISPLAY_HEIGHT/10-game.DISPLAY_HEIGHT/30)) + game.gameloop.summon(s) + game.gameloop.summon(s2) diff --git a/gamedata/sounds/sfx/click.wav b/gamedata/sounds/sfx/click.wav new file mode 100644 index 0000000000000000000000000000000000000000..3cd4ee14505843548f1c1bfa99fa63be793081eb GIT binary patch literal 21190 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

Ye!=9Qq0Xl8t@r{+JfCw1xM|>#g*bwH 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