Files
Gleb Mazovetskiy c31836eab8 Split up engine.{h,cpp}
Untangles dependencies by splitting up `engine.{h,cpp}` into 3 files:

1. `primitive_render`
2. `ticks` -- only contains `GetAnimationFrame` for now.
3. `GetWidth2` renamed to `CalculateSpriteTileCenterX` and moved to `levels/dun_tile.hpp`.
2025-01-09 08:51:55 +00:00

45 lines
1007 B
C++

/**
* @file dead.h
*
* Interface of functions for placing dead monsters.
*/
#pragma once
#include <cstddef>
#include <cstdint>
#include "engine/clx_sprite.hpp"
#include "engine/direction.hpp"
#include "engine/point.hpp"
namespace devilution {
static constexpr unsigned MaxCorpses = 31;
struct Corpse {
OptionalClxSpriteListOrSheet sprites;
int frame;
uint16_t width;
uint8_t translationPaletteIndex;
/**
* @brief Returns the sprite list for a given direction.
*
* @param direction One of the 16 directions. Valid range: [0, 15].
* @return ClxSpriteList
*/
[[nodiscard]] ClxSpriteList spritesForDirection(Direction direction) const
{
return sprites->isSheet() ? sprites->sheet()[static_cast<size_t>(direction)] : sprites->list();
}
};
extern Corpse Corpses[MaxCorpses];
extern int8_t stonendx;
void InitCorpses();
void AddCorpse(Point tilePosition, int8_t dv, Direction ddir);
void MoveLightsToCorpses();
} // namespace devilution