AlpacaLibrary/Include/Game/Interactable/NPC.hpp

64 lines
2.1 KiB
C++
Raw Normal View History

2018-04-15 05:08:42 +00:00
#ifndef INTERACTABLENPC_HPP_INCLUDED
#define INTERACTABLENPC_HPP_INCLUDED
#include "../../Core/Classes/NPC.hpp"
#include "../../Core/Classes/NPCInfo.hpp"
#include "../../Core/Types/Tile.hpp"
#include "../../Core/Types/Point.hpp"
2018-05-10 01:08:38 +00:00
#include "../../Core/Types/Box.hpp"
2018-04-15 05:08:42 +00:00
#include "../../Core/Types/Convex.hpp"
2018-09-03 03:13:53 +00:00
#include "../../Core/Types/Wireframe.hpp"
2018-05-10 01:08:38 +00:00
#include "../../Core/Input.hpp"
2018-06-28 02:22:43 +00:00
#include "../../Game/Tools/Camera.hpp"
2018-04-15 05:08:42 +00:00
#include <cstdint>
2019-01-29 20:07:44 +00:00
#include <functional>
2023-03-09 17:15:48 +00:00
#include <regex>
2018-04-15 05:08:42 +00:00
namespace Interactable
{
class NPC : public Internal::NPC
{
public:
NPC(const Internal::NPC& N);
2018-12-27 18:17:09 +00:00
NPC() = default;
NPC(NPC&& Obj) = default;
NPC(const NPC& Obj) = default;
NPC& operator=(NPC&& Obj) = default;
NPC& operator=(const NPC& Obj) = default;
2018-04-15 05:08:42 +00:00
std::int32_t GetID() const;
std::string GetName() const;
Internal::NPCInfo GetInfo() const;
2018-05-10 01:08:38 +00:00
2018-05-15 03:41:51 +00:00
std::vector<Point> GetModel() const;
2018-09-03 03:13:53 +00:00
Wireframe GetWireframe() const;
2018-05-15 03:41:51 +00:00
Convex GetConvex() const;
2018-05-10 01:08:38 +00:00
Box GetBox() const;
Point GetPoint() const;
2018-06-28 02:22:43 +00:00
Point GetPoint(double PointGenAccuracy) const;
2018-05-10 01:08:38 +00:00
double GetVisibility() const;
Tile GetTile() const;
2018-07-13 21:41:07 +00:00
Tile GetReachableTile() const;
bool IsReachable() const;
2018-06-28 02:22:43 +00:00
bool RotateTo(std::int32_t Angle = 0) const;
bool RotateTo(Camera::COMPASS_DIRECTION Direction) const;
2018-05-10 01:08:38 +00:00
2018-04-15 05:08:42 +00:00
Internal::Character GetInteracting() const;
bool Interacting() const;
bool Interacting(const Internal::Character& C) const;
2018-06-28 02:22:43 +00:00
bool Hover() const;
2018-05-10 01:08:38 +00:00
bool Interact(const Button& B = BUTTON_LEFT) const;
2023-03-09 17:15:48 +00:00
bool Interact(const std::regex& Option, bool CheckTarget = false) const;
2018-06-28 02:22:43 +00:00
bool Interact(const std::string& Option, bool CheckTarget = true) const;
bool Interact(const std::vector<std::string>& Options, bool CheckTarget = true) const;
2019-01-29 20:07:44 +00:00
bool Interact(const std::function<bool (const std::vector<Point>&)>& InteractMethod) const;
2018-04-16 03:53:24 +00:00
2018-04-15 05:08:42 +00:00
};
}
#endif // INTERACTABLENPC_HPP_INCLUDED