aboutsummaryrefslogtreecommitdiff
path: root/src/levels.h
blob: 2c2453679152352b2860c8a46834eca9920a0545 (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
#include "gameCommon.h"
#include "world.h"
#include "entity.h"

#ifndef LEVELS_H
#define LEVELS_H

#define LEVELS_COUNT 5

#define NO_LEVEL -1

typedef struct Levels Levels;

typedef void (*LevelInitCb)(Game * game, Levels * levels);
typedef void (*LevelCloseCb)(Levels * levels);
typedef bool (*LevelUpdateCb)(Game * game, Levels * levels); // Returns true when level is complete

typedef struct Levels {
    int currentLevel;
    void * data; // Null if not used.
} Levels;

typedef struct LevelInfo {
    LevelInitCb initCb;
    LevelCloseCb closeCb;
    LevelUpdateCb updateCb;
} LevelInfo;

extern const LevelInfo levelInfoList[LEVELS_COUNT];

void initLevels(Levels * levels);
void startLevel(Game * game, Levels * levels, int levelNum);
bool updateLevel(Game * game, Levels * levels); // Returns true on end of level
void endLevel(Game * game, Levels * levels);

#endif