-
Notifications
You must be signed in to change notification settings - Fork 0
/
entity.h
70 lines (58 loc) · 2.55 KB
/
entity.h
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
69
70
/*******************************************************************************************
*
* Smurf Invaders. Technical Demo as an explorative project of Raylib.
* Random game based on Space Invaders and alike.
*
* Copyright (c) 2020 Oscar Lostes Cazorla, under MIT license.
*
* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
* Raylib by Ramon Santamaria (@raysan5), Copyright (c) 2013-2020
*
********************************************************************************************/
/*******************************************************************************************
*
* General definition of "Entity" and auxiliar functions.
* Everything that moves or is interactible on the game, is defined as an entity.
*
********************************************************************************************/
#ifndef ENTITY_H
#define ENTITY_H
// Raylib
#include "raylib.h"
#include "raymath.h"
#include "constants.h"
// Entity Definition
typedef struct Entity
{
Model* model; // Pointer to the model
BoundingBox bounds; // Collision box
BoundingBox* refBounds; //Reference collision box
Vector3 position; // Position
Color tint; // Entity color
Color border; // Border color
float speed; // Entity speed
float scale; // Entity Scaling
int score; // How many points the entity gives when killed
bool active; // This determines whether the entity is interactible and drawn
} Entity;
// Defines some specific type of entities. Mostly semantic sugar
typedef Entity Player;
typedef Entity Bullet;
typedef Entity Enemy;
// Initializes an entity with the given parameters
void initEntity(Entity* entity, Model* model, BoundingBox* bounds, Color tint,
Color border, Vector3 position, float speed, float scale, int score, bool active);
// Initializes a pool (array) of entities with the given parameters. Items of the pool are disabled by default
void initEntityPool(Entity* pool, int size, Model* model, BoundingBox* bounds, Color tint,
Color border, Vector3 position, float speed, float scale, int score);
// Recalculate the collision box for a given entity, given a reference box of that entity
void recalculateBounds(Entity* entity, BoundingBox referenceBox);
// Move Entity while carrying the collision box
void moveEntity(Entity* entity, float x, float y, float z);
void moveEntityVect(Entity* entity, Vector3 newPos);
// Drawing functions
void drawEntity(Entity* entity);
void drawEntityPool(Entity* pool, int size);
// Pooling. Returns 1st free item from pool, -1 if none.
int getEntityFromPool(Entity* pool, int size);
#endif