18#define HALLWAY_SIZE_TILE 6
24#define CHUNK_SIZE_TILE 60
30#define CHUNK_SIZE_PIXEL (CHUNK_SIZE_TILE * TILE_SIZE_PIXELS)
36#define HALLWAY_START (CHUNK_SIZE_TILE - HALLWAY_SIZE_TILE) / 2
42#define HALLWAY_END HALLWAY_START + HALLWAY_SIZE_TILE
48#define ROOM_STARTX(roomsize) (CHUNK_SIZE_TILE - (roomsize).x) / 2
54#define ROOM_STARTY(roomsize) (CHUNK_SIZE_TILE - (roomsize).y) / 2
60#define ROOM_ENDX(roomsize) ROOM_STARTX(roomsize) + (roomsize).x
66#define ROOM_ENDY(roomsize) ROOM_STARTY(roomsize) + (roomsize).y
bool Chunk_IsOnMainPath(EnvironmentChunk *chunk)
Definition chunk_utils.c:115
Vec2 Chunk_GetChunkCenter(EnvironmentChunk *chunk)
Gets the center of the chunk.
Definition chunk_utils.c:39
void Chunk_Render(const EnvironmentChunk *chunk)
Renders the chunk.
Definition chunk_render.c:14
void Chunk_HandlePlayerInsideHallway()
Handles player inside a hallway.
Definition chunk_create.c:431
bool Chunk_IsValid(Vec2 chunkIndex)
Checks if a chunk index is valid.
Definition chunk_utils.c:21
void Chunk_GenerateFloorTiles(EnvironmentChunk *chunk)
Generates floor tiles for a chunk.
Definition chunk_create.c:76
Vec2 Chunk_GetRandomTileCenterInRoom(EnvironmentChunk *chunk)
Gets a random tile center in the room.
Definition chunk_utils.c:72
EnvironmentChunk Chunk_GenerateTiles(Vec2 position, RoomType roomType, Vec2 roomSize, RoomFloorPattern floorPattern, RoomHallways hallways)
Generates tiles for a chunk.
Definition chunk_create.c:30
Vec2 Chunk_GetRoomTopLeft(EnvironmentChunk *chunk)
Gets the top-left corner of the current room in the current chunk.
Definition chunk_utils.c:85
Vec2 Chunk_GetRandomTileInRoom(EnvironmentChunk *chunk)
Gets a random tile in the room.
Definition chunk_utils.c:52
RoomHallways
Possible hallways directions in a room.
Definition chunks.h:72
@ HALLWAY_LEFT
Hallway left.
Definition chunks.h:76
@ HALLWAY_NONE
No hallway.
Definition chunks.h:73
@ HALLWAY_RIGHT
Hallway right.
Definition chunks.h:77
@ HALLWAY_DOWN
Hallway down.
Definition chunks.h:75
@ HALLWAY_UP
Hallway up.
Definition chunks.h:74
void Chunk_GenerateHallways(EnvironmentChunk *chunk)
Generates hallways for a chunk.
Definition chunk_create.c:110
void Chunk_Start()
Starts the chunk.
Definition chunk_start.c:15
RoomFloorPattern
Possible floor patterns in a room.
Definition chunks.h:84
@ ROOM_FLOOR_PATTERN_RANDOM
Random floor pattern.
Definition chunks.h:86
@ ROOM_FLOOR_PATTERN_1
Floor pattern 1.
Definition chunks.h:85
void Chunk_GenerateTilesButVoid(EnvironmentChunk *chunk)
Generates void tiles for a chunk.
Definition chunk_create.c:56
#define CHUNK_SIZE_TILE
Size of a chunk in tiles.
Definition chunks.h:24
void Chunk_AddRoomTrigger(Vec2 startTile, Vec2 endtile, EnvironmentChunk *chunk)
Adds a room trigger to a chunk.
Definition chunk_create.c:454
EnvironmentChunk * Chunk_GetCurrentChunk(Vec2 position)
Gets the current chunk based on position.
Definition chunk_utils.c:31
void Chunk_GenerateHallwayWallTiles(EnvironmentChunk *chunk)
Generates hallway wall tiles for a chunk.
Definition chunk_create.c:180
RoomType
Possible types of rooms.
Definition chunks.h:93
@ ROOM_TYPE_BOSS
Boss room.
Definition chunks.h:96
@ ROOM_TYPE_NORMAL
Normal room.
Definition chunks.h:95
@ ROOM_TYPE_START
Start room.
Definition chunks.h:94
@ ROOM_TYPE_END
End room.
Definition chunks.h:97
@ ROOM_TYPE_CRATE
Crate room.
Definition chunks.h:98
void Chunk_GenerateColliders(EnvironmentChunk *chunk)
Generates colliders for a chunk.
Definition chunk_create.c:229
void Chunk_HandlePlayerInsideRoom()
Handles player inside a room.
Definition chunk_create.c:421
void Chunk_AddEndTrigger(Vec2 startTile, Vec2 endtile, EnvironmentChunk *chunk)
Adds an end trigger to a chunk.
Definition chunk_create.c:511
void Chunk_AddWallCollider(Vec2 startTile, Vec2 endtile, EnvironmentChunk *chunk)
Adds a wall collider to a chunk.
Definition chunk_create.c:394
void Chunk_GenerateWallTiles(EnvironmentChunk *chunk)
Generates wall tiles for a chunk.
Definition chunk_create.c:151
void Chunk_HandlePlayerInsideEnd()
Handles player inside the end.
Definition chunk_create.c:441
void Chunk_AddHallwayTrigger(Vec2 startTile, Vec2 endtile, EnvironmentChunk *chunk)
Adds a hallway trigger to a chunk.
Definition chunk_create.c:482
Vec2 Chunk_GetRoomBottomRight(EnvironmentChunk *chunk)
Gets the bottom-right corner of the current room in the current chunk.
Definition chunk_utils.c:103
Defines the collider system for collision detection.
This struct represents a collider.
Definition colliders.h:96
Represents a chunk of the environment.
Definition chunks.h:105
RoomType roomType
Type of the room.
Definition chunks.h:113
bool empty
Whether the room is empty.
Definition chunks.h:118
int colliderCount
Number of colliders in the chunk.
Definition chunks.h:122
Vec2 position
Position of the chunk.
Definition chunks.h:106
Vec2 roomSize
Size of the room in the chunk.
Definition chunks.h:110
int totalEnemyCount
Total number of enemies in the room.
Definition chunks.h:115
RoomHallways hallways
Hallways in the room.
Definition chunks.h:111
int currentEnemyCount
Current number of enemies in the room.
Definition chunks.h:116
bool discovered
Whether the room is discovered.
Definition chunks.h:119
bool inCombat
Whether the room is in combat.
Definition chunks.h:117
RoomFloorPattern floorPattern
Floor pattern in the room.
Definition chunks.h:112
Represents a single environment tile.
Definition tiles.h:80
A 2D vector structure.
Definition vec2.h:81
EnvironmentTileData tiles
Global tile data instance.
Definition tile_data.c:14
Defines and manages environment tiles for game world construction.