From fdede0a3b43753afa6e5d25d2e369a62ae47811c Mon Sep 17 00:00:00 2001 From: cecilkorik Date: Fri, 26 Jan 2007 06:08:52 +0000 Subject: [PATCH] brightened second frame for all stars shortened duration of second frame changed drawing code to do proper rect-updates instead of always doing fullscreen updates --HG-- branch : vssg --- img/blue_dwarf2.png | Bin 353 -> 362 bytes img/blue_giant2.png | Bin 538 -> 543 bytes img/blue_star2.png | Bin 421 -> 429 bytes img/green_dwarf2.png | Bin 354 -> 363 bytes img/green_giant2.png | Bin 569 -> 568 bytes img/green_star2.png | Bin 424 -> 471 bytes img/orange_dwarf2.png | Bin 354 -> 363 bytes img/orange_giant2.png | Bin 572 -> 563 bytes img/orange_star2.png | Bin 431 -> 469 bytes img/red_dwarf2.png | Bin 308 -> 324 bytes img/red_giant2.png | Bin 499 -> 502 bytes img/red_star2.png | Bin 403 -> 405 bytes img/white_dwarf2.png | Bin 346 -> 345 bytes img/yellow_dwarf2.png | Bin 350 -> 354 bytes img/yellow_giant2.png | Bin 533 -> 503 bytes img/yellow_star2.png | Bin 418 -> 419 bytes starmap.py | 25 +++++++++++++-- starmap_gen.py | 4 +-- video.py | 69 ++++++++++++++++++++++++++++++++++++++++++ vssg.py | 14 +++++++-- 20 files changed, 104 insertions(+), 8 deletions(-) create mode 100644 video.py diff --git a/img/blue_dwarf2.png b/img/blue_dwarf2.png index f6b5cdb9ef6ea8c30e84af4705522c55af9f1023..69565ea0f20c62c60b9077ab018dbe2b4b93d857 100644 GIT binary patch delta 253 zcmVFA6e1cG3vIrI1SFMaHA`>@KFcl)`0^tIXb${1ML_t(|+U%E44#7Ya#=nY<2s*+E1Pg!SFiufNs3k|>5H3UL zM#Pd0p$Oa0qG=*s(V;JmdCALUCNr5|zVGEt#v%#H$Ury@fB`T7=?Aa|W6CN}?+ROx zFA4+LmE-|leOHZ^UOkYEm1;qfgu4sIaQoKgbXwPHkr2mb}&m3N}zGLp3{a zsz6@>yR;Zo)7WeJO~6R%LOPssafqO9w_c1N0yaJwjQK zI6@fW^d?B{#F#VShd;+oR=4@?aN@Hn;jV z`MM;9P41hw&y@fKiw4(4hkPShbT;>P!TjXP9B{HQN>dO3(h1;U-2y;q3OZRBN-tE6 zK;TuMoKV_?WYt&ua^)0=Mw`Nx;V!$I#Tf!ocICLR$wPTygwF$JrA}BmSzcptS!ApX z3Mn9;1nv_+I)5g^eisqVF906^#w*}+0lfP_*99;b0do&nEdhT94Ek_tPli$o&J}^n z;Xv2}*#(g(yRsjaPHhUYW}a1F!0CeapXIi1H0CBbsx(IBQ4DU=ALE%tEFZD{!BLq`X@bZ e{QJM-?*Rb#I>ZKrsce@30000S3YQj(ueN&ATTl4~@bR$R??u-ZV5Ow1jT9>UC z=ncB52T8iBizwOh@?3mEVhLi>+K)IeOg{O{f6Tl$`4N&ZX(upjhYvtH zJ({gRtzozY<#WRT3Pr;J&MG)=4z#M){{TpnoAd{?%R1(kCx6ME9S_gkSUZaMpClZ` zZTq(7%mN@fG{E@8X#`K-&^~3{lhAQh$gm>92ry1-yL&o&r7;;0Ay*3xUZHSopwd2?TRsG6WxQB~uIbRe{6d zK++@GMU`kz^*SlXy~$AAkZv6U=w3%X2LQJY5jW)Cz6H`BZ0P*O58){tlXD_%H2-=I z;O35L#O!)ZC0yG6KP6%0t#Ll`<>tUob7rC83&~_?7%0HPHw<94Gz=h^A2tW%=>Lw_ Z0|1=m#TPQO@fZLA002ovPDHLkV1m}Y#bW>f diff --git a/img/blue_star2.png b/img/blue_star2.png index 4bdc832374e52309f309118b5f7cce027bd81136..f88b4e33583c9ed821f2d5e3d86f4b3a7971911f 100644 GIT binary patch delta 321 zcmV-H0lxmF1FZv)b$=sCL_t(|+G70w|3AY(0w#t52BQubb->VffN1^9{{tHW$~pra z1x!o>>;NvF0d@d03w<3Ry6EVClmy5pgpv@E<%t6S|Nkc$i|l*x|NsC03?h4<{a1bR z|G&uIXaAAKNx@_}0A_jM+yDRjfByd;_!i*^nma(GZpMF@<$t^XL%{C;2uFz2%^=Ak zjQH9EqV+TX!}B>0A0)x?3NQ$&OEP4MGB6adA=FOz#lSG_H3P%@o6i{-K7U|f`1^-} z;maq8>w5JZJQG_qEnN z0Pf~xhpf%WvU7&`cL10c-OXD|lGL>e0n_pYqOQFMRJFmsbDm6V!KE_D7D_Plfc17B zTb~183t;7pfbAMM9)R6OcTR2av!+7PK-eC5J`IF@3hv4StQ2)T`#r2CW1!#D;j9$Z zL-K&f8{a<+GBQ7SDn1^B?}GhK7~pgg2AJBxUR2S~C<1tSfZqWCK5NmXMdU|W00000 LNkvXXu0mjf!CsKm diff --git a/img/green_dwarf2.png b/img/green_dwarf2.png index 0badedf3e422f81d3ce83cd1e1f803c3ddbef91f..2b06c226d54a2f886808a609132e8f454387c3d2 100644 GIT binary patch delta 254 zcmVm7s~#MVyC z9c(>-g{_5n0|N?b6dQvU-zpGNX;xi=J21r#4Evb>8FmFpsEiU6hX&998ld<9PT*1P z1Uhxa5>(5I0c_*<0BPOLhAZa>lDV?Q5lLdqCDZ43GdDnT`FEB#CJ=d2yz(A!0*`20 zK&=8;2F#`lA3Y4vg$n~AV$86@1Ph#ZArQsD9T>uK)l507*qoM6N<$ Ef?m#Q-2eap delta 245 zcmV0^$OYb${4NL_t(|+U%D-3c^4XgeRhsN=&rO4g5hYwDc0UO7;ZvE#kX7Dbb)FaaBVm( z4`U24L>C>rESO@&1=hIik3bj!*EI;00000NkvXXu0mjf_Tg%+ diff --git a/img/green_giant2.png b/img/green_giant2.png index 84b0e809cbcc2d5d749b77105af31334fbbaac2f..69095c40262594ce48f3aba74618381df6eb3ebc 100644 GIT binary patch delta 461 zcmV;;0W$u%1h@o{b$_l&L_t(|+T@o#OG053$A3@svP6V-ha%KyYj8_PXX_i}8Z`6` z6as@jLQ^?9I#xpn-Layjp)EAY8bpz3Fb)09lzq)qzfxQ&b1)w%?2OT>~Zd%o>LR@Zn*Fd3<;P zSmRJ7_WILhzY%C!Qdt#MlOz>YQ&L$C@*dOcICk8ahy++=2_GJISZ9H$*8T%8>~chb z3YX--%~Oh`zkiKJ2Y|C56+!QNdmT6LO~&sf%rYSYEHc{)d%N>?h#MX$P~n~`7vwqT z7VgUMREJl=a|5o+l(tXICjc7}uwDZLId95tOBoea)0Q%7zdlkKIwW+=rU58WY2_T? zm`&r5(8y+i_cTjUW;s-(D`ID`SK1Py|cBP?oAq4CKoIw!enJtbca1YEgNzShc8y+f&lq z;NrI?t_Qn1Q(X*p_11H5A&~?s)y-Uaw6ieSB14KW*m~W$D@&!ieOe7Ds92s;0c1$A z!!I(V0LXJH1(jrdnM8td?CD%B#k$jjT8g!&b1m{6n|B;rwJ82(M`=Ic4_VTzvr3;w zBDx&&j}ASW?tdC;5%WkfLBNhekxReW>$1I=OfF3!*d|YwO*TepA1*$OA&LLo(4j}n zEe#?r-4(RE&>z5);NC&Iiw>JMMZiY}yw|`&i-$UqBuc8NrC23ZG=4t`61SnbvKs6g zK!@H)bASf>6F%|bK48`2M4va^^{eJ%J~7LhKV%k66-QMqBIXuq(X?ZJ#w?hHg3k1w z_uoB^FWr^r14+B3TKx}yY({!oI0uK;9OiBnxQ00pcQcuL;em4#SBW5K#yV`+;I2q;CJu-?>$Z< z36-Wpu@wLX!1@E2gAUb3pk7w|1iGdeVAD_xVCbs_Fz=6<5Px8~ln~-i|58RW^$;(T zBq3bM8ZRi^cpk5(8CuqEXnJRCS`8eahFd)2&U=J!^-?R+$dva-RWz*zBw9E`6?NR#b$=d7L_t(|+U%FHPQx%1MX#eE7KGH!9ay@NtqM~*!%~<+zk`*v zZ2gal4Su1Wpj+yVyfm=sJ!p5(!PvVHt~?PnW6J}r=Es{v|&-3Kr? zC-{xPanth_1jaMKLFgGE41O2D+@DbrU~|7D#7+N~3~(;8DSv>Jr8Kxg*}A@NcPZw( z+0e``NupR?wKdk0CbLHo-MTB%dG&)BWhn_mMoa-1F(qM$vJ?$srznJi_@$|10^$OYb${4NL_t(|+G70w|3AY(0w#t52BQubb-<_thQ0$@T^aumr~~vQ z1~>%x*az4FBHRPu0OWYrmJ_5bJ^cUwpFG?n`2YX^{|x{4SN})hlZeT80L=0i=l{bU zK?Y_aHpq3v85jgO7#M`O7#MWr1sNEOvltjOLl_vu4IqjR)NcG|I6IBu^27HG@4hiG zeE7k@aOEWfL-p?ejI@aYDuuw%Oam=04F544f-X*%MEL(d!<9US|CH#bxFCA-b%0C4 vPd^9P0heA-rk`=NUoh%`Q3s582LJ{DC_-O^vcVJa00000NkvXXu0mjfJCSd4 diff --git a/img/orange_giant2.png b/img/orange_giant2.png index 00fd8b07edcb499636fd8fa50a1ab13e43d79f66..f976925b80a1bff8be1134f0845193d8b1606296 100644 GIT binary patch delta 456 zcmV;(0XP1<1hWK?b$_WzL_t(|+T>SFO9D|8Ju^tODBCzFQo4;6?y^<5)@bcd5RCi@ zf&Bzw-1P(6D!6Im(8|P(i;#AXCW>tuU5J>c#nW<1%F*l*J-FQAecdy6?z#7lLJ~5E z3d!T|1JL6dr2+`~Bzs_MLoxuDDj9%#Q!;>{S2hg;N52DL9)I18lt%c&LN7~Ck_$`m z+(X-(?jawpNZmgFY2O#(2*8`s>2oehc5cXAlylb?5a%(F>?+8|gnQiqz;hrp0OVst zva2|{&#?!lQc069k0dE{CCz2-Q5G%7MoMF3AHd$Bc;n*>K=r?G7`K4iOTaRLMj1v8 zh-AL^h7Euo*MAuDiS+7HMUn}6Csgx?f$d#jXX5r*1?ty0$=rw`X9blGF?*P^S z7>$Ac5U93+vugoPx(B4kz;ec?v@0fr@nV9u`L)t8s}ZLK;abZS-`q0A+G#;S)>(t% z2!N5&>^yIjMZh)6wmdN}HUCI0_!v}14M49c^vsB4x0b$_x+L_t(|+T@qNP69y?#=j+?7K)7tgeb8z7IYkyjr2BD(D4Ag z0(x}51a#U!V@F|SVggiNqOmlGF_74BQXoh8ES4jn7v(s0W87r2*}wC<*_qirK@uuU z0E)}s2hh`kN&ym4#THm!Q4A0aCXhx&Z~`+1*xw*&XFhaUh=WfSw7wJOWQm z*k%Jp7qAAvXbkj+fYAYtFD0CE3n=%2<&-;NSItP})ePtQe=-d1k|6R;XwRCxw%Jho9x%F!A0*a5F~Df77@$8?3}AHptr!3P@Az#1|BfPAIJ(XT00000NkvXX Hu0mjfA4An+ diff --git a/img/orange_star2.png b/img/orange_star2.png index 69e2309a284f638df21284105fc54fe0da0ed7ff..83dcfe67e23c59ab541bc164c7abb2047db4406a 100644 GIT binary patch delta 361 zcmV-v0ha!+1JwhNb$?4qL_t(|+U%FHOT$1E#=nH3C?YCJLl&JJgluN5le5sR`3rB?H_yCZY>GlYcwwKZQ6QpUX%}`%B9p zNyNTEUhOmXMSnal<67R=Flm{z-3qXK1oUo^Jlw%P?@LRvl&9`b4glM&0B#*99|L6v z_6RDBfYa;wL1tzk@Jx>Dd~;O@Zfgy&_qKtk0bW0VVFtW?jzZ}S zDA_Y>*9>vyonk7P-jJkdJ5|QM!FEkf2g)^|yb5yN16EV)G>m|>H$WJPnAPlSOSuQ8 z{pn18*9&Ffw+%DJZ^8SQVt|Z_0lMj8>$T!%Q~>;YfbRhSkSy141L9X!00000NkvXX Hu0mjfDru-n delta 323 zcmV-J0lfaz1Fr*+b$=yEL_t(|+U%DxYXU(Kh2I`xAOyiQcCn7+y0m9?wy6bECgt59 zusyp}`3F|Ev9{AT)w%uwJGBr(ngqFLv52Q2W;Mwm-oUWj4ac)QCgl8_7s!jS=F z0H+Vosws*B+?9kCaFj5>RbCh%=lnB3_i=5yR!#Bxa?^Q^$lEp8#xU|H;1VbRK;aFB0Lq;PYD;AfYgTo*Xw{WiO));OqgG0{}t= VZ;~_FJ;ne4002ovPDHLkV1l2}nXv!> diff --git a/img/red_dwarf2.png b/img/red_dwarf2.png index c59f7d5507e029ec89d9b0587a2f48800c0c270d..0df451515ac2a7078b3a28c764bf74a7c5685c13 100644 GIT binary patch delta 215 zcmV;|04V>o0>lE4b$_}^L_t(|+U%D>4uUWcMPGGq>^+PpfVgGDMK};wfu)2S81I2` zPrfTfbfZO`5If0Vv}rRh^Cy$mNy0J~7)Jz%01;sR08N_86kuyzft5AD(gI-QyZ6)j zK~k9VT#`^#X|#S*;Q&K&-5>(wUU?5RX{rsdzIyIG6a{42a8RhOp)8^6=z$Y(1a@uf zzGK0MDlpF;*e8jeKpyvh(u5KUNP4fygQ&NjglB7j!^Hb8{tF^N1o(S^%K#x$USpM_8x#V)g)1-c zy3yLY(gqoSCNPUY!aPidkQkuIu~G0yKmro*{eXiRp@4mK1-8+ET?Al$?u~n0KLG2( z9YC}#i}{PO9&k%O3`~f30Xm6Z;wVuhaA!&mcZ56Tx~`Y#BtU+n0w31{i_*>#KU4C@ zu-Z4_Xhs7Tb`hPTZ^Cmlpj7U+{1+r30e=s;3;@TgLbmZ38M6QY002ovPDHLkV1m8( BRyF_t diff --git a/img/red_giant2.png b/img/red_giant2.png index b76f3e1d1b7569aa3c95df5301cf5f003d18830a..d2a5870c7d38cb3674b92328d84af449976eaf28 100644 GIT binary patch delta 395 zcmV;60d)TJ1NH-ub$@J0L_t(|+T>TgZo)7S{#-Fuo$LjnurshVjLZoSlA%wLhhXG2 zn41x@F|ZRQEZGnv($~R6ApupGpPo=pI-PWheV^}qKUO3mNpBFQ*9R~)hN1w5(jIu1 z2GEfP@F5MLFP?^@(cb{Llx~SJgzsBxNuu}-eWvOs_ zvd>Sz^Q^4M7>>(QJ?{>br9v255S|AN237(<7!nS~okP&zI3|mNB(02N-m;Hd{Iw>7 zfQ+Krctu5F^+7;t&1>(0I-Lim#&CEnubpF&=~t=d`#`T(yS>{zcjtBstk*!60eKEA zm%w6y4S*eh1Al-$fE9qRDpb-Qc%3`Y;2^NZDo;ca8+r$JZ)V2Ssg`AR%mH9NSB>wF zt^-MX^E9=_)3i}15{D_tsTZ^>Tmk@jZe^=tKBX6282|tP07*qoLrrb$@9|L_t(|+T@o_io!q;g})xmZtw&WT)S|Wc#u9v&M>(2F5_ly zVO;6LwS-*2;3^T`ETZHG8EnH$Bhye6Y0}*$WyV#BuGPy`GXDwtr7h`?&;ZwNlxe@4xqx zIiL2MXW3c@fDMSsMl2ucR&0bB@PL04T1J%v}Q*Kq4j z@dg2JP?atU;hn02+Yb2Uv(u6=1BbKua5- zqYcphHo*4IbPEyoAB?ySH6_X5da#xxky%R)hs=EcHXc$<-GAF~FT!Xt0j5)6y~cjC zL6qkvc%x9_)Y>ZIBq3KTlC0V!VP-AUKo#1rlFaR#cfH|e0HR*6iad_1$v6g_L*yK0 zMS-0NO8_Uo)&ZD5Q%75Y-}AtyPeH9bFz}Hs0UV10OFuWra}$~e%)5`$od`#Dr2kYZ vF17E1vo^p*8zR8Hx!yECqXyvb0j>i8C49a^rW2}L00000NkvXXu0mjf0N{XV delta 295 zcmV+?0oeYP1Cs-gb$YQr!PMc;%hOToQHq9e#h=-PMjHaSby$q|wp zIO;hJrOS}tg`E%zB}ge9N-Yq^5|W<3{)}XkglC!ITqb}C;O_&h&EyKO^j2Wz4e;a* zF#m0U?TzWyW_tNz#BHuAC1uwHl0*kmRjC`_FYP(CNWq0pG`=<^Kg9zytg}z;gg3u5;BA&_sp+00004?KAHWzxQGhf}Wh)Q_fh<5A$JYbw z`<`W)n;%G?lC_p3(Y7u3>rZtWV0SrR5ND*`c@G$4m?R0pFlIy)Mac6UWm%#qitS9- zb!eIfecxlAXDrKtaU4n%0X)Fp13U)+{>E?F-oT6t00000NkvXXu0mjfod;j00000NkvXXu0mjfJfU)g delta 241 zcmV?(x6iG;q41|XP7=Qt!A28@DiUJz0a0W_6 zVL-(Z0NlR2=h}MpKr&gZY?1_HpLg>&BRSx5`EkN4B0*$dO=@|q3Rq>pv4FZ~1BEt_ zZvnaHdDFf}97dSUHwYsj+5*86@P}02d4dmRAe}YP?|@H`$Mv5SA&FoN>YUeZMC(wv r6YgSRz;vN^UYUP^0T{sF15N_~3Z7&V((=OU00000NkvXXu0mjfd7^B_ diff --git a/img/yellow_giant2.png b/img/yellow_giant2.png index a06a84012e9a9a70804ca9e15622b03f60ca0e32..7df2cf62a87200472bf7c745e67ee88f5449382d 100644 GIT binary patch delta 396 zcmV;70dxM91os1wb$@M1L_t(|+SFIOPQySD93wYIKxH=wL5+));Twqf4;Op@bvn|M zl7Ao)qM;#WNSDH?6A_wpNn|&chT?2E!zuB_5-YE?THSlRkGZo$5|VNNVQD^qelMUX zfL18%fuloV0In+x;N-a8dZ#uIqygbA9l0{}uKp(krg9q&0)GPS-0oSPBrEINlh0CL z;*)%&vRmeDQ7ZsHhZgN?lCM z0C)$|5oS|hwSNY(4A>;VBnEEp@=!^8pgB2E)}rhp?aTH4>gv|x{<#)&0C;h1?*=O# z7!H1Io{rVw>A1ubCTgzD0}uCqlS(C8*O+jo`8&&SKe-|BEO;HKBiR?xY%2UDTdjow qWSKC4O(G0n5=*~|oBnh9H2`lYYU{9Q*8uVHCzS8lzIB7ba0`(4YE`D`r{h;@kowq%>BNF8RvjqrozP0^cKzmtD-#sOdRusG-Y6I zeuIo&$WLE;zrkJhF^YfaLDN00Zw@CnAf|P4Tw~~g+vY(=2U<ev-}R!T{n}7$d+U5C-55g2FS#pKN}Ki+)vCyFE_Wk6UNKn8I80Ip+E z6rf%cu7F_(13W$m1LSg71{i)EOy@clpNfBt7|ov~lCfjynSUgS`N$-Hs+^B>d;dL7 zBmxL0XM^M`$wmlqaez+SF z2cj_0eyhJQy?%R|5=C;~@7+-FZf#FmM;0W}>h zq@+M-kH7}4I06L%@oXY~3PXS`5D9@1+Ke=^?6Kuf*b;yQ;Qav{OHmY{ zToTTJVF&|c(!v0#)QbUn?X&0{OR<>07UE_6E+ZM*y&*^vqkjR&X@R4GuAkb&cqD*e z@>!K!HON^tfOtB9T?d27cO8<{~rV! z7qD&NXFSJZ3HUy+T*@A^@$VdNU&qWE)l1HS zOaJahOMT=F{4X`%7rqPD8)1O`UKqfeJT_h>KcfWT-vb;505*5jj!D(civR!s07*qo IM6N<$g7GMeQ2+n{ diff --git a/starmap.py b/starmap.py index 6207797..93ac4b0 100644 --- a/starmap.py +++ b/starmap.py @@ -2,21 +2,30 @@ import math import pygame import random import gametimer +import video class Galaxy(object): def __init__(self, width, height): self.starmap = [[[] for x in range(width)] for x in range(height)] self.starlist = [] + self.selection = None + self.selectionpng = None def update(self): for star in self.get_all_stars(): star.update() def draw(self, scr): + if self.selectionpng == None: + self.selectionpng = pygame.image.load("img/selection.png") + self.selectionpng.convert_alpha(scr) for star in self.get_all_stars(): + if video.get_forced_redraw(): + star.draw_dirty = True star.draw(scr) def add_star(self, star): self.starlist.append(star) + star.map = self self.starmap[int(star.y / 100)][int(star.x / 100)].append(star) def get_distance(self, x, y, x2, y2): @@ -58,8 +67,12 @@ class StarSys(object): self.startype = startype self.habitat = habitat self.minerals = minerals + self.map = None + self.draw_dirty = True def draw(self, surf): - self.startype.draw(surf, int(self.x / 10), int(self.y / 10), self.frame) + if self.draw_dirty: + self.startype.draw(self, surf, int(self.x / 10), int(self.y / 10), self.frame) + self.draw_dirty = False def update(self): #if self.startype.size == "Dwarf" and self.startype.color == "White": #print gametimer.elapsed() @@ -68,11 +81,14 @@ class StarSys(object): #print self.delays #sys.exit(0) self.frame_timer -= gametimer.elapsed() + oldframe = self.frame while self.frame_timer <= 0: - self.frame_timer += self.delays[self.frame] self.frame += 1 if self.frame >= len(self.delays): self.frame = 0 + self.frame_timer += self.delays[self.frame] + if self.frame != oldframe: + self.draw_dirty = True def set_frame_timers(self, delays): self.delays = [int(x * 1000) for x in delays] @@ -88,7 +104,7 @@ class StarClass(object): self.minerals_mod = minerals_mod self.frames = None - def draw(self, surf, x, y, frame): + def draw(self, star, surf, x, y, frame): if self.frames == None: self.frames = [pygame.image.load('img/%s_%s%d.png' % (self.color.lower(), self.size.lower(), i+1)) for i in range(2)] for png in self.frames: @@ -97,4 +113,7 @@ class StarClass(object): dest.x = x - (dest.w / 2) + 1 dest.y = y - (dest.h / 2) + 1 surf.blit(self.frames[frame], dest) + if id(star.map.selection) == id(star): + surf.blit(star.map.selectionpng, dest) + video.update(dest) diff --git a/starmap_gen.py b/starmap_gen.py index 946f520..ab547b5 100644 --- a/starmap_gen.py +++ b/starmap_gen.py @@ -167,8 +167,8 @@ def starmap_generate(): print "Generated star %s %s %s at (%s, %s)" % (startype.name, hab, min, int(x), int(y)) star = StarSys(int(x), int(y), startype, hab, min) - star.set_frame_timers([0.6 + (random.random() * 1.5), 0.6 + (random.random() * 1.5)]) + star.set_frame_timers([0.6 + (random.random() * 1.5), 0.2 + (random.random() * 0.5)]) map.add_star(star) - + map.selection = star i += 1 return map diff --git a/video.py b/video.py new file mode 100644 index 0000000..7473ca1 --- /dev/null +++ b/video.py @@ -0,0 +1,69 @@ +import pygame + +updatelist = [] +force_full = False +g_scr = None + + +def get_forced_redraw(): + global force_full + return force_full + +def force_redraw(): + """ + >>> force_redraw() -> None + forces a fullscreen update (slow! use with care) + """ + global updatelist, force_full + updatelist = [] + force_full = True + +def update(r): + """ + >>> update(rect) -> None + queues the given rectangle(s) for an update + """ + global updatelist, force_full + + if force_full: + return + if type(r) == tuple: + r = list(r) + elif type(r) != list: + r = [r] + updatelist += r + if len(updatelist) > 100: + force_full = True + updatelist = [] + + +def next_frame(): + """ + >>> next_frame() -> None + finalizes and draws the next frame + """ + global updatelist, force_full + + if force_full: + print "Doing FULL redraw!" + pygame.display.flip() + else: + pygame.display.update(updatelist) + updatelist = [] + force_full = False + +def set_scr(scr): + """ + >>> set_scr(scr) -> None + sets the main screen (turn on?) + """ + global g_scr + g_scr = scr + +def get_scr(): + """ + >>> get_scr() -> pygame.Surface + gets the screen + """ + global g_scr + return g_scr \ No newline at end of file diff --git a/vssg.py b/vssg.py index 0726787..d7fd1a9 100755 --- a/vssg.py +++ b/vssg.py @@ -11,6 +11,7 @@ import starmap_gen import gametimer from ocempgui.widgets import * from ocempgui.widgets.Constants import * +import video pygame.init() @@ -194,6 +195,7 @@ while True: gametimer.next_frame() if guiscreen != None: + video.force_redraw() # irrelevant right now, but when we exit, we'll need a full redraw! for ev in events: if ev.type == QUIT: do_quit = True @@ -202,7 +204,6 @@ while True: break guiscreen.distribute_events(*events) continue - scr.fill((0,0,0)) for ev in events: @@ -216,13 +217,20 @@ while True: pass elif ev.type == KEYDOWN: keys += [ev.key] + elif ev.type == VIDEOEXPOSE: + video.force_redraw() + elif ev.type in (MOUSEBUTTONDOWN, MOUSEBUTTONUP): + pass if do_quit: break handle_keys(keys) map.update() + + if video.get_forced_redraw(): + scr.fill((0,0,0)) + map.draw(scr) - - pygame.display.flip() + video.next_frame()