This repository has been archived on 2022-01-13. You can view files and clone it, but cannot push or open issues or pull requests.
jtmm2-old/include/tiles.h

63 lines
1.5 KiB
C

#ifndef _DEF_TILES
#define _DEF_TILES
#define TILESET_WIDTH 16
#define TILE_AT(x, y) (x + y * TILESET_WIDTH)
typedef unsigned char Tile; /* the tile ID */
typedef unsigned char Tile_flags; /* the tile properties (bitmask) */
/* flags enum and defines */
enum {
I_SOLID,
I_SPIKY,
I_WATER,
I_ICE,
I_GLUE
};
#define F_SOLID (1 << I_SOLID)
#define F_SPIKY (1 << I_SPIKY)
#define F_WATER (1 << I_WATER)
#define F_ICE (1 << I_ICE)
#define F_GLUE (1 << I_GLUE)
/* define properties */
#define P_AIR (0)
#define P_BASE (F_SOLID)
#define P_SPIKE (F_SPIKY)
#define P_WATER (F_WATER)
#define P_ICE (F_SOLID | F_ICE)
#define P_GLUE (F_SOLID | F_GLUE)
#define P_UNKNOWN (0)
enum {
ID_AIR = TILE_AT(0, 0),
ID_SPIKE = TILE_AT(1, 0),
ID_ICE_0 = TILE_AT(0, 1),
ID_ICE_1 = TILE_AT(0, 2),
ID_ICE_2 = TILE_AT(1, 2),
ID_ICE_3 = TILE_AT(0, 3),
ID_ICE_4 = TILE_AT(1, 3),
ID_WATER = TILE_AT(2, 1),
ID_GLUE = TILE_AT(1, 1),
ID_SLIME = TILE_AT(3, 1),
ID_BASE_0 = TILE_AT(0, 12),
ID_BASE_1 = TILE_AT(1, 12),
ID_BASE_2 = TILE_AT(2, 12),
ID_BASE_3 = TILE_AT(3, 12),
ID_BASE_4 = TILE_AT(0, 13),
ID_BASE_5 = TILE_AT(1, 13),
ID_BASE_6 = TILE_AT(2, 13),
ID_BASE_7 = TILE_AT(3, 13),
ID_BASE_8 = TILE_AT(0, 14),
ID_BASE_9 = TILE_AT(1, 14),
ID_BASE_10 = TILE_AT(2, 14),
ID_BASE_11 = TILE_AT(3, 14),
ID_BASE_12 = TILE_AT(0, 15),
ID_BASE_13 = TILE_AT(1, 15),
ID_BASE_14 = TILE_AT(2, 15),
ID_BASE_15 = TILE_AT(3, 15),
};
Tile_flags tile_get_flags(Tile tile);
#endif /* _DEF_TILES */