Веб-сайт самохостера Lotigara

summaryrefslogtreecommitdiff
path: root/source/windowing
diff options
context:
space:
mode:
authorKae <80987908+Novaenia@users.noreply.github.com>2023-07-21 00:58:49 +1000
committerKae <80987908+Novaenia@users.noreply.github.com>2023-07-21 00:58:49 +1000
commit4b0bc220e4da1173f742a4973939b139bef562db (patch)
tree0ff66d5957575fa814fc10b8cd93e3dd378f45dc /source/windowing
parent607be749451aa40e3619e7ceab0927d1fcec8233 (diff)
Support for changing the game's timescale
Context-specific (like per-world) timescales can also be added later
Diffstat (limited to 'source/windowing')
-rw-r--r--source/windowing/StarFlowLayout.cpp4
-rw-r--r--source/windowing/StarFlowLayout.hpp2
-rw-r--r--source/windowing/StarFuelWidget.cpp5
-rw-r--r--source/windowing/StarFuelWidget.hpp2
-rw-r--r--source/windowing/StarItemSlotWidget.cpp10
-rw-r--r--source/windowing/StarItemSlotWidget.hpp2
-rw-r--r--source/windowing/StarLayout.cpp4
-rw-r--r--source/windowing/StarLayout.hpp2
-rw-r--r--source/windowing/StarPane.cpp6
-rw-r--r--source/windowing/StarPane.hpp4
-rw-r--r--source/windowing/StarPaneManager.cpp6
-rw-r--r--source/windowing/StarPaneManager.hpp2
-rw-r--r--source/windowing/StarScrollArea.cpp2
-rw-r--r--source/windowing/StarScrollArea.hpp2
-rw-r--r--source/windowing/StarSliderBar.cpp4
-rw-r--r--source/windowing/StarSliderBar.hpp2
-rw-r--r--source/windowing/StarTextBoxWidget.cpp4
-rw-r--r--source/windowing/StarTextBoxWidget.hpp2
-rw-r--r--source/windowing/StarVerticalLayout.cpp10
-rw-r--r--source/windowing/StarVerticalLayout.hpp2
-rw-r--r--source/windowing/StarWidget.cpp6
-rw-r--r--source/windowing/StarWidget.hpp2
-rw-r--r--source/windowing/StarWidgetParsing.cpp2
23 files changed, 44 insertions, 43 deletions
diff --git a/source/windowing/StarFlowLayout.cpp b/source/windowing/StarFlowLayout.cpp
index 714d159..604e1d0 100644
--- a/source/windowing/StarFlowLayout.cpp
+++ b/source/windowing/StarFlowLayout.cpp
@@ -4,8 +4,8 @@ namespace Star {
FlowLayout::FlowLayout() : m_wrap(true) {}
-void FlowLayout::update() {
- Layout::update();
+void FlowLayout::update(float dt) {
+ Layout::update(dt);
int consumedWidth = 0;
int rowHeight = 0;
diff --git a/source/windowing/StarFlowLayout.hpp b/source/windowing/StarFlowLayout.hpp
index ef20e9a..86127c6 100644
--- a/source/windowing/StarFlowLayout.hpp
+++ b/source/windowing/StarFlowLayout.hpp
@@ -11,7 +11,7 @@ STAR_CLASS(FlowLayout);
class FlowLayout : public Layout {
public:
FlowLayout();
- virtual void update() override;
+ virtual void update(float dt) override;
void setSpacing(Vec2I const& spacing);
void setWrapping(bool wrap);
diff --git a/source/windowing/StarFuelWidget.cpp b/source/windowing/StarFuelWidget.cpp
index af51cb2..d7028f8 100644
--- a/source/windowing/StarFuelWidget.cpp
+++ b/source/windowing/StarFuelWidget.cpp
@@ -21,9 +21,8 @@ FuelWidget::FuelWidget() {
disableScissoring();
}
-void FuelWidget::update() {
- m_pingTimeout -= WorldTimestep;
- if (m_pingTimeout < 0)
+void FuelWidget::update(float dt) {
+ if ((m_pingTimeout -= dt) < 0)
m_pingTimeout = 0;
}
diff --git a/source/windowing/StarFuelWidget.hpp b/source/windowing/StarFuelWidget.hpp
index 8d3482a..3a7f506 100644
--- a/source/windowing/StarFuelWidget.hpp
+++ b/source/windowing/StarFuelWidget.hpp
@@ -12,7 +12,7 @@ public:
FuelWidget();
virtual ~FuelWidget() {}
- virtual void update();
+ virtual void update(float dt);
void setCurrentFuelLevel(float amount);
void setMaxFuelLevel(float amount);
diff --git a/source/windowing/StarItemSlotWidget.cpp b/source/windowing/StarItemSlotWidget.cpp
index cc9ff50..4d67175 100644
--- a/source/windowing/StarItemSlotWidget.cpp
+++ b/source/windowing/StarItemSlotWidget.cpp
@@ -56,8 +56,12 @@ ItemSlotWidget::ItemSlotWidget(ItemPtr const& item, String const& backingImage)
disableScissoring();
}
-void ItemSlotWidget::update() {
- Widget::update();
+void ItemSlotWidget::update(float dt) {
+ if (m_item)
+ m_newItemIndicator.update(dt);
+ if (m_highlightEnabled)
+ m_highlightAnimation.update(dt);
+ Widget::update(dt);
}
bool ItemSlotWidget::sendEvent(InputEvent const& event) {
@@ -159,7 +163,6 @@ void ItemSlotWidget::renderImpl() {
for (auto i : iconDrawables)
context()->drawInterfaceDrawable(i, Vec2F(screenPosition() + size() / 2));
- m_newItemIndicator.update(WorldTimestep);
if (!m_newItemIndicator.isComplete())
context()->drawInterfaceDrawable(m_newItemIndicator.drawable(1.0), Vec2F(screenPosition() + size() / 2), Color::White.toRgba());
@@ -195,7 +198,6 @@ void ItemSlotWidget::renderImpl() {
}
if (m_highlightEnabled) {
- m_highlightAnimation.update(WorldTimestep);
context()->drawInterfaceDrawable(m_highlightAnimation.drawable(1.0), Vec2F(screenPosition() + size() / 2), Color::White.toRgba());
}
diff --git a/source/windowing/StarItemSlotWidget.hpp b/source/windowing/StarItemSlotWidget.hpp
index 31df876..2e1b69a 100644
--- a/source/windowing/StarItemSlotWidget.hpp
+++ b/source/windowing/StarItemSlotWidget.hpp
@@ -16,7 +16,7 @@ class ItemSlotWidget : public Widget {
public:
ItemSlotWidget(ItemPtr const& item, String const& backingImage);
- virtual void update() override;
+ virtual void update(float dt) override;
bool sendEvent(InputEvent const& event) override;
void setCallback(WidgetCallbackFunc callback);
void setRightClickCallback(WidgetCallbackFunc callback);
diff --git a/source/windowing/StarLayout.cpp b/source/windowing/StarLayout.cpp
index fb8a8fd..b404f12 100644
--- a/source/windowing/StarLayout.cpp
+++ b/source/windowing/StarLayout.cpp
@@ -6,8 +6,8 @@ Layout::Layout() {
markAsContainer();
}
-void Layout::update() {
- Widget::update();
+void Layout::update(float dt) {
+ Widget::update(dt);
}
}
diff --git a/source/windowing/StarLayout.hpp b/source/windowing/StarLayout.hpp
index f199891..6fc68da 100644
--- a/source/windowing/StarLayout.hpp
+++ b/source/windowing/StarLayout.hpp
@@ -8,7 +8,7 @@ namespace Star {
class Layout : public Widget {
public:
Layout();
- virtual void update() override;
+ virtual void update(float dt) override;
};
}
diff --git a/source/windowing/StarPane.cpp b/source/windowing/StarPane.cpp
index 04739cb..cac12a1 100644
--- a/source/windowing/StarPane.cpp
+++ b/source/windowing/StarPane.cpp
@@ -191,10 +191,10 @@ Pane* Pane::window() {
return this;
}
-void Pane::update() {
+void Pane::update(float dt) {
if (m_visible) {
for (auto const& widget : m_members) {
- widget->update();
+ widget->update(dt);
if ((m_focusWidget == widget) != widget->hasFocus()) {
m_focusWidget.reset();
widget->blur();
@@ -203,7 +203,7 @@ void Pane::update() {
}
}
-void Pane::tick() {
+void Pane::tick(float dt) {
m_playingSounds.filter([](pair<String, AudioInstancePtr> const& p) {
return p.second->finished() == false;
});
diff --git a/source/windowing/StarPane.hpp b/source/windowing/StarPane.hpp
index 7a466b4..3a20ce0 100644
--- a/source/windowing/StarPane.hpp
+++ b/source/windowing/StarPane.hpp
@@ -52,8 +52,8 @@ public:
virtual void removeFocus(Widget const* focus);
virtual void removeFocus();
- virtual void update();
- virtual void tick();
+ virtual void update(float dt);
+ virtual void tick(float dt);
bool dragActive() const;
Vec2I dragMouseOrigin() const;
diff --git a/source/windowing/StarPaneManager.cpp b/source/windowing/StarPaneManager.cpp
index ff0341f..f34c786 100644
--- a/source/windowing/StarPaneManager.cpp
+++ b/source/windowing/StarPaneManager.cpp
@@ -244,7 +244,7 @@ void PaneManager::render() {
m_prevInterfaceScale = m_context->interfaceScale();
}
-void PaneManager::update() {
+void PaneManager::update(float dt) {
m_tooltipShowTimer -= WorldTimestep;
if (m_tooltipShowTimer < 0 && !m_activeTooltip) {
if (auto parentPane = getPaneAt(m_tooltipLastMousePos)) {
@@ -287,9 +287,9 @@ void PaneManager::update() {
for (auto const& layerPair : reverseIterate(m_displayedPanes)) {
for (auto const& panePair : reverseIterate(layerPair.second)) {
- panePair.first->tick();
+ panePair.first->tick(dt);
if (panePair.first->active())
- panePair.first->update();
+ panePair.first->update(dt);
}
}
}
diff --git a/source/windowing/StarPaneManager.hpp b/source/windowing/StarPaneManager.hpp
index cdc6901..8adf772 100644
--- a/source/windowing/StarPaneManager.hpp
+++ b/source/windowing/StarPaneManager.hpp
@@ -72,7 +72,7 @@ public:
bool sendInputEvent(InputEvent const& event);
void render();
- void update();
+ void update(float dt);
private:
Vec2I windowSize() const;
diff --git a/source/windowing/StarScrollArea.cpp b/source/windowing/StarScrollArea.cpp
index d9f537a..4cd2ba6 100644
--- a/source/windowing/StarScrollArea.cpp
+++ b/source/windowing/StarScrollArea.cpp
@@ -384,7 +384,7 @@ bool ScrollArea::sendEvent(InputEvent const& event) {
return true;
}
-void ScrollArea::update() {
+void ScrollArea::update(float dt) {
if (!m_visible)
return;
diff --git a/source/windowing/StarScrollArea.hpp b/source/windowing/StarScrollArea.hpp
index 5e7cb7a..1500744 100644
--- a/source/windowing/StarScrollArea.hpp
+++ b/source/windowing/StarScrollArea.hpp
@@ -100,7 +100,7 @@ public:
void setVerticalScroll(bool vertical);
virtual bool sendEvent(InputEvent const& event) override;
- virtual void update() override;
+ virtual void update(float dt) override;
protected:
void drawChildren() override;
diff --git a/source/windowing/StarSliderBar.cpp b/source/windowing/StarSliderBar.cpp
index e25ed4f..209c325 100644
--- a/source/windowing/StarSliderBar.cpp
+++ b/source/windowing/StarSliderBar.cpp
@@ -126,7 +126,7 @@ void SliderBarWidget::setCallback(WidgetCallbackFunc callback) {
m_callback = callback;
}
-void SliderBarWidget::update() {
+void SliderBarWidget::update(float dt) {
float gridLow = m_grid->position()[0];
float gridHigh = gridLow + m_grid->size()[0];
@@ -145,7 +145,7 @@ void SliderBarWidget::update() {
m_updateJog = false;
}
- Widget::update();
+ Widget::update(dt);
}
bool SliderBarWidget::sendEvent(InputEvent const& event) {
diff --git a/source/windowing/StarSliderBar.hpp b/source/windowing/StarSliderBar.hpp
index ec298c6..9555331 100644
--- a/source/windowing/StarSliderBar.hpp
+++ b/source/windowing/StarSliderBar.hpp
@@ -24,7 +24,7 @@ public:
void setCallback(WidgetCallbackFunc callback);
- virtual void update() override;
+ virtual void update(float dt) override;
virtual bool sendEvent(InputEvent const& event) override;
diff --git a/source/windowing/StarTextBoxWidget.cpp b/source/windowing/StarTextBoxWidget.cpp
index bc64d37..28d8f8b 100644
--- a/source/windowing/StarTextBoxWidget.cpp
+++ b/source/windowing/StarTextBoxWidget.cpp
@@ -124,8 +124,8 @@ int TextBoxWidget::getCursorOffset() { // horizontal only
}
}
-void TextBoxWidget::update() {
- Widget::update();
+void TextBoxWidget::update(float dt) {
+ Widget::update(dt);
if (m_repeatCode != SpecialRepeatKeyCodes::None) {
if (Time::monotonicMilliseconds() >= m_repeatKeyThreshold) {
m_repeatKeyThreshold += 50;
diff --git a/source/windowing/StarTextBoxWidget.hpp b/source/windowing/StarTextBoxWidget.hpp
index b075e6b..a2ed8f7 100644
--- a/source/windowing/StarTextBoxWidget.hpp
+++ b/source/windowing/StarTextBoxWidget.hpp
@@ -12,7 +12,7 @@ class TextBoxWidget : public Widget {
public:
TextBoxWidget(String const& startingText, String const& hint, WidgetCallbackFunc callback);
- virtual void update() override;
+ virtual void update(float dt) override;
String getText() const;
bool setText(String const& text, bool callback = true);
diff --git a/source/windowing/StarVerticalLayout.cpp b/source/windowing/StarVerticalLayout.cpp
index d421a29..412fce0 100644
--- a/source/windowing/StarVerticalLayout.cpp
+++ b/source/windowing/StarVerticalLayout.cpp
@@ -9,7 +9,7 @@ VerticalLayout::VerticalLayout(VerticalAnchor verticalAnchor, int verticalSpacin
disableScissoring();
}
-void VerticalLayout::update() {
+void VerticalLayout::update(float dt) {
m_size = Vec2I(0, 0);
if (m_members.empty())
@@ -64,22 +64,22 @@ RectI VerticalLayout::relativeBoundRect() const {
void VerticalLayout::setHorizontalAnchor(HorizontalAnchor horizontalAnchor) {
m_horizontalAnchor = horizontalAnchor;
- update();
+ update(0);
}
void VerticalLayout::setVerticalAnchor(VerticalAnchor verticalAnchor) {
m_verticalAnchor = verticalAnchor;
- update();
+ update(0);
}
void VerticalLayout::setVerticalSpacing(int verticalSpacing) {
m_verticalSpacing = verticalSpacing;
- update();
+ update(0);
}
void VerticalLayout::setFillDown(bool fillDown) {
m_fillDown = fillDown;
- update();
+ update(0);
}
RectI VerticalLayout::contentBoundRect() const {
diff --git a/source/windowing/StarVerticalLayout.hpp b/source/windowing/StarVerticalLayout.hpp
index 70be40b..b46ce17 100644
--- a/source/windowing/StarVerticalLayout.hpp
+++ b/source/windowing/StarVerticalLayout.hpp
@@ -11,7 +11,7 @@ class VerticalLayout : public Layout {
public:
VerticalLayout(VerticalAnchor verticalAnchor = VerticalAnchor::TopAnchor, int verticalSpacing = 0);
- void update() override;
+ void update(float dt) override;
Vec2I size() const override;
RectI relativeBoundRect() const override;
diff --git a/source/windowing/StarWidget.cpp b/source/windowing/StarWidget.cpp
index 518b922..48b945f 100644
--- a/source/windowing/StarWidget.cpp
+++ b/source/windowing/StarWidget.cpp
@@ -20,9 +20,9 @@ Widget::~Widget() {
removeAllChildren();
}
-void Widget::update() {
- for (auto widget : m_members)
- widget->update();
+void Widget::update(float dt) {
+ for (auto& widget : m_members)
+ widget->update(dt);
}
GuiContext* Widget::context() const {
diff --git a/source/windowing/StarWidget.hpp b/source/windowing/StarWidget.hpp
index 84fada5..a9ea4ac 100644
--- a/source/windowing/StarWidget.hpp
+++ b/source/windowing/StarWidget.hpp
@@ -30,7 +30,7 @@ public:
Widget& operator=(Widget const&) = delete;
virtual void render(RectI const& region) final;
- virtual void update();
+ virtual void update(float dt);
GuiContext* context() const;
diff --git a/source/windowing/StarWidgetParsing.cpp b/source/windowing/StarWidgetParsing.cpp
index 9afb825..b45294b 100644
--- a/source/windowing/StarWidgetParsing.cpp
+++ b/source/windowing/StarWidgetParsing.cpp
@@ -694,7 +694,7 @@ WidgetConstructResult WidgetParser::layoutHandler(String const& name, Json const
common(widget, config);
if (config.contains("children"))
constructImpl(config.get("children"), widget.get());
- widget->update();
+ widget->update(0);
return WidgetConstructResult(widget, name, config.getFloat("zlevel", 0));
}