supercasiobros/include/world.h

143 lines
2.0 KiB
C
Raw Normal View History

2019-11-16 11:44:09 +01:00
#ifndef WORLD_H
#define WORLD_H
#include <stdint.h>
#include <gint/display.h>
2019-11-16 11:44:09 +01:00
#define W_CELL_SIZEPX 8
#define W_SIZE_X 160
#define W_SIZE_Y 16
2019-12-04 19:27:27 +01:00
typedef enum
{
EMPTY=0,
EARTH,
BRICK,
BLOC,
END_LEVEL,
TUYAU,
ARBRE,
GIFT,
COIN,
NUAGE,
BUISSON,
COLLINE,
CASTLE,
} cell_id;
2019-12-04 19:27:27 +01:00
typedef struct
2019-12-04 19:27:27 +01:00
{
unsigned type :8;
unsigned empty :16;
2019-12-04 19:27:27 +01:00
unsigned x :4;
unsigned y :4;
} earth_t;
typedef struct
2019-12-04 19:27:27 +01:00
{
unsigned type :8;
unsigned time_hit_id :8;
2019-12-07 14:32:38 +01:00
unsigned state :4;
unsigned hidden :4;
2019-12-04 19:27:27 +01:00
unsigned content :4;
unsigned number :4;
} brick_t;
2019-11-16 11:44:09 +01:00
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;
2019-12-08 16:34:32 +01:00
typedef struct
2019-12-04 19:27:27 +01:00
{
unsigned type :8;
unsigned empty :16;
2019-12-04 19:27:27 +01:00
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
2019-12-04 19:27:27 +01:00
{
unsigned type :8;
unsigned time_hit_id :8;
2019-12-07 14:32:38 +01:00
unsigned state :4;
unsigned hidden :4;
2019-12-04 19:27:27 +01:00
unsigned content :4;
unsigned number :4;
} gift_t;
typedef struct
2019-12-04 19:27:27 +01:00
{
unsigned type :8;
unsigned empty :20;
2019-12-04 19:27:27 +01:00
unsigned taken :4;
} coin_t;
2019-11-16 11:44:09 +01:00
typedef struct
{
unsigned type :8;
unsigned empty :16;
unsigned x :4;
unsigned y :4;
} deco_t;
// Generic container 32 bits
typedef struct
2019-11-16 11:44:09 +01:00
{
unsigned type :8;
unsigned data :24; // raw binary format
} cell_t;
2019-11-16 11:44:09 +01:00
int worldGetWidth();
cell_t* worldGetCell(int x, int y);
2019-11-16 11:44:09 +01:00
void cellDraw(int cx, int cy, int sx, int sy, int plan);
2019-11-16 11:44:09 +01:00
void worldSet(int w, int h, int x, int y, cell_t const * a);
2019-11-16 11:44:09 +01:00
void worldDraw();
void worldMove();
2019-11-16 12:02:30 +01:00
void worldReset();
2019-11-20 15:33:34 +01:00
#define CTG_SOIL 1
#define CTG_EMPTY 2
#define CTG_WATER 3
#define CTG_DEATH 4
int worldGetCellCategory(int x, int y);
typedef struct
{
int w;
int h;
int start_x;
int start_y;
cell_t data[];
}map_t;
extern map_t * map_current;
#endif