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.
76 lines
1.7 KiB
76 lines
1.7 KiB
/** |
|
* @file cursor.h |
|
* |
|
* Interface of cursor tracking functionality. |
|
*/ |
|
#pragma once |
|
|
|
#include <cstdint> |
|
#include <utility> |
|
|
|
#include "engine.h" |
|
#include "engine/cel_sprite.hpp" |
|
#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 int pcursmonst; |
|
extern int8_t pcursinvitem; |
|
extern uint16_t pcursstashitem; |
|
extern int8_t pcursitem; |
|
|
|
struct Object; // Defined in objects.h |
|
extern Object *ObjectUnderCursor; |
|
|
|
extern int8_t pcursplr; |
|
extern Point cursPosition; |
|
extern DVL_API_FOR_TEST int pcurs; |
|
|
|
void InitCursor(); |
|
void FreeCursor(); |
|
void ResetCursor(); |
|
|
|
struct Item; |
|
/** |
|
* @brief Use the item sprite as the cursor (or show the default hand cursor if the item isEmpty) |
|
*/ |
|
void NewCursor(const Item &item); |
|
|
|
void NewCursor(int cursId); |
|
|
|
void InitLevelCursor(); |
|
void CheckRportal(); |
|
void CheckTown(); |
|
void CheckCursMove(); |
|
|
|
void DrawSoftwareCursor(const Surface &out, Point position, int cursId); |
|
|
|
void DrawItem(const Item &item, const Surface &out, Point position, CelSprite cel, int frame); |
|
|
|
/** Returns the sprite for the given inventory index. */ |
|
const OwnedCelSprite &GetInvItemSprite(int i); |
|
|
|
/** Returns the CEL frame index for the given inventory index. */ |
|
int GetInvItemFrame(int cursId); |
|
|
|
/** Returns the width and height for an inventory index. */ |
|
Size GetInvItemSize(int cursId); |
|
|
|
} // namespace devilution
|
|
|