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.
69 lines
1.6 KiB
69 lines
1.6 KiB
#pragma once |
|
// Controller actions implementation |
|
|
|
#include <cstddef> |
|
#include <cstdint> |
|
|
|
#ifdef USE_SDL3 |
|
#include <SDL3/SDL_events.h> |
|
#else |
|
#include <SDL.h> |
|
#endif |
|
|
|
#include "controls/controller.h" |
|
#include "controls/game_controls.h" |
|
#include "player.h" |
|
|
|
namespace devilution { |
|
|
|
enum class BeltItemType : uint8_t { |
|
Healing, |
|
Mana, |
|
}; |
|
|
|
extern GameActionType ControllerActionHeld; |
|
extern bool StandToggle; |
|
|
|
// Runs every frame. |
|
// Handles menu movement. |
|
void plrctrls_every_frame(); |
|
|
|
// Run after every game logic iteration. |
|
// Handles player movement. |
|
void plrctrls_after_game_logic(); |
|
|
|
// Runs at the end of CheckCursMove() |
|
// Handles item, object, and monster auto-aim. |
|
void plrctrls_after_check_curs_move(); |
|
|
|
// Moves the map if active, the cursor otherwise. |
|
void HandleRightStickMotion(); |
|
|
|
// Whether we're in a dialog menu that the game handles natively with keyboard controls. |
|
bool InGameMenu(); |
|
|
|
void SetPointAndClick(bool value); |
|
|
|
bool IsPointAndClick(); |
|
bool IsMovementHandlerActive(); |
|
|
|
void DetectInputMethod(const SDL_Event &event, const ControllerButtonEvent &gamepadEvent); |
|
void ProcessGameAction(const GameAction &action); |
|
|
|
void UseBeltItem(BeltItemType type); |
|
|
|
// Talk to towners, click on inv items, attack, etc. |
|
void PerformPrimaryAction(); |
|
|
|
// Open chests, doors, pickup items. |
|
void PerformSecondaryAction(); |
|
void UpdateSpellTarget(SpellID spell); |
|
bool TryDropItem(); |
|
void InvalidateInventorySlot(); |
|
void FocusOnInventory(); |
|
void PerformSpellAction(); |
|
void QuickCast(size_t slot); |
|
|
|
extern int speedspellcount; |
|
|
|
} // namespace devilution
|
|
|