150 lines
2.1 KiB
C
Executable File
150 lines
2.1 KiB
C
Executable File
#ifndef WORLD_H
|
|
#define WORLD_H
|
|
|
|
#include <stdint.h>
|
|
#include <gint/display.h>
|
|
|
|
#define W_CELL_SIZEPX 8
|
|
#define W_SIZE_X 160
|
|
#define W_SIZE_Y 16
|
|
|
|
typedef enum
|
|
{
|
|
EMPTY=0,
|
|
EARTH,
|
|
BRICK,
|
|
BLOC,
|
|
END_LEVEL,
|
|
TUYAU,
|
|
ARBRE,
|
|
GIFT,
|
|
COIN,
|
|
NUAGE,
|
|
BUISSON,
|
|
COLLINE,
|
|
CASTLE,
|
|
} cell_id;
|
|
|
|
typedef struct
|
|
{
|
|
unsigned type :8;
|
|
unsigned empty :16;
|
|
unsigned x :4;
|
|
unsigned y :4;
|
|
} earth_t;
|
|
|
|
typedef struct
|
|
{
|
|
unsigned type :8;
|
|
unsigned time_hit_id :8;
|
|
unsigned state :4;
|
|
unsigned hidden :4;
|
|
unsigned content :4;
|
|
unsigned number :4;
|
|
} brick_t;
|
|
|
|
typedef struct
|
|
{
|
|
unsigned type :8;
|
|
unsigned data :24; // raw binary format
|
|
} bloc_t;
|
|
|
|
typedef struct
|
|
{
|
|
unsigned type :8;
|
|
unsigned empty :8;
|
|
unsigned avancement :4;
|
|
unsigned bonus :4; //*400
|
|
unsigned x :4; //=0
|
|
unsigned y :4;
|
|
|
|
} end_level_t;
|
|
|
|
typedef struct
|
|
{
|
|
unsigned type :8;
|
|
unsigned empty :16;
|
|
unsigned x :4;
|
|
unsigned y :4;
|
|
} tuyau_t;
|
|
|
|
typedef struct
|
|
{
|
|
unsigned type :8;
|
|
unsigned empty :16;
|
|
unsigned x :4;
|
|
unsigned y :4;
|
|
} arbre_t;
|
|
|
|
|
|
typedef struct
|
|
{
|
|
unsigned type :8;
|
|
unsigned time_hit_id :8;
|
|
unsigned state :4;
|
|
unsigned hidden :4;
|
|
unsigned content :4;
|
|
unsigned number :4;
|
|
} gift_t;
|
|
|
|
typedef struct
|
|
{
|
|
unsigned type :8;
|
|
unsigned empty :20;
|
|
unsigned taken :4;
|
|
} coin_t;
|
|
|
|
typedef struct
|
|
{
|
|
unsigned type :8;
|
|
unsigned empty :16;
|
|
unsigned x :4;
|
|
unsigned y :4;
|
|
} deco_t;
|
|
|
|
// Generic container 32 bits
|
|
typedef struct
|
|
{
|
|
unsigned type :8;
|
|
unsigned data :24; // raw binary format
|
|
} cell_t;
|
|
|
|
int world_get_width();
|
|
|
|
cell_t* world_get(int x, int y);
|
|
|
|
void display_cell(int cx, int cy, int sx, int sy, int plan);
|
|
|
|
void world_set(int w, int h, int x, int y, cell_t const * a);
|
|
|
|
void world_draw();
|
|
void world_move();
|
|
|
|
int world_get_real_x0();
|
|
int world_get_real_y0();
|
|
|
|
void world_reset();
|
|
|
|
#define CTG_SOIL 1
|
|
#define CTG_EMPTY 2
|
|
#define CTG_WATER 3
|
|
#define CTG_DEATH 4
|
|
int world_get_ctg(int x, int y);
|
|
|
|
void reset_camera();
|
|
|
|
void init_level(int w, int h, int x, int y, cell_t const * a);
|
|
|
|
typedef struct
|
|
{
|
|
int w;
|
|
int h;
|
|
int start_x;
|
|
int start_y;
|
|
cell_t data[];
|
|
}map_t;
|
|
|
|
extern map_t * map_current;
|
|
|
|
#endif
|