mirror of
https://github.com/ErikasKontenis/SabrehavenServer.git
synced 2025-12-31 12:47:10 +01:00
first changes
This commit is contained in:
@@ -24,6 +24,10 @@
|
||||
#include "enums.h"
|
||||
#include "luascript.h"
|
||||
|
||||
class Action;
|
||||
using Action_ptr = std::unique_ptr<Action>;
|
||||
using ActionFunction = std::function<bool(Player* player, Item* item, const Position& fromPosition, Thing* target, const Position& toPosition, bool isHotkey)>;
|
||||
|
||||
class Action : public Event
|
||||
{
|
||||
public:
|
||||
@@ -34,7 +38,7 @@ class Action : public Event
|
||||
|
||||
//scripting
|
||||
virtual bool executeUse(Player* player, Item* item, const Position& fromPosition,
|
||||
Thing* target, const Position& toPosition);
|
||||
Thing* target, const Position& toPosition, bool isHotkey);
|
||||
//
|
||||
|
||||
bool getAllowFarUse() const {
|
||||
@@ -58,18 +62,44 @@ class Action : public Event
|
||||
checkFloor = v;
|
||||
}
|
||||
|
||||
std::vector<uint16_t> getItemIdRange() {
|
||||
return ids;
|
||||
}
|
||||
void addItemId(uint16_t id) {
|
||||
ids.emplace_back(id);
|
||||
}
|
||||
|
||||
std::vector<uint16_t> getUniqueIdRange() {
|
||||
return uids;
|
||||
}
|
||||
void addUniqueId(uint16_t id) {
|
||||
uids.emplace_back(id);
|
||||
}
|
||||
|
||||
std::vector<uint16_t> getActionIdRange() {
|
||||
return aids;
|
||||
}
|
||||
void addActionId(uint16_t id) {
|
||||
aids.emplace_back(id);
|
||||
}
|
||||
|
||||
virtual ReturnValue canExecuteAction(const Player* player, const Position& toPos);
|
||||
virtual bool hasOwnErrorHandler() {
|
||||
return false;
|
||||
}
|
||||
virtual Thing* getTarget(Player* player, Creature* targetCreature, const Position& toPosition, uint8_t toStackPos) const;
|
||||
|
||||
protected:
|
||||
ActionFunction function;
|
||||
|
||||
private:
|
||||
std::string getScriptEventName() const override;
|
||||
|
||||
bool allowFarUse;
|
||||
bool checkFloor;
|
||||
bool checkLineOfSight;
|
||||
bool allowFarUse = false;
|
||||
bool checkFloor = true;
|
||||
bool checkLineOfSight = true;
|
||||
std::vector<uint16_t> ids;
|
||||
std::vector<uint16_t> uids;
|
||||
std::vector<uint16_t> aids;
|
||||
};
|
||||
|
||||
class Actions final : public BaseEvents
|
||||
@@ -82,15 +112,16 @@ class Actions final : public BaseEvents
|
||||
Actions(const Actions&) = delete;
|
||||
Actions& operator=(const Actions&) = delete;
|
||||
|
||||
bool useItem(Player* player, const Position& pos, uint8_t index, Item* item);
|
||||
bool useItemEx(Player* player, const Position& fromPos, const Position& toPos, uint8_t toStackPos, Item* item, Creature* creature = nullptr);
|
||||
bool useItem(Player* player, const Position& pos, uint8_t index, Item* item, bool isHotkey);
|
||||
bool useItemEx(Player* player, const Position& fromPos, const Position& toPos, uint8_t toStackPos, Item* item, bool isHotkey, Creature* creature = nullptr);
|
||||
|
||||
ReturnValue canUse(const Player* player, const Position& pos);
|
||||
ReturnValue canUse(const Player* player, const Position& pos, const Item* item);
|
||||
ReturnValue canUseFar(const Creature* creature, const Position& toPos, bool checkLineOfSight, bool checkFloor);
|
||||
|
||||
protected:
|
||||
ReturnValue internalUseItem(Player* player, const Position& pos, uint8_t index, Item* item);
|
||||
private:
|
||||
ReturnValue internalUseItem(Player* player, const Position& pos, uint8_t index, Item* item, bool isHotkey);
|
||||
static void showUseHotkeyMessage(Player* player, const Item* item, uint32_t count);
|
||||
|
||||
void clear() final;
|
||||
LuaScriptInterface& getScriptInterface() final;
|
||||
|
||||
Reference in New Issue
Block a user