compile and classify all available content
This commit is contained in:
parent
0f1b1a7e11
commit
cd9e5d8de3
|
@ -16,3 +16,6 @@ __pycache__/
|
|||
screens/
|
||||
# Concept document
|
||||
concept.pdf
|
||||
# Random things
|
||||
assets-cg/gui.xcf
|
||||
assets-cg/gui2.xcf
|
||||
|
|
|
@ -62,6 +62,7 @@ set(ASSETS
|
|||
assets-cg/font_hud.png
|
||||
# Items
|
||||
assets-cg/items/life.aseprite
|
||||
assets-cg/items/chest.aseprite
|
||||
assets-cg/items/potion_atk.aseprite
|
||||
assets-cg/items/potion_cooldown.aseprite
|
||||
assets-cg/items/potion_def.aseprite
|
||||
|
@ -93,6 +94,11 @@ set(ASSETS
|
|||
assets-cg/skills/bullet_left.aseprite
|
||||
assets-cg/skills/hit.aseprite
|
||||
assets-cg/skills/judgement.aseprite
|
||||
assets-cg/skills/launch.aseprite
|
||||
assets-cg/skills/magic_up.aseprite
|
||||
assets-cg/skills/magic_right.aseprite
|
||||
assets-cg/skills/magic_down.aseprite
|
||||
assets-cg/skills/magic_left.aseprite
|
||||
assets-cg/skills/teleport.aseprite
|
||||
assets-cg/skills/shock.aseprite
|
||||
assets-cg/skills/projectile_left.aseprite
|
||||
|
@ -109,6 +115,30 @@ set(ASSETS
|
|||
# Enemies: Fire Slime
|
||||
assets-cg/enemies/fire_slime_left.txt
|
||||
assets-cg/enemies/fire_slime_right.txt
|
||||
# Enemies: Albinos Bat
|
||||
assets-cg/enemies/albinos_bat_left.txt
|
||||
assets-cg/enemies/albinos_bat_right.txt
|
||||
# Enemies: Chemical Slime
|
||||
assets-cg/enemies/chemical_slime_left.txt
|
||||
assets-cg/enemies/chemical_slime_right.txt
|
||||
# Enemies: Crimson Bat
|
||||
assets-cg/enemies/crimson_bat_left.txt
|
||||
assets-cg/enemies/crimson_bat_right.txt
|
||||
# Enemies: Water Slime
|
||||
assets-cg/enemies/water_slime_left.txt
|
||||
assets-cg/enemies/water_slime_right.txt
|
||||
# Enemies: GB Gunslinger
|
||||
assets-cg/enemies/gb_gunslinger_left.txt
|
||||
assets-cg/enemies/gb_gunslinger_right.txt
|
||||
# Enemies: Master Gunslinger
|
||||
assets-cg/enemies/master_gunslinger_left.txt
|
||||
assets-cg/enemies/master_gunslinger_right.txt
|
||||
# Enemies: Tifucile
|
||||
assets-cg/enemies/tifucile_left.aseprite
|
||||
assets-cg/enemies/tifucile_right.aseprite
|
||||
# Enemies: Washing machine
|
||||
assets-cg/enemies/washing_machine_left.aseprite
|
||||
assets-cg/enemies/washing_machine_right.aseprite
|
||||
# Misc
|
||||
assets-cg/font_damage_red.png
|
||||
assets-cg/font_damage_white.png
|
||||
|
|
|
@ -0,0 +1,21 @@
|
|||
Unused enemies:
|
||||
slime/Attack,Fire
|
||||
fire_slime/Attack,Fire
|
||||
water_slime
|
||||
chemical_slime
|
||||
albinos_bat
|
||||
crimson_bat
|
||||
gunslinger/Reloading
|
||||
gb_gunslinger
|
||||
master_gunslinger
|
||||
tifucile
|
||||
washing_machine
|
||||
Unused items:
|
||||
chest
|
||||
Unused skills:
|
||||
launch
|
||||
magic
|
||||
Unused tilesets:
|
||||
crypt
|
||||
heaven
|
||||
machine
|
|
@ -459,13 +459,26 @@ def convert_aseprite_anim(input, output, params, newpalette=None):
|
|||
return o
|
||||
|
||||
def convert_aseprite_anim_variation(input, output, params):
|
||||
if "base" not in params or "palette" not in params:
|
||||
raise fxconv.FxconvError("aseprite anim variation needs base/palette")
|
||||
|
||||
from aseprite import AsepriteFile
|
||||
|
||||
base = os.path.join(os.path.dirname(input), params["base"])
|
||||
palette = os.path.join(os.path.dirname(input), params["palette"])
|
||||
if "base" in params:
|
||||
base = params["base"]
|
||||
elif "base_regex" in params:
|
||||
regex = params["base_regex"].split(" ", 1)
|
||||
base = re.sub(*regex, os.path.basename(input))
|
||||
else:
|
||||
raise fxconv.FxconvError(f"{input} lacks a 'base:' metadata")
|
||||
|
||||
if "palette" in params:
|
||||
palette = params["palette"]
|
||||
elif "palette_regex" in params:
|
||||
regex = params["palette_regex"].split(" ", 1)
|
||||
palette = re.sub(*regex, os.path.basename(input))
|
||||
else:
|
||||
raise fxconv.FxconvError(f"{input} lacks a 'palette:' metadata")
|
||||
|
||||
base = os.path.join(os.path.dirname(input), base)
|
||||
palette = os.path.join(os.path.dirname(input), palette)
|
||||
|
||||
with open(palette, "rb") as fp:
|
||||
ase = AsepriteFile(fp.read())
|
||||
|
|
|
@ -26,11 +26,14 @@ gunslinger_right.aseprite:
|
|||
name_regex: (.*)\.txt frames_\1
|
||||
profile: p8
|
||||
next: Idle=Idle, Walking=Walking, Hit=Idle
|
||||
*_left.txt:
|
||||
palette_regex: (.*)_left\.txt \1_palette.aseprite
|
||||
*_right.txt:
|
||||
palette_regex: (.*)_right\.txt \1_palette.aseprite
|
||||
|
||||
fire_slime_left.txt:
|
||||
base: slime_left.aseprite
|
||||
palette: fire_slime_palette.aseprite
|
||||
|
||||
fire_slime_right.txt:
|
||||
base: slime_right.aseprite
|
||||
palette: fire_slime_palette.aseprite
|
||||
*_slime_*.txt:
|
||||
base_regex: .*_slime_(.*)\.txt slime_\1.aseprite
|
||||
*_bat_*.txt:
|
||||
base_regex: .*_bat_(.*)\.txt bat_\1.aseprite
|
||||
*_gunslinger_*.txt:
|
||||
base_regex: .*_gunslinger_(.*)\.txt gunslinger_\1.aseprite
|
||||
|
|
Binary file not shown.
21
src/anim.c
21
src/anim.c
|
@ -40,29 +40,15 @@ ANIM2(skill_projectile);
|
|||
ANIM1(skill_teleport);
|
||||
ANIM1(skill_shock);
|
||||
ANIM1(skill_judgement);
|
||||
ANIM1(skill_launch);
|
||||
/* Directional skills */
|
||||
ANIM4(skill_swing);
|
||||
ANIM4(skill_impale);
|
||||
ANIM4(skill_bullet);
|
||||
ANIM4(skill_magic);
|
||||
|
||||
/* Enemies */
|
||||
ANIM2(slime, Idle);
|
||||
ANIM2(slime, Walking);
|
||||
ANIM2(slime, Hit);
|
||||
ANIM2(slime, Death);
|
||||
ANIM2(bat, Idle);
|
||||
ANIM2(bat, Hit);
|
||||
ANIM2(bat, Death);
|
||||
ANIM2(gunslinger, Idle);
|
||||
ANIM2(gunslinger, Walking);
|
||||
ANIM2(gunslinger, Reloading);
|
||||
ANIM2(gunslinger, Fire);
|
||||
ANIM2(gunslinger, Hit);
|
||||
ANIM2(gunslinger, Death);
|
||||
ANIM2(fire_slime, Idle);
|
||||
ANIM2(fire_slime, Walking);
|
||||
ANIM2(fire_slime, Hit);
|
||||
ANIM2(fire_slime, Death);
|
||||
ANIM_ENEMIES(ANIM2)
|
||||
|
||||
/* Player */
|
||||
ANIM4(player, Idle);
|
||||
|
@ -77,6 +63,7 @@ ANIM1(hud_xp_Explode);
|
|||
|
||||
/* Items */
|
||||
ANIM1(item_life);
|
||||
ANIM1(item_chest);
|
||||
ANIM1(item_potion_atk);
|
||||
ANIM1(item_potion_cooldown);
|
||||
ANIM1(item_potion_def);
|
||||
|
|
51
src/anim.h
51
src/anim.h
|
@ -78,23 +78,20 @@ extern anim_t anims_skill_impale;
|
|||
extern anim_t anims_skill_bullet;
|
||||
|
||||
/* Enemies */
|
||||
extern anim_t anims_slime_Idle;
|
||||
extern anim_t anims_slime_Walking;
|
||||
extern anim_t anims_slime_Hit;
|
||||
extern anim_t anims_slime_Death;
|
||||
extern anim_t anims_bat_Idle;
|
||||
extern anim_t anims_bat_Hit;
|
||||
extern anim_t anims_bat_Death;
|
||||
extern anim_t anims_gunslinger_Idle;
|
||||
extern anim_t anims_gunslinger_Walking;
|
||||
extern anim_t anims_gunslinger_Reloading;
|
||||
extern anim_t anims_gunslinger_Fire;
|
||||
extern anim_t anims_gunslinger_Hit;
|
||||
extern anim_t anims_gunslinger_Death;
|
||||
extern anim_t anims_fire_slime_Idle;
|
||||
extern anim_t anims_fire_slime_Walking;
|
||||
extern anim_t anims_fire_slime_Hit;
|
||||
extern anim_t anims_fire_slime_Death;
|
||||
|
||||
#define ANIM_ENEMIES(MACRO) \
|
||||
ANIM_E1(MACRO, slime, Idle, Walking, Attack, Fire, Hit, Death) \
|
||||
ANIM_E1(MACRO, fire_slime, Idle, Walking, Attack, Fire, Hit, Death) \
|
||||
ANIM_E1(MACRO, water_slime, Idle, Walking, Attack, Fire, Hit, Death) \
|
||||
ANIM_E1(MACRO, chemical_slime, Idle, Walking, Attack, Fire, Hit, Death) \
|
||||
ANIM_E1(MACRO, bat, Idle, Hit, Death) \
|
||||
ANIM_E1(MACRO, albinos_bat, Idle, Hit, Death) \
|
||||
ANIM_E1(MACRO, crimson_bat, Idle, Hit, Death) \
|
||||
ANIM_E1(MACRO, gunslinger, Idle, Walking, Reloading, Fire, Hit, Death) \
|
||||
ANIM_E1(MACRO, gb_gunslinger, Idle, Walking, Reloading, Fire, Hit, Death) \
|
||||
ANIM_E1(MACRO, master_gunslinger, Idle, Walking,Reloading,Fire,Hit,Death) \
|
||||
ANIM_E1(MACRO, tifucile, Idle, Walking, Hit, Death) \
|
||||
ANIM_E1(MACRO, washing_machine, Idle, Walking, Attack, Hit, Death)
|
||||
|
||||
/* Player */
|
||||
extern anim_t anims_player_Idle;
|
||||
|
@ -109,6 +106,7 @@ extern anim_t anims_hud_xp_Explode;
|
|||
|
||||
/* Items */
|
||||
extern anim_t anims_item_life;
|
||||
extern anim_t anims_item_chest;
|
||||
extern anim_t anims_item_potion_atk;
|
||||
extern anim_t anims_item_potion_cooldown;
|
||||
extern anim_t anims_item_potion_def;
|
||||
|
@ -120,3 +118,22 @@ extern anim_t anims_item_stick2;
|
|||
extern anim_t anims_item_sword1;
|
||||
extern anim_t anims_item_sword2;
|
||||
extern anim_t anims_item_armor1;
|
||||
|
||||
/* Expand definitions for enemies */
|
||||
|
||||
#define ANIM_E1(MACRO, ENEMY, SEQ, ...) \
|
||||
MACRO(ENEMY, SEQ) __VA_OPT__(ANIM_E2(MACRO, ENEMY, __VA_ARGS__))
|
||||
#define ANIM_E2(MACRO, ENEMY, SEQ, ...) \
|
||||
MACRO(ENEMY, SEQ) __VA_OPT__(ANIM_E3(MACRO, ENEMY, __VA_ARGS__))
|
||||
#define ANIM_E3(MACRO, ENEMY, SEQ, ...) \
|
||||
MACRO(ENEMY, SEQ) __VA_OPT__(ANIM_E4(MACRO, ENEMY, __VA_ARGS__))
|
||||
#define ANIM_E4(MACRO, ENEMY, SEQ, ...) \
|
||||
MACRO(ENEMY, SEQ) __VA_OPT__(ANIM_E5(MACRO, ENEMY, __VA_ARGS__))
|
||||
#define ANIM_E5(MACRO, ENEMY, SEQ, ...) \
|
||||
MACRO(ENEMY, SEQ) __VA_OPT__(ANIM_E6(MACRO, ENEMY, __VA_ARGS__))
|
||||
#define ANIM_E6(MACRO, ENEMY, SEQ, ...) \
|
||||
MACRO(ENEMY, SEQ) __VA_OPT__(ANIM_ETOO_MANY_ARGS)
|
||||
|
||||
#define ANIM_ENEMIES_PROTO(ENEMY, SEQ) \
|
||||
extern anim_t anims_ ## ENEMY ## _ ## SEQ;
|
||||
ANIM_ENEMIES(ANIM_ENEMIES_PROTO)
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
static enemy_t const slime_1 = {
|
||||
.name = "Slime",
|
||||
.level = 1,
|
||||
ANIMS(slime, Idle, Walking, Idle, Hit, Death),
|
||||
ANIMS(slime, Idle, Walking, Attack, Hit, Death),
|
||||
.hitbox = (rect){ -fix(3)/16, fix(4)/16, -fix(2)/16, fix(3)/16 },
|
||||
.limits = {
|
||||
.max_speed = fix(1),
|
||||
|
|
Loading…
Reference in New Issue