Operation Null Mind 0.4.1
A 2D roguelike top down shooter game made with SDL2
 
Loading...
Searching...
No Matches
chunks.h
Go to the documentation of this file.
1
9#pragma once
10
11#include <tiles.h>
12#include <colliders.h>
13
18#define HALLWAY_SIZE_TILE 6
19
24#define CHUNK_SIZE_TILE 60
25
30#define CHUNK_SIZE_PIXEL (CHUNK_SIZE_TILE * TILE_SIZE_PIXELS)
31
36#define HALLWAY_START (CHUNK_SIZE_TILE - HALLWAY_SIZE_TILE) / 2
37
42#define HALLWAY_END HALLWAY_START + HALLWAY_SIZE_TILE
43
48#define ROOM_STARTX(roomsize) (CHUNK_SIZE_TILE - (roomsize).x) / 2
49
54#define ROOM_STARTY(roomsize) (CHUNK_SIZE_TILE - (roomsize).y) / 2
55
60#define ROOM_ENDX(roomsize) ROOM_STARTX(roomsize) + (roomsize).x
61
66#define ROOM_ENDY(roomsize) ROOM_STARTY(roomsize) + (roomsize).y
67
72typedef enum {
74 HALLWAY_UP = 1 << 0,
75 HALLWAY_DOWN = 1 << 1,
76 HALLWAY_LEFT = 1 << 2,
77 HALLWAY_RIGHT = 1 << 3,
79
88
100
124
135EnvironmentChunk Chunk_GenerateTiles(Vec2 position, RoomType roomType, Vec2 roomSize ,RoomFloorPattern floorPattern, RoomHallways hallways);
136
143
150
157
164
171
178
186void Chunk_AddWallCollider(Vec2 startTile, Vec2 endtile, EnvironmentChunk* chunk);
187
195void Chunk_AddRoomTrigger(Vec2 startTile, Vec2 endtile, EnvironmentChunk* chunk);
196
204void Chunk_AddHallwayTrigger(Vec2 startTile, Vec2 endtile, EnvironmentChunk* chunk);
205
213void Chunk_AddEndTrigger(Vec2 startTile, Vec2 endtile, EnvironmentChunk* chunk);
214
219
224
229
233void Chunk_Start();
234
240void Chunk_Render(const EnvironmentChunk *chunk);
241
249
257
265
273
281bool Chunk_IsValid(Vec2 chunkIndex);
283
291
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.