Wrath of Zeus
Made by Torchlight Games for CSE 125 SP24
Loading...
Searching...
No Matches
weaponcollider.hpp
Go to the documentation of this file.
7#include <chrono>
8
9/*
10 * Class for spawning weapon colliders
11 */
12class WeaponCollider : public Object {
13public:
15
19 {}
20
21 int damage;
22 int timeUntilAttack; //in milliseconds
23 int attackDuration; //in milliseconds
25 };
26
27 WeaponCollider(Player* usedPlayer, glm::vec3 corner, glm::vec3 facing, \
28 glm::vec3 dimensions, ModelType model, WeaponOptions&& options);
29
30 void doCollision(Object* other, ServerGameState& state) override;
32 bool readyTime(ServerGameState& state);
33 bool timeOut(ServerGameState& state);
34 virtual SharedObject toShared() override;
35
36protected:
37 std::chrono::time_point<std::chrono::system_clock> preparing_time;
38 std::chrono::time_point<std::chrono::system_clock> attacked_time;
43};
44
46public:
47 inline static const glm::vec3 DIMENSION = glm::vec3(1.0f, 5.0f, 1.0f);
48
49 ShortAttack(Player* usedPlayer, glm::vec3 corner, glm::vec3 facing):
52 {
53 this->sound = ServerSFX::Dagger;
54 }
55};
56
58public:
59 inline static const glm::vec3 DIMENSION = glm::vec3(1.5f, 5.0f, 1.5f);
60
61 MediumAttack(Player* usedPlayer, glm::vec3 corner, glm::vec3 facing) :
64 {
65 this->sound = ServerSFX::Sword;
66 }
67};
68
69class BigAttack : public WeaponCollider {
70public:
71 inline static const glm::vec3 DIMENSION = glm::vec3(2.5f, 5.0f, 2.5f);
72
73 BigAttack(Player* usedPlayer, glm::vec3 corner, glm::vec3 facing) :
76 {
77 this->sound = ServerSFX::Hammer;
78 }
79};
80
81class Lightning : public WeaponCollider {
82public:
83 inline static const glm::vec3 DIMENSION = glm::vec3(3.0f, 100.0f, 3.0f);
84
85 Lightning(glm::vec3 corner, glm::vec3 facing, const PointLightProperties& properties) :
86 WeaponCollider(nullptr, corner, facing, DIMENSION, ModelType::Lightning,
88 properties(properties)
89 {
90 this->sound = ServerSFX::Thunder;
91 }
92 virtual SharedObject toShared() override {
93 auto so = WeaponCollider::toShared();
94 so.pointLightInfo = SharedPointLightInfo {
95 .intensity = (this->info.attacked) ? 1.0f : 0.3f,
96 .ambient_color = this->properties.ambient_color,
97 .diffuse_color = this->properties.diffuse_color,
98 .specular_color = this->properties.specular_color,
99 .attenuation_linear = this->properties.attenuation_linear,
100 .attenuation_quadratic = this->properties.attenuation_quadratic,
101 };
102 return so;
103 }
104private:
105 PointLightProperties properties;
106};
Definition: weaponcollider.hpp:69
static const glm::vec3 DIMENSION
Definition: weaponcollider.hpp:71
BigAttack(Player *usedPlayer, glm::vec3 corner, glm::vec3 facing)
Definition: weaponcollider.hpp:73
Definition: weaponcollider.hpp:81
virtual SharedObject toShared() override
Generates a SharedObject representation of this object.
Definition: weaponcollider.hpp:92
Lightning(glm::vec3 corner, glm::vec3 facing, const PointLightProperties &properties)
Definition: weaponcollider.hpp:85
static const glm::vec3 DIMENSION
Definition: weaponcollider.hpp:83
Definition: weaponcollider.hpp:57
MediumAttack(Player *usedPlayer, glm::vec3 corner, glm::vec3 facing)
Definition: weaponcollider.hpp:61
static const glm::vec3 DIMENSION
Definition: weaponcollider.hpp:59
Definition: object.hpp:95
Definition: player.hpp:9
The ServerGameState class contains all abstract game state data and logic for a single game state ins...
Definition: servergamestate.hpp:43
Representation of the Object class used by ServerGameState, containing exactly the subset of Object d...
Definition: sharedobject.hpp:302
Definition: weaponcollider.hpp:45
ShortAttack(Player *usedPlayer, glm::vec3 corner, glm::vec3 facing)
Definition: weaponcollider.hpp:49
static const glm::vec3 DIMENSION
Definition: weaponcollider.hpp:47
Definition: weaponcollider.hpp:12
bool readyTime(ServerGameState &state)
Definition: weaponcollider.cpp:142
void doCollision(Object *other, ServerGameState &state) override
Code to run when this object collides with another.
Definition: weaponcollider.cpp:29
virtual SharedObject toShared() override
Generates a SharedObject representation of this object.
Definition: weaponcollider.cpp:196
ServerSFX sound
Definition: weaponcollider.hpp:14
Player * usedPlayer
Definition: weaponcollider.hpp:39
bool timeOut(ServerGameState &state)
Definition: weaponcollider.cpp:187
SharedWeaponInfo info
Definition: weaponcollider.hpp:40
void updateMovement(ServerGameState &state)
Definition: weaponcollider.cpp:117
std::chrono::time_point< std::chrono::system_clock > attacked_time
Definition: weaponcollider.hpp:38
bool playSound
Definition: weaponcollider.hpp:42
WeaponOptions opt
Definition: weaponcollider.hpp:41
std::chrono::time_point< std::chrono::system_clock > preparing_time
Definition: weaponcollider.hpp:37
#define LIGHTNING_DUR
Definition: constants.hpp:63
#define DAGGER_DUR
Definition: constants.hpp:55
#define LIGHTNING_DMG
Definition: constants.hpp:48
#define DAGGER_DMG
Definition: constants.hpp:46
#define HAMMER_PREP
Definition: constants.hpp:58
#define SWORD_PREP
Definition: constants.hpp:50
#define SWORD_DMG
Definition: constants.hpp:45
#define HAMMER_DMG
Definition: constants.hpp:47
#define HAMMER_DUR
Definition: constants.hpp:59
#define SWORD_DUR
Definition: constants.hpp:51
#define DAGGER_PREP
Definition: constants.hpp:54
#define LIGHTNING_PREP
Definition: constants.hpp:62
ModelType
Enumeration of every render model in the game.
Definition: sharedmodel.hpp:6
ServerSFX
Definition: soundtype.hpp:38
Definition: point_light.hpp:5
glm::vec3 ambient_color
Definition: point_light.hpp:20
Definition: sharedobject.hpp:230
float intensity
Definition: sharedobject.hpp:231
Definition: sharedobject.hpp:149
bool attacked
Definition: sharedobject.hpp:150
Definition: weaponcollider.hpp:16
int attackDuration
Definition: weaponcollider.hpp:23
int timeUntilAttack
Definition: weaponcollider.hpp:22
int damage
Definition: weaponcollider.hpp:21
WeaponOptions(int damage, int timeUntilAttack, int attackDuration, bool followPlayer)
Definition: weaponcollider.hpp:17
bool followPlayer
Definition: weaponcollider.hpp:24