OpenMoHAA 0.82.0
Loading...
Searching...
No Matches
cg_specialfx.h
1/*
2===========================================================================
3Copyright (C) 2023 the OpenMoHAA team
4
5This file is part of OpenMoHAA source code.
6
7OpenMoHAA source code is free software; you can redistribute it
8and/or modify it under the terms of the GNU General Public License as
9published by the Free Software Foundation; either version 2 of the License,
10or (at your option) any later version.
11
12OpenMoHAA source code is distributed in the hope that it will be
13useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
14MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15GNU General Public License for more details.
16
17You should have received a copy of the GNU General Public License
18along with OpenMoHAA source code; if not, write to the Free Software
19Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
20===========================================================================
21*/
22
23// DESCRIPTION:
24// Special Effects code
25
26#pragma once
27
28#include "cg_local.h"
29#include "cg_commands.h"
30#include "class.h"
31
32#define MAX_SPECIAL_EFFECT_COMMANDS 32
33
34typedef enum {
35 SFX_BHIT_PAPER_LITE,
36 SFX_BHIT_PAPER_HARD,
37 SFX_BHIT_WOOD_LITE,
38 SFX_BHIT_WOOD_HARD,
39 SFX_BHIT_METAL_LITE,
40 SFX_BHIT_METAL_HARD,
41 SFX_BHIT_STONE_LITE,
42 SFX_BHIT_STONE_HARD,
43 SFX_BHIT_DIRT_LITE,
44 SFX_BHIT_DIRT_HARD,
45 SFX_BHIT_GRILL_LITE,
46 SFX_BHIT_GRILL_HARD,
47 SFX_BHIT_GRASS_LITE,
48 SFX_BHIT_GRASS_HARD,
49 SFX_BHIT_MUD_LITE,
50 SFX_BHIT_MUD_HARD,
51 SFX_BHIT_PUDDLE_LITE,
52 SFX_BHIT_PUDDLE_HARD,
53 SFX_BHIT_GLASS_LITE,
54 SFX_BHIT_GLASS_HARD,
55 SFX_BHIT_GRAVEL_LITE,
56 SFX_BHIT_GRAVEL_HARD,
57 SFX_BHIT_SAND_LITE,
58 SFX_BHIT_SAND_HARD,
59 SFX_BHIT_FOLIAGE_LITE,
60 SFX_BHIT_FOLIAGE_HARD,
61 SFX_BHIT_SNOW_LITE,
62 SFX_BHIT_SNOW_HARD,
63 SFX_BHIT_CARPET_LITE,
64 SFX_BHIT_CARPET_HARD,
65 SFX_BHIT_HUMAN_UNIFORM_LITE,
66 SFX_BHIT_HUMAN_UNIFORM_HARD,
67 SFX_WATER_TRAIL_BUBBLE,
68 SFX_VFX_PAPER_LITE,
69 SFX_VFX_PAPER_HARD,
70 SFX_VFX_WOOD_LITE,
71 SFX_VFX_WOOD_HARD,
72 SFX_VFX_METAL_LITE,
73 SFX_VFX_METAL_HARD,
74 SFX_VFX_STONE_LITE,
75 SFX_VFX_STONE_HARD,
76 SFX_VFX_DIRT_LITE,
77 SFX_VFX_DIRT_HARD,
78 SFX_VFX_GRILL_LITE,
79 SFX_VFX_GRILL_HARD,
80 SFX_VFX_GRASS_LITE,
81 SFX_VFX_GRASS_HARD,
82 SFX_VFX_MUD_LITE,
83 SFX_VFX_MUD_HARD,
84 SFX_VFX_PUDDLE_LITE,
85 SFX_VFX_PUDDLE_HARD,
86 SFX_VFX_GLASS_LITE,
87 SFX_VFX_GLASS_HARD,
88 SFX_VFX_GRAVEL_LITE,
89 SFX_VFX_GRAVEL_HARD,
90 SFX_VFX_SAND_LITE,
91 SFX_VFX_SAND_HARD,
92 SFX_VFX_FOLIAGE_LITE,
93 SFX_VFX_FOLIAGE_HARD,
94 SFX_VFX_SNOW_LITE,
95 SFX_VFX_SNOW_HARD,
96 SFX_VFX_CARPET_LITE,
97 SFX_VFX_CARPET_HARD,
98 SFX_EXP_GREN_BASE,
99 SFX_EXP_BAZOOKA_BASE,
100 SFX_EXP_HEAVYSHELL_BASE,
101 SFX_EXP_TANK_BASE,
102 SFX_EXP_GREN_PAPER,
103 SFX_EXP_GREN_WOOD,
104 SFX_EXP_GREN_METAL,
105 SFX_EXP_GREN_STONE,
106 SFX_EXP_GREN_DIRT,
107 SFX_EXP_GREN_GRILL,
108 SFX_EXP_GREN_GRASS,
109 SFX_EXP_GREN_MUD,
110 SFX_EXP_GREN_PUDDLE,
111 SFX_EXP_GREN_GLASS,
112 SFX_EXP_GREN_GRAVEL,
113 SFX_EXP_GREN_SAND,
114 SFX_EXP_GREN_FOLIAGE,
115 SFX_EXP_GREN_SNOW,
116 SFX_EXP_GREN_CARPET,
117 SFX_EXP_HEAVYSHELL_DIRT,
118 SFX_EXP_HEAVYSHELL_STONE,
119 SFX_EXP_HEAVYSHELL_SNOW,
120 SFX_EXP_TANK_DIRT,
121 SFX_EXP_TANK_STONE,
122 SFX_EXP_TANK_SNOW,
123 SFX_EXP_BAZOOKA_DIRT,
124 SFX_EXP_BAZOOKA_STONE,
125 SFX_EXP_BAZOOKA_SNOW,
126 SFX_WATER_RIPPLE_STILL,
127 SFX_WATER_RIPPLE_MOVING,
128 SFX_OIL_LEAK_BIG,
129 SFX_OIL_LEAK_MEDIUM,
130 SFX_OIL_LEAK_SMALL,
131 SFX_OIL_LEAK_SPLAT,
132 SFX_WATER_LEAK_BIG,
133 SFX_WATER_LEAK_MEDIUM,
134 SFX_WATER_LEAK_SMALL,
135 SFX_WATER_LEAK_SPLAT,
136 SFX_FOOT_LIGHT_DUST,
137 SFX_FOOT_HEAVY_DUST,
138 SFX_FOOT_DIRT,
139 SFX_FOOT_GRASS,
140 SFX_FOOT_MUD,
141 SFX_FOOT_PUDDLE,
142 SFX_FOOT_SAND,
143 SFX_FOOT_SNOW,
144 SFX_FENCE_WOOD,
145 SFX_TEST_EFFECT,
146 SFX_COUNT
147} SpecialEffects;
148
149class specialeffectcommand_t : public Class
150{
151public:
152 spawnthing_t *emitter;
153 float fCommandTime;
154 void (ClientGameCommandManager::*endfcn)();
155 Event *pEvent;
156
157public:
158 specialeffectcommand_t();
159};
160
161class specialeffect_t : public Class
162{
163public:
164 int m_iCommandCount;
165 specialeffectcommand_t *m_commands[MAX_SPECIAL_EFFECT_COMMANDS];
166
167public:
168 specialeffect_t();
169
170 specialeffectcommand_t *AddNewCommand();
171};
172
173class ClientSpecialEffectsManager : public Listener
174{
175 specialeffect_t m_effects[SFX_COUNT];
176 qboolean m_bEffectsLoaded;
177 int m_iNumPendingEvents;
178
179public:
180 CLASS_PROTOTYPE(ClientSpecialEffectsManager);
181
182private:
183 void ContinueEffectExecution(Event *ev);
184 void ExecuteEffect(int iEffect, int iStartCommand, Vector vPos, Vector vAngles, float axis[3][3]);
185
186public:
187 ClientSpecialEffectsManager();
188
189 void LoadEffects();
190 qboolean EffectsPending();
191 void MakeEffect_Normal(int iEffect, Vector vPos, Vector vNormal);
192 void MakeEffect_Angles(int iEffect, Vector vPos, Vector vAngles);
193 void MakeEffect_Axis(int iEffect, Vector vPos, float axis[3][3]);
194 specialeffect_t *GetTestEffectPointer();
195};
196
197extern ClientSpecialEffectsManager sfxManager;
Definition cg_commands.h:742
Definition cg_specialfx.h:174
Definition listener.h:246
Definition vector.h:61
Definition cg_commands.h:628
Definition cg_specialfx.h:162
Definition cg_specialfx.h:150