Всё, из чего собираются спрайты, и ничего собранного. Источник истины —
assets/manifests и assets/*/catalog.yaml; PNG, .sfa и contact sheet остаются
за бортом, потому что воспроизводятся командой (docs/12-assets.md).
assets/manifests что и как рендерить: окружение, твари, агенты, предметы
assets/agents паперdoll-риг восьми направлений, каталог снаряжения
assets/monsters пять морфологий, каждая своим ригом (docs/14-monsters.md)
assets/sources исходные развёртки и импорты
assets/art_masters мастер-развёртки, по которым сверяется стиль
tools/ сборка ассетов, покрытие, генераторы, blender-скрипты
generated/ заголовки с константами SF_ASSET_*: без них игра не
соберётся, поэтому они в репозитории, хотя и производные
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
77 lines
3.6 KiB
C++
77 lines
3.6 KiB
C++
/* Generated by tools/monster_assets.py sync. Do not edit. */
|
||
#pragma once
|
||
#include <cstdint>
|
||
|
||
#include "render/anim.h"
|
||
#include "sim/target.h"
|
||
|
||
constexpr uint32_t MONSTER_ASSET_SHAMBLER_WALK = UINT32_C(0xDA564B3B);
|
||
constexpr uint32_t MONSTER_ASSET_SHAMBLER_ATTACK = UINT32_C(0x2821014E);
|
||
constexpr uint32_t MONSTER_ASSET_SHAMBLER_HIT = UINT32_C(0x8498BC33);
|
||
constexpr uint32_t MONSTER_ASSET_SHAMBLER_DEATH = UINT32_C(0x0B950530);
|
||
constexpr uint32_t MONSTER_ASSET_RUSHER_WALK = UINT32_C(0x442741A8);
|
||
constexpr uint32_t MONSTER_ASSET_RUSHER_ATTACK = UINT32_C(0x219BA505);
|
||
constexpr uint32_t MONSTER_ASSET_RUSHER_HIT = UINT32_C(0x3404E732);
|
||
constexpr uint32_t MONSTER_ASSET_RUSHER_DEATH = UINT32_C(0xAEBDED05);
|
||
constexpr uint32_t MONSTER_ASSET_SPITTER_WALK = UINT32_C(0xE887C90E);
|
||
constexpr uint32_t MONSTER_ASSET_SPITTER_ATTACK = UINT32_C(0x02D54BDB);
|
||
constexpr uint32_t MONSTER_ASSET_SPITTER_HIT = UINT32_C(0x84B7B754);
|
||
constexpr uint32_t MONSTER_ASSET_SPITTER_DEATH = UINT32_C(0x9142CAF7);
|
||
constexpr uint32_t MONSTER_ASSET_BRUTE_WALK = UINT32_C(0xC97ABA5D);
|
||
constexpr uint32_t MONSTER_ASSET_BRUTE_ATTACK = UINT32_C(0xE166F8E8);
|
||
constexpr uint32_t MONSTER_ASSET_BRUTE_HIT = UINT32_C(0xBC752911);
|
||
constexpr uint32_t MONSTER_ASSET_BRUTE_DEATH = UINT32_C(0x3D96DA4E);
|
||
constexpr uint32_t MONSTER_ASSET_LURKER_WALK = UINT32_C(0x8FF69CC2);
|
||
constexpr uint32_t MONSTER_ASSET_LURKER_ATTACK = UINT32_C(0x9A5A0F2F);
|
||
constexpr uint32_t MONSTER_ASSET_LURKER_HIT = UINT32_C(0xFF50F498);
|
||
constexpr uint32_t MONSTER_ASSET_LURKER_DEATH = UINT32_C(0xA573E6AB);
|
||
|
||
// AnimKind::IDLE у тварей нет: покоя у них не бывает, стоящая тварь
|
||
// показывает первый кадр шага.
|
||
constexpr uint32_t MonsterAsset(EnemyKind kind, AnimKind anim)
|
||
{
|
||
switch (kind) {
|
||
case EnemyKind::SHAMBLER:
|
||
switch (anim) {
|
||
case AnimKind::WALK: return MONSTER_ASSET_SHAMBLER_WALK;
|
||
case AnimKind::ATTACK: return MONSTER_ASSET_SHAMBLER_ATTACK;
|
||
case AnimKind::HURT: return MONSTER_ASSET_SHAMBLER_HIT;
|
||
case AnimKind::DIE: return MONSTER_ASSET_SHAMBLER_DEATH;
|
||
default: return MONSTER_ASSET_SHAMBLER_WALK;
|
||
}
|
||
case EnemyKind::RUSHER:
|
||
switch (anim) {
|
||
case AnimKind::WALK: return MONSTER_ASSET_RUSHER_WALK;
|
||
case AnimKind::ATTACK: return MONSTER_ASSET_RUSHER_ATTACK;
|
||
case AnimKind::HURT: return MONSTER_ASSET_RUSHER_HIT;
|
||
case AnimKind::DIE: return MONSTER_ASSET_RUSHER_DEATH;
|
||
default: return MONSTER_ASSET_RUSHER_WALK;
|
||
}
|
||
case EnemyKind::SPITTER:
|
||
switch (anim) {
|
||
case AnimKind::WALK: return MONSTER_ASSET_SPITTER_WALK;
|
||
case AnimKind::ATTACK: return MONSTER_ASSET_SPITTER_ATTACK;
|
||
case AnimKind::HURT: return MONSTER_ASSET_SPITTER_HIT;
|
||
case AnimKind::DIE: return MONSTER_ASSET_SPITTER_DEATH;
|
||
default: return MONSTER_ASSET_SPITTER_WALK;
|
||
}
|
||
case EnemyKind::BRUTE:
|
||
switch (anim) {
|
||
case AnimKind::WALK: return MONSTER_ASSET_BRUTE_WALK;
|
||
case AnimKind::ATTACK: return MONSTER_ASSET_BRUTE_ATTACK;
|
||
case AnimKind::HURT: return MONSTER_ASSET_BRUTE_HIT;
|
||
case AnimKind::DIE: return MONSTER_ASSET_BRUTE_DEATH;
|
||
default: return MONSTER_ASSET_BRUTE_WALK;
|
||
}
|
||
case EnemyKind::LURKER:
|
||
switch (anim) {
|
||
case AnimKind::WALK: return MONSTER_ASSET_LURKER_WALK;
|
||
case AnimKind::ATTACK: return MONSTER_ASSET_LURKER_ATTACK;
|
||
case AnimKind::HURT: return MONSTER_ASSET_LURKER_HIT;
|
||
case AnimKind::DIE: return MONSTER_ASSET_LURKER_DEATH;
|
||
default: return MONSTER_ASSET_LURKER_WALK;
|
||
}
|
||
default: return 0;
|
||
}
|
||
}
|