Stardew Engine
Loading...
Searching...
No Matches
Game2DLayer.h
Go to the documentation of this file.
1#ifndef H_GAME2DLAYER
2#define H_GAME2DLAYER
3
4#ifdef __cplusplus
5extern "C" {
6#endif
7
8#include "IntTypes.h"
9#include "DynArray.h"
10#include "HandleDefs.h"
11#include <cglm/cglm.h>
12#include "InputContext.h"
13#include "FreeLookCameraMode.h"
14#include "Entity2DCollection.h"
15
16#define MAX_GAME_LAYER_ASSET_FILE_PATH_LEN 128
17
19
21
22struct GameLayer2DData;
23struct BinarySerializer;
24
25typedef void (*PreFirstInitFn)(struct GameLayer2DData* pGameLayerData);
26typedef void (*PreLoadLevelFn)(struct GameLayer2DData* pGameLayerData);
27
32typedef void (*LevelDataPacketExtenderFn)(struct GameLayer2DData* pGameLayerData, struct BinarySerializer* pBS);
33
40typedef void (*LevelDataRequestHandlerExtenderFn)(struct GameLayer2DData* pGameLayerData, struct BinarySerializer* pBS);
41
42typedef void (*LevelDataHandlerExtenderFn)(struct GameLayer2DData* pGameLayerData, struct BinarySerializer* pBS);
43
44
46struct DrawContext;
47typedef struct DrawContext DrawContext;
48
49// the real type of this should be hSprite ie u32 but i want to save memory so u16 it is - that
50// should be enough for anyone - just store the tiles in the first 16 bits worth of indexes
51
52
54{
56 vec2 scale;
57 float rotation;
59};
60
61struct TilemapRenderData;
62struct TilemapLayerRenderData;
63
69
83
84struct TileMap
85{
86 VECTOR(struct TileMapLayer) layers;
88 struct TilemapRenderData* pRenderData;
89};
90
232
234{
235
236 const char* atlasFilePath;
237
238 const char* levelFilePath;
239
240};
241
242void TilemapLayer_GetTLBR(vec2 tl, vec2 br, struct TileMapLayer* pTMLayer);
243
244void Game2DLayer_Get(struct GameFrameworkLayer* pLayer, struct Game2DLayerOptions* pOptions, DrawContext* pDC);
245
246void Game2DLayer_SaveLevelFile(struct GameLayer2DData* pData, const char* outputFilePath);
247
248void GameLayer2D_OnPush(struct GameFrameworkLayer* pLayer, DrawContext* drawContext, InputContext* inputContext);
249
250void Game2DLayer_OnPop(struct GameFrameworkLayer* pLayer, DrawContext* drawContext, InputContext* inputContext);
251
252#ifdef __cplusplus
253}
254#endif
255
256#endif // !H_GAME2DLAYER
u32 VertIndexT
Definition DrawContext.h:52
vec2 vec2 struct Entity2DCollection struct GameFrameworkLayer * pLayer
Definition EntityQuadTree.h:38
void(* LevelDataRequestHandlerExtenderFn)(struct GameLayer2DData *pGameLayerData, struct BinarySerializer *pBS)
Definition Game2DLayer.h:40
void(* PreLoadLevelFn)(struct GameLayer2DData *pGameLayerData)
Definition Game2DLayer.h:26
ObjectLayer2DDrawOrder
Definition Game2DLayer.h:65
@ DrawOrder_TopDown
Definition Game2DLayer.h:66
@ DrawOrder_Index
Definition Game2DLayer.h:67
void Game2DLayer_Get(struct GameFrameworkLayer *pLayer, struct Game2DLayerOptions *pOptions, DrawContext *pDC)
Definition Game2DLayer.c:816
void Game2DLayer_SaveLevelFile(struct GameLayer2DData *pData, const char *outputFilePath)
Definition Game2DLayer.c:853
void Game2DLayer_OnPop(struct GameFrameworkLayer *pLayer, DrawContext *drawContext, InputContext *inputContext)
Definition Game2DLayer.c:800
void(* LevelDataPacketExtenderFn)(struct GameLayer2DData *pGameLayerData, struct BinarySerializer *pBS)
Extend the writing of the level data packet that servers send to clients.
Definition Game2DLayer.h:32
#define MAX_GAME_LAYER_ASSET_FILE_PATH_LEN
Definition Game2DLayer.h:16
void TilemapLayer_GetTLBR(vec2 tl, vec2 br, struct TileMapLayer *pTMLayer)
Definition Game2DLayer.c:32
void(* PreFirstInitFn)(struct GameLayer2DData *pGameLayerData)
Definition Game2DLayer.h:25
void(* LevelDataHandlerExtenderFn)(struct GameLayer2DData *pGameLayerData, struct BinarySerializer *pBS)
Definition Game2DLayer.h:42
void GameLayer2D_OnPush(struct GameFrameworkLayer *pLayer, DrawContext *drawContext, InputContext *inputContext)
Definition Game2DLayer.c:770
HGeneric HEntity2DQuadtreeNode
Definition HandleDefs.h:44
HGeneric HPhysicsWorld
Definition HandleDefs.h:40
HGeneric H2DWorldspaceVertexBuffer
Definition HandleDefs.h:26
HGeneric hAtlas
Definition HandleDefs.h:14
u16 TileIndex
Definition IntTypes.h:18
uint32_t u32
Definition IntTypes.h:12
Definition BinarySerializer.h:16
Definition DrawContext.h:59
Definition Entity2DCollection.h:30
Definition FreeLookCameraMode.h:9
Definition Game2DLayer.h:234
const char * atlasFilePath
Definition Game2DLayer.h:236
const char * levelFilePath
Definition Game2DLayer.h:238
Definition GameFrameworkEvent.c:14
Definition GameFramework.h:42
Definition Game2DLayer.h:92
VECTOR(VertIndexT) pWorldspaceIndices
int windowH
Window height.
Definition Game2DLayer.h:169
struct Transform2D camera
the one and only camera
Definition Game2DLayer.h:116
struct FreeLookCameraModeControls freeLookCtrls
controls for free look mode
Definition Game2DLayer.h:127
bool bSkipDraw
Definition Game2DLayer.h:204
bool bLoaded
mostly pointless
Definition Game2DLayer.h:106
char atlasFilePath[MAX_GAME_LAYER_ASSET_FILE_PATH_LEN]
Path of loaded atlas file.
Definition Game2DLayer.h:139
bool bCurrentLocationIsDirty
Current location has changed in such a way that it needs to be saved, when a new area is moved to or ...
Definition Game2DLayer.h:209
void * pUserData
Game specific data.
Definition Game2DLayer.h:184
int windowW
Window width.
Definition Game2DLayer.h:164
PreLoadLevelFn preLoadLevelFn
Definition Game2DLayer.h:192
int cameraClampedToTilemapLayer
Which layer, if any, is the camera clamped to. If it is not clamped (the default) then this should be...
Definition Game2DLayer.h:122
VECTOR(struct Worldspace2DVert) pWorldspaceVertices
buffers of vertices and indices populated each frame
PreFirstInitFn preFirstInitCallback
a callback called when the layer is pushed, and the level and all entities are loaded,...
Definition Game2DLayer.h:190
bool bFreeLookMode
When in this mode the game is paused and you have a different set of controls to freely move the came...
Definition Game2DLayer.h:113
H2DWorldspaceVertexBuffer vertexBuffer
Definition Game2DLayer.h:134
LevelDataHandlerExtenderFn levelDataHandlerExtender
AS THE CLIENT : Read extra game specific data the server has written to the initial level data packet...
Definition Game2DLayer.h:230
struct TileMap tilemap
tilemap comprised of a list of tilemap layers
Definition Game2DLayer.h:103
bool bDebugLayerAttatched
flag for whether the debug overlay is pushed on top of the game
Definition Game2DLayer.h:149
struct GameFrameworkLayer * pLayer
for convenience, a reference back to the layer
Definition Game2DLayer.h:94
DrawContext * pDrawContext
HACK : todo: sort out the availabilty of these draw and input contexts todo: use global getter for dr...
Definition Game2DLayer.h:199
LevelDataPacketExtenderFn levelDataPacketExtender
AS THE SERVER : Write extra game specific data to the level data packet the server sends initially to...
Definition Game2DLayer.h:215
char debugMsg[256]
A message to display on the screen when the debug overlay is on top of the game2dlayer.
Definition Game2DLayer.h:154
struct GameFrameworkEventListener * pDebugListener
Listens for the debug overlay game framework layer being pushed.
Definition Game2DLayer.h:159
HPhysicsWorld hPhysicsWorld
Physics world handle.
Definition Game2DLayer.h:174
LevelDataRequestHandlerExtenderFn levelDataRequestHandlerExtender
AS THE SERVER : Read extra game specific data from the level data request packet the client sends to ...
Definition Game2DLayer.h:224
hAtlas hAtlas
handle to atlas containing sprite data
Definition Game2DLayer.h:100
HEntity2DQuadtreeNode hEntitiesQuadTree
The top node of a quad tree that holds references to static sprites for culling.
Definition Game2DLayer.h:97
char tilemapFilePath[MAX_GAME_LAYER_ASSET_FILE_PATH_LEN]
path of loaded level file
Definition Game2DLayer.h:144
struct Entity2DCollection entities
Entities collection.
Definition Game2DLayer.h:179
Definition InputContext.h:137
Definition InputContext.h:59
Definition Game2DLayer.h:71
bool bIsObjectLayer
Definition Game2DLayer.h:78
enum ObjectLayer2DDrawOrder drawOrder
Definition Game2DLayer.h:79
TileIndex * Tiles
Definition Game2DLayer.h:80
u32 type
Definition Game2DLayer.h:81
int tileHeightPx
Definition Game2DLayer.h:75
struct Transform2D transform
Definition Game2DLayer.h:73
int heightTiles
Definition Game2DLayer.h:77
struct TilemapLayerRenderData * pRenderData
Definition Game2DLayer.h:72
int widthTiles
Definition Game2DLayer.h:76
int tileWidthPx
Definition Game2DLayer.h:74
Definition Game2DLayer.h:85
char * dataFilePath
Definition Game2DLayer.h:87
VECTOR(struct TileMapLayer) layers
struct TilemapRenderData * pRenderData
Definition Game2DLayer.h:88
Definition Game2DLayer.h:54
vec2 position
Definition Game2DLayer.h:55
vec2 scale
Definition Game2DLayer.h:56
bool bMirrored
Definition Game2DLayer.h:58
float rotation
Definition Game2DLayer.h:57
Definition DrawContext.h:13