BackRoomsMaker/src/hash.h

65 lines
1.2 KiB
C

// credit to Benoit //
#ifndef GRID_H
#define GRID_H
#include <stdbool.h>
typedef struct template {
uint8_t id ;
uint8_t* lines ; // len = 8
uint8_t eastsig ;
uint8_t westsig ;
} template ;
typedef struct chunk {
int16_t chx ;
int16_t chy ;
int draw_id ;
template chdata ;
} chunk ;
//
typedef struct List {
int hash;
int x;
int y;
chunk* elt;
struct List* next;
} *List;
typedef struct Grid {
List* data;
int capacity;
int size;
double loadFactor;
void (*push)(struct Grid *grid, int x, int z, chunk* elt);
chunk* (*pop)(struct Grid *grid, int x, int z);
chunk* (*get)(struct Grid *grid, int x, int z);
bool (*mem)(struct Grid *grid, int x, int z);
} *Grid;
int generate_hash(int x, int y);
Grid newGrid();
void freeGrid(Grid grid);
void gridInsert(Grid grid, int x, int z, chunk* elt);
chunk* gridGet(Grid grid, int x, int z);
bool gridMem(Grid grid, int x, int z);
chunk* gridRemove(Grid grid, int x, int z);
chunk** gridIter(Grid grid);
typedef struct ChunkCoord {
int x;
int z;
} *ChunkCoord;
ChunkCoord newChunkCoord(int x, int z);
void freeChunkCoord(ChunkCoord coord);
#endif