mirror of
https://github.com/jeremysrand/BuGS.git
synced 2024-05-28 16:41:35 +00:00
137 lines
2.9 KiB
C
137 lines
2.9 KiB
C
/*
|
|
* tiles.h
|
|
* BuGS
|
|
*
|
|
* Created by Jeremy Rand on 2020-07-14.
|
|
* Copyright © 2020 Jeremy Rand. All rights reserved.
|
|
*/
|
|
|
|
#ifndef _GUARD_PROJECTBuGS_FILEtiles_
|
|
#define _GUARD_PROJECTBuGS_FILEtiles_
|
|
|
|
|
|
#include <types.h>
|
|
|
|
|
|
/* Defines */
|
|
|
|
#define GAME_NUM_TILES_WIDE 25
|
|
#define GAME_NUM_TILES_TALL 25
|
|
|
|
#define NUM_GAME_TILES (GAME_NUM_TILES_WIDE * GAME_NUM_TILES_TALL)
|
|
|
|
#define RHS_NUM_TILES_WIDE 2
|
|
#define NUM_RHS_NON_GAME_TILES (RHS_NUM_TILES_WIDE * GAME_NUM_TILES_TALL)
|
|
#define RHS_FIRST_TILE NUM_GAME_TILES
|
|
|
|
#define LHS_NUM_TILES_WIDE 13
|
|
#define NUM_LHS_NON_GAME_TILES (LHS_NUM_TILES_WIDE * GAME_NUM_TILES_TALL)
|
|
#define LHS_FIRST_TILE (RHS_FIRST_TILE + NUM_RHS_NON_GAME_TILES)
|
|
|
|
#define NUM_NON_GAME_TILES (NUM_RHS_NON_GAME_TILES + NUM_LHS_NON_GAME_TILES)
|
|
|
|
#define TOTAL_GAME_TILES (NUM_GAME_TILES + NUM_NON_GAME_TILES)
|
|
|
|
#define INVALID_TILE_NUM 0xffff
|
|
|
|
|
|
/* Types */
|
|
|
|
typedef word tTileNum;
|
|
typedef word tTileOffset; /* A tile offset is a tile number times the sizeof(tTile). */
|
|
|
|
|
|
typedef enum {
|
|
TILE_EMPTY = 0,
|
|
TILE_MUSHROOM1 = 1,
|
|
TILE_MUSHROOM2 = 2,
|
|
TILE_MUSHROOM3 = 3,
|
|
TILE_MUSHROOM4 = 4,
|
|
TILE_POISON_MUSHROOM1 = 9,
|
|
TILE_POISON_MUSHROOM2 = 10,
|
|
TILE_POISON_MUSHROOM3 = 11,
|
|
TILE_POISON_MUSHROOM4 = 12,
|
|
|
|
TILE_SYMBOL_C = 5,
|
|
TILE_SYMBOL_P = 6,
|
|
TILE_SYMBOL_DOT = 7,
|
|
TILE_SYMBOL_COLON = 8,
|
|
|
|
TILE_LETTER_A = 13,
|
|
TILE_LETTER_B = 14,
|
|
TILE_LETTER_C = 15,
|
|
TILE_LETTER_D = 16,
|
|
TILE_LETTER_E = 17,
|
|
TILE_LETTER_F = 18,
|
|
TILE_LETTER_G = 19,
|
|
TILE_LETTER_H = 20,
|
|
TILE_LETTER_I = 21,
|
|
TILE_LETTER_J = 22,
|
|
TILE_LETTER_K = 23,
|
|
TILE_LETTER_L = 24,
|
|
TILE_LETTER_M = 25,
|
|
TILE_LETTER_N = 26,
|
|
TILE_LETTER_O = 27,
|
|
TILE_LETTER_P = 28,
|
|
TILE_LETTER_Q = 29,
|
|
TILE_LETTER_R = 30,
|
|
TILE_LETTER_S = 31,
|
|
TILE_LETTER_T = 32,
|
|
TILE_LETTER_U = 33,
|
|
TILE_LETTER_V = 34,
|
|
TILE_LETTER_W = 35,
|
|
TILE_LETTER_X = 36,
|
|
TILE_LETTER_Y = 37,
|
|
TILE_LETTER_Z = 38,
|
|
|
|
TILE_NUMBER_0 = 39,
|
|
TILE_NUMBER_1 = 40,
|
|
TILE_NUMBER_2 = 41,
|
|
TILE_NUMBER_3 = 42,
|
|
TILE_NUMBER_4 = 43,
|
|
TILE_NUMBER_5 = 44,
|
|
TILE_NUMBER_6 = 45,
|
|
TILE_NUMBER_7 = 46,
|
|
TILE_NUMBER_8 = 47,
|
|
TILE_NUMBER_9 = 48,
|
|
|
|
TILE_SOLID1 = 49,
|
|
TILE_SOLID2 = 50,
|
|
TILE_SOLID3 = 51,
|
|
|
|
TILE_PLAYER = 52,
|
|
} tTileType;
|
|
|
|
|
|
typedef struct
|
|
{
|
|
word dirty;
|
|
word offset;
|
|
tTileType type;
|
|
|
|
tTileOffset tileAbove;
|
|
tTileOffset tileBelow;
|
|
tTileOffset tileLeft;
|
|
tTileOffset tileRight;
|
|
word dummy; /* I want a size which is a multiple of 2 */
|
|
} tTile;
|
|
|
|
|
|
/* Globals */
|
|
|
|
extern tTile tiles[TOTAL_GAME_TILES];
|
|
extern tTileOffset dirtyGameTiles[NUM_GAME_TILES + GAME_NUM_TILES_TALL];
|
|
extern word numDirtyGameTiles;
|
|
extern tTileOffset dirtyNonGameTiles[NUM_NON_GAME_TILES];
|
|
extern word numDirtyNonGameTiles;
|
|
|
|
|
|
/* API */
|
|
|
|
extern void initTiles(void);
|
|
extern void initPlayer(void);
|
|
extern void addStartingMushrooms(void);
|
|
|
|
|
|
#endif /* define _GUARD_PROJECTBuGS_FILEtiles_ */
|