From 3a5b6fe5b066ace9e3d03ec20c96c224cdbeb0b8 Mon Sep 17 00:00:00 2001 From: "U-christoph-TP\\christoph" Date: Wed, 7 Jul 2010 23:45:25 +0200 Subject: [PATCH] Major Changes. Windows Compatibility. --- BUGS | 0 Makefile | 0 README | 0 anchor.png | Bin animation.lisp | 76 +++++++++++++++++++++++++------ background_test_layer_1.png | Bin background_test_layer_2.png | Bin background_test_layer_3.png | Bin blue_nasobem.png | Bin blue_nasobem2.png | Bin blue_nasobem3.png | Bin boomerang1.png | Bin boomerang2.png | Bin boomerang3.png | Bin boomerang4.png | Bin boomerang5.png | Bin boomerang6.png | Bin boomerang7.png | Bin boomerang8.png | Bin brown_stone.png | Bin burning-marshmallow.lisp | 0 burning_marshmallow_ld1.png | Bin burning_marshmallow_ld2.png | Bin burning_marshmallow_lu1.png | Bin burning_marshmallow_lu2.png | Bin burning_marshmallow_rd1.png | Bin burning_marshmallow_rd2.png | Bin burning_marshmallow_ru1.png | Bin burning_marshmallow_ru2.png | Bin coral.png | Bin 0 -> 15029 bytes door.png | Bin draw.lisp | 41 +++++++++-------- empty.png | Bin files.lisp | 78 +++++++++++++++++++++++++------- fireball1.png | Bin 0 -> 8401 bytes fireball2.png | Bin 0 -> 8142 bytes flying-nasobem.lisp | 0 functions.lisp | 9 ++-- game-object-with-animation.lisp | 10 ++-- game.lisp | 7 +++ grass_colored.png | Bin gray_stone.png | Bin imagemagick.lisp | 36 +++++++++++++++ key.png | Bin leaf.png | Bin leveleditor.lisp | 0 nasobem2.png | Bin nasobem3.png | Bin teleporter.png | Bin trampoline1.png | Bin 0 -> 11684 bytes trampoline2.png | Bin 0 -> 10429 bytes tulip2.png | Bin tulip3.png | Bin uxul-world-leveleditor.asd | 0 uxul-world-leveleditor.lisp | 0 uxul-world.asd | 3 +- uxul1shoot_small.png | Bin uxul2shoot_small.png | Bin 58 files changed, 202 insertions(+), 58 deletions(-) mode change 100644 => 100755 BUGS mode change 100644 => 100755 Makefile mode change 100644 => 100755 README mode change 100644 => 100755 anchor.png mode change 100644 => 100755 background_test_layer_1.png mode change 100644 => 100755 background_test_layer_2.png mode change 100644 => 100755 background_test_layer_3.png mode change 100644 => 100755 blue_nasobem.png mode change 100644 => 100755 blue_nasobem2.png mode change 100644 => 100755 blue_nasobem3.png mode change 100644 => 100755 boomerang1.png mode change 100644 => 100755 boomerang2.png mode change 100644 => 100755 boomerang3.png mode change 100644 => 100755 boomerang4.png mode change 100644 => 100755 boomerang5.png mode change 100644 => 100755 boomerang6.png mode change 100644 => 100755 boomerang7.png mode change 100644 => 100755 boomerang8.png mode change 100644 => 100755 brown_stone.png mode change 100644 => 100755 burning-marshmallow.lisp mode change 100644 => 100755 burning_marshmallow_ld1.png mode change 100644 => 100755 burning_marshmallow_ld2.png mode change 100644 => 100755 burning_marshmallow_lu1.png mode change 100644 => 100755 burning_marshmallow_lu2.png mode change 100644 => 100755 burning_marshmallow_rd1.png mode change 100644 => 100755 burning_marshmallow_rd2.png mode change 100644 => 100755 burning_marshmallow_ru1.png mode change 100644 => 100755 burning_marshmallow_ru2.png create mode 100755 coral.png mode change 100644 => 100755 door.png mode change 100644 => 100755 empty.png create mode 100755 fireball1.png create mode 100755 fireball2.png mode change 100644 => 100755 flying-nasobem.lisp mode change 100644 => 100755 grass_colored.png mode change 100644 => 100755 gray_stone.png create mode 100755 imagemagick.lisp mode change 100644 => 100755 key.png mode change 100644 => 100755 leaf.png mode change 100644 => 100755 leveleditor.lisp mode change 100644 => 100755 nasobem2.png mode change 100644 => 100755 nasobem3.png mode change 100644 => 100755 teleporter.png create mode 100755 trampoline1.png create mode 100755 trampoline2.png mode change 100644 => 100755 tulip2.png mode change 100644 => 100755 tulip3.png mode change 100644 => 100755 uxul-world-leveleditor.asd mode change 100644 => 100755 uxul-world-leveleditor.lisp mode change 100644 => 100755 uxul1shoot_small.png mode change 100644 => 100755 uxul2shoot_small.png diff --git a/BUGS b/BUGS old mode 100644 new mode 100755 diff --git a/Makefile b/Makefile old mode 100644 new mode 100755 diff --git a/README b/README old mode 100644 new mode 100755 diff --git a/anchor.png b/anchor.png old mode 100644 new mode 100755 diff --git a/animation.lisp b/animation.lisp index 20fce5b..c64a20a 100755 --- a/animation.lisp +++ b/animation.lisp @@ -4,6 +4,9 @@ (in-package :uxul-world) +(defparameter *zoom-ash* -1) +(defmacro zoom-trans (x) `(ash ,x *zoom-ash*)) + (defparameter *graphics-table* nil) ;; the functions may assume that the contents of a graphics-file - @@ -11,11 +14,28 @@ ;; graphics with an equivalent path any time you load an image. (defclass animation (xy-coordinates) - ((images :initarg :images - :initform (make-array (list 0) :element-type 'sdl:surface) - :accessor images -; :type (simple-array 'sdl:surface (*)) - :documentation "Array with the images") + ( +;; (images :initarg :images +;; :initform (make-array (list 0) :element-type 'sdl:surface) +;; :accessor images +;; ; :type (simple-array 'sdl:surface (*)) +;; :documentation "Array with the images") + (images-2x :initarg :images-2x + :initform (make-array (list 0) :element-type 'sdl:surface) + :accessor images-2x + :documentation "Array of double-sized images") + (images-1x :initarg :images-1x + :initform (make-array (list 0) :element-type 'sdl:surface) + :accessor images-1x + :documentation "Array of normal-sized images") + (images-.5x :initarg :images-.5x + :initform (make-array (list 0) :element-type 'sdl:surface) + :accessor images-.5x + :documentation "Array of half-sized images") + (images-.25x :initarg :images-.25x + :initform (make-array (list 0) :element-type 'sdl:surface) + :accessor images-.25x + :documentation "Array of quarter-sized images") (sprite-image-number :initform 0 :initarg :sprite-image-number :accessor sprite-image-number @@ -55,6 +75,18 @@ will be used to minimize the number of file-accesses for loading animations. For any animation created from a file by the api from below, this will refer to an animation in the *graphics-table*." ))) +(defmethod images ((obj animation)) + (cond + ((= *zoom-ash* 0) + (images-2x obj)) + ((= *zoom-ash* -1) + (images-1x obj)) + ((= *zoom-ash* -2) + (images-.5x obj)) + ((= *zoom-ash* -3) + (images-.25x obj)))) + + (defmethod draw ((obj animation)) (when (not (<= (sprite-delay obj) 0)) ;<=, because -a means "paused, ;but a is the delay when @@ -66,8 +98,8 @@ below, this will refer to an animation in the *graphics-table*." ))) (setf (sprite-image-number obj) (mod (+ 1 (sprite-image-number obj)) (length (images obj)))))) (when (visible obj) (sdl:draw-surface-at-* (elt (images obj) (sprite-image-number obj)) - (+ *current-translation-x* (round (x obj))) - (+ *current-translation-y* (round (y obj)))))) + (zoom-trans (+ *current-translation-x* (round (x obj)))) + (zoom-trans (+ *current-translation-y* (round (y obj))))))) ;additional methods to make life easier (defmethod pause ((obj animation)) @@ -112,10 +144,28 @@ reference, if the current filename already exists." "Create an animation from the list of animation-names given in the images-variable." (make-instance 'animation - :images (mapcar - #'(lambda (x) - (sdl:convert-surface :surface (sdl-image:load-image - x - :image-type :PNG :alpha 1 ))) - image-list) + :images-2x (mapcar + #'(lambda (x) + (sdl:convert-surface :surface (sdl-image:load-image + (car x) + :image-type :PNG :alpha 1 ))) + image-list) + :images-1x (mapcar + #'(lambda (x) + (sdl:convert-surface :surface (sdl-image:load-image + (cadr x) + :image-type :PNG :alpha 1 ))) + image-list) + :images-.5x (mapcar + #'(lambda (x) + (sdl:convert-surface :surface (sdl-image:load-image + (caddr x) + :image-type :PNG :alpha 1 ))) + image-list) + :images-.25x (mapcar + #'(lambda (x) + (sdl:convert-surface :surface (sdl-image:load-image + (cadddr x) + :image-type :PNG :alpha 1 ))) + image-list) :sprite-delay frame-skip)) \ No newline at end of file diff --git a/background_test_layer_1.png b/background_test_layer_1.png old mode 100644 new mode 100755 diff --git a/background_test_layer_2.png b/background_test_layer_2.png old mode 100644 new mode 100755 diff --git a/background_test_layer_3.png b/background_test_layer_3.png old mode 100644 new mode 100755 diff --git a/blue_nasobem.png b/blue_nasobem.png old mode 100644 new mode 100755 diff --git a/blue_nasobem2.png b/blue_nasobem2.png old mode 100644 new mode 100755 diff --git a/blue_nasobem3.png b/blue_nasobem3.png old mode 100644 new mode 100755 diff --git a/boomerang1.png b/boomerang1.png old mode 100644 new mode 100755 diff --git a/boomerang2.png b/boomerang2.png old mode 100644 new mode 100755 diff --git a/boomerang3.png b/boomerang3.png old mode 100644 new mode 100755 diff --git a/boomerang4.png b/boomerang4.png old mode 100644 new mode 100755 diff --git a/boomerang5.png b/boomerang5.png old mode 100644 new mode 100755 diff --git a/boomerang6.png b/boomerang6.png old mode 100644 new mode 100755 diff --git a/boomerang7.png b/boomerang7.png old mode 100644 new mode 100755 diff --git a/boomerang8.png b/boomerang8.png old mode 100644 new mode 100755 diff --git a/brown_stone.png b/brown_stone.png old mode 100644 new mode 100755 diff --git a/burning-marshmallow.lisp b/burning-marshmallow.lisp old mode 100644 new mode 100755 diff --git a/burning_marshmallow_ld1.png b/burning_marshmallow_ld1.png old mode 100644 new mode 100755 diff --git a/burning_marshmallow_ld2.png b/burning_marshmallow_ld2.png old mode 100644 new mode 100755 diff --git a/burning_marshmallow_lu1.png b/burning_marshmallow_lu1.png old mode 100644 new mode 100755 diff --git a/burning_marshmallow_lu2.png b/burning_marshmallow_lu2.png old mode 100644 new mode 100755 diff --git a/burning_marshmallow_rd1.png b/burning_marshmallow_rd1.png old mode 100644 new mode 100755 diff --git a/burning_marshmallow_rd2.png b/burning_marshmallow_rd2.png old mode 100644 new mode 100755 diff --git a/burning_marshmallow_ru1.png b/burning_marshmallow_ru1.png old mode 100644 new mode 100755 diff --git a/burning_marshmallow_ru2.png b/burning_marshmallow_ru2.png old mode 100644 new mode 100755 diff --git a/coral.png b/coral.png new file mode 100755 index 0000000000000000000000000000000000000000..294d63fe79938c0165184a348caa82b9ca6ccab2 GIT binary patch literal 15029 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%0DT){}NM&d86X%Pv}FGNEqsR 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 Iga5fD&NME)v73sl!uMq5QgBVnheXJ zz&37ykh!)54eQf2(k_=_N}#Tzuz~|E0JPPeLRjYiknH8C|NiGCOiLO>8;Z>QDNH^p zh8i6yI?4t(3bY!3O635cY+;_~?@)UIO@YKn-vRL09Vly5&S~C1k1Ziz{k9IgP~b8S zHc~O}zRNYWpR@#+`8?qznk3I13p!q=vjy-a45c--+K;mMZ+;070*)pDOFu>ko7Z1J zr!;!ZH9UWjf=9lRiG5ZzA<^_hU#=Xm)T4lzd1!qF5ql;+Ao{T6Otsz81Q@r@=SFVQ zujGui{fzUo_2^2j#6plweax=Agl7DmOrveHY4^x2)qSwSVIE+`oMD&n6DdBNNr1Y; zXgi86e?9OP^z*k(NUfe&z5{!F7L@s1FURDf1Q6ZFKucq<5Kl9856LlGF)EBbbx`ddRG7`-gN5+r zfz-L=mY3}h@@AMQ8NU90|F`|nfz}2KG+kL7NFQc*u)Hc7GU&_mp-_cE`V^^E9RH{CX%0I&O@zlES4Du|0v|sixUmhXO^s>ozh;Fx{7=d#)j_l6tS`!` zm+*xdNQ+^IFZoBB_=D19m(s*~i{ZPaz1gU2M96s=I`sD^sm7xvhWt9VR>>AK{}nD^ zGOrEKyKfVnD)GHEX%>K|Z!1Se6J9a>6DO(>;kGlhb-C7Y2PK2YD@;}0#_Ev2=`^KS zi9?lAh#tO|LLd5k%Zdyg?PCt&cR9*44u@gd<#S=FIRjs3Z-8rD?~@e!EXV~gy+?=^?%9PQPvHs5K5&m znu_GDoH+B&Y-eC3=ESObjGBCI6zyEg!W<9{7dpZFejj4hZ5pr<<}1SsEOL_PVrA|9 zVxB+TV7tH(`j1^KntC&eZ2w@dh>|=f(mtBjdma3y1l-W@rO>a$s=_NkszOb?)-sD&B}dR+Y|Hqm6@$B*?(bOdoI+xGxAKJO>rYAor zT|~!3m8HXhL4nZeVm={epsNta;_hS6TsW0WUViM=f%26i!~I+u-^Rx5Tr3GD#xz7r z)QMc*W78*WNN-L67zC)Xc@j0By?lp~gN50Ry`Gj9|5OF}21#KQSTt71*^i-w zA|}$of2Y>7IyP-bLbe&&D57iciR)kBzu8A$Y^(RHexsYe|1n$X7yNGU+;{JH{Vybs>zFoE6qf=w`16bmCka@9IKRMtW2Hq) zNBbhiCM*$4P4Ey*B<3E+(kNTH7MeE)(S5gyp*Mi?2J)E4eCs?c(n!Ml#E? zWU!VNLU86&oYZNXuMTUdTlIXP$>X{KJ8>Ki)$V5TN{S{^F`i_ej-Z&#^kd8e*;CAm zAYLpam7!LdW9OTcIW0kq@Ca4zzKvXgY2Tb}V`C9%nP&OR0dbjW`H%hMReme0^Fo-d zPDz5-8uDrV8wsE58x>*L%i*1-XXcD1R8*2vR@yTALhr+WHqm3V6TE^OYZIU51wx`<1=mU?gj_q^N`SNf8y5l^?ezNaQjXs zcofyE-|s``Js}{$kw2b7biSLFN!um#tA4B&oI5fib_qd@uU`x0a=m{)!smwVHu0mm zF7pLiIfQJ6^CWP3)?+E0q9gU<3CyC5Pfe=Vdl z{%RC!Tr7Om@$Lu`B({v%prhA(zz<&?_9#LxiCX5i@TP|5Y$?ctcqcMLztFZq@^c2l zY+}KVDDXQh;-`zBEQg=h2=8Mz<-n(&ISql7oYXvvNTqDYXpZemzSuZh`BbS+v$T5 zUM?SzE9N1=Q&}d!)cA^9j;z6(mISZ}A?rV@T=W7EE8b)~@NZeasbklg+pKzN(u4tQYM;D$F4dC;4-EymzV3SY$q`j7XAZo6?E4 zK5E7J>|tC4H#aJ-+Q!zwK`Y3ajDQBeYOr6dP|FnQ?~>pUe5m>QSFtbv4SZS1W@ zBjLT)Y;QR!C$z5G8lS$lE-a93O{i-?c@J))09WO-RPPN4_J6$;^x29;W}USvdtFVAd9YgL+N1y53@< z5CA63OG? zpvtk zqC-=u@-FvYAWH}Q~{0Iz$ zKHiwl$YA~axJ^aPyn8pFt3fb&kYYh9_{bF{j2tU7jyKqtE>B2D-wSG~#|Kjj=sPIv zfE#H}KBf&W)W)T!en4j=$8FyP{bs`c?lyD4a@9Do%pQZYck1%*D5n0|zfX510D-ksbT zs^918;-U|5cQWX7?JqzTv1b_PUtFOwJ(RXyIy%c8$t@JEj2Fu?J4aOY_X`yp^0946 z=!#QAf71g*9t#%BXEE7Ab)qK!gP79if9knEHsg<-DvRus`ab)07#%r*f6lcgrX4|s z9@<{@U%8r+P}G`83XZ4AFNJYVI!v`TKQsY5r+ykE5evY6MsP)KaQb$-o}lO(RjR}184qFL5Z~* z!9)<@0*fncAFTRkBPP_YZI-(UU~`yp{%dheJ%30amkzQ(vg<#*iSWmEQ!Z*G#!N&W zpeASQ>PN$4mhAFZE>JJflBu9r`snxv6Pu|1S3u*_}LB znOXK(=dcaXAAbkWO_74r_Yp`uK-2p_y}g-tBlc-abP-mfl-V~a-?7-RI$Yk7$VAB4 zsZVETf$&2^M6&&eSYS_+6n~G0o{n9#_vYHws%K+rYQ5D>eA{V(ce(FXl)s32agYF9 z@S<5#y#jA_>q!SbKGjBTV&DrKh;a~)>(Ft2mJH!L3{-?8uN+K#Ta-20kHPLq`xJLz z&HxDhO>z4UXwN?u-|o##0ycK-jbKm}gb=(R$l)G_^>P(U_fB%k_@Wj%fyBy7+qgU! z^1PW*^OXM~=s0#DHTyFw^5LBJ0NKqAuKUPMfF_H!2Qq`_B7DLO+iLDOOlHE|vNsSd zHdw+m=`)rX7^XXLa8)E>?ctIx{l=EG!xnq~^sJ@M>LD0yG9K-{a2ZJDYVN|hs zVq>?(_)vF9ZfYW?-1ym>ox2^*YCT~+$o>;A!yuznRIuP!NlfXLLbCxoFxDHE^Qm?P zuRk-XdkHRFxQ=dHY1CM&nKP`dJw^#i%V-tf%3#cVCiVcGG8h`;kV4ahVuyN5ELynb zfb8hp#8eu-f5HwkdxPuAS$K1E_OI%PH#Y_uYt6ue$$M;qhe9~(qDk;rKt8Hf)0G?R zI56PVmqjYYf;_-Rxvp4R87`g0&}&ye@3S_{c3SR0_ps0O3J0DlURCLx9vE!~d~8-z zQBhbc2~_YIU{;~1AjNwU6sR??UfMcSJTqhks#}XfAAb#s)J(+9Nx``P%jEXaw>!?+ z-Bp5nD(~)8-TSoRkMR8UlEXkzQ~Ht`T<`7E)r=tgs#I`(%>scQipC=R7=!2b+boBi zK30fTCv3Np6#AQZeV=&cR#uZwZnSyk1QZ~m-zDmUqUu1=mj-9S#G-d2r| z$2#Js^c!}`SOHZ3hwneZ4oFMCEpHoj-}Y|D=n2sUf1K9ID;{3&Wa^DWLYiGksoY-` z%KW(&y>gaY>AWD3Xr7(efv{my+l{&S(gEc(X)J0*~ zpww^zo+yBj-YVe#@w7)xBAL21rSIsc(7vX$GD!S#Np?v1?gQN;FVM>P$l_!7UR=L17PM$n zj;@){E_?qoOJ<>t!!NhcbHK!Ap4|-X3XqwW7gLVu`MKUy(9{R=`RXjte04y#H0cgT zCN+fdfQy?6Yft+z5Pxq1;gK|4Hj)SV)Xv1r=Y5%hTt8bRBJZaIhi$&G+?!s+z7vw= zb+gYtq=bnV6cUvp=nxEsKV=a;LXT-b$4aHf)^%evzV*l05xor$%?hfB5G|gBsMIIL zoiRxNb%{OtC^xhMH@+6`MP15JZ?p zpcZ@~6SBBI9`N4!0|cG1?Hy-SyQ zD6w+>vK_{oKfTi8zuwQQ1?#ga(6Q%VF|~I@E{P9XV*9pB?4B5LORN#!$&LnpP|MJ-dxJ3^JA<~Q5guS26%IRuG$t&KOl z!;ACMZyOHX+-}!9iK3qz4wKQ7E4k_nUv1)f??LX!vt>8c$Fn_`@!Y`$Cdw)?)bzD( ziK8JtK+hT7KUouy7%q9~4XAeg5W!m#-u-q1p<9_?_t4{7SuC;m_~2+Ws-9i(-Osd-Q-sqdfwpcxhrU;qa`F6STEX2dyfh z1-6$&8K2|a?US8Gp-|;v{XIp{$*TM#dF@qb$k?oV zEa%yO_kV1y2o5>p=`#*#|Im*(@fkkD!~R6J%vzQ`lCii}{&?KPNAoX^u0*1Z{Cya; zU>w&l+Ww7mnxUtO|IFl@46u@db$_(gq$dYU)dDTK(+obcodGi=zhb2bcQ;PtRDr>$ z8E4Sq;XI$rN3%8!+kczZZ+|v1666&PS$6G8130KjLoRo-n$dpDl{de@9-iGzPb_?} zw~Fxa%f-I=)K{&mYz&lVzZP@SzY4oPYK@&j_7s;IQUF?7qu%xw-_e<>tCZr=P#rJ! z7VF11X{oucF1WnCs136GGYTo4^B>11M;i0CJfIS8w#vyl)pJLuFF*t)D zZ05WX`D1VIpO|7QnT{nEX2Q(z-Urs6E8P7oUHUAuz~^@xor;QIF5c+a(nw=s9(4)B zz6~z%f+jd38yHkCJ5X#%SLR2OL{6ShzisCBIxH>O8`^Va>n^GNRb~Wzr#rchHTLq ztVSpY{>+q;F?+jf7_ZZcGgeU|w~7a-7<9gVfK!l+2NvSA!S}qGQ4daaCA4u3#~hF! zR%IO<5rW1K)~b)sFJGICmi??O#O67e1@~qLesTjyhoig*IclEA?;97fVD4tB8(4f#mkmwd`bdM!n4wIi zVxn>7Ui^^tU#jlknYB?&7y`7(SM`1IA{&fsT;7T)uR^DzWA!7GEtd#2Ee&h%+;`>vNtC?|3KXU%jlA_C-mK841+mpfL^|5`|-vJ@G{ewcHT`ZH>%``nxmL?P8 z7&!G*rcI!9w9~(en1)3%T?B`0?+n%iYLpAIwZ`>#$VqpGuowyQ7x{&d*S?Q!j+B=( zVqbK$`q!Ho3c+a?dXl*FetqH?DTKO=@R@11c%T#+|FgD|cenLcbg|C&$$&oSZeqt zsr{ynb_(B{qo)&C!*lCaw6z2fQ1okZUnDS`JVLC4@P8%CV6C5>?hm98X(8@^*3r?j z9(=8};DNb+%ZoG|p>(2ARf$;mY^KeW;L*C(eHSEfIK# zRJ!0WlJOt05g+C!?`_huK#(e`THh@tQVimbnv%vTh_6FP>&pk>g5Nt9K|y#63sbdx zTJ9fZt6=4aj`z_S(w`@-%f;H2=-mMKHqcrq?nGvDP(FvXM&d*Y$ob|bEP0`+yPVdT z0Nfgl25+m|>5^q5)5DvRy!_*=g@0;DZU2V0`*Y{ygXp))Xtb+pq2SJ%PI!laZ2jFq zAkdA3-X-0=zZ%f$*gSBj4e&hwYPK7qbkZka8f`!kY2CIwjd@IPf(5e0Hq>lY)4qC! znE+iySTcAlx(7!N2+E=pj%OdEbu41pKHDapcL&$|9PSqG>q L>nJrS*v9=I0)nP6 literal 0 HcmV?d00001 diff --git a/flying-nasobem.lisp b/flying-nasobem.lisp old mode 100644 new mode 100755 diff --git a/functions.lisp b/functions.lisp index 2cbf8ca..aa71ef5 100755 --- a/functions.lisp +++ b/functions.lisp @@ -570,8 +570,9 @@ are not zero" (defun old-draw-rectangle (obj &key (r 0) (g 0) (b 0)) - (sdl:draw-rectangle-* (+ *current-translation-x* (x obj)) - (+ *current-translation-y* (y obj)) - (width obj) - (height obj) + (declare (type game-object obj)) + (sdl:draw-rectangle-* (zoom-trans (+ *current-translation-x* (x obj))) + (zoom-trans (+ *current-translation-y* (y obj))) + (zoom-trans (width obj)) + (zoom-trans (height obj)) :color (sdl:color :r r :g g :b b))) diff --git a/game-object-with-animation.lisp b/game-object-with-animation.lisp index 993e72e..f188e53 100755 --- a/game-object-with-animation.lisp +++ b/game-object-with-animation.lisp @@ -10,7 +10,8 @@ ((animation-translation :initarg :animation-translation :accessor animation-translation :initform (make-xy 0 0) - :documentation "The translation of the animation") + :documentation "The translation of the + animation (in double zoom).") (animation :initarg :animation :accessor animation :documentation "The animation of this object") @@ -55,9 +56,10 @@ (+ (y obj) (height obj) (y bounds)) (- *current-translation-x*) (- *current-translation-y*) - (- +screen-width+ *current-translation-x*) - (- +screen-height+ *current-translation-y*)) - T))) + (- (ash +screen-width+ (- *zoom-ash*)) *current-translation-x*) + (- (ash +screen-height+ (- *zoom-ash*)) *current-translation-y*)) + T)) +) diff --git a/game.lisp b/game.lisp index 5b98d6a..c026d4d 100755 --- a/game.lisp +++ b/game.lisp @@ -17,6 +17,7 @@ "Start the Game: Call room-function for getting the room-object to run. Music is ignored so far. 15-fps makes only every second frame be drawn (for very slow computers)" + (sdl:set-video-driver "directx") (sdl:with-init (sdl:sdl-init-video sdl:sdl-init-audio) (sdl:window +screen-width+ +screen-height+ :title-caption "Uxul World" @@ -49,6 +50,12 @@ drawn (for very slow computers)" (cond ((sdl:key= key :SDL-KEY-ESCAPE) (sdl:push-quit-event)) + ((sdl:key= key :SDL-KEY-O) + (setf *zoom-ash* + (max -3 (1- *zoom-ash*)))) + ((sdl:key= key :SDL-KEY-I) + (setf *zoom-ash* + (min 0 (1+ *zoom-ash*)))) (T (on-key-down *current-room* key)))) (:key-up-event (:key key) diff --git a/grass_colored.png b/grass_colored.png old mode 100644 new mode 100755 diff --git a/gray_stone.png b/gray_stone.png old mode 100644 new mode 100755 diff --git a/imagemagick.lisp b/imagemagick.lisp new file mode 100755 index 0000000..51b0e13 --- /dev/null +++ b/imagemagick.lisp @@ -0,0 +1,36 @@ +;; Copyright 2010 Christoph Senjak + +(in-package :uxul-world) + +;; "Binding" for the "convert"-Program + +(defparameter *convert* #P"C:\\Program Files (x86)\\ImageMagick-6.6.2-Q16\\convert.exe") + +(defun run-convert (arguments in) + "Return output of convert" + (let* ((p (sb-ext:run-program *convert* arguments + :wait nil + :input :stream + :output :stream)) + (pin (sb-ext:process-input p)) + (pou (sb-ext:process-output p)) + (ret '())) + (loop for byte across in do + (progn + (format t "doing~%") + (write-byte byte pin) + (loop while (listen pou) do + ;; this read should never fail and never be eof + (format t "reading 1~%") + (push (read-byte pou) ret)))) + (format t "finishing out, closing~%") + (finish-output pin) + (close pin) + (let ((c 0)) + (loop while (setf c (read-byte pou nil nil)) do + (format t "reading 2~%") + (push c ret))) + ret)) + +(defun resize-image (bytes x y) + (run-convert (list "-scale" (format nil "~dx~d" x y) "-" "-") bytes)) \ No newline at end of file diff --git a/key.png b/key.png old mode 100644 new mode 100755 diff --git a/leaf.png b/leaf.png old mode 100644 new mode 100755 diff --git a/leveleditor.lisp b/leveleditor.lisp old mode 100644 new mode 100755 diff --git a/nasobem2.png b/nasobem2.png old mode 100644 new mode 100755 diff --git a/nasobem3.png b/nasobem3.png old mode 100644 new mode 100755 diff --git a/teleporter.png b/teleporter.png old mode 100644 new mode 100755 diff --git a/trampoline1.png b/trampoline1.png new file mode 100755 index 0000000000000000000000000000000000000000..c103fcd1bf25769c0b2ce34343ffefc539da7e0f GIT binary patch literal 11684 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

sF?rT3joMG3P%Yu z6l%iK{&ar}6aw=%z6AV$@S-ZL+V#u**j)Fh^S|X`e(wu`TG_tKVaNUOL6j?Uwdsk~ zv4;4@7-4dcb*fO6s`JhNapRGA#$~Dx*2c%fO5GX!?(GpAI}TjVFAYe}57h*{U1ffv zLHmU65Ftv5F zgg3Fj_+rWaN3Dt^dp0DS>tD#kRnmLovR(uns<&;9xDzbtf~t52!4ZCI$kc^oowB znh;YdNMb~s;3)&hAJ$w7V?{$eZdtz_9LRt9m)bnAV*4)J8yyev;`|MJsX7{d)64F{ z&k)58S4y@;iH>MX$d8QD7dP7%-^dfr>u!Bu+?X;jM?T@mB@xp&`Cubt6jZ@H^j{{$ z#DjlwZVbZJ)y2iYMb>%mm!1d_cTA^U)cKRp_87-i`qqV>N22HZVW=4rHZw}rlvNQ4 zJFfT@ra^nK%U1t=k_}~`8Mx0sIu)vX9Y#?fl~dwG?;^J?>Ew?-_#Is>m^4_s~M_YS17YB3^RZHHCYRDgl0F3i)3>zD0wu3v@MlvQD5ZOKTc)5dE znzZe|U$u@$y?j0(d|n!B)s)2LJtfNAa40x^#w^3ZUT)_0vv8$w-KzJPd10=k4(6#6 zN^(LlNNUe(v)jiI+0=u_fuE2I|>|#Gd7{SEJ z2?LRZ1^s5PHM$sT8eKC@J-9%YlsxE`$qgu8p`gl7KtQzvMgr^*STmmD{e~!5qB&0%!rS&rl z?D)WayGqu1OZL^@XkDL?(S%&MxWBMOrHs=_twx3u#7HBLcQ00N6e=Z&^@{SocZ_2I zCm`(QsN`7KPXC7C9k}Ays8O%{?K}F75N!X&ADBHHXYJLaXDywehe4uf3MUPx&&}G{ zw@2_~x~hk$pn7bc=c1J)#)bEDIZ`z(W<**zS}M2H)_RZc^x!KG;7s8BTgKM*#$+TV z8ta2xrbI`ab!8LD<=t8})qmXVXIxz6(E8s?|GIoqMPe!_Gt`)}Tts&CK=Yz+yYJ3u zqPAaCEt|7hA~f|4;08Wn_bh27uwpLUz*Z+xCU}<86P)vcdAakR1rlZRYnvZHRh=1% z71ur&@ga_(l+|R`2N(&H%(3A2ibxXwp+?E6KXh z63)bZj_klE<2NBCv#jXw;=g)RxrEeF3k|!IeQ?+VWn@-G{Di;=Cd6!gsap)b>Kj4x z7v8iwrsK{?rsYN#KU}jy^ToqP`s*>x7kjJ8Zun<>EyTw~6+}14dBJFV&+oq(Aj@@} zA5J`_miBLKcIKTW@k9hSJ>C(mWs7QkKFg7|<&6MQp3m%#$QD+0Z0A?j%<- u^c&5LJcjh#w?~h3>{aWQtK{Mhfl=g#OpO)a7uZHZKv7mjrdrA*=>Gt;T?-ok literal 0 HcmV?d00001 diff --git a/tulip2.png b/tulip2.png old mode 100644 new mode 100755 diff --git a/tulip3.png b/tulip3.png old mode 100644 new mode 100755 diff --git a/uxul-world-leveleditor.asd b/uxul-world-leveleditor.asd old mode 100644 new mode 100755 diff --git a/uxul-world-leveleditor.lisp b/uxul-world-leveleditor.lisp old mode 100644 new mode 100755 diff --git a/uxul-world.asd b/uxul-world.asd index b11d187..47b03e9 100755 --- a/uxul-world.asd +++ b/uxul-world.asd @@ -7,7 +7,8 @@ :version "No Release Yet" :author "Christoph Senjak " :license "Copyright 2009 Christoph Senjak." - :depends-on (#:lispbuilder-sdl #:closer-mop + :depends-on (#:lispbuilder-sdl #:lisp-magick + #:closer-mop #:cl-fad #:lispbuilder-sdl-image) :components ((:file "uxul-world") diff --git a/uxul1shoot_small.png b/uxul1shoot_small.png old mode 100644 new mode 100755 diff --git a/uxul2shoot_small.png b/uxul2shoot_small.png old mode 100644 new mode 100755 -- 2.20.1