naev 0.12.6
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
9#define EFFECT_BUFF ( 1 << 0 )
10#define EFFECT_DEBUFF ( 1 << 1 )
11#define EFFECT_VERTEX ( 1 << 2 )
12
16typedef struct EffectData_ {
17 char *name;
18 char *desc;
19 char *overwrite;
22 double duration;
23 unsigned int flags;
25 /* Visuals. */
27 GLuint program;
28 GLuint vertex;
29 GLuint projection;
30 GLuint tex_mat;
31 GLuint dimensions;
32 GLuint u_r;
33 GLuint u_tex;
34 GLuint u_timer;
35 GLuint u_elapsed;
36 GLuint u_dir;
37 GLuint u_img;
39 /* Lua. */
40 nlua_env lua_env;
41 int lua_add;
45
49typedef struct Effect_ {
51 unsigned int parent;
52 double timer;
53 double duration;
54 double strength;
55 double r;
56 double elapsed;
57} Effect;
58
59/*
60 * Effect stuff.
61 */
62int effect_load( void );
63void effect_exit( void );
64const EffectData *effect_get( const char *name );
65
66/*
67 * Effect list stuff.
68 */
69int effect_update( Effect **efxlist, double dt );
70int effect_add( Effect **efxlist, const EffectData *efx, double duration,
71 double strength, unsigned int parent );
72int effect_rm( Effect **efxlist, int idx );
73int effect_rmType( Effect **efxlist, const EffectData *efx, int all );
74void effect_clearSpecific( Effect **efxlist, int debuffs, int buffs,
75 int others );
76void effect_clear( Effect **efxlist );
77void effect_compute( ShipStats *s, const Effect *efxlist );
78void 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:452
int effect_rm(Effect **efxlist, int idx)
Removes an effect from an effect list by index.
Definition effect.c:420
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:322
void effect_clearSpecific(Effect **efxlist, int debuffs, int buffs, int others)
Clears specific types of effects.
Definition effect.c:485
const EffectData * effect_get(const char *name)
Gets an effect by name.
Definition effect.c:265
void effect_cleanup(Effect *efxlist)
Cleans up an effect list freeing it.
Definition effect.c:561
void effect_clear(Effect **efxlist)
Clears an effect list, removing all active effects.
Definition effect.c:524
void effect_compute(ShipStats *s, const Effect *efxlist)
Updates shipstats from effect list.
Definition effect.c:548
int effect_load(void)
Loads all the effects.
Definition effect.c:199
void effect_exit(void)
Gets rid of all the effects.
Definition effect.c:244
int effect_update(Effect **efxlist, double dt)
Updates an effect list.
Definition effect.c:282
Pilot ship effect data.
Definition effect.h:16
int lua_extend
Definition effect.h:42
nlua_env lua_env
Definition effect.h:40
char * desc
Definition effect.h:18
int lua_remove
Definition effect.h:43
int priority
Definition effect.h:20
int lua_add
Definition effect.h:41
double duration
Definition effect.h:22
ShipStatList * stats
Definition effect.h:24
char * name
Definition effect.h:17
glTexture * img
Definition effect.h:38
glTexture * icon
Definition effect.h:26
unsigned int flags
Definition effect.h:23
char * overwrite
Definition effect.h:19
Pilot ship effect.
Definition effect.h:49
double r
Definition effect.h:55
double strength
Definition effect.h:54
const EffectData * data
Definition effect.h:50
double elapsed
Definition effect.h:56
unsigned int parent
Definition effect.h:51
double timer
Definition effect.h:52
double duration
Definition effect.h:53
Represents relative ship statistics as a linked list.
Definition shipstats.h:198
Represents ship statistics, properties ship can use.
Definition shipstats.h:229
Abstraction for rendering sprite sheets.
Definition opengl_tex.h:43