OpenGothic
Open source reimplementation of Gothic I and II
Loading...
Searching...
No Matches
item.h
Go to the documentation of this file.
1#pragma once
2
3#include <zenkit/addon/daedalus.hh>
4
8#include "vob.h"
9
10class World;
11class Npc;
12class Serialize;
13
14class Item : public Vob {
15 public:
16 enum { MAX_UI_ROWS=6, NSLOT=255 };
17
18 enum Type : uint8_t {
22 };
23
24 Item(World& owner, size_t inst, Type type);
25 Item(World& owner, Serialize& fin, Type type);
26 Item(Item&&);
27 ~Item();
28 Item& operator=(Item&&)=delete;
29
30 void save(Serialize& fout) const override;
31
32 virtual void clearView();
33 virtual bool isTorchBurn() const;
34
35 void setPosition (float x,float y,float z);
36 void setDirection (float x,float y,float z);
37 void setObjMatrix (const Tempest::Matrix4x4& m);
38
39 bool isMission() const;
40 bool isEquipped() const { return equipped>0; }
41 uint8_t equipCount() const { return equipped; }
42 void setAsEquipped(bool e);
43
44 void setPhysicsEnable (World& w);
45 void setPhysicsDisable();
46 bool isDynamic() const override;
47
48 uint8_t slot() const { return itSlot; }
49 void setSlot(uint8_t s) { itSlot = s; }
50
51 std::string_view displayName() const;
52 std::string_view description() const;
53 Tempest::Vec3 position() const;
54 Tempest::Vec3 midPosition() const;
55 bool isGold() const;
56 ItmFlags mainFlag() const;
57 int32_t itemFlag() const;
58
59 bool isMulti() const;
60 bool is2H() const;
61 bool isCrossbow() const;
62 bool isRing() const;
63 bool isArmor() const;
64 bool isSpellShoot() const;
65 bool isSpellOrRune() const;
66 bool isSpell() const;
67 bool isRune() const;
68 int32_t spellId() const;
69 int32_t swordLength() const;
70
71 void setCount(size_t cnt);
72 size_t count() const;
73
74 std::string_view uiText(size_t id) const;
75 int32_t uiValue(size_t id) const;
76 int32_t cost() const;
77 int32_t sellCost() const;
78
79 bool checkCond (const Npc& other) const;
80 bool checkCondUse (const Npc& other,int32_t& atr,int32_t& nv) const;
81 bool checkCondRune(const Npc& other,int32_t& cPl,int32_t& cIt) const;
82
83 const zenkit::IItem& handle() const { return *hitem; }
84 zenkit::IItem& handle() { return *hitem; }
85 const std::shared_ptr<zenkit::IItem>& handlePtr() { return hitem; }
86 size_t clsId() const;
87
88 protected:
89 void moveEvent() override;
90 void setPhysicsEnable(const MeshObjects::Mesh& mesh);
91 void setPhysicsEnable(const ProtoMesh* mesh);
92
93 private:
94 void updateMatrix();
95
96 std::shared_ptr<zenkit::IItem> hitem={};
97 Tempest::Vec3 pos={};
98
99 uint32_t amount = 0;
100 uint8_t equipped = 0;
101 uint8_t itSlot = NSLOT;
102
104 DynamicWorld::Item physic;
105 };
Definition item.h:14
void setPhysicsDisable()
Definition item.cpp:145
~Item()
Definition item.cpp:81
bool isRune() const
Definition item.cpp:234
bool isRing() const
Definition item.cpp:248
std::string_view displayName() const
Definition item.cpp:172
Item & operator=(Item &&)=delete
Type
Definition item.h:18
@ T_World
Definition item.h:19
@ T_Inventory
Definition item.h:21
@ T_WorldDyn
Definition item.h:20
Tempest::Vec3 midPosition() const
Definition item.cpp:184
bool isGold() const
Definition item.cpp:191
int32_t spellId() const
Definition item.cpp:258
bool isSpellOrRune() const
Definition item.cpp:224
bool isEquipped() const
Definition item.h:40
int32_t cost() const
Definition item.cpp:282
bool checkCondRune(const Npc &other, int32_t &cPl, int32_t &cIt) const
Definition item.cpp:307
size_t count() const
Definition item.cpp:270
virtual bool isTorchBurn() const
Definition item.cpp:105
void setPosition(float x, float y, float z)
Definition item.cpp:109
ItmFlags mainFlag() const
Definition item.cpp:195
uint8_t slot() const
Definition item.h:48
std::string_view uiText(size_t id) const
Definition item.cpp:274
const std::shared_ptr< zenkit::IItem > & handlePtr()
Definition item.h:85
int32_t uiValue(size_t id) const
Definition item.cpp:278
void setCount(size_t cnt)
Definition item.cpp:266
bool isSpellShoot() const
Definition item.cpp:207
bool checkCond(const Npc &other) const
Definition item.cpp:290
size_t clsId() const
Definition item.cpp:313
int32_t itemFlag() const
Definition item.cpp:199
bool isArmor() const
Definition item.cpp:253
void moveEvent() override
Definition item.cpp:324
bool isSpell() const
Definition item.cpp:228
void setSlot(uint8_t s)
Definition item.h:49
void setObjMatrix(const Tempest::Matrix4x4 &m)
Definition item.cpp:117
bool isMission() const
Definition item.cpp:125
void setPhysicsEnable(World &w)
Definition item.cpp:140
const zenkit::IItem & handle() const
Definition item.h:83
bool isCrossbow() const
Definition item.cpp:243
std::string_view description() const
Definition item.cpp:176
bool isMulti() const
Definition item.cpp:203
void setAsEquipped(bool e)
Definition item.cpp:129
bool is2H() const
Definition item.cpp:238
virtual void clearView()
Definition item.cpp:101
bool isDynamic() const override
Definition item.cpp:168
zenkit::IItem & handle()
Definition item.h:84
int32_t sellCost() const
Definition item.cpp:286
@ MAX_UI_ROWS
Definition item.h:16
@ NSLOT
Definition item.h:16
bool checkCondUse(const Npc &other, int32_t &atr, int32_t &nv) const
Definition item.cpp:295
void setDirection(float x, float y, float z)
Definition item.cpp:114
uint8_t equipCount() const
Definition item.h:41
void save(Serialize &fout) const override
Definition item.cpp:84
int32_t swordLength() const
Definition item.cpp:262
Tempest::Vec3 position() const
Definition item.cpp:180
Definition npc.h:25
Definition vob.h:11
Definition world.h:31
ItmFlags
Definition constants.h:312