first changes

This commit is contained in:
ErikasKontenis
2019-09-29 21:56:37 +03:00
parent 9299222bd1
commit ad4cf36193
28 changed files with 1042 additions and 310 deletions

View File

@@ -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;