52 lines
1.2 KiB
C
52 lines
1.2 KiB
C
#pragma once
|
|
|
|
#include "../visual/component_texture_quad.h"
|
|
#include "../physics/component_physics.h"
|
|
|
|
#include "../../entity/utility/entity_timer.h"
|
|
|
|
#define BUTTON_STATE_COUNT BUTTON_STATE_PRESSED + 1
|
|
typedef enum ButtonState
|
|
{
|
|
BUTTON_STATE_NONE,
|
|
BUTTON_STATE_HOVER,
|
|
BUTTON_STATE_PRESSED
|
|
} ButtonState;
|
|
|
|
typedef struct ComponentButton
|
|
{
|
|
Component component;
|
|
ButtonState state;
|
|
bool isJustPressed;
|
|
} ComponentButton;
|
|
|
|
void component_button_add(ComponentButton* self, ECS* ecs);
|
|
void component_button_tick(ComponentButton* self, ECS* ecs);
|
|
|
|
#define COMPONENT_BUTTON_DEPENDENCY_COUNT 1
|
|
static const ComponentType COMPONENT_BUTTON_DEPENDENCIES[COMPONENT_BUTTON_DEPENDENCY_COUNT] =
|
|
{
|
|
COMPONENT_TEXTURE_QUAD
|
|
};
|
|
|
|
static const ComponentInfo COMPONENT_BUTTON_INFO =
|
|
{
|
|
.system =
|
|
{
|
|
.functions =
|
|
{
|
|
(ECSFunction)component_button_add,
|
|
NULL,
|
|
(ECSFunction)component_button_tick,
|
|
NULL,
|
|
NULL
|
|
}
|
|
},
|
|
.type = COMPONENT_BUTTON,
|
|
.size = sizeof(ComponentButton)
|
|
};
|
|
|
|
static const vec4 COMPONENT_BUTTON_STATE_NONE_COLOR = {1.0f, 1.0f, 1.0f, 1.0f};
|
|
static const vec4 COMPONENT_BUTTON_STATE_HOVER_COLOR = {0.75f, 0.75f, 0.75f, 1.0f};
|
|
static const vec4 COMPONENT_BUTTON_STATE_PRESSED_COLOR = {0.5f, 0.5f, 0.5f, 1.0f};
|