blob: 1039ad595bf21be40b1ca927d586fce900e27605 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
#pragma once
#include <raylib.h>
#include <stdbool.h>
#include <stdint.h>
#include "constants.h"
#define ENTITY_ALLOCATED 1
#define ENTITY_VISIBLE (1 << 1)
#define ENTITY_PHYSICS_ACTIVE (1 << 2)
typedef enum EntityType {
Player_Entity,
Wall_Entity,
Background_Entity
} EntityType;
typedef enum DrawLayer {
Background_Layer = 0,
Foreground_Layer = 1
} DrawLayer;
typedef struct Entity {
int id;
EntityType type;
uint16_t flags;
Vector2 position;
Vector2 velocity;
//Physics information
Rectangle physicsCollider;
int numHitBoxes;
Rectangle hitBoxes[MAX_AREA_COUNT];
int numHurtBoxes;
Rectangle hurtBoxes[MAX_AREA_COUNT];
//Graphics Information
Texture2D texture;
DrawLayer drawLayer;
Rectangle destRect; //Relative to the players position
#ifdef BEATEMUP_DEBUG
//Debug information
Color physicsColliderColor;
#endif
} Entity;
typedef struct Game {
bool paused;
Entity entities[MAX_ENTITY_COUNT];
Texture2D background;
float backgroundPosition;
#ifdef BEATEMUP_DEBUG
//Debug information
bool enableDebugOverlay;
#endif
} Game;
void AddEntity(Entity* e);
void AddWall(float xpos, float ypos, float width, float height);
void InitGame();
void UpdateGame(float deltaTime);
void DrawGame();
|