compile and classify all available content

This commit is contained in:
Lephenixnoir 2022-05-18 21:48:48 +01:00
parent 0f1b1a7e11
commit cd9e5d8de3
Signed by: Lephenixnoir
GPG Key ID: 1BBA026E13FC0495
21 changed files with 121 additions and 47 deletions

3
.gitignore vendored
View File

@ -16,3 +16,6 @@ __pycache__/
screens/
# Concept document
concept.pdf
# Random things
assets-cg/gui.xcf
assets-cg/gui2.xcf

View File

@ -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

21
TODO Normal file
View File

@ -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

View File

@ -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())

View File

View File

View File

View File

View File

@ -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

View File

View File

View File

View File

@ -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);

View File

@ -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)

View File

@ -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),