You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
44 lines
986 B
44 lines
986 B
/** |
|
* @file dead.h |
|
* |
|
* Interface of functions for placing dead monsters. |
|
*/ |
|
#pragma once |
|
|
|
#include <array> |
|
#include <cstdint> |
|
|
|
#include "engine.h" |
|
#include "engine/clx_sprite.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 SyncUniqDead(); |
|
|
|
} // namespace devilution
|
|
|