summaryrefslogtreecommitdiff
path: root/src/include/data_localgame.h
blob: 989444be92d91dd78524b2ed6a86886f8e7aec19 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#ifndef DATA_LOCALGAME_H
#define DATA_LOCALGAME_H

#include "data_types.h"
#include "SDL/SDL.h"

#define DEBUG_DIRTYRECTANGLES 1

// Structures de données pour la partie en cours, sur l'ordinateur local

// Ensemble des buffers graphiques du jeu (sauf l'écran)
typedef struct {
	SDL_Surface *terrain, *stencil, *tmpSurf;
} gameGraphSurfaces_t;

// Gestion de l'écran et de la caméra
typedef struct {
	SDL_Surface *screen;
	SDL_Rect viewport; 	// Viewport top-left corner coords in screen

	gameGraphSurfaces_t surfaces;

} gameGraphics_t;

// Etat des différents objets de la map
struct gameObjectState {
	// zOrder < 0 : dessiné avant le terrain. zOrder > 0 : déssiné après le terrain. 0 est une valeur réservée.
	int zOrder;
	// surfId : Index du SDL_Surface de l'objet considéré (confère gameGraphSurfaces_t / objectsSurf)
	int surfId;
	// Information sur l'état de l'animation de l'objet
	int animFrames, currentAnimFrame;
	// Flags pour objets dont la procédure de dessin est spéciale
	int modifiers;
	// Flag disant si l'objet a été déclanché ou non
	int triggered;
	// date (en ticks) du déclanchement de l'objet
	tick_t trigDate;
	// Signale que l'objet doit être redessiné
	int dirty;
	// Position de l'objet (et position précédente, pour updateGraphics())
	pos_t pos, prevPos;
	// Pointeur vers la surface correspondante (cf data_ress.h)
	SDL_Surface *s;
};

typedef struct {
	int objCount; // allObj array item count
	// allObj is a list of all objects of the map (objects, lemmings, other GUI objects, all except cursor)
	// cursor is the mouse cursor for selecting lemmings
	struct gameObjectState *allObj, cursor;
} gameObjectsState_t;

// Paramèters locaux dynamiques
typedef struct {
	int debugFlags;
} localParams_t;

// Paramètes de jeu envoyés par le serveur (niveau en cours, etc)
typedef struct {
	id_t	levelPack;
	id_t	level;
} serverParams_t;

#endif /*DATA_LOCALGAME_H*/