From e366209f460e2635698c4a8e12a3fd8588172c69 Mon Sep 17 00:00:00 2001 From: Raimon Zamora Date: Sun, 16 Nov 2025 16:51:47 +0100 Subject: [PATCH] - [NEW] Cada sprite pot usar el seu propi gif - [NEW] Monedes --- data/animations.lua | 47 +++++++++++++++++++++++--------------- data/items.lua | 4 ++-- data/misc.gif | Bin 0 -> 671 bytes data/morcus.gif | Bin 0 -> 812 bytes data/mummy.gif | Bin 0 -> 654 bytes data/rooms_background.gif | Bin 1162 -> 1162 bytes data/rooms_foreground.gif | Bin 1728 -> 1728 bytes data/rooms_items.gif | Bin 1001 -> 1004 bytes data/sprites.gif | Bin 1731 -> 1807 bytes data/sprites.lua | 20 +++++++++++++++- data/templates.lua | 17 +++++++++++++- 11 files changed, 65 insertions(+), 23 deletions(-) create mode 100644 data/misc.gif create mode 100644 data/morcus.gif create mode 100644 data/mummy.gif diff --git a/data/animations.lua b/data/animations.lua index 4894f54..68da322 100644 --- a/data/animations.lua +++ b/data/animations.lua @@ -44,45 +44,54 @@ animations = { ["bullet"] = { cycle = {1}, frames = { - { frame={x=0,y=19,w=4,h=3}, wait=4 } + { frame={x=156,y=0,w=4,h=3}, wait=4 } } }, ["mummy_walk"] = { cycle = {1,2,1,3}, frames = { - { frame={x=0,y=24,w=16,h=16}, wait=4 }, - { frame={x=16,y=24,w=16,h=16}, wait=4 }, - { frame={x=32,y=24,w=16,h=16}, wait=4 } + { frame={x=0,y=0,w=16,h=16}, wait=4 }, + { frame={x=16,y=0,w=16,h=16}, wait=4 }, + { frame={x=32,y=0,w=16,h=16}, wait=4 } } }, ["mummy_dying"] = { cycle = {1,2,3,4,5,6,7,6}, frames = { - { frame={x=48,y=24,w=16,h=16}, wait=2 }, - { frame={x=64,y=24,w=16,h=16}, wait=2 }, - { frame={x=80,y=24,w=16,h=16}, wait=2 }, - { frame={x=96,y=24,w=16,h=16}, wait=2 }, - { frame={x=112,y=24,w=16,h=16}, wait=2 }, - { frame={x=128,y=24,w=16,h=16}, wait=4 }, - { frame={x=144,y=24,w=16,h=16}, wait=2 } + { frame={x=48,y=0,w=16,h=16}, wait=2 }, + { frame={x=64,y=0,w=16,h=16}, wait=2 }, + { frame={x=80,y=0,w=16,h=16}, wait=2 }, + { frame={x=96,y=0,w=16,h=16}, wait=2 }, + { frame={x=112,y=0,w=16,h=16}, wait=2 }, + { frame={x=128,y=0,w=16,h=16}, wait=4 }, + { frame={x=144,y=0,w=16,h=16}, wait=2 } } }, ["mummy_dead"] = { cycle = {1}, frames = { - { frame={x=128,y=24,w=16,h=16}, wait=100 }, + { frame={x=128,y=0,w=16,h=16}, wait=100 }, } }, ["mummy_undying"] = { cycle = {7,6,7,6,7,6,7,6,5,4,3,2,1}, frames = { - { frame={x=48,y=24,w=16,h=16}, wait=2 }, - { frame={x=64,y=24,w=16,h=16}, wait=2 }, - { frame={x=80,y=24,w=16,h=16}, wait=2 }, - { frame={x=96,y=24,w=16,h=16}, wait=2 }, - { frame={x=112,y=24,w=16,h=16}, wait=2 }, - { frame={x=128,y=24,w=16,h=16}, wait=1 }, - { frame={x=128,y=40,w=16,h=16}, wait=1 } + { frame={x=48,y=0,w=16,h=16}, wait=2 }, + { frame={x=64,y=0,w=16,h=16}, wait=2 }, + { frame={x=80,y=0,w=16,h=16}, wait=2 }, + { frame={x=96,y=0,w=16,h=16}, wait=2 }, + { frame={x=112,y=0,w=16,h=16}, wait=2 }, + { frame={x=128,y=0,w=16,h=16}, wait=1 }, + { frame={x=160,y=0,w=16,h=16}, wait=1 } + } + }, + ["coin"] = { + cycle = {1,2,3,4,3,2}, + frames = { + { frame={x=0,y=0,w=8,h=8}, wait=2 }, + { frame={x=8,y=0,w=8,h=8}, wait=2 }, + { frame={x=16,y=0,w=8,h=8}, wait=2 }, + { frame={x=24,y=0,w=8,h=8}, wait=2 } } }, } \ No newline at end of file diff --git a/data/items.lua b/data/items.lua index 6d383a6..f47e582 100644 --- a/data/items.lua +++ b/data/items.lua @@ -4,7 +4,7 @@ items = { visual = {x=0,y=24,w=16,h=16} }, [2] = { - name="mummy2", - visual = {x=16,y=24,w=16,h=16} + name="coin", + visual = {x=0,y=40,w=8,h=8} } } \ No newline at end of file diff --git a/data/misc.gif b/data/misc.gif new file mode 100644 index 0000000000000000000000000000000000000000..9dab1d4b875d4b32e25b671824d0d7bd3048893c GIT binary patch literal 671 zcmV;Q0$}||Nk%v~VW0p|0K@Wj8p7G0WyJt|}c~qVs zvFf*e|L$e}bAEPoX)An(h+9H&o1UhpIiLp^ ztgWS}u(4UIt*)}SxG1!&0T_|Fz^0(RzP-P}$cL2Blu$fdK;!FJ;oSi8H{1 z2M1v8>A}FkOb!E(<}_-QX3_yInF-ZH)aHb%SWV=6RdpuTs{x=+rE1jb*9k3us^wbN z>(>%vsoL~vwZwn{<)8(ad$n!=v@heP(y(BG0uBlmXvhk;MgYQw5i6b`R&blgge4qS zAYt)cf|wU*M%)>#<;yk;kLK*{NovuXC8Rw4$z}l9q-PhjtvYsK+KyET5TM|vf&c0GFn2$el%b`s>jgI~|Sz5Dm@1%uUnMdZ@I(SujBz%K@N+fxMTReteK{JnRSx0qam5hggnVM`5oIs0=U_+jeU23YT zHKwPSZm*bhnnbOuxRF!1tO1~*VZ3U$!nVLXW)2J!91IK`cg4n8(m{B`bIHri&&M;` z%+Aoh4+mT%;M~wR>EhnV49d&{90S>A+wSc6;oa;sXV}HtM$cX#W%BCPD^c#9z=Q>} z4V#NMb^=lMW{Tbab|Cqec`zzOi)qlH@s=8ELM}>GIvh znL0!AFdQ{1n$b^9?+6W8LS+e}ooHYnKm+GC0S0Ua9GirO))IolX3)6xYtNr= z{9fRiFl@Qd>}cV^dlv%VT!91_ zKIp&pevUQfxuX5&P+knIXWw`w2;hvVc^W7%7X#`EW}AKO6{5g}7~%$=f%mPpVSOD& zR|s+egeXL0Z-r)`Lx>4*;R6>!7k~h93E(1B4hnF`j5osQ;9&{cs3C1GD&V6}3l@2# zh$QHEf`dw!u%tzCL3IFBbJ%EQl@ADc1C3X9sbd#5j(I}>T!zUanqjKRBoAp~`9hph qSybkoW;W?0n_hmYW0?a2ac7Wu%D|(LhX(2=qJS>yWTP&G0028G*Kgkd literal 0 HcmV?d00001 diff --git a/data/mummy.gif b/data/mummy.gif new file mode 100644 index 0000000000000000000000000000000000000000..dc579915a880f3f922d44a93848248c801503323 GIT binary patch literal 654 zcmV;90&)FENk%v~VXy!Y0K@jD2{Aaf*CxlZ`2RbY~=6f}t{t7*vRmb9#)V zl$(}jW|FC~n6oIAnSFkqqM=}6u|;~Mrg6khvaz(dc>&9=sm{01wz`wNJxIPytDTO( zCBlf{K+~Jfb9bI4bn05|no`lv^4D53OuIGsj%15NRjzbPRVj$Q7neqPQ%Fz=ykxM< zS@8qM)vHz(u>>@fPL)435H@~P!wb|s8iQc}3`$5%nM5=f<4w$!@8G5|WrD=8Ql?wQ z9~{U0Y}xP}zg|brJ*>sDULJZ*7XqC#q|_gtX-b7ei8bfemnNfPw8FL5kES!LF=h7> zO(&@6gr>Vn2ofV?Q|($EniiXlp+I7leUUBcOlgSkrIR@k9a~-9zHWjilrH7H>ju{< z7m!^ib0_#3Er%mCI(MUsNF^ICF6x`BRs}3l^}z$d=eR-AOd=SzPb%BY_!&4j*Wx>m zt2@yw336?RnKyH!NOnQHwy#bUW7V(k(%)A$BknmGY1VvN|0v(QqKWk9fy0-0MPoq| oYxrKN|C_UDDe4U(j5w7HryXaZ9Vko-g2XLo0$u>ZfL90rJ3k#QlK=n! literal 0 HcmV?d00001 diff --git a/data/rooms_background.gif b/data/rooms_background.gif index 7b158532ddd173d7f401ee0cf1f7b128f8aa4bca..9031773e8bd6a99fe3cd4a96fdfea4bb22e893c6 100644 GIT binary patch delta 14 VcmeC;?Bd+O#mpGGnVY$u5da+Y1A71f delta 14 VcmeC;?Bd+O#mvaCnVY$u5da$Y1110f diff --git a/data/rooms_foreground.gif b/data/rooms_foreground.gif index 3f549853f25e3384d0a54b48ecd0329e0f873b65..2684d08508f17af497913f1c70a13e9442ba6d4c 100644 GIT binary patch delta 14 VcmX@Wdw_QX7c*n%W^U%K%m5=k1SbFh delta 14 VcmX@Wdw_QX7c(QnW^U%K%m5)k1JVEh diff --git a/data/rooms_items.gif b/data/rooms_items.gif index b870048627d92f9c5b7d1d0ca806baf3747e6998..41feab0aca8495195c13ae917d297d1cbbf953a8 100644 GIT binary patch delta 50 zcmaFK{)T-67c+k-1A`6&5G-IwU|`_5I9ZZ;CZ{2*f||sPgat<@?`GEI*u5=xIwK>4 FH2^~A4S)au delta 47 zcmaFE{*rwI7c+kt1A`6&5G-IwU|`@lH(8Q-CTB-3o0^2i#>dAe?`GCyy`Ad7U=08z C&<#%j diff --git a/data/sprites.gif b/data/sprites.gif index 4a956945d5e9a72ba6d5fa30dcabed37f6fbed40..774e8a876cacf7ec02371b410474a7027d74a43e 100644 GIT binary patch delta 474 zcmV<00VV#!4UZ16Km~s#inEE)b4-)c_QWDwt5Xs0l5v`GsG@XC&BFRYaaV&b2v?C2k zx3f$(GJg}Cq$k1>G6)7^*(;9DnhXJ7> zDMqh}rWp~bMKA(Y32j=VoX%7XSQ3Yq3^gbLWT{Mo`e{;8SD93++^MESRjO2{O4X`b z^{QCSs#dqk)vkK=t6&YQSjS4%vYPd*XickH*UHwmy7jGajjLSeO4qvD^{#l$t6ulY Q*S`AouYe8gEJFYQJ1R)yGynhq delta 398 zcmV;90dfA14#N$wKm~tqfzHaI4tL1I9{TWyKn$V~he*UC8u5roe3i?`J15d&NxOj`Y()ZA9 z@s4=RqaOFj$3FV;kAMth8$XAi#R)QHX%L035-F}jDnSs()0KZC0MSTC%8nH&Vwokt zQOQHXffsOe#xHOYN=q`N9_x@5HBgBTr;Njt_}NH6j-!)^%n}zSgr%pnLKIwyg()VX zr7mkZ7OI>kP7o=k`-Z8Zlz7ED(xKi96!Vx;GLtudnapPVbA`-MW&*;zCKr0sp%C>Y zIrXVbCr!B>3=w})J{xl9I@yT~^|Z#CcVR$i+$l~;=7~rxf)S`nI3s}CXr7+Lk~q9% zs6h!JOJx#NKOIU(iCX1OXtL-;H_FkDdO-A}APuQVM@rI?n)IY7O{q#(%F>p)^rbM3 ssZ3`|)0*1!rZ~;1PIt=Fp8E8sKn>3, (spr.pos.y)>>3 + + local x1,y1,w1,h1 = util.aabb(spr) + for i,v in ipairs(sprites.list) do + if v.enemy and v.state ~= templates.DEAD then + local x2,y2,w2,h2 = util.aabb(v) + if util.check_aabb_collision(x1,y1,w1,h1, x2,y2,w2,h2) then + if v.state == templates.ALIVE then v.state = templates.DYING end + sprites.remove(spr) + return + end + end + end + end, + update_hero = function() -- Update hero local anim = "hero_stand" @@ -319,7 +336,6 @@ sprites = { draw = function(ignore_selected) editor.item_hovered = nil local mx,my = mouse.pos() - surf.source(surf_sprites) if editor.item_selected or editor.layer~=LAYER_ITEMS then ignore_selected = true end for i,v in ipairs(sprites.list) do if not ignore_selected and app.update == editor.update and mx>=v.pos.x and mx<=v.pos.x+v.size.w and my>=v.pos.y and my<=v.pos.y+v.size.h then @@ -339,6 +355,7 @@ sprites = { print(sprite.current_frame) end local reversed = frame.reversed or false + surf.source(sprite.surf) draw.surf(frame.frame.x, frame.frame.y, frame.frame.w, frame.frame.h, sprite.pos.x, sprite.pos.y, frame.frame.w, frame.frame.h, (not reversed) ~= (not sprite.flipped)) local x,y,w,h = util.aabb(sprite) --draw.rect(x,y,w,h,8) @@ -351,6 +368,7 @@ sprites = { local frame = animations[sprite.animation].frames[cycle] local reversed = frame.reversed or false local x, y, w, h, sx, sy, f = sprite.pos.x, sprite.pos.y, frame.frame.w, frame.frame.h, frame.frame.x, frame.frame.y, (not reversed) ~= (not sprite.flipped) + surf.source(sprite.surf) draw.surf(sx, sy, w, h, x-1, y-1, w, h, f) draw.surf(sx, sy, w, h, x, y-1, w, h, f) draw.surf(sx, sy, w, h, x+1, y-1, w, h, f) diff --git a/data/templates.lua b/data/templates.lua index 6cad3bf..031b283 100644 --- a/data/templates.lua +++ b/data/templates.lua @@ -10,11 +10,12 @@ templates = { sprite = { type = type, pos = options.pos,--{ x=100, y=4*12*8+71 }, - size = { w=16,h=17 }, + size = { w=16,h=16 }, bbo = { left=3, top=2, right=3, bottom=0 }, current_frame = 1, current_wait = 1, flipped = options.flipped, + surf = surf.load("mummy.gif"), animation = "mummy_walk", state = templates.ALIVE, enemy = true, @@ -30,9 +31,23 @@ templates = { current_frame = 1, current_wait = 1, flipped = options.flipped, + surf = surf.load("morcus.gif"), animation = "bullet", ia = sprites.update_bullet } + elseif type == "coin" then + sprite = { + type = type, + pos = options.pos,--{ x=100, y=4*12*8+71 }, + size = { w=8,h=8 }, + bbo = { left=0, top=0, right=0, bottom=0 }, + current_frame = 1, + current_wait = 1, + flipped = options.flipped, + surf = surf.load("misc.gif"), + animation = "coin", + ia = sprites.update_coin + } else error("Template not recognized") end