diff options
author | Kae <80987908+Novaenia@users.noreply.github.com> | 2023-07-21 00:58:49 +1000 |
---|---|---|
committer | Kae <80987908+Novaenia@users.noreply.github.com> | 2023-07-21 00:58:49 +1000 |
commit | 4b0bc220e4da1173f742a4973939b139bef562db (patch) | |
tree | 0ff66d5957575fa814fc10b8cd93e3dd378f45dc /source/windowing | |
parent | 607be749451aa40e3619e7ceab0927d1fcec8233 (diff) |
Support for changing the game's timescale
Context-specific (like per-world) timescales can also be added later
Diffstat (limited to 'source/windowing')
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)); } |