Some more fixes

This commit is contained in:
Federico Cecchetto 2021-09-13 22:34:41 +02:00
parent bd3cdbb23d
commit 192df6edc4
2 changed files with 75 additions and 58 deletions

View File

@ -262,58 +262,65 @@ namespace ui_scripting
{
check_resize();
const auto background_material = game::Material_RegisterHandle(this->material.data());
draw_image(
relative(this->x) + relative(this->border_width[3]),
relative(this->y) + relative(this->border_width[0]),
relative(this->w),
relative(this->h),
(float*)this->slice,
(float*)this->background_color,
background_material
);
if (this->background_color[3] > 0)
{
const auto background_material = game::Material_RegisterHandle(this->material.data());
const auto _border_material = game::Material_RegisterHandle(this->border_material.data());
draw_image(
relative(this->x) + relative(this->border_width[3]),
relative(this->y) + relative(this->border_width[0]),
relative(this->w),
relative(this->h),
(float*)this->slice,
(float*)this->background_color,
background_material
);
}
draw_image(
relative(this->x),
relative(this->y),
relative(this->w) + relative(this->border_width[1]) + relative(this->border_width[3]),
relative(this->border_width[0]),
(float*)this->slice,
(float*)this->border_color,
_border_material
);
if (this->border_color[3] > 0)
{
const auto _border_material = game::Material_RegisterHandle(this->border_material.data());
draw_image(
relative(this->x) + relative(this->border_width[3]) + relative(this->w),
relative(this->y) + relative(this->border_width[0]),
relative(this->border_width[1]),
relative(this->h),
(float*)this->slice,
(float*)this->border_color,
_border_material
);
draw_image(
relative(this->x),
relative(this->y),
relative(this->w) + relative(this->border_width[1]) + relative(this->border_width[3]),
relative(this->border_width[0]),
(float*)this->slice,
(float*)this->border_color,
_border_material
);
draw_image(
relative(this->x),
relative(this->y) + relative(this->h) + relative(this->border_width[0]),
relative(this->w) + relative(this->border_width[1]) + relative(this->border_width[3]),
relative(this->border_width[2]),
(float*)this->slice,
(float*)this->border_color,
_border_material
);
draw_image(
relative(this->x) + relative(this->border_width[3]) + relative(this->w),
relative(this->y) + relative(this->border_width[0]),
relative(this->border_width[1]),
relative(this->h),
(float*)this->slice,
(float*)this->border_color,
_border_material
);
draw_image(
relative(this->x),
relative(this->y) + relative(this->border_width[0]),
relative(this->border_width[3]),
relative(this->h),
(float*)this->slice,
(float*)this->border_color,
_border_material
);
draw_image(
relative(this->x),
relative(this->y) + relative(this->h) + relative(this->border_width[0]),
relative(this->w) + relative(this->border_width[1]) + relative(this->border_width[3]),
relative(this->border_width[2]),
(float*)this->slice,
(float*)this->border_color,
_border_material
);
draw_image(
relative(this->x),
relative(this->y) + relative(this->border_width[0]),
relative(this->border_width[3]),
relative(this->h),
(float*)this->slice,
(float*)this->border_color,
_border_material
);
}
if (!this->text.empty())
{

View File

@ -2,6 +2,8 @@
#include "engine.hpp"
#include "context.hpp"
#include "../../../component/scheduler.hpp"
#include <utils/io.hpp>
#include <utils/string.hpp>
@ -216,6 +218,11 @@ namespace ui_scripting::lua::engine
std::vector<element*> previous_elements;
void handle_mousemove_event(const int x, const int y)
{
if (mouse[0] == x && mouse[1] == y)
{
return;
}
mouse[0] = x;
mouse[1] = y;
@ -371,20 +378,23 @@ namespace ui_scripting::lua::engine
void ui_event(const std::string& type, const std::vector<int>& arguments)
{
if (type == "key")
::scheduler::once([type, arguments]()
{
handle_key_event(arguments[0], arguments[1]);
}
if (type == "key")
{
handle_key_event(arguments[0], arguments[1]);
}
if (type == "char")
{
handle_char_event(arguments[0]);
}
if (type == "char")
{
handle_char_event(arguments[0]);
}
if (type == "mousemove")
{
handle_mousemove_event(relative_mouse(arguments[0]), relative_mouse(arguments[1]));
}
if (type == "mousemove")
{
handle_mousemove_event(relative_mouse(arguments[0]), relative_mouse(arguments[1]));
}
}, ::scheduler::pipeline::renderer);
}
void notify(const event& e)