- 重构了游戏引擎的核心逻辑和架构 - 添加了新的实体组件系统(ECS) - 实现了简单的碰撞检测和响应 - 新增了地图和子弹功能 - 优化了输入处理和渲染逻辑 - 调整了游戏控制方式
59 lines
1.3 KiB
C
59 lines
1.3 KiB
C
#ifndef __GE_CORE_H__
|
|
#define __GE_CORE_H__
|
|
|
|
#include <ge_common.h>
|
|
#include <ecs/ge_entity.h>
|
|
#include <ecs/ge_render_system.h>
|
|
#include <ecs/ge_physics_system.h>
|
|
#include <ecs/ge_collision_system.h>
|
|
|
|
struct ge_engine_core;
|
|
typedef struct ge_engine_core ge_core_t;
|
|
|
|
/**
|
|
* Callback Function
|
|
*/
|
|
typedef void (*ge_init_func_t)(ge_core_t* core);
|
|
typedef void (*ge_exit_func_t)(ge_core_t* core);
|
|
typedef void (*ge_run_func_t)(ge_core_t* core);
|
|
|
|
typedef enum ge_engine_state {
|
|
GE_ENGINE_STATE_RUNNING,
|
|
GE_ENGINE_STATE_EXIT,
|
|
} ge_engine_state_t;
|
|
|
|
struct ge_engine_core {
|
|
struct {
|
|
ge_init_func_t init;
|
|
ge_exit_func_t exit;
|
|
ge_run_func_t process;
|
|
} callbacks;
|
|
ge_engine_state_t state;
|
|
ge_ecs_t ecs;
|
|
DECLARE_GE_KFIFO(einput, ge_uptr_t, 16, ge_event_input_t);
|
|
struct {
|
|
ge_uint_t fps;
|
|
} configs;
|
|
void* context;
|
|
|
|
struct {
|
|
ge_render_system_t render;
|
|
ge_physics_system_t physics;
|
|
ge_collision_system_t collision;
|
|
} _systems;
|
|
ge_render_t _render;
|
|
ge_timer_t _timer;
|
|
ge_input_t _input;
|
|
ge_run_func_t _inner_run;
|
|
void* _inner_context;
|
|
};
|
|
|
|
/**
|
|
* Basic Call
|
|
*/
|
|
int ge_main(ge_core_t* core);
|
|
void ge_engine_init(ge_core_t *core);
|
|
void ge_engine_run(ge_core_t *core);
|
|
|
|
#endif // __GE_CORE_H__
|