#ifndef BANK_HPP_INCLUDED #define BANK_HPP_INCLUDED #include "../../Core/Types/Convex.hpp" #include "../../Game/Interactable/Item.hpp" #include #include #include #include /** @addtogroup Interfaces * @{ */ class Bank { public: enum BANK_AMOUNT { ALL = -1, ALL_BUT_ONE = 0 }; typedef enum WITHDRAW_MODE { ITEM, NOTED } WITHDRAW_MODE; typedef enum PIN_STEP { FIRST, SECOND, THIRD, FOURTH, SUBMITTING, TOO_MANY_ATTEMPTS, BANK_OPEN } PIN_STEP; static bool IsOpen(); static bool Close(); static std::vector GetItemIDs(); static std::vector GetItemNames(); static std::vector GetItemAmounts(); static std::vector GetItems(); static std::vector GetItems(std::int32_t ID); static std::vector GetItems(const std::string& Name); static std::vector GetItems(const std::vector& IDs); static std::vector GetItems(const std::vector& Names); static std::vector GetItems(const std::function& Filter); static Interactable::Item GetItem(std::int32_t ID); static Interactable::Item GetItem(const std::string& Name); static Interactable::Item GetItem(const std::vector& IDs); static Interactable::Item GetItem(const std::vector& Names); static Interactable::Item GetItem(const std::function& Filter); static std::int32_t Count(std::int32_t ID); static std::int32_t Count(const std::string& Name); static std::int32_t Count(const Interactable::Item& Item); static std::int32_t GetIndexOf(std::int32_t ID); static std::int32_t GetIndexOf(const std::string& Name); static bool Contains(std::int32_t ID); static bool Contains(const std::string& Name); static bool Contains(const Interactable::Item& Item); static bool Contains(const std::vector& IDs); // true if all items are found at least once static bool Contains(const std::vector& Names); // true if all items are found at least once static bool Contains(const std::vector& Items); static bool ContainsAny(const std::vector& IDs); static bool ContainsAny(const std::vector& Names); static bool ContainsAny(const std::vector& Items); static std::int32_t GetCurrentTab(); static std::int32_t GetTabOf(std::int32_t ID); static std::int32_t GetTabOf(const std::string& Name); static std::int32_t GetTabOf(const Interactable::Item& Item); static bool OpenTab(std::int32_t Tab); static bool ScrollTo(std::int32_t ID, bool OpenRespectiveTab = false); static bool ScrollTo(const std::string& Name, bool OpenRespectiveTab = false); static bool ScrollTo(const Interactable::Item& Item, bool OpenRespectiveTab = false); // -1 = all, 0 = all-but-one static bool Withdraw(std::int32_t ID, std::int32_t Amount, bool OpenRespectiveTab = false); static bool Withdraw(const std::string& Name, std::int32_t Amount, bool OpenRespectiveTab = false); static bool Withdraw(const Interactable::Item& Item, std::int32_t Amount, bool OpenRespectiveTab = false); // -1 = all static bool Deposit(std::int32_t ID, std::int32_t Amount); static bool Deposit(const std::string& Name, std::int32_t Amount); static bool Deposit(const Interactable::Item& Item, std::int32_t Amount); static bool DepositAllExcept(std::int32_t ID); static bool DepositAllExcept(const std::string& Name); static bool DepositAllExcept(const Interactable::Item& Item); static bool DepositAllExcept(const std::vector& IDs); static bool DepositAllExcept(const std::vector& Names); static bool DepositAllExcept(const std::vector& Items); static bool DepositAll(); static bool DepositEquipment(); static WITHDRAW_MODE GetWithdrawMode(); static bool SetWithdrawMode(WITHDRAW_MODE Mode); static PIN_STEP GetEnterPinStep(); static bool IsEnterPinOpen(); static bool EnterPin(bool Terminate = true); }; /** @} */ #endif // BANK_HPP_INCLUDED