#pragma once

#include "../../component/action/component_action_on_combat_hide.h"
#include "../../component/animation/component_animation_squash.h"
#include "../../component/animation/component_animation_stretch.h"
#include "../../component/component_game_object.h"
#include "../../component/stat/component_fatness.h"
#include "../../component/stat/component_game_entity_type.h"
#include "../../component/stat/component_goodies.h"
#include "../../component/component_circle_collision.h"
#include "../../component/stat/component_shop.h"
#include "../../ecs_component.h"

#include "entity_elemental_goodie_display.h"

#define ELEMENTAL_FRICTION 1
#define ELEMENTAL_VELOCITY_MAX 0
#define ELEMENTAL_GAME_OBJECT_IS_BOUNCE false
#define ELEMENTAL_GAME_OBJECT_IS_AFFECTED_BY_GRAVITY false
#define ELEMENTAL_GAME_OBJECT_IS_SOLID true
#define ELEMENTAL_ACTION_ON_COMBAT_HIDE_TIMER 60
#define ELEMENTAL_ANIMATION_SQUASH_BASE 1.0f
#define ELEMENTAL_ANIMATION_SQUASH_MULTIPLIER 0.05f
#define ELEMENTAL_ANIMATION_SQUASH_SPEED 0.05f
#define ELEMENTAL_ANIMATION_STRETCH_BASE 1.0f
#define ELEMENTAL_ANIMATION_STRETCH_MULTIPLIER 0.05f
#define ELEMENTAL_ANIMATION_STRETCH_SPEED 0.05f
#define ELEMENTAL_GOODIES_MAX 1000000
#define ELEMENTAL_CIRCLE_RADIUS 300.0f

static const ivec2 ELEMENTAL_FRAME_SIZE = {512, 512};
static const ivec2 ELEMENTAL_ATLAS_SIZE = {1, 1};
static const vec2 ELEMENTAL_SIZE = {75.0f, 150.0f};
static const vec2 ELEMENTAL_PHYSICS_SIZE = {60.0f, 20.0f};

void entity_elemental_init(ECS* ecs, u32 id, vec3 position, u32 spawnID, u32 playerID);
