naev 0.11.5
effect.h
1/*
2 * See Licensing and Copyright notice in naev.h
3 */
4#pragma once
5
6#include "opengl.h"
7#include "shipstats.h"
8#include "rng.h"
9
10#define EFFECT_BUFF (1<<0)
11#define EFFECT_DEBUFF (1<<1)
16typedef struct EffectData_ {
17 char *name;
18 char *desc;
19 char *overwrite;
21 double duration;
22 unsigned int flags;
24 /* Visuals. */
26 GLuint program;
27 GLuint vertex;
28 GLuint projection;
29 GLuint tex_mat;
30 GLuint dimensions;
31 GLuint u_r;
32 GLuint u_tex;
33 GLuint u_timer;
34 GLuint u_elapsed;
35 GLuint u_dir;
36 /* Lua. */
37 nlua_env lua_env;
38 int lua_add;
42
46typedef struct Effect_ {
48 unsigned int parent;
49 double timer;
50 double duration;
51 double strength;
52 double r;
53 double elapsed;
54} Effect;
55
56/*
57 * Effect stuff.
58 */
59int effect_load (void);
60void effect_exit (void);
61const EffectData *effect_get( const char *name );
62
63/*
64 * Effect list stuff.
65 */
66int effect_update( Effect **efxlist, double dt );
67int effect_add( Effect **efxlist, const EffectData *efx, double duration, double strength, unsigned int parent );
68int effect_rm( Effect **efxlist, int idx );
69int effect_rmType( Effect **efxlist, const EffectData *efx, int all );
70void effect_clearSpecific( Effect **efxlist, int debuffs, int buffs, int others );
71void effect_clear( Effect **efxlist );
72void effect_compute( ShipStats *s, const Effect *efxlist );
73void effect_cleanup( Effect *efxlist );
int effect_rmType(Effect **efxlist, const EffectData *efx, int all)
Removes an effect type from an effect list.
Definition effect.c:421
int effect_rm(Effect **efxlist, int idx)
Removes an effect from an effect list by index.
Definition effect.c:390
int effect_add(Effect **efxlist, const EffectData *efx, double duration, double strength, unsigned int parent)
Adds an effect to an effect list.
Definition effect.c:299
void effect_clearSpecific(Effect **efxlist, int debuffs, int buffs, int others)
Clears specific types of effects.
Definition effect.c:453
const EffectData * effect_get(const char *name)
Gets an effect by name.
Definition effect.c:244
void effect_cleanup(Effect *efxlist)
Cleans up an effect list freeing it.
Definition effect.c:528
void effect_clear(Effect **efxlist)
Clears an effect list, removing all active effects.
Definition effect.c:492
void effect_compute(ShipStats *s, const Effect *efxlist)
Updates shipstats from effect list.
Definition effect.c:515
int effect_load(void)
Loads all the effects.
Definition effect.c:181
void effect_exit(void)
Gets rid of all the effects.
Definition effect.c:224
int effect_update(Effect **efxlist, double dt)
Updates an effect list.
Definition effect.c:260
Pilot ship effect data.
Definition effect.h:16
int lua_extend
Definition effect.h:39
nlua_env lua_env
Definition effect.h:37
char * desc
Definition effect.h:18
int lua_remove
Definition effect.h:40
int priority
Definition effect.h:20
int lua_add
Definition effect.h:38
double duration
Definition effect.h:21
ShipStatList * stats
Definition effect.h:23
char * name
Definition effect.h:17
glTexture * icon
Definition effect.h:25
unsigned int flags
Definition effect.h:22
char * overwrite
Definition effect.h:19
Pilot ship effect.
Definition effect.h:46
double r
Definition effect.h:52
double strength
Definition effect.h:51
const EffectData * data
Definition effect.h:47
double elapsed
Definition effect.h:53
unsigned int parent
Definition effect.h:48
double timer
Definition effect.h:49
double duration
Definition effect.h:50
Represents relative ship statistics as a linked list.
Definition shipstats.h:167
Represents ship statistics, properties ship can use.
Definition shipstats.h:198
Abstraction for rendering sprite sheets.
Definition opengl_tex.h:36