Refactor Entity Tag out of EC
Tags are game-specific things. So, move out of ECscene_man
parent
29c9b4eec7
commit
b5f026c96b
|
@ -1,4 +1,5 @@
|
|||
#include "mempool.h"
|
||||
#include "ent_impl.h"
|
||||
#include <stdio.h>
|
||||
|
||||
int main(void)
|
||||
|
|
|
@ -151,17 +151,9 @@ static inline void set_bbox(CBBox_t* p_bbox, unsigned int x, unsigned int y)
|
|||
p_bbox->half_size.y = (unsigned int)(y / 2);
|
||||
}
|
||||
|
||||
typedef enum EntityTag {
|
||||
NO_ENT_TAG,
|
||||
PLAYER_ENT_TAG,
|
||||
ENEMY_ENT_TAG,
|
||||
CRATES_ENT_TAG,
|
||||
BOULDER_ENT_TAG,
|
||||
} EntityTag_t;
|
||||
|
||||
struct Entity {
|
||||
unsigned long m_id;
|
||||
EntityTag_t m_tag;
|
||||
unsigned int m_tag;
|
||||
bool m_alive;
|
||||
unsigned long components[N_COMPONENTS];
|
||||
EntityManager_t* manager;
|
||||
|
@ -181,7 +173,7 @@ void update_entity_manager(EntityManager_t* p_manager);
|
|||
void clear_entity_manager(EntityManager_t* p_manager);
|
||||
void free_entity_manager(EntityManager_t* p_manager);
|
||||
|
||||
Entity_t* add_entity(EntityManager_t* p_manager, EntityTag_t tag);
|
||||
Entity_t* add_entity(EntityManager_t* p_manager, unsigned int tag);
|
||||
void remove_entity(EntityManager_t* p_manager, unsigned long id);
|
||||
Entity_t *get_entity(EntityManager_t* p_manager, unsigned long id);
|
||||
|
||||
|
|
|
@ -74,7 +74,7 @@ void free_entity_manager(EntityManager_t* p_manager)
|
|||
sc_queue_term(&p_manager->to_remove);
|
||||
}
|
||||
|
||||
Entity_t *add_entity(EntityManager_t* p_manager, EntityTag_t tag)
|
||||
Entity_t *add_entity(EntityManager_t* p_manager, unsigned int tag)
|
||||
{
|
||||
unsigned long e_idx = 0;
|
||||
Entity_t* p_ent = new_entity_from_mempool(&e_idx);
|
||||
|
|
|
@ -157,7 +157,7 @@ Entity_t* new_entity_from_mempool(unsigned long* e_idx_ptr)
|
|||
ent->components[j] = MAX_COMP_POOL_SIZE;
|
||||
}
|
||||
ent->m_alive = true;
|
||||
ent->m_tag = NO_ENT_TAG;
|
||||
ent->m_tag = 0;
|
||||
return ent;
|
||||
}
|
||||
|
||||
|
|
|
@ -2,6 +2,15 @@
|
|||
#define __ENT_IMPL_H
|
||||
#include "assets.h"
|
||||
|
||||
typedef enum EntityTag {
|
||||
NO_ENT_TAG = 0,
|
||||
PLAYER_ENT_TAG,
|
||||
ENEMY_ENT_TAG,
|
||||
CRATES_ENT_TAG,
|
||||
BOULDER_ENT_TAG,
|
||||
} EntityTag_t;
|
||||
|
||||
|
||||
bool init_player_creation(const char* info_file, Assets_t* assets);
|
||||
Entity_t* create_player(EntityManager_t* ent_manager, Assets_t* assets);
|
||||
Entity_t* create_crate(EntityManager_t* ent_manager, Assets_t* assets, bool metal);
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
#include "game_systems.h"
|
||||
#include "ent_impl.h"
|
||||
#include "AABB.h"
|
||||
#include "EC.h"
|
||||
#include "constants.h"
|
||||
|
|
Loading…
Reference in New Issue