#pragma once

#include "../../component/animation/component_animation_levitate.h"
#include "../../component/behavior/component_behavior_boomerang.h"
#include "../../component/behavior/component_behavior_act_in_rectangle.h"
#include "../../component/entity/component_enemy.h"
#include "../../ecs_component.h"
#include "../../component/stat/component_game_entity_type.h"

#define EXCORSANT_IS_SOLID false
#define EXCORSANT_IS_BOUNCE false
#define EXCORSANT_IS_AFFECTED_BY_GRAVITY false
#define EXCORSANT_BEHAVIOR_BOOMERANG_INITIAL_SPEED 15
#define EXCORSANT_BEHAVIOR_BOOMERANG_SPEED 0.5
#define EXCORSANT_BEHAVIOR_BOOMERANG_TIMER 90
#define EXCORSANT_FRICTION 1
#define EXCORSANT_VELOCITY_MAX 100
#define EXCORSANT_CHASE_SPEED 0.5
#define EXCORSANT_HEALTH_MAX 4
#define EXCORSANT_ANIMATION_LEVITATE_HEIGHT 50.0f
#define EXCORSANT_ANIMATION_LEVITATE_RANGE 10.0f
#define EXCORSANT_ANIMATION_LEVITATE_SPEED 0.1f
#define EXCORSANT_GOODIE_COUNT 3

static const Rectangle EXCORSANT_ACT_RECTANGLE =
{
	.x = 80,
	.y = 80,
	.w = 1820,
	.h = 930
};

static const ivec2 EXCORSANT_FRAME_SIZE = {512, 512};
static const ivec2 EXCORSANT_ATLAS_SIZE = {1, 1};
static const vec2 EXCORSANT_SIZE = {100.0f, 100.0f};
static const vec2 EXCORSANT_PHYSICS_SIZE = {60.0f, 20.0f};

void entity_excorsant_init(ECS* ecs, u32 id, vec3 position, u32 targetID, u32 level, Vector* entityList);
