devilutionX/Source/cursor.h
Gleb Mazovetskiy 076b0c0c05 Overhaul tests
1. Adds a `libdevilution_so` target when tests are enabled.
2. Each test file is now a separate binary target linked against `libdevilutionx_so` (can now run tests in parallel).
3. Tests are now defined in a separate `test/CMakeLists.txt` file.
4. Building the tests is now controlled by the standard `BUILD_TESTING` option (defined by CTest).
5. Tests are now built by default.
6. On CI, test errors are now reported.

Also:

* `.clang-format`: Enable SortIncludes in tests
* `path_test.cpp`: Fix -Wsign-compare
2021-12-16 20:26:51 +00:00

71 lines
1.5 KiB
C++

/**
* @file cursor.h
*
* Interface of cursor tracking functionality.
*/
#pragma once
#include <cstdint>
#include <utility>
#include "engine.h"
#include "engine/cel_sprite.hpp"
#include "miniwin/miniwin.h"
#include "utils/attributes.h"
#include "utils/stdcompat/optional.hpp"
namespace devilution {
enum cursor_id : uint8_t {
CURSOR_NONE,
CURSOR_HAND,
CURSOR_IDENTIFY,
CURSOR_REPAIR,
CURSOR_RECHARGE,
CURSOR_DISARM,
CURSOR_OIL,
CURSOR_TELEKINESIS,
CURSOR_RESURRECT,
CURSOR_TELEPORT,
CURSOR_HEALOTHER,
CURSOR_HOURGLASS,
CURSOR_FIRSTITEM,
};
extern DVL_API_FOR_TEST Size cursSize;
extern int pcursmonst;
extern DVL_API_FOR_TEST Size icursSize28;
extern DVL_API_FOR_TEST Size icursSize;
extern int8_t pcursinvitem;
extern int8_t pcursitem;
extern int8_t pcursobj;
extern int8_t pcursplr;
extern Point cursPosition;
extern DVL_API_FOR_TEST int pcurs;
void InitCursor();
void FreeCursor();
void SetICursor(int cursId);
void NewCursor(int cursId);
void InitLevelCursor();
void CheckRportal();
void CheckTown();
void CheckCursMove();
inline bool IsItemSprite(int cursId)
{
return cursId >= CURSOR_FIRSTITEM;
}
void CelDrawCursor(const Surface &out, Point position, int cursId);
/** Returns the sprite for the given inventory index. */
const CelSprite &GetInvItemSprite(int i);
/** Returns the CEL frame index for the given inventory index. */
int GetInvItemFrame(int i);
/** Returns the width and height for an inventory index. */
Size GetInvItemSize(int cursId);
} // namespace devilution