From d59f7f887069612a7ef4e8be5c2a869d35e8b36c Mon Sep 17 00:00:00 2001 From: Lephenixnoir Date: Sat, 28 Aug 2021 13:52:14 +0200 Subject: [PATCH] parse actual Aseprite anims in converters --- CMakeLists.txt | 16 +- README.md | 3 + assets-cg/converters.py | 151 ++++++++++++++++++ assets-cg/player/fxconv-metadata.txt | 56 +------ assets-cg/player/player_attack_down.aseprite | Bin 730 -> 0 bytes assets-cg/player/player_attack_down.png | Bin 401 -> 0 bytes assets-cg/player/player_attack_left.aseprite | Bin 700 -> 0 bytes assets-cg/player/player_attack_left.png | Bin 372 -> 0 bytes assets-cg/player/player_attack_right.aseprite | Bin 704 -> 0 bytes assets-cg/player/player_attack_right.png | Bin 347 -> 0 bytes assets-cg/player/player_attack_up.aseprite | Bin 696 -> 0 bytes assets-cg/player/player_attack_up.png | Bin 368 -> 0 bytes assets-cg/player/player_damage_down.aseprite | Bin 714 -> 0 bytes assets-cg/player/player_damage_down.png | Bin 309 -> 0 bytes assets-cg/player/player_damage_left.aseprite | Bin 691 -> 0 bytes assets-cg/player/player_damage_left.png | Bin 301 -> 0 bytes assets-cg/player/player_damage_right.aseprite | Bin 695 -> 0 bytes assets-cg/player/player_damage_right.png | Bin 298 -> 0 bytes assets-cg/player/player_damage_up.aseprite | Bin 702 -> 0 bytes assets-cg/player/player_damage_up.png | Bin 293 -> 0 bytes assets-cg/player/player_down.png | Bin 1404 -> 0 bytes assets-cg/player/player_idle_down.aseprite | Bin 3328 -> 0 bytes assets-cg/player/player_idle_down.png | Bin 587 -> 0 bytes assets-cg/player/player_idle_left.aseprite | Bin 918 -> 0 bytes assets-cg/player/player_idle_left.png | Bin 580 -> 0 bytes assets-cg/player/player_idle_right.aseprite | Bin 913 -> 0 bytes assets-cg/player/player_idle_right.png | Bin 566 -> 0 bytes assets-cg/player/player_idle_up.aseprite | Bin 909 -> 0 bytes assets-cg/player/player_idle_up.png | Bin 503 -> 0 bytes assets-cg/player/player_left.png | Bin 1190 -> 0 bytes assets-cg/player/player_right.png | Bin 1260 -> 0 bytes assets-cg/player/player_up.png | Bin 1136 -> 0 bytes src/anim.c | 20 ++- src/anim.h | 7 +- src/entities.c | 2 +- src/main.c | 6 +- 36 files changed, 188 insertions(+), 73 deletions(-) create mode 100644 README.md delete mode 100644 assets-cg/player/player_attack_down.aseprite delete mode 100644 assets-cg/player/player_attack_down.png delete mode 100644 assets-cg/player/player_attack_left.aseprite delete mode 100644 assets-cg/player/player_attack_left.png delete mode 100644 assets-cg/player/player_attack_right.aseprite delete mode 100644 assets-cg/player/player_attack_right.png delete mode 100644 assets-cg/player/player_attack_up.aseprite delete mode 100644 assets-cg/player/player_attack_up.png delete mode 100644 assets-cg/player/player_damage_down.aseprite delete mode 100644 assets-cg/player/player_damage_down.png delete mode 100644 assets-cg/player/player_damage_left.aseprite delete mode 100644 assets-cg/player/player_damage_left.png delete mode 100644 assets-cg/player/player_damage_right.aseprite delete mode 100644 assets-cg/player/player_damage_right.png delete mode 100644 assets-cg/player/player_damage_up.aseprite delete mode 100644 assets-cg/player/player_damage_up.png delete mode 100644 assets-cg/player/player_down.png delete mode 100644 assets-cg/player/player_idle_down.aseprite delete mode 100644 assets-cg/player/player_idle_down.png delete mode 100644 assets-cg/player/player_idle_left.aseprite delete mode 100644 assets-cg/player/player_idle_left.png delete mode 100644 assets-cg/player/player_idle_right.aseprite delete mode 100644 assets-cg/player/player_idle_right.png delete mode 100644 assets-cg/player/player_idle_up.aseprite delete mode 100644 assets-cg/player/player_idle_up.png delete mode 100644 assets-cg/player/player_left.png delete mode 100644 assets-cg/player/player_right.png delete mode 100644 assets-cg/player/player_up.png diff --git a/CMakeLists.txt b/CMakeLists.txt index b099757..8e47a1b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -40,18 +40,10 @@ set(ASSETS assets-cg/hud_wave2.png assets-cg/skillicons.png # Player animations - assets-cg/player/player_idle_up.png - assets-cg/player/player_idle_right.png - assets-cg/player/player_idle_down.png - assets-cg/player/player_idle_left.png - assets-cg/player/player_attack_up.png - assets-cg/player/player_attack_right.png - assets-cg/player/player_attack_down.png - assets-cg/player/player_attack_left.png - assets-cg/player/player_damage_up.png - assets-cg/player/player_damage_right.png - assets-cg/player/player_damage_down.png - assets-cg/player/player_damage_left.png + assets-cg/player/player_up.aseprite + assets-cg/player/player_right.aseprite + assets-cg/player/player_down.aseprite + assets-cg/player/player_left.aseprite # Skill animations assets-cg/skills/swing_up.png assets-cg/skills/swing_right.png diff --git a/README.md b/README.md new file mode 100644 index 0000000..401f6a4 --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +A fun game about smashing monsters in a dungeon. + +Compiling requires py\_aseprite by Eiyeron: [https://github.com/Eiyeron/py\_aseprite](https://github.com/Eiyeron/py_aseprite) diff --git a/assets-cg/converters.py b/assets-cg/converters.py index 3f7d172..bc7aa0a 100644 --- a/assets-cg/converters.py +++ b/assets-cg/converters.py @@ -1,5 +1,6 @@ import fxconv import re +import os.path from PIL import Image, ImageChops @@ -10,6 +11,8 @@ def convert(input, output, params, target): o = convert_level_map(input, params) elif params["custom-type"] == "animation": o = convert_animation(input, params) + elif params["custom-type"] == "aseprite-anim": + o = convert_aseprite_anim(input, output, params) else: recognized = False @@ -164,3 +167,151 @@ def convert_animation(input, params): }) return o + +def convert_aseprite_anim(input, output, params): + from aseprite import AsepriteFile + + #--- + # Perform checks for support on the Aseprite file + #--- + + with open(input, "rb") as fp: + ase = AsepriteFile(fp.read()) + + if ase.header.color_depth != 32: + raise fxconv.FxconvError("Only RGBA supported yet, sorry x_x") + + # Find tags that give names to animations + frame_tags = None + for c in ase.frames[0].chunks: + if c.chunk_type == 0x2018: # Tags + frame_tags = c + + if frame_tags is None: + raise fxconv.FxconvError("Found no frame tags") + + if len(ase.layers) != 1: + raise fxconv.FxconvError("Only one layer supported yet, sorry x_x") + + # Find cel chunks of suitable types in each frame + cel_chunks = [] + for i, f in enumerate(ase.frames): + for c in f.chunks: + if c.chunk_type == 0x2005: # Cel + cel_chunks.append(c) + break + else: + raise fxconv.FxconvError(f"Found no cels for frame #{i+1}") + + if cel_chunks[-1].cel_type not in [0,2]: + raise fxconv.FxconvError(f"Cel chunk for frame #{i+1} is linked " + + "or tilemap") + + #--- + # Print summary of animations + #--- + + print(f"{os.path.basename(input)} ({ase.header.width}x{ase.header.height})", + f"has {len(frame_tags.tags)} animations:") + for t in frame_tags.tags: + name, from_, to = t['name'], t['from'], t['to'] + print(f" '{name}': Frames {from_} to {to}", end="") + durations = [ase.frames[i].frame_duration for i in range(from_, to+1)] + print(" (" + ", ".join(f"{d} ms" for d in durations) + ")") + + #--- + # Generate PIL images for each frame + #--- + + pil_frames = [] + + for i, f in enumerate(ase.frames): + img = Image.new("RGBA", (ase.header.width, ase.header.height)) + c = cel_chunks[i] + pixels = [] + offset = 0 + + for y in range(c.data['height']): + for x in range(c.data['width']): + r, g, b, a = c.data['data'][offset:offset+4] + pixels.append((r, g, b, a)) + offset += 4 + + img.putdata(pixels) + pil_frames.append(img) + + #--- + # Parse parameters + #--- + + if "center" in params: + center = tuple(map(int, params["center"].split(","))) + else: + center = (ase.header.width // 2, ase.header.height // 2) + + if "next" in params: + next_anim = [s.strip() for s in params["next"].split(",")] + next_anim = dict([s.split("=", 1) for s in next_anim]) + else: + next_anim = dict() + + #--- + # Generate compact sheets and object data for each animation + #--- + + bg = Image.new("RGBA", (ase.header.width, ase.header.height), (0, 0, 0, 0)) + + # This will old all animations in sequence + o = fxconv.ObjectData() + sizeof_frame = 16 + + for t in frame_tags.tags: + name, from_, to = t['name'], t['from'], t['to'] + total_width = 0 + total_height = 0 + + for i in range(from_, to+1): + bbox = ImageChops.difference(pil_frames[i], bg).getbbox() + if bbox: + pil_frames[i] = (bbox[0], bbox[1], pil_frames[i].crop(bbox)) + else: + pil_frames[i] = (0, 0, pil_frames[i]) + + total_width += pil_frames[i][2].width + total_height = max(total_height, pil_frames[i][2].height) + + + # Define a new symbol for each animation + symname = params["name"] + "_" + name + s = fxconv.Structure() + + sheet = Image.new("RGBA", (total_width, total_height), (0, 0, 0, 0)) + x = 0 + + for i in range(from_, to+1): + s += fxconv.ref(f"{symname}_sheet") + s += fxconv.u8(x) + fxconv.u8(0) + s += fxconv.u8(pil_frames[i][2].width) + s += fxconv.u8(pil_frames[i][2].height) + s += fxconv.u8(center[0] - pil_frames[i][0]) + s += fxconv.u8(center[1] - pil_frames[i][1]) + s += fxconv.u16(ase.frames[i].frame_duration) + + if i < to: + s += fxconv.ref(symname, (i-from_+1) * sizeof_frame) + elif name in next_anim: + s += fxconv.ref(params["name"] + "_" + next_anim[name]) + else: + s += fxconv.u32(0) + + sheet.paste(pil_frames[i][2], (x, 0)) + x += pil_frames[i][2].width + + o += fxconv.sym(symname) + o += s + o += fxconv.sym(f"{symname}_sheet") + o += fxconv.convert_bopti_cg(sheet, { + "profile": params.get("profile", "p8"), + }) + + return o diff --git a/assets-cg/player/fxconv-metadata.txt b/assets-cg/player/fxconv-metadata.txt index f1a8e82..f1c0ff2 100644 --- a/assets-cg/player/fxconv-metadata.txt +++ b/assets-cg/player/fxconv-metadata.txt @@ -1,52 +1,6 @@ -*.png: - custom-type: animation - name_regex: (.*)\.png anim_\1 +player_*.aseprite: + custom-type: aseprite-anim + name_regex: (.*)\.aseprite anims_\1 + center: 12, 17 + next: Idle=Idle, Walking=Walking, Hit=Idle, Attack=Idle profile: p8 - -player_idle_*.png: - frame_duration: 500, 500 - center: 12, 17 - -player_idle_up.png: - next: anim_player_idle_up - -player_idle_right.png: - next: anim_player_idle_right - -player_idle_down.png: - next: anim_player_idle_down - -player_idle_left.png: - next: anim_player_idle_left - -player_attack_*.png: - frame_duration: 330 - center: 12, 17 - -player_attack_down.png: - next: anim_player_idle_down - -player_attack_up.png: - next: anim_player_idle_up - -player_attack_right.png: - next: anim_player_idle_right - -player_attack_left.png: - next: anim_player_idle_left - -player_damage_*.png: - frame_duration: 90 - center: 12, 17 - -player_damage_down.png: - next: anim_player_idle_down - -player_damage_up.png: - next: anim_player_idle_up - -player_damage_right.png: - next: anim_player_idle_right - -player_damage_left.png: - next: anim_player_idle_left diff --git a/assets-cg/player/player_attack_down.aseprite b/assets-cg/player/player_attack_down.aseprite deleted file mode 100644 index 3fa163899292555ba1be009796cd0f60467150cd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 730 zcmb`ET}V@57{}jPr(L)}qGUpNUSiY`qiv1V$T188Q7^*Gs1!FwGe;~I5`D~%K8+EL zO0cwxx`>DjqMLz4m{SrYLi%t{s1^k=Y+x9QiKpLDGP>_Myub6l&&B!wp7W;jg!pvd zAj~{c7=#crI#!C_(z!qstn~ip<`DVw)5=n+!iNi4M){8doiwXRN~o8*{Q65xh)vQ7 z_gKqd&~1nDx?S*NWHX$&8-%%J5B&AR1#f@d3q#Lsa7R}dRyA*fHB}bqD04%vw*}gK z=i%XS1_pXH*!b!T9GzT%8YM*U;{?3e)(M+KA$YK^2A@niyJW);eazfh2I4DwxH9`>@m$FLAkc__T!ZU~f~ zS=>_bXwd$&_*RjOSUlG3*w4Y#NcOtj)p|5M-=2OyrvMWeSnQd(G>>L&k^2VEf E1F(7G=Kufz diff --git a/assets-cg/player/player_attack_down.png b/assets-cg/player/player_attack_down.png deleted file mode 100644 index ca44d9bfa5e8e45a9ca24c80168829f25d9e2fdf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 401 zcmV;C0dD?@P)Px$OG!jQR7i>Klrc-gKp2J}i-AN4L`n*^OIxf?y0jG>I!b?nYyX5U&MrC&jvaM& zD*gb66bBKcSZEg;u!|6|fkNZboI#VzwcsLs;7C3$_rBlvUG8ATzh`ZMZ-ZqtR15-u zlj1%Am%}H{w`%~L^}DG$X$C>7P!WNx8Nwtq9Zx5;-(C~7*3;6DGM-KVXca2hnjvBt zsTD+nXf+}8>{Ybl4V*?bxI5Sj=4QW!)2N2;vB+8!jE)Z3x_bMDjW#|BWOnd<9 zw;gGQ8QEl1yqvYTdFiv0+vNK3nR3<=W-^rbz&UM^GdIMt(4d5TYdV5F+7C??x%oXigNw4KgW3x@h{Quwhd(B@4W;oIk;f z1~S)0m=;C`A`(bQBzU8tT}Y@GIx24hp-31OoIdX=@*n6qoDb)H&c*lhyyx{HA+{$h z;y6nRixA=l`(M#Bo8lTAqVt zXWX!{$O(t5FTkzVJh=Y25$-OG!XMuXVC-`x49)AXFdBxw;8|GZ%Y`m?5%hR&Lp{(9 zuZ0uPh%0#g-6y!T`4cKii1^ei_@Jv7216lOTU`Y^N(SHymkX}f81TcrIXFC00SB6O z6=Hxi^S?_D48a8GKnj+rE_ z@Nc0YG~uu7Y`7(zGkn;j*{})4qx`OPp8d`vBT#Hnt$~d5Q~7xsoguj2WAXP@KA^kh#@Y;4T#oz;iN4?o+ew3kJb T-kp!Gk#gnSerOfR*nHtHEV9uu diff --git a/assets-cg/player/player_attack_left.png b/assets-cg/player/player_attack_left.png deleted file mode 100644 index f73ed3cd1ddcada385f12baeeaa0b2d505349dcb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 372 zcmV-)0gL{LP)Px$E=fc|R7i>Klrc-gKpaP3rN%f26;XP0iBip$#X34WNhfj5taCnrbaM716!arF zyD2U@h~S`8i--g&OJ0!| z^#+0C0jM@BSf38a!11V*EdavNkkjY8q#Qtv{pc!d*Z(C}B*i8e1t`?&i=Zvh_ko+; zZMuW;j;ae5-NBIk>-$WXHlXb{38NT*6NZ7-QlDTGvy5Ux!2rxtKfU7tt;$4m9|CYt_D|Ma1YFx9fm0N@i~u3T5o SEI<_i0000edr* zXY?%$^%@v>JPsed`~eLk(%U}(<6YgbEfRq{{LQd)eFFA*JaA-t2tGe{3no*IFmXVe z2nU#1`0k1Yhu{R{(@r?mB-2YQrDW1bAa$hCMHEHk6k3d-f&~1?F{8za5F09I!K6yz z-yuQDWK;0SzJtm=z=Nek9Ab&#r~IB-{Px4=LaoPbvr?~`3S3QhmtXw&^}Om&lxK7H z3%zDA=L&hF_jGA(=jgL36JD}QJ8rD2NOg5Ad(yIS=u58sklx)hmb_3^os7Po?3*w* zk3KY8QZ?zg<#9Y1n#g{r-yht3|9V}1{({U;=SEwfGVXV?FZ;JW9rx8Qie*j)&s4Qc Z+U-~3uEt8q$1*j;fx%Zcjn{7P`2}b`)u{jg diff --git a/assets-cg/player/player_attack_right.png b/assets-cg/player/player_attack_right.png deleted file mode 100644 index ab06b04228998c9590ff78a77ecfb686081d6407..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 347 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D%zMLk^{Lp(Z@ z6C_v<%NYnQd}hyD#i{ixe$|5Z&_%xwsxCTnK>eq^W0dIX77cB6W*|8H`u=@MF`K=; z*JZ?NwmoKAUtg~tr5ne+VBKMc9W`yd4|o?{-gb;fzwTdB0uW3{NKXdQ2DUZRREj_R zdT{i7yat!mR_Ku zb6~@xU$ShbhK_sMj12@P`b@N3ep={3j$xc0+s|8>EN2(0EEY^K%p{u#F zZ%!A7)dUUhgoftk=?{N?p8cW6P4|O*o2u&7|H_|Nrd6zHdGtSsb?^TZHA%V(nxYdI j&QEdJxgTe~DWM4fQT~s8 diff --git a/assets-cg/player/player_attack_up.aseprite b/assets-cg/player/player_attack_up.aseprite deleted file mode 100644 index 33f850d9f722ec63db494c260775e25bec64240c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 696 zcmcJM-%C?r7{?!ftRbj*p~Fz{?Ux88Z3kILG-W~&>4gbSY!^C?E;mBSA{v22GX~yF zMie!PZiJv8Y9Ri&kbz1>1yL7fB^79dL6GH5g{RM%N&W*pFYkxq=`re`(M$snv%!*AElH3^P4S|Y9qkGwyRX+wzxN(cPaI^Q?l(Qbu>lxs0w(r ztQrO?T`=aYg743k!o@oQ_;vOc{I%wWH&+^AXvPT-U+aeT!9%dAejn7TD`9QzdFX7v z0)5>dp^-3Q+w*1k^zCnGQX+{56R^K83WK2#Z1pz53v~nVzNW#&76UF^nuf6(C*VMj z(+n{{ruE+y2Zmq*^l?WVYn1Ut7E?5FL=ZdF@IneBbSxLs!~zBK2`8CYG6^J&s1hql zWx%aMLG04t4|nz|*9adrWi@PK@+g~?&9h$|GTJXkOx@|0>j#=&WEh22o>K*hno<2x zaYMOw>}6zkG-vO<$HVq$+eVN3)%;4!=)0iL$X{1A$BT=0JUMc1JkvPyNqxCGHa3;j z?+GM-B%jSYZpY)R`ckZPr+4ITSGptOZ+xx3d)7X$`YXyF4hB2I+EOImSGPa^WY@us T&g5x#?s~R9=bDq|iG}bVMQzGZ diff --git a/assets-cg/player/player_attack_up.png b/assets-cg/player/player_attack_up.png deleted file mode 100644 index de338ded94e0c13fbd17bd065d95523680de2e5c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 368 zcmV-$0gwKPP)Px$DoI2^R7iF6%9xxKA?mxNunTR#KR6&oSR6&mc#!iq{g~{QvoG2IkhZ@AN z;OT9+;je#xM^OZo!)g`_0Sn*&W)ZsKgaAPwARCShU_K(jEbJC+Hq(WLGX~ylru+Z2 ztufwsAn1eBw#E!Ee*VHLDZ$RhAkD$Xz`(%3Ahr8AR`ZAoqRnQy3=-@RgJ70Pu(L6| z`1y;$_ta&)<`ENa{}~t<7@oOWGCci(@QE}B8_dD2V%XUk4zlqx#IUn7aB%Q4Jb!+Z80~lg z#X&@LB$q1aF+BM3nL&Yr7fyFSxJ1w#qAef*$WBGbmY`ciup}J?L;(OB+Hd3KG+09b O0000895FE>(uS1wL3VK< zMy^fL8-=2-q7{uKm);oXLL|%*YLH+z(iilJr{7UBy6-u>zw^G&#ryv~=S-{;c{^m1 zQXWN2BJ#z+O3_<77fI1d?|*LU$^Y@uyp(F@Vk^s{{G&kU6>GhsK%>f+Uw^5KY*H#= zoy`No)lR53?SgOGx5AmhFkE<+gg-yI;mtWejEp#7RXhrPt#;VxtAH*~HS~HyeB-+-Y#4$G(8nEdtWm}nSxnKy5kc%w!wV^l&@o(e9Sao5C!Azr$s~|8qRNdV zB@g~76vQG8$2v}&QkjaaE!VbfPY%vsxP9sB=8Wk`VT~pMReLhuIXRmjZgWqK&ov+ayl-sya;E3~P{E=t zmhiYAq&p{Ul?`_H*MXfrnJP@(_kVktEg8s6zQ|@b)*f27B^HdG%&8ly4rJFZbR{|- m&30F)xkZ0LT}j#APx#?@2^KR7i>KQ?U)gFc3VLf{@BUlp;VC(NRW}RERdT48Q_NY`_Riz!*%yBu9}L z*^Y@52Sk%^PVZ0d{_KCCkAKIY#kXYngMqaiLnmv&Ljss583^DqOH~oJXtGKk1ThIv zh?E4FBpDUa_qn%*O~gd_3aFia5>x8_4(_XkNmfB`a*5adh6H%aw_5J)z(&4aPBoNb zz78~z$0;WPKF>!jcR6q_8Ub3CtMRhcE*b$&M6pzdFaiOLgILSUdbcT(Xq*4eZy@L1 z6qBgbJuN6?yOGdP5$hBrz&wns2#3JWr>L0)d#7Kyo<8sbdrR`mes8}|00000NkvXX Hu0mjfMoxWd diff --git a/assets-cg/player/player_damage_left.aseprite b/assets-cg/player/player_damage_left.aseprite deleted file mode 100644 index b5147a4f3f9aef8b2224eca277390091708dcf55..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 691 zcmcJM-%C?r7{{NLYyA>3B9ySbM5NG##}!S>nuH753S`AxdEu$$!sQGl#S}zD5YElK z2&GokA_GT7(M9QnRCZSmyAq2ir7r41Ob})T$In?w{sTQP?}z6+=i>W$&Uv~< zZJL4MgbC{=zQ8vhenXQINj!W8d%OBzLo^D{1Ou?`r~x0iTyVN345vCrVSLaBjmw%D zWq};)yDJ)&U<34VM;vRE@kJI>G;u@_JJj$(3L|tZ7t_Q71@Z|enOHIjB#kJim890f zl|n%ra^l?8`W981;=!)0L5`UGls~me@}&J{Sg-6h_1E*xTaik;-W-e7XdhGOd;Euu zgI@3H*5?`RY#>m$H}_OLT{Lhcc4_l{cjDXKNo{F(X0Cnl3yy`wW&W{h2YG!RqK_sF8G!K;MdB* diff --git a/assets-cg/player/player_damage_left.png b/assets-cg/player/player_damage_left.png deleted file mode 100644 index 2a8b8625012300cc46b4d400a31fd079ad442849..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 301 zcmV+|0n+}7P)Px#=Sf6CR7i>Klrav1Fc^g&o&t2SiG~4nk(f9*5>KG4%FG0t{+L)4LcW8#Vzhk_-fJoux|1$J|5$Op=TQ zC`3xuz^}6#y#bLPMX}MnCTKuf-FX5XR_)d#!24#YxYq=?d~bZY4D*_xIu|6sN0}>O zuWYM_x=--Dl*SMnxJ}WhmrHZ+q6HE*j$%`j{Y8MM>B`uL&ez#yw5_R&VY4C-z%djG zT%P+939y*V6+eWcm#?VxS8cndU*uJ)K}Nj+Vo$}M>3?V}00000NkvXXu0mjf1vq@% diff --git a/assets-cg/player/player_damage_right.aseprite b/assets-cg/player/player_damage_right.aseprite deleted file mode 100644 index 6bc9e7b49f419201fec7531ede61bc0970b81d1a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 695 zcmcJM-Ahwp9DskT)<|J!WGpiFA|4rlE?Kw#)p47ZOvM(2)1(DR93l0H_3XNQmZ@8HE*&@EmEZR!9ykG zu&LAoN}==WcQ?#2#S z-;#nMQ^SVjEc`I_8)`;MshSiWo2?DUt0S@jcpOF+a0-G_Nv+Xn#wo*0|UE{6&m*w ziA}L94yRGk+0%VwG%)h%kr}ytb0L!UnG1=JPtJ6u7e{yb_fPM5`eSchaLdncMk?>Z z`^__{XtMCma5QPmr{1-VUmII|`PTMIdy4GAp&r+Ke!+O_SDU%r^{_KxzZI`J-qG*M TIXu>I^mL!}mRXjImjZtP_w&*+ diff --git a/assets-cg/player/player_damage_right.png b/assets-cg/player/player_damage_right.png deleted file mode 100644 index 99e32701ed7b80e432add28a5019b61437d349a4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 298 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|o_M-AhIn+o z4cW+h$UwkmhEgM&_W}_{DJ2!IQyrWNxv#!#U=Wfv;AC|+VCBu0aW(Mr=&>(Uky>YY zbJP18{r}AMf23>=N`5N+(5za1F<+@p%3Yx$Q=<8&n5x?SBP&B(bi-oW6MfW$nZEpO zC|%>r_3W+ijELEmsylSjbw1_pHJG{0KS9V=UHUsq)EmL|UW=~loIK0FGMMSg-iYq| z{WCQhw?=YoSa$MW&gBiJQLZHq*pmtcU;X=EXCi+6UaDB$|%^GUxKr*SD>OqGLsKra_BNl*fxx{Md7&?2Tp`SaG~9TuP!`mil)?f9@(CxISTYGDjVR4c($~Ph zg@X8{_4xUdeR?pi%TVsciW9d~Qo@qf@yn zH(&79`tSPl$JTZgQridSr;Ytbx1K7qYPG;4qayQdaC%$E%I%rhy=2w8k@2DQ8}He= WhLQ0@S4y>sL`5d|%p*-!Ao>e#9L>l8 diff --git a/assets-cg/player/player_damage_up.png b/assets-cg/player/player_damage_up.png deleted file mode 100644 index a3e396072fe4eca33915ced1561841eddf00eb8a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 293 zcmV+=0owkFP)Px#-$_J4R7i>Kl(7xMFcd^zn1Vn19JcFm>iy?_lq5T0J5CFSEwdy@pwqnU rWD-wN@T&HB(6!%d($VQC>-mExK>zNFDsqB!00000NkvXXu0mjfzOI8j diff --git a/assets-cg/player/player_down.png b/assets-cg/player/player_down.png deleted file mode 100644 index 198d96e30ab5b9122d0b7ac7daa956399d91bda8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1404 zcmV-?1%vvDP)Px)Hc3Q5RCt{2o4sq}NEpT+9dRHSwg`q4PFM(uL%2;5H|awN*aruOE5p^7GDTdb zaOo`;uJJ#x<$>Xf7(#HrO|Hlu;k=7sxujSyDHhDadSR}RW*AMRSNG*{WDAF zbyWaN<9NM-tNTf8XTmnsc3kT}X$Qs1&y#jw-{72R6T&1i>jy#hrbb&^%KEkU?=$Pq znOyhJCB+70+muhF+o%Bm+Jh0gjT&A&F9QJHeweatbiWRc^^2Y#m+`yK4N=^dH~lnS z*9MWh{wXsc=LW&IBWh4>8@SRhdVXBSKd;;rm_ist)^>FJr__LKG?2z_r5v;eBbM-S zuNB+BdD@R1dpDWpN}s2Q`QdSS14z;a5G#QHD@8DfG;HuO+eFu~@B}yUyw7vsU(%1M7i0~#L zGl*zkZmw^HmHzodn)=;jN{-hn0K#NYQQ81)^mx4zJ5e3Z&QH)DjIgn@kByyuv}YDcJiCXf1b1Od8?d#%{Q@7t}Em8V}t@1H>Ea0CFE4Lj^F zzs?_{D!#U|jOcTu+o+M*utU0yT5O%}kB-fiJ_?>6$MLhzje9K?C$Ddy4Wf>c{%C89 zC@!j}0C49|uj{ziBI90*{SSj2!O`_?)~kq)XNyVyOm)_^m1TVV{DlCagPxtA;ML35 z0KnGiuyJi=Ir#YbOV)D`A;;?#9PO>fHeTO8>Q24pqF?mUJ18AqU^eUk09!8|UT9CT9bR8D?zOP7vyal@1%PlArQ1I< zy$3W8g8;zV;Iy6T17K}5>($`$=D|qcc7B@mDlTsx2oPRiAT|D68njFsh=1pyn*Wsd zfMf&~-UE{As~S*&Z(xZA1nAXo>UTigP>YEstpgy@u}bjzSN9Vf?XBYa_7T^&k7BZ% z=+isTxYuHZuB#77^P|P(%>xy>lnMu~- zQPStk#ECutM1~RoVLqt&0Klu4ulamwo6o^^XbkikP)x3GvtA80Py5V#x{aE&erXJ8 zq#96`0x&6HULOEnJTK#DZxu&-tL$;44SfLY5vQnc03177=HiA^u-H2s0AdFE?>~QG^R!Q(IMj{qGz93Q+o)O3 z4>eFalosPpdw)k)|MIte7B|&5%)g2`=u9JB>odfu3!k@fucg(0WbIh2-vCjbbo-=i z3dV+7Nd-VV(B^3$&3aWiIikLZEqx%ou##fZG9O+auy3H;o#qMc!HC^4b@L;V7QZWf zeu`mY{uyxnV_jo?+BZ!{h9U>smBbpeQNJ>H?St)#u{Qsx&iE1PBJ`6M*YWd<;S}s! z`dTDCPKCw%i29OqP=*jf7weDUfp7{IEv_EH$4+Mv{U{oUkH_Qjcsw4DI{yL2lcm9)5W%wm0000< KMNUMnLSTZWm$e)K diff --git a/assets-cg/player/player_idle_down.aseprite b/assets-cg/player/player_idle_down.aseprite deleted file mode 100644 index bb058acfdd85ac81e3794e04e1f7d3614c4e4ae3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3328 zcmds3YfO_@7(S)Yg7gBjfht%(kPJ3K3Q-WDKxJG+F)9v02(*X_SP>Zxt%BU70>#oT z(K3i^Q!xT2&~0*2Cs4p{!iI{<NBGh?-hM4ff5CI{C5dq#bn8PO#1%CfUE7w41Vwg0|N&*4{c*xi^_Foud_lD#J2Lo+kLXHj~9 z14a5c_Tl64tSrD+oA(1&o8bymKiCGy(RNft0=*`_?idWf1ULZspdA;kQh{X93t~Yj z$OMfb5Y&M*&;_DE5y$~8AOuu^1mFj9Ul+{(3VN7=Vb#D{9XHQz@!$2;6DkeU=z$V3ZkRKdAoRtDJn0Sg^m3ZsVY3OB;(ML!Xz8< zbt{FQSX##uggMKZs~mjvqZsz>xvZ1P(%*TJ{HW9%qHm^PmE46l@M!X@&egU?0aD!6V@GSA z9lf_?Cy7=SqZBsPuqfBW=eO373up!O09t_o!+?Ffx?9KK0NZ7S$Vx7Z9X~g1YUk)$ zQK9>=_1V!hedk_&k`D!y`@Sx1n6-5pdfe8v_rezMnCulEElkWxP)_g?TxlzrMg}|B z&$)v2{iXb%A+ChHdW<<$mo}VAw@Z|sB?Nyme)-o0Uf!o2ckZTP%v!9-jUFQVjXhRU zo}5DuRs2EmO&MUtmMI!M{Uk#nqc7{aS;r#uAs=7#=nrjOVCU954$a&H1a_1M*m0&a zhLrvMVa-f?8Oy)L^eVZ1P}!BvFpQ4l`-+T*wtNShlf&U{$d4X7+|!AWY0>y){P5t1 zNxkdJ-dKA#xnbro&EIv|3Th7ZxuNA*-Z1HI%0^D*q;#y@EwyGoYXL5jH8 z(>K+qE`Gd#9Lkd!Z?_`KbEShRmqa;|9%}|ixo4{5fo8pbO)@v{OX`rFY#H{0QXmsL z`x$(XiDV}RoCRIoyUnN%&>CVfJ;1twmL2aEwKuW<#8r9$y}&S+B~$Se((24D6Qu2; z9y1|8DiJUih{q zS~pp>f`2Tux4V`n>^E^=e*LxEsaCK1WR2KGx-rdn*HM@}BnggnC=sIWp#3fC=%~N{ zzlx4J*WvXYU%dAz*Zqs?ikBTcA%sDX+bM=;rn-{nRae^Et*(lnZ+R_s=TzokE{Zk@ z!_Q(^EU+^fYw2d?AI)ZOwn3K&%@OKQsI$O34+Z&2p=q>Z_E=(za_EKa7iqcFk>&D0 zK3+!`t)z@W6+M{d!;v3tYL^Uzn2mp3OFT82LObc5kK{W2-j8NOp*}XaJvq-onhG#^dDN_31@>yO+oNakKG92avWn|r#W{J^ds3RK2a-zpBi(rd3j0P?LrPA%F%1(p#WV^Px%1xZ9fR9J=WmOn@vQ5?rVij}*=!vswrof4@!2w6;qLNiLbIEq7;?rwq|bZ!R) zH=(10gN|+nM+KotJJ?E*3TE<33;rQ+ITgGP;Vx&qKQDKo3g){U@4e&md*AQf@7+OH zT|IC0v~jQ50Y=9qQrrZXn3w|K=xCRZuW|q^omAT42-R_sFFUBPnM#c#Nh$z}5(gS4 zpkYeaFE~A|h_F0sSS*X(PC!Bi0NaEmMTw*97Z^qjO*yc zA2pyr1LeXbzprnY{_@@RhH_z&{N7g)mMh;m2osQBQS)r-H7|D$09czX0uYlW050nW z0CQU<5te6-r~&o)(Vd$g8H({~zryO<0`oh2EWXKct{Wlt+}ylKK>21suIlw!vmMWE zl^7n7*_bJkR24R6iVP3Pyj$OnV&FkQn?Fw&OUC*9?FS=6G24uvgueqF;P|r3AKsHx z6?@@NO((y+9#|u=i8GlThEb!~dq?T6`M|8PB&i+w4g|=P?b`#EH0_u~I*ZiPZ_g#n z8?@>nnM_Uu;U&?4Ou{rVG>$TWmFnTW`IVOSD2fu0a1Sh`vs8^5X-T!O4pX6DpHynx zdDcIWV?9(40GJEuEPrq7jLL)js$bdH#0%Ln5#?ttQb3P=3jGhhU8J>;+uT#-ch!}b Z{sDa&_nMiq?ydj;002ovPDHLkV1i**1SS9g diff --git a/assets-cg/player/player_idle_left.aseprite b/assets-cg/player/player_idle_left.aseprite deleted file mode 100644 index bfd4bfce3f087a982b0228ba25c03ad7f12a14cd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 918 zcmd6l-%C?r7{{NfClN<15IHi)w@CA<&W0JHvJ^7XK_O&WP-mQ+>{#j~OfxcdW(`Dx z=+}y55T#VG(5AZ(?6@0$+*qMo7d2QAT?h(-neg^KGs^yepy%cN@Sf*fd_T{5&)sCA z&rg#`#A0M1qVw2)3O&6^Caix^_9UY9Wg(F&ARrSvl_es##6@w=V(eEZd&`@|krVA^ z`QYKaV$fM=0sE_qz)$X6Ff!-_m$ZlAkCg)O!I$HpIw64v?=*mwuKi$D6n7gj46IjMjP?IE!L zUIplFl(>okQuOc6aKI3l0Qzu;IIN)zU&z7~ns9_5?4SlONWlm?x(ny9fCBOnj%36l z6M;xWRJNYPaNWNP3Y1EAM_X+(vuJn_nBGVsj!W6BblO3!j}-ZkfxBhnfoSxV96Aw> zcMNsy^osV!et+62qo?%3{j(a8Gd%Lk2e;)6BN;$8_b{N{C(49 zseB<>YYM#f@Hbbcd9bcWTkV{BGJe|sygSxAS0k5v{TA?8cG(8IdD{GNUaT`?pQt+A zLVEjE^|t04Fqh?I#8z0*z?!I*y0*ogV&9RHA;;wPW83M&$lLm9IIk}o691C^2ZgXV aM-u)T$@CwN^nGkLXTHO@7AG|l-1`%^xi8KD diff --git a/assets-cg/player/player_idle_left.png b/assets-cg/player/player_idle_left.png deleted file mode 100644 index 96516ce47577d0ac09d85bea87db35587f70f6b4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 580 zcmV-K0=xZ*P)Px${z*hZR9J=WmA^|HVHn3hN*hzDpoo$qORgkl5JJIoC^VxuiIa4_x!nrs&{Z-y z`zHwcA6PnOGrA~J0tMrsC$?xnxtwX??O^Wp5_5NNl8X+_7hbq~?&b6Rc%OS-7;32h zTO(cU6%jBZ*QmlC0f_neB>;+PgF-3?K-1=zSho^BD^Ow86S{6NK0XD2ZC`V8vJZf+ z8*)?A*6T?KxG%=>@pp=8gWBH)8`VQ;3t}rJ;L34sI&QM8iVDk@-%o*Fgn94=-3&Bx z+4i;crD@qmeuETx0_}!!eu0a-1^|h%7#DX9R`!lmSRMIpzz|xXj{MLBw#-#(bq9b? zJKyAoa(+QRFP08eSRMK8hHeWKI)&zDr`Z1SlQ+|oY?-TUepm(|8IO5`?^!O>`=3wgqETUotU#&U!~o2^e1&CIh{q>-jMG;m z0A@0Sre)-+bJTaj01E_wSWD>gSPQ9~_dOE6yF9HKZ4149J&l>n zP)r;A`co$rpI|MayUzPolZ9nfD5P@oJ&dpVcMozBJq5qTQB-a79Q>h%YS%vqs_Jl7 Sn04#`0000lg1HcDNf7p924$o{g5^@eTypx}8D)P!&~rE+&OPVF_w(Fyx|4{e z2eg!d!AL_yCoumM_S8*E!}u3v*AlJ7q(rKO00U++OGK`Vo5Ff4W50Hc>rN6&L1bb( zz&&Og=q|K?KF4nG-MJhv+V2KGhkL>J*8=eB>;X`D$iZD#JfOWkAFQ%xfmT}~SX$Zu z^162Li03`%>J#Aci5W2R<_9QHM18~ez|Ph#uwGHXYDX2=SndUftX433$OXQ-_yF|z z_k!LtTqtN@gZkeY7H9$;Kp*Z9hc%Sp3t5;#6OIss9n|0jDHuUVbrAvX_o_v&wb z`X0D_s$CzR?0C(KdwS*$Tke+FJdb!%PUF<(D&_eiQ?rCS`c)%RfEapG`lJfkH{2_JFV7NZ8 zu|e`kW4=EMdTe>H-izD~-gQ+uP4*h2Na%EnMvn?`j#-qJ4S}_LYm6#^+l+*_l l#9Zr0`m3X~|DmIjc$s{#JUyDrjs6ZM3Ax>%YGik}XCEnxrv diff --git a/assets-cg/player/player_idle_right.png b/assets-cg/player/player_idle_right.png deleted file mode 100644 index 55767951257709ef0a958fed82518ce7cb803229..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 566 zcmV-60?GY}P)Px$@JU2LR9J=Wl`&`&Q5eU6il*1YKtr+IGlO|zydh8olc7V$5EpSeGPvCAUN=V_ z6x`z6MR0X;=-7f_+eIl-5b9!6aOfb!G!DQc^Y(1Fl;EU@$o4=xEP6SyGOo23^tx zhr{o=s&{{VU+Q6&j6pWROC02<-v-{lmoXh43@hn#?o|(vHyX`W;TrMgVvV zB>-C6`&o5T_0t052K_cMUk6UkM&}AYZm$8*>vjNGT6B1@`NqEF3DOKo>wFRyb-{b@ zKT>r{@%6Q>cL3a2UgGtq&)iz6WG;G~$RKZ_L~DCL&eiL7=yf~13hx^=jB9lKV)s!P ze_koOTz~x1Rwq^axV^^L;pp6GzJ1u`>CPT6?yl2%wyD)G@<*0M!%BO~2K`AQgs-A^ zA$%29>uNH25q-l;i}p7#iQ|;%_Yb*xc`-+w=|o#c2p=JQ!fHJV8J)K}K(rO2z5V>l zha6>^nUz5*@TA(Pt;TH)JUNpQibfU7@d0xORNzT!PML2%fAHjHldxLn_Lb#gC6DO? z1fFE0wiI;{Uul^H~-q&l6dM!-&NElWpkid)2a7h}IWIh)?3kDO=^ zvx7(SO2FpgLNHo?5PTi9fQiv&@ZkMYwHdUP6oaLu zAyDw113iH^pg7FI#>Xq*+|mz_qlktl?txuryFtGsferPw;K}k{aNK4C6K)ZFd3q9z z4pf1?Z334tfJ*-E337`*mh{GDn@P#Z)p$SI_!VYTif)tFPBfD@83n(BT;Yda- zG7*S0MCHgy4A=dqpg>x3`A!{gXN6OEP&2uqB92ShsBM%@9V4Q*Gt8ZWgRT_RJynW2 zk7wy?d~7V!afavSF4U}eC7;0@y{?___B9pF8X68w8tp}^fmA%<(hoE~XusLoSMwsg z&VnZl=5O;0+atGQ;c@-U%zKMY6H`1_?$^6J-u74{pUSf0Dt}!>IO@*2R+hZr+BDo8@Y9il~XTN0Bgg$3_L!D1{JBccOE;}DWIF(eSePx$u}MThR9J=WRxwY)Kp1@xEyvI}nNV4JgJB?av647A5+^rD|3-fWf5nZ-I69ap zE;tc~vS>*hj3I%73Fn}9lzO$-p19bTG~e(Y@7;SnzAI3m!2d=`aUIkA{l-vMSi=Co zvmJQ00|00?JD}9%y(Dv4z!IKRq$S8Ks{ukx_8&Il&Ub}_U+Xrd0*KVO!F>rW& zufiqe2lN6;HE?%)fbo1GZPqFV>cjv5>|Ncc@O|Ug4M^z-aUuZ1Os!&IJYU4cGaJwi zNJWqVz;ovaPvJ_aP7F?}%9F^g6OhsrlAK3@NMFlD-hfgKQ0lHtg_H6Um&?`t7a4)M zr;tuSTPi9+Fa)J8&e#GMB?ISQ)%W}SM$QdF%(W>b3rGjdvKmR(Jd5>n@l)zDUOn4c ztI>WEf%2c&vmK1W32b7D+8qtD@JP9JkC2i9&vx+gKEr->2amHiQFphi+=R|osa8PB tZy*KQ1~$kqMB+lf^(p-q`~?am;R7PX_`(UpH|GEV002ovPDHLkV1hJZ*u4M% diff --git a/assets-cg/player/player_left.png b/assets-cg/player/player_left.png deleted file mode 100644 index cb73d0c5ebc92c9c448daa0863205dd7a50cb5c6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1190 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]->anim_damage[index]); } else { - entity_set_anim(e, anim_player_damage[e->movement.facing]); + entity_set_anim(e, anims_player_Hit[e->movement.facing]); } return damage; diff --git a/src/main.c b/src/main.c index 7697040..ae58a6b 100644 --- a/src/main.c +++ b/src/main.c @@ -104,7 +104,7 @@ int main(void) player->sprite = (frect_t){ -fix(6)/16, fix(5)/16, -fix(12)/16, fix(4)/16 }; - entity_set_anim(player, anim_player_idle); + entity_set_anim(player, anims_player_Idle); //--- // Main loop @@ -359,7 +359,7 @@ int main(void) bool set_anim = (player->movement.facing != next.facing); game_try_move_entity(&game, player, &next); - if(set_anim) entity_set_anim(player, anim_player_idle); + if(set_anim) entity_set_anim(player, anims_player_Walking); } /* Directions to reach the player from anywhere on the grid */ @@ -434,7 +434,7 @@ int main(void) player->movement.facing); game_add_effect_area(&game, area); - entity_set_anim(player, anim_player_attack); + entity_set_anim(player, anims_player_Attack); player->current_attack = area; player->attack_follows_movement = true; playerd->combo_delay = area->lifetime;