7 using namespace bl::gui;
13 LightSlider::LightSlider(
const std::string& p,
const ChangeCb& cb)
14 : Box(LinePacker::create(LinePacker::Horizontal, 4.f)) {
15 Box::Ptr col = Box::create(LinePacker::create(LinePacker::Vertical, 2.f));
16 Box::Ptr row = Box::create(LinePacker::create(LinePacker::Horizontal, 0.f));
17 row->pack(Label::create(
"Dark"),
false,
true);
18 prompt = Label::create(p);
19 row->pack(prompt,
true,
true);
20 row->pack(Label::create(
"Bright"));
21 col->pack(row,
true,
false);
23 slider = Slider::create(Slider::Horizontal);
24 slider->setRequisition({125.f, 20.f});
25 slider->getSignal(Event::ValueChanged).willAlwaysCall(std::bind(cb));
26 slider->getSignal(Event::ValueChanged).willAlwaysCall([
this](
const Event&, Element*) {
29 col->pack(slider,
true,
false);
30 pack(col,
true,
false);
37 return static_cast<std::uint8_t
>(slider->getValue() * 255.f);
41 slider->setValue(
static_cast<float>(level) / 255.f,
false);
42 preview->setLightLevel(level);
All classes and functionality used for implementing the game editor.
static Ptr create(const sf::Vector2f &size)
Create a new LightPreview component.
void setLightLevel(std::uint8_t level)
Sets the selected light level.
std::shared_ptr< LightSlider > Ptr
static Ptr create(const std::string &prompt, const ChangeCb &onChange)
Create a new light level slider.
std::function< void()> ChangeCb
void setPrompt(const std::string &prompt)
Sets the text prompt that is displayed.
std::uint8_t getLightLevel() const
Returns the currently selected light level.