Add the entities.png manifest, paste-in template and sprite loader

The sheet becomes a fixed grid (one row per entity, one column slot per
animation state) described by a sidecar entities.toml that only maps
names to rows; the loader reads present states and frame counts off the
pixels, so assembling the sheet by hand needs no bookkeeping.
tools/mktemplate.py renders the labelled template with low-alpha slot
guides. The CGA atlas is kept for larger UI text.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-20 20:25:26 +02:00
co-authored by Claude Opus 5
parent 335962800f
commit 8bf086b06a
13 changed files with 555 additions and 83 deletions
Binary file not shown.

After

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 310 B

After

Width:  |  Height:  |  Size: 7.4 KiB

+116
View File
@@ -0,0 +1,116 @@
# Sidecar manifest for entities.png.
#
# The sheet is a grid of 8×8 cells: one entity per row, one fixed column slot per
# state. States are Idle, Sit, Walk, Action 1, Action 2, Hit, Dead; a slot holds up to
# `max` frames, left to right. Frames present in a slot are detected from the PNG
# (a fully transparent cell ends the animation, an empty slot means the entity has no
# such state and Idle is shown instead) — so this file only says WHERE things are,
# never how many frames exist.
#
# `assets/tilesets/entities-template.png` (from `tools/mktemplate.py`) shows the
# same layout with labels and slot guides: paste sprites into it, save it as
# entities.png. The label column and header are outside `origin` and never loaded.
[layout]
cell = 8
origin = [64, 16] # x, y of the first sprite cell (right of the labels, below the header)
# state = [first column (cells, relative to origin), max frames]
[layout.states]
idle = [0, 2]
sit = [2, 2]
walk = [4, 4]
action1 = [8, 4]
action2 = [12, 2]
hit = [14, 2]
dead = [16, 2]
# name = row (0-based). Order is free, rows must be unique.
[entities]
player = 0
ghost1 = 1
ghost2 = 2
mutant_rat = 3
slime1 = 4
slime2 = 5
slime3 = 6
ent = 7
shroom = 8
floating_eye = 9
chick = 10
hen = 11
rooster = 12
fox_kit = 13
fox = 14
rabbit_kit = 15
rabbit = 16
mouse_pup = 17
mouse = 18
kitten1 = 19
cat1 = 20
kitten2 = 21
cat2 = 22
puppy = 23
dog = 24
foal1 = 25
horse1 = 26
foal2 = 27
horse2 = 28
foal3 = 29
horse3 = 30
foal4 = 31
horse4 = 32
baby_bird1 = 33
bird1 = 34
baby_bird2 = 35
bird2 = 36
cardinal_chick = 37
cardinal = 38
baby_eagle = 39
eagle = 40
baby_crow = 41
crow = 42
piglet = 43
pig = 44
calf = 45
cattle = 46
kid = 47
goat = 48
lamb = 49
sheep = 50
duckling = 51
duck = 52
wolf_pup = 53
wolf = 54
doe = 55
buck = 56
boar_piglet = 57
boar = 58
bear_cub = 59
bear = 60
squirrel_kit = 61
squirrel = 62
turkey_chick = 63
turkey = 64
opossum_joey = 65
opossum = 66
skunk_kit = 67
skunk = 68
raccoon_cub = 69
raccoon = 70
fish1 = 71
fish2 = 72
fish3 = 73
fish4 = 74
bees = 75
bugs1 = 76
bugs2 = 77
butterfly1 = 78
butterfly2 = 79
butterfly3 = 80
butterfly4 = 81