#include "register_types.h"

#include "core/object/class_db.h"
#include "wave_survival/damage_box.h"
#include "wave_survival/enemies/enemy_wretched.h"
#include "wave_survival/enemy_body.h"
#include "wave_survival/health_status.h"
#include "wave_survival/hitbox.h"
#include "wave_survival/hitscan_muzzle.h"
#include "wave_survival/npc_unit.h"
#include "wave_survival/patrol_path.h"
#include "wave_survival/player_body.h"
#include "wave_survival/player_camera.h"
#include "wave_survival/player_detector.h"
#include "wave_survival/player_input.h"
#include "wave_survival/state.h"
#include "wave_survival/state_machine.h"
#include "wave_survival/weapon_base.h"
#include "wave_survival/weapon_inventory.h"
#include "wave_survival/weapons/rifle.h"

void initialize_wave_survival_module(ModuleInitializationLevel p_level) {
	if (p_level != MODULE_INITIALIZATION_LEVEL_SCENE) {
		return;
	}
	GDREGISTER_CLASS(PlayerBody);
	GDREGISTER_CLASS(PlayerInput);
	GDREGISTER_CLASS(PlayerCamera);
	GDREGISTER_RUNTIME_CLASS(WeaponBase);
	GDREGISTER_CLASS(Rifle);
	GDREGISTER_CLASS(WeaponInventory);
	GDREGISTER_CLASS(HitscanMuzzle);
	GDREGISTER_CLASS(HealthStatus);
	GDREGISTER_CLASS(StateMachine);
	GDREGISTER_CLASS(State);
	GDREGISTER_CLASS(EnemyBody);
	GDREGISTER_CLASS(PatrolPath);
	GDREGISTER_CLASS(NpcUnit);
	GDREGISTER_CLASS(EnemyWretched);
	GDREGISTER_CLASS(WretchedPatrolState);
	GDREGISTER_CLASS(WretchedChaseState);
	GDREGISTER_CLASS(WretchedAttackState);
	GDREGISTER_CLASS(PlayerDetector);
	GDREGISTER_CLASS(Hitbox);
	GDREGISTER_CLASS(DamageBox);
}

void uninitialize_wave_survival_module(ModuleInitializationLevel p_level) {
	if (p_level != MODULE_INITIALIZATION_LEVEL_SCENE) {
		return;
	}
}
