- 重构了游戏引擎的核心逻辑和架构 - 添加了新的实体组件系统(ECS) - 实现了简单的碰撞检测和响应 - 新增了地图和子弹功能 - 优化了输入处理和渲染逻辑 - 调整了游戏控制方式
34 lines
1.0 KiB
C
34 lines
1.0 KiB
C
#include "entities.h"
|
|
|
|
void init_bullet(ge_ecs_t* ecs, ge_entity_t **_bullet) {
|
|
Assert(ecs != NULL && _bullet != NULL);
|
|
ge_ecs_add_entity(ecs, _bullet);
|
|
ge_entity_t* bullet = *_bullet;
|
|
Assert(bullet != NULL);
|
|
|
|
*bullet = (ge_entity_t) {
|
|
.user_type = BULLET,
|
|
.component_mask = GE_RENDERABLE_MASK | GE_PHYSICS_MASK | GE_COLLIDER_MASK,
|
|
.renderable = (ge_render_component_t) {
|
|
.type = GE_RENDER_COMP_TYPE_RECT,
|
|
.data.rect = {
|
|
.size = { 2, 2 },
|
|
.color = GE_COLOR_RED,
|
|
}
|
|
},
|
|
.physics_body = (ge_physics_component_t) {
|
|
.type = GE_PHYSICS_COMP_TYPE_VELOCITY,
|
|
.velocity = { 0, 0 },
|
|
},
|
|
.collision = (ge_collision_component_t) {
|
|
.type = GE_COLLISION_COMP_TYPE_BOX,
|
|
.layers = LAYER_PLAYER_PROJECTILE,
|
|
.mask = LAYER_WALL | LAYER_ENEMY_HITBOX,
|
|
.collider.box = {
|
|
.relative_pos = { 0, 0 },
|
|
.size = { 2, 2 },
|
|
},
|
|
},
|
|
};
|
|
}
|