naev 0.10.4
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
13typedef struct EffectData_ {
14 char *name;
15 char *desc;
16 char *overwrite;
18 double duration;
20 /* Visuals. */
22 GLuint program;
23 GLuint vertex;
24 GLuint projection;
25 GLuint tex_mat;
26 GLuint dimensions;
27 GLuint u_r;
28 GLuint u_tex;
29 GLuint u_timer;
30 GLuint u_elapsed;
31 /* Lua. */
32 nlua_env lua_env;
33 int lua_add;
37
41typedef struct Effect_ {
43 unsigned int parent;
44 double timer;
45 double duration;
46 double scale;
47 double r;
48 double elapsed;
49} Effect;
50
51/*
52 * Effect stuff.
53 */
54int effect_load (void);
55void effect_exit (void);
56const EffectData *effect_get( const char *name );
57
58/*
59 * Effect list stuff.
60 */
61int effect_update( Effect **efxlist, double dt );
62int effect_add( Effect **efxlist, const EffectData *efx, double duration, double scale, unsigned int parent );
63int effect_rm( Effect **efxlist, const EffectData *efx, int all );
64void effect_clear( Effect **efxlist );
65void effect_compute( ShipStats *s, const Effect *efxlist );
66void effect_cleanup( Effect *efxlist );
int effect_rm(Effect **efxlist, const EffectData *efx, int all)
Removes an effect from an effect list.
Definition: effect.c:358
const EffectData * effect_get(const char *name)
Gets an effect by name.
Definition: effect.c:222
void effect_cleanup(Effect *efxlist)
Cleans up an effect list freeing it.
Definition: effect.c:423
void effect_clear(Effect **efxlist)
Clears an effect list, removing all active effects.
Definition: effect.c:387
int effect_add(Effect **efxlist, const EffectData *efx, double duration, double scale, unsigned int parent)
Adds an effect to an effect list.
Definition: effect.c:277
void effect_compute(ShipStats *s, const Effect *efxlist)
Updates shipstats from effect list.
Definition: effect.c:410
int effect_load(void)
Loads all the effects.
Definition: effect.c:168
void effect_exit(void)
Gets rid of all the effects.
Definition: effect.c:202
int effect_update(Effect **efxlist, double dt)
Updates an effect list.
Definition: effect.c:238
Pilot ship effect data.
Definition: effect.h:13
int lua_extend
Definition: effect.h:34
nlua_env lua_env
Definition: effect.h:32
char * desc
Definition: effect.h:15
int lua_remove
Definition: effect.h:35
int priority
Definition: effect.h:17
int lua_add
Definition: effect.h:33
double duration
Definition: effect.h:18
ShipStatList * stats
Definition: effect.h:19
char * name
Definition: effect.h:14
glTexture * icon
Definition: effect.h:21
char * overwrite
Definition: effect.h:16
Pilot ship effect.
Definition: effect.h:41
double r
Definition: effect.h:47
double scale
Definition: effect.h:46
const EffectData * data
Definition: effect.h:42
double elapsed
Definition: effect.h:48
unsigned int parent
Definition: effect.h:43
double timer
Definition: effect.h:44
double duration
Definition: effect.h:45
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:34