squad-proto/generated/monster_sprites.h
z.kirill 8d35f4c2ec Конвейер ассетов: манифесты, риги, каталоги, инструменты
Всё, из чего собираются спрайты, и ничего собранного. Источник истины —
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>
2026-08-13 21:06:09 +03:00

77 lines
3.6 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/* 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;
}
}