OpenGothic
Open source reimplementation of Gothic I and II
Loading...
Searching...
No Matches
bullet.h
Go to the documentation of this file.
1#pragma once
2
3#include <cstdint>
4
6
9#include "graphics/effect.h"
10
11class World;
12class Item;
13class Npc;
14
16 public:
17 Bullet()=default;
18 Bullet(World &owner, const Item &itm, const Tempest::Vec3& pos);
19 Bullet(Bullet&&)=default;
20 ~Bullet() override;
21 Bullet& operator=(Bullet&&)=default;
22
23 enum Flg:uint8_t {
26 };
27
28 void setPosition (const Tempest::Vec3& p);
29 void setPosition (float x,float y,float z);
30
31 void setDirection (const Tempest::Vec3& dir);
32 void setTargetRange(float tgRange);
33
34 void setView (MeshObjects::Mesh&& m);
35 void setView (Effect&& p);
36
37 bool isSpell() const;
38 int32_t spellId() const;
39
40 void setOrigin(Npc* n);
41 Npc* origin() const;
42
43 void setTarget(const Npc* n);
44
45 Flg flags() const { return flg; }
46 void setFlags(Flg f) { flg=f; }
48
49 auto damage() const -> const DamageCalculator::Damage& { return dmg; }
51
52 float critChance() const { return critCh; }
53 void setCritChance(float v) { critCh=v; }
54 float hitChance() const { return hitCh; }
55 void setHitChance(float v) { hitCh=v; }
56
57 bool isFinished() const;
58 float pathLength() const;
59
60 protected:
61 void onStop() override;
62 void onMove() override;
63 void onCollide(zenkit::MaterialGroup matId) override;
64 bool onCollide(Npc& other) override;
65
66 private:
67 DynamicWorld::BulletBody* obj=nullptr;
68 World* wrld=nullptr;
69 Npc* ow=nullptr;
70
72 float hitCh = 1.f;
73 float critCh = 0.f;
74
76 Effect vfx;
77
78 uint8_t material=0;
79 Flg flg=NoFlags;
80
81 void updateMatrix();
82 };
83
void setHitChance(float v)
Definition bullet.h:55
Flg flags() const
Definition bullet.h:45
float hitChance() const
Definition bullet.h:54
void setTargetRange(float tgRange)
Definition bullet.cpp:55
ItemMaterial itemMaterial() const
Definition bullet.cpp:94
void onStop() override
Definition bullet.cpp:110
auto damage() const -> const DamageCalculator::Damage &
Definition bullet.h:49
void setCritChance(float v)
Definition bullet.h:53
void setTarget(const Npc *n)
Definition bullet.cpp:90
bool isFinished() const
Definition bullet.cpp:100
Bullet()=default
Bullet(Bullet &&)=default
int32_t spellId() const
Definition bullet.cpp:77
@ Stopped
Definition bullet.h:25
@ NoFlags
Definition bullet.h:24
void setDamage(DamageCalculator::Damage d)
Definition bullet.h:50
void onCollide(zenkit::MaterialGroup matId) override
Definition bullet.cpp:119
float pathLength() const
Definition bullet.cpp:106
Npc * origin() const
Definition bullet.cpp:86
bool isSpell() const
Definition bullet.cpp:73
void onMove() override
Definition bullet.cpp:115
void setOrigin(Npc *n)
Definition bullet.cpp:81
Bullet & operator=(Bullet &&)=default
void setPosition(const Tempest::Vec3 &p)
Definition bullet.cpp:40
Bullet(World &owner, const Item &itm, const Tempest::Vec3 &pos)
~Bullet() override
Definition bullet.cpp:35
void setDirection(const Tempest::Vec3 &dir)
Definition bullet.cpp:50
void setFlags(Flg f)
Definition bullet.h:46
void setView(MeshObjects::Mesh &&m)
Definition bullet.cpp:59
float critChance() const
Definition bullet.h:52
Definition item.h:14
Definition npc.h:25
Definition world.h:31
ItemMaterial
Definition constants.h:242