ActiveLib
Loading...
Searching...
No Matches
Item.h
1
6#ifndef ACTIVE_SERIALISE_ITEM
7#define ACTIVE_SERIALISE_ITEM
8
9#include "Active/Serialise/Cargo.h"
10#include "Active/Serialise/Inventory/Inventory.h"
11
12namespace active::setting {
13
14 class Value;
15
16}
17
18namespace active::serialise {
19
23 class Item : public virtual Cargo {
24 public:
25 //Item value types
26 enum class Type {
27 text,
28 number,
29 boolean,
30 };
31
32 using enum Type;
33
34 // MARK: - Functions (const)
35
41 virtual bool fillInventory(Inventory& inventory) const { return false; }
42
48 virtual Cargo::Unique getCargo(const Inventory::Item& item) const { return nullptr; }
54 virtual bool write(utility::String& dest) const = 0;
59 virtual std::optional<Type> type() const { return std::nullopt; }
60
61 // MARK: - Functions (mutating)
62
68 virtual bool read(const utility::String& source) = 0;
74 virtual bool read(const setting::Value& source);
75 };
76
77}
78
79#endif //ACTIVE_SERIALISE_ITEM
Definition Cargo.h:17
std::unique_ptr< Cargo > Unique
Unique pointer.
Definition Cargo.h:23
Definition Inventory.h:19
Definition Item.h:23
virtual bool read(const utility::String &source)=0
virtual bool write(utility::String &dest) const =0
virtual Cargo::Unique getCargo(const Inventory::Item &item) const
Definition Item.h:48
virtual bool fillInventory(Inventory &inventory) const
Definition Item.h:41
virtual std::optional< Type > type() const
Definition Item.h:59
Definition Value.h:31
A Unicode-aware string class.
Definition String.h:51
Definition Cargo.h:12
Definition Transportable.h:13
Definition Entry.h:20