diff --git a/src/gui/console/ConsoleView.cpp b/src/gui/console/ConsoleView.cpp index f8b8fb415..97305f66c 100644 --- a/src/gui/console/ConsoleView.cpp +++ b/src/gui/console/ConsoleView.cpp @@ -116,7 +116,7 @@ void ConsoleView::OnDraw() g->BlendLine(Position + Vec2{ 0, Size.Y }, Position + Size, 0xFFFFFF_rgb .WithAlpha(200)); } -void ConsoleView::OnTick(float dt) +void ConsoleView::OnTick() { if (doClose) { diff --git a/src/gui/console/ConsoleView.h b/src/gui/console/ConsoleView.h index 4fae3262f..07cb9552e 100644 --- a/src/gui/console/ConsoleView.h +++ b/src/gui/console/ConsoleView.h @@ -21,7 +21,7 @@ class ConsoleView: public ui::Window public: ConsoleView(); void OnDraw() override; - void OnTick(float dt) override; + void OnTick() override; void DoKeyPress(int key, int scan, bool repeat, bool shift, bool ctrl, bool alt) override; void DoTextInput(String text) override; void AttachController(ConsoleController * c_) { c = c_; } diff --git a/src/gui/elementsearch/ElementSearchActivity.cpp b/src/gui/elementsearch/ElementSearchActivity.cpp index 2e0dfa2c1..bec92e05c 100644 --- a/src/gui/elementsearch/ElementSearchActivity.cpp +++ b/src/gui/elementsearch/ElementSearchActivity.cpp @@ -24,7 +24,6 @@ ElementSearchActivity::ElementSearchActivity(GameController * gameController, st gameController(gameController), tools(tools), toolTip(""), - toolTipPresence(0), shiftPressed(false), ctrlPressed(false), altPressed(false), @@ -231,22 +230,17 @@ void ElementSearchActivity::OnDraw() } } -void ElementSearchActivity::OnTick(float dt) +void ElementSearchActivity::OnTick() { if (exit) Exit(); + if (isToolTipFadingIn) { isToolTipFadingIn = false; - if (toolTipPresence < 120) - toolTipPresence += int(dt*2)>1?int(dt*2):2; - } - else if (toolTipPresence>0) - { - toolTipPresence -= int(dt)>0?int(dt):1; - if (toolTipPresence<0) - toolTipPresence = 0; + toolTipPresence.MarkGoingUpwardThisTick(); } + toolTipPresence.Tick(); } void ElementSearchActivity::OnKeyPress(int key, int scan, bool repeat, bool shift, bool ctrl, bool alt) diff --git a/src/gui/elementsearch/ElementSearchActivity.h b/src/gui/elementsearch/ElementSearchActivity.h index 004f67abf..b830eb496 100644 --- a/src/gui/elementsearch/ElementSearchActivity.h +++ b/src/gui/elementsearch/ElementSearchActivity.h @@ -2,6 +2,7 @@ #include "Activity.h" #include "common/String.h" #include "gui/interface/Point.h" +#include "gui/interface/Fade.h" #include class Tool; @@ -23,7 +24,7 @@ class ElementSearchActivity: public WindowActivity std::vector toolButtons; ui::ScrollPanel *scrollPanel = nullptr; String toolTip; - int toolTipPresence; + ui::Fade toolTipPresence{ 0, 0, 120, 120, 60, 1000 }; bool shiftPressed; bool ctrlPressed; bool altPressed; @@ -36,7 +37,7 @@ public: ElementSearchActivity(GameController * gameController, std::vector tools); void SetActiveTool(int selectionState, Tool * tool); virtual ~ElementSearchActivity(); - void OnTick(float dt) override; + void OnTick() override; void OnKeyPress(int key, int scan, bool repeat, bool shift, bool ctrl, bool alt) override; void OnKeyRelease(int key, int scan, bool repeat, bool shift, bool ctrl, bool alt) override; void OnDraw() override; diff --git a/src/gui/filebrowser/FileBrowserActivity.cpp b/src/gui/filebrowser/FileBrowserActivity.cpp index 341229385..820bfb8dd 100644 --- a/src/gui/filebrowser/FileBrowserActivity.cpp +++ b/src/gui/filebrowser/FileBrowserActivity.cpp @@ -259,7 +259,7 @@ void FileBrowserActivity::NotifyStatus(Task * task) } -void FileBrowserActivity::OnTick(float dt) +void FileBrowserActivity::OnTick() { if(loadFiles) loadFiles->Poll(); @@ -283,7 +283,7 @@ void FileBrowserActivity::OnTick(float dt) ui::Point(buttonWidth, buttonHeight), saveFile.get()); saveButton->AddContextMenu(1); - saveButton->Tick(dt); + saveButton->Tick(); saveButton->SetActionCallback({ [this, i] { SelectSave(i); }, [this, i] { RenameSave(i); }, diff --git a/src/gui/filebrowser/FileBrowserActivity.h b/src/gui/filebrowser/FileBrowserActivity.h index 7f34b7acb..19fe1c594 100644 --- a/src/gui/filebrowser/FileBrowserActivity.h +++ b/src/gui/filebrowser/FileBrowserActivity.h @@ -48,7 +48,7 @@ public: virtual ~FileBrowserActivity(); void OnDraw() override; - void OnTick(float dt) override; + void OnTick() override; void OnTryExit(ExitMethod method) override; void OnMouseDown(int x, int y, unsigned button) override; void loadDirectory(ByteString directory, ByteString search); diff --git a/src/gui/game/GameView.cpp b/src/gui/game/GameView.cpp index a0a5ec6bf..bbb0dc4ab 100644 --- a/src/gui/game/GameView.cpp +++ b/src/gui/game/GameView.cpp @@ -185,16 +185,12 @@ GameView::GameView(): currentSaveType(0), lastMenu(-1), - toolTipPresence(0), toolTip(""), isToolTipFadingIn(false), toolTipPosition(-1, -1), - infoTipPresence(0), infoTip(""), - buttonTipShow(0), buttonTip(""), isButtonTipFadingIn(false), - introText(2048), introTextMessage(IntroText().FromUtf8()), doScreenshot(false), @@ -1728,7 +1724,7 @@ void GameView::SkipIntroText() introText = 0; } -void GameView::OnTick(float dt) +void GameView::OnTick() { if (selectMode == PlaceSave && !placeSaveThumb) selectMode = SelectNone; @@ -1786,50 +1782,20 @@ void GameView::OnTick(float dt) } } - if(introText) - { - introText -= int(dt)>0?(int(dt) < 5? int(dt):5):1; - if(introText < 0) - introText = 0; - } - if(infoTipPresence>0) - { - infoTipPresence -= int(dt)>0?int(dt):1; - if(infoTipPresence<0) - infoTipPresence = 0; - } + introText.Tick(); + infoTipPresence.Tick(); if (isButtonTipFadingIn || (selectMode != PlaceSave && selectMode != SelectNone)) { isButtonTipFadingIn = false; - if(buttonTipShow < 120) - { - buttonTipShow += int(dt*2)>0?int(dt*2):1; - if(buttonTipShow>120) - buttonTipShow = 120; - } - } - else if(buttonTipShow>0) - { - buttonTipShow -= int(dt)>0?int(dt):1; - if(buttonTipShow<0) - buttonTipShow = 0; + buttonTipShow.MarkGoingUpwardThisTick(); } + buttonTipShow.Tick(); if (isToolTipFadingIn) { isToolTipFadingIn = false; - if(toolTipPresence < 120) - { - toolTipPresence += int(dt*2)>0?int(dt*2):1; - if(toolTipPresence>120) - toolTipPresence = 120; - } - } - else if(toolTipPresence>0) - { - toolTipPresence -= int(dt)>0?int(dt):1; - if(toolTipPresence<0) - toolTipPresence = 0; + toolTipPresence.MarkGoingUpwardThisTick(); } + toolTipPresence.Tick(); } void GameView::OnSimTick() @@ -2639,7 +2605,7 @@ void GameView::OnDraw() //Tooltips if(infoTipPresence) { - int infoTipAlpha = (infoTipPresence>50?50:infoTipPresence)*5; + int infoTipAlpha = (infoTipPresence>50?50:int(infoTipPresence))*5; g->BlendTextOutline({ (XRES - (Graphics::TextSize(infoTip).X - 1)) / 2, YRES / 2 - 2 }, infoTip, 0xFFFFFF_rgb .WithAlpha(infoTipAlpha)); } diff --git a/src/gui/game/GameView.h b/src/gui/game/GameView.h index 50a9b065d..088ec88db 100644 --- a/src/gui/game/GameView.h +++ b/src/gui/game/GameView.h @@ -1,6 +1,7 @@ #pragma once #include "common/String.h" #include "gui/interface/Window.h" +#include "gui/interface/Fade.h" #include "simulation/Sample.h" #include "graphics/FindingElement.h" #include "graphics/RendererFrame.h" @@ -65,16 +66,16 @@ private: int currentSaveType; int lastMenu; - int toolTipPresence; + ui::Fade toolTipPresence{ 0, 0, 120, 120, 60, 1000 }; String toolTip; bool isToolTipFadingIn; ui::Point toolTipPosition; - int infoTipPresence; + ui::Fade infoTipPresence{ 0, 0, 120, 60, 60, 1000 }; String infoTip; - int buttonTipShow; + ui::Fade buttonTipShow{ 0, 0, 120, 120, 60, 1000 }; String buttonTip; bool isButtonTipFadingIn; - int introText; + ui::Fade introText{ 2048, 0, 10000, 60, 60, 1000 }; String introTextMessage; bool doScreenshot; @@ -246,7 +247,7 @@ public: void OnMouseWheel(int x, int y, int d) override; void OnKeyPress(int key, int scan, bool repeat, bool shift, bool ctrl, bool alt) override; void OnKeyRelease(int key, int scan, bool repeat, bool shift, bool ctrl, bool alt) override; - void OnTick(float dt) override; + void OnTick() override; void OnSimTick() override; void OnDraw() override; void OnBlur() override; diff --git a/src/gui/interface/AvatarButton.cpp b/src/gui/interface/AvatarButton.cpp index 2d3369095..16d96fe38 100644 --- a/src/gui/interface/AvatarButton.cpp +++ b/src/gui/interface/AvatarButton.cpp @@ -19,7 +19,7 @@ AvatarButton::AvatarButton(Point position, Point size, ByteString username, int } -void AvatarButton::Tick(float dt) +void AvatarButton::Tick() { if (!avatar && !tried && name.size() > 0) { diff --git a/src/gui/interface/AvatarButton.h b/src/gui/interface/AvatarButton.h index 7b9d67f44..f6c405765 100644 --- a/src/gui/interface/AvatarButton.h +++ b/src/gui/interface/AvatarButton.h @@ -38,7 +38,7 @@ public: void OnContextMenuAction(int item) override; void Draw(const Point& screenPos) override; - void Tick(float dt) override; + void Tick() override; void DoAction(); diff --git a/src/gui/interface/Component.cpp b/src/gui/interface/Component.cpp index 20810978c..9cf1fd4c3 100644 --- a/src/gui/interface/Component.cpp +++ b/src/gui/interface/Component.cpp @@ -157,7 +157,7 @@ void Component::Draw(const Point& screenPos) drawn = true; } -void Component::Tick(float dt) +void Component::Tick() { } diff --git a/src/gui/interface/Component.h b/src/gui/interface/Component.h index 0b6ff2a6e..12e99f47c 100644 --- a/src/gui/interface/Component.h +++ b/src/gui/interface/Component.h @@ -69,10 +69,8 @@ namespace ui /// // Called: Every tick. - // Params: - // dt: The change in time. /// - virtual void Tick(float dt); + virtual void Tick(); /// // Called: When ready to draw. diff --git a/src/gui/interface/Engine.cpp b/src/gui/interface/Engine.cpp index 058445366..f0ee0a932 100644 --- a/src/gui/interface/Engine.cpp +++ b/src/gui/interface/Engine.cpp @@ -17,7 +17,7 @@ Engine::Engine(): windowTargetPosition(0, 0), FastQuit(1), GlobalQuit(true), - lastTick(0), + lastTick(Platform::GetTime()), mouseb_(0), mousex_(0), mousey_(0), diff --git a/src/gui/interface/Fade.cpp b/src/gui/interface/Fade.cpp new file mode 100644 index 000000000..0e8d0cf36 --- /dev/null +++ b/src/gui/interface/Fade.cpp @@ -0,0 +1,54 @@ +#include "Fade.h" +#include "Engine.h" +#include + +namespace ui +{ + constexpr int64_t bias = 1000; + + void Fade::SetRange(int newMinValue, int newMaxValue) + { + minValueBiased = int64_t(newMinValue) * bias; + maxValueBiased = int64_t(newMaxValue) * bias; + SetValue(newMinValue); + } + + void Fade::SetRateOfChange(int changeUpward, int changeDownward, int ticks) + { + changeUpwardBiased = changeUpward * bias / ticks; + changeDownwardBiased = changeDownward * bias / ticks; + } + + void Fade::MarkGoingUpwardThisTick() + { + goingUpwardThisTick = true; + } + + void Fade::Tick() + { + auto nextGoingUpward = goingUpwardThisTick; + goingUpwardThisTick = false; + if (goingUpward != nextGoingUpward) + { + SetValue(GetValue()); + goingUpward = nextGoingUpward; + } + } + + void Fade::SetValue(int newValue) + { + uint64_t now = Engine::Ref().LastTick(); + referenceValueBiased = newValue * bias; + referenceTime = now; + } + + int Fade::GetValue() const + { + uint64_t now = Engine::Ref().LastTick(); + auto minValueNow = goingUpward ? referenceValueBiased : minValueBiased; + auto maxValueNow = goingUpward ? maxValueBiased : referenceValueBiased; + auto changeNow = goingUpward ? changeUpwardBiased : changeDownwardBiased; + auto diff = std::min(int64_t(now - referenceTime), (maxValueNow - minValueNow) / changeNow); + return int(goingUpward ? (minValueNow + changeNow * diff) : (maxValueNow - changeNow * diff)) / bias; + } +} diff --git a/src/gui/interface/Fade.h b/src/gui/interface/Fade.h new file mode 100644 index 000000000..50cc8f640 --- /dev/null +++ b/src/gui/interface/Fade.h @@ -0,0 +1,43 @@ +#pragma once +#include + +namespace ui +{ + class Fade + { + public: + int64_t minValueBiased; // real value * 1000 + int64_t maxValueBiased; // real value * 1000 + int64_t referenceValueBiased; // real value * 1000 + int64_t changeUpwardBiased; // real value * 1000 + int64_t changeDownwardBiased; // real value * 1000 + bool goingUpwardThisTick = false; + bool goingUpward = false; + uint64_t referenceTime = 0; + + Fade(int currentValue, int minValue, int maxValue, int changeUpward, int changeDownward, int ticks) + { + SetRange(minValue, maxValue); + SetRateOfChange(changeUpward, changeDownward, ticks); + SetValue(currentValue); + } + + void SetRange(int newMinValue, int newMaxValue); + void SetRateOfChange(int changeUpward, int changeDownward, int ticks); + void MarkGoingUpwardThisTick(); // this is retained until the next Tick call + void Tick(); + void SetValue(int newValue); + int GetValue() const; + + operator int() const + { + return GetValue(); + } + + Fade &operator =(int newValue) + { + SetValue(newValue); + return *this; + } + }; +} diff --git a/src/gui/interface/Label.cpp b/src/gui/interface/Label.cpp index de8eb4e36..a9b118c0f 100644 --- a/src/gui/interface/Label.cpp +++ b/src/gui/interface/Label.cpp @@ -166,7 +166,7 @@ void Label::OnMouseMoved(int localx, int localy) } } -void Label::Tick(float dt) +void Label::Tick() { if (multiline) { diff --git a/src/gui/interface/Label.h b/src/gui/interface/Label.h index 1227a7b09..4073bcda8 100644 --- a/src/gui/interface/Label.h +++ b/src/gui/interface/Label.h @@ -63,6 +63,6 @@ namespace ui void OnMouseMoved(int localx, int localy) override; void OnKeyPress(int key, int scan, bool repeat, bool shift, bool ctrl, bool alt) override; void Draw(const Point& screenPos) override; - void Tick(float dt) override; + void Tick() override; }; } diff --git a/src/gui/interface/Panel.cpp b/src/gui/interface/Panel.cpp index 8873cd7ba..b1a7d2268 100644 --- a/src/gui/interface/Panel.cpp +++ b/src/gui/interface/Panel.cpp @@ -87,14 +87,14 @@ void Panel::Draw(const Point& screenPos) GetGraphics()->SwapClipRect(clip); // apply old cliprect } -void Panel::Tick(float dt) +void Panel::Tick() { // tick ourself first - XTick(dt); + XTick(); // tick our children for(unsigned i = 0; i < children.size(); ++i) - children[i]->Tick(dt); + children[i]->Tick(); } void Panel::OnKeyPress(int key, int scan, bool repeat, bool shift, bool ctrl, bool alt) @@ -305,7 +305,7 @@ void Panel::XDraw(const Point& screenPos) { } -void Panel::XTick(float dt) +void Panel::XTick() { } diff --git a/src/gui/interface/Panel.h b/src/gui/interface/Panel.h index 7f7f1a1ae..ced649ce0 100644 --- a/src/gui/interface/Panel.h +++ b/src/gui/interface/Panel.h @@ -47,7 +47,7 @@ namespace ui //Get child of this component by index. Component* GetChild(unsigned idx); - void Tick(float dt) override; + void Tick() override; void Draw(const Point& screenPos) override; void OnMouseHover(int localx, int localy) override; @@ -67,7 +67,7 @@ namespace ui std::vector children; // Overridable. Called by XComponent::Tick() - virtual void XTick(float dt); + virtual void XTick(); // Overridable. Called by XComponent::Draw() virtual void XDraw(const Point& screenPos); diff --git a/src/gui/interface/ProgressBar.cpp b/src/gui/interface/ProgressBar.cpp index c29c30cd6..a29dee37c 100644 --- a/src/gui/interface/ProgressBar.cpp +++ b/src/gui/interface/ProgressBar.cpp @@ -3,6 +3,7 @@ #include "graphics/Graphics.h" #include "gui/Style.h" +#include "gui/interface/Engine.h" #include @@ -73,9 +74,7 @@ void ProgressBar::Draw(const Point &screenPos) } } -void ProgressBar::Tick(float dt) +void ProgressBar::Tick() { - intermediatePos += 1.0f*dt; - if(intermediatePos>100.0f) - intermediatePos = 0.0f; + intermediatePos = std::fmod(ui::Engine::Ref().LastTick() / 600.f, 100.f); } diff --git a/src/gui/interface/ProgressBar.h b/src/gui/interface/ProgressBar.h index 68d7ccd6d..6a86e52b1 100644 --- a/src/gui/interface/ProgressBar.h +++ b/src/gui/interface/ProgressBar.h @@ -16,6 +16,6 @@ namespace ui void SetStatus(String status); String GetStatus(); void Draw(const Point & screenPos) override; - void Tick(float dt) override; + void Tick() override; }; } diff --git a/src/gui/interface/SaveButton.cpp b/src/gui/interface/SaveButton.cpp index 08167a52e..42cfab44c 100644 --- a/src/gui/interface/SaveButton.cpp +++ b/src/gui/interface/SaveButton.cpp @@ -116,7 +116,7 @@ SaveButton::~SaveButton() } } -void SaveButton::Tick(float dt) +void SaveButton::Tick() { if (!thumbnail) { diff --git a/src/gui/interface/SaveButton.h b/src/gui/interface/SaveButton.h index 2f973fb3e..aaa41e837 100644 --- a/src/gui/interface/SaveButton.h +++ b/src/gui/interface/SaveButton.h @@ -59,7 +59,7 @@ public: void OnContextMenuAction(int item) override; void Draw(const Point& screenPos) override; - void Tick(float dt) override; + void Tick() override; void SetSelected(bool selected_) { selected = selected_; } bool GetSelected() { return selected; } diff --git a/src/gui/interface/ScrollPanel.cpp b/src/gui/interface/ScrollPanel.cpp index 43d089ac7..ecac589f1 100644 --- a/src/gui/interface/ScrollPanel.cpp +++ b/src/gui/interface/ScrollPanel.cpp @@ -171,7 +171,7 @@ void ScrollPanel::XOnMouseMoved(int x, int y) } } -void ScrollPanel::XTick(float dt) +void ScrollPanel::XTick() { auto oldViewportPositionY = ViewportPosition.Y; diff --git a/src/gui/interface/ScrollPanel.h b/src/gui/interface/ScrollPanel.h index 94bbfa8d3..acb9da744 100644 --- a/src/gui/interface/ScrollPanel.h +++ b/src/gui/interface/ScrollPanel.h @@ -39,7 +39,7 @@ namespace ui void SetScrollPosition(int position); void Draw(const Point& screenPos) override; - void XTick(float dt) override; + void XTick() override; void XOnMouseWheelInside(int localx, int localy, int d) override; void XOnMouseDown(int localx, int localy, unsigned int button) override; void XOnMouseUp(int x, int y, unsigned int button) override; diff --git a/src/gui/interface/Spinner.cpp b/src/gui/interface/Spinner.cpp index 9095d2739..b3df27f6a 100644 --- a/src/gui/interface/Spinner.cpp +++ b/src/gui/interface/Spinner.cpp @@ -9,7 +9,7 @@ Spinner::Spinner(Point position, Point size): tickInternal(0) { } -void Spinner::Tick(float dt) +void Spinner::Tick() { tickInternal++; if(tickInternal == 4) diff --git a/src/gui/interface/Spinner.h b/src/gui/interface/Spinner.h index 9629ab149..d576c8408 100644 --- a/src/gui/interface/Spinner.h +++ b/src/gui/interface/Spinner.h @@ -10,7 +10,7 @@ class Spinner: public Component int tickInternal; public: Spinner(Point position, Point size); - void Tick(float dt) override; + void Tick() override; void Draw(const Point& screenPos) override; virtual ~Spinner(); }; diff --git a/src/gui/interface/Textbox.cpp b/src/gui/interface/Textbox.cpp index 50ce7ea47..17e0c8d93 100644 --- a/src/gui/interface/Textbox.cpp +++ b/src/gui/interface/Textbox.cpp @@ -247,9 +247,9 @@ bool Textbox::StringValid(String text) return true; } -void Textbox::Tick(float dt) +void Textbox::Tick() { - Label::Tick(dt); + Label::Tick(); auto tp = textPosition - Vec2{ scrollX, 0 }; if (GetParentWindow() && Visible && Enabled && IsFocused()) { diff --git a/src/gui/interface/Textbox.h b/src/gui/interface/Textbox.h index 079c09306..d47806836 100644 --- a/src/gui/interface/Textbox.h +++ b/src/gui/interface/Textbox.h @@ -51,7 +51,7 @@ public: bool CharacterValid(int character); bool StringValid(String text); - void Tick(float dt) override; + void Tick() override; void OnContextMenuAction(int item) override; void OnMouseDown(int x, int y, unsigned button) override; void OnMouseUp(int x, int y, unsigned button) override; diff --git a/src/gui/interface/Window.cpp b/src/gui/interface/Window.cpp index 3d71ade8f..29414cb96 100644 --- a/src/gui/interface/Window.cpp +++ b/src/gui/interface/Window.cpp @@ -260,13 +260,13 @@ void Window::DoTick() //tick for (int i = 0, sz = Components.size(); i < sz && !halt; ++i) { - Components[i]->Tick(dt); + Components[i]->Tick(); } halt = false; stop = false; - OnTick(dt); + OnTick(); if (destruct) finalise(); @@ -614,26 +614,9 @@ void Window::Halt() void Window::SetFps(float newFps) { fps = newFps; - if (std::holds_alternative(fpsLimit)) - { - dt = 60/fps; - } - else - { - dt = 1.0f; - } } void Window::SetFpsLimit(FpsLimit newFpsLimit) { fpsLimit = newFpsLimit; - // Populate dt with whatever that makes any sort of sense. - if (auto *explicitFpsLimit = std::get_if(&fpsLimit)) - { - SetFps(explicitFpsLimit->value); - } - else - { - SetFps(1); - } } diff --git a/src/gui/interface/Window.h b/src/gui/interface/Window.h index fd67540f6..6ff1759dc 100644 --- a/src/gui/interface/Window.h +++ b/src/gui/interface/Window.h @@ -104,7 +104,7 @@ namespace ui virtual void OnInitialized() {} virtual void OnExit() {} - virtual void OnTick(float dt) {} + virtual void OnTick() {} virtual void OnSimTick() {} virtual void OnDraw() {} virtual void OnFocus() {} @@ -134,7 +134,6 @@ namespace ui bool destruct; bool stop; - float dt; float fps; FpsLimit fpsLimit = FpsLimitFollowDraw{}; }; diff --git a/src/gui/interface/meson.build b/src/gui/interface/meson.build index 4f5a68eff..49274ba71 100644 --- a/src/gui/interface/meson.build +++ b/src/gui/interface/meson.build @@ -7,6 +7,7 @@ gui_files += files( 'CopyTextButton.cpp', 'DirectionSelector.cpp', 'DropDown.cpp', + 'Fade.cpp', 'Engine.cpp', 'Label.cpp', 'Panel.cpp', diff --git a/src/gui/localbrowser/LocalBrowserView.cpp b/src/gui/localbrowser/LocalBrowserView.cpp index 69234d03a..74a06f635 100644 --- a/src/gui/localbrowser/LocalBrowserView.cpp +++ b/src/gui/localbrowser/LocalBrowserView.cpp @@ -68,7 +68,7 @@ void LocalBrowserView::textChanged() lastChanged = GetTicks()+600; } -void LocalBrowserView::OnTick(float dt) +void LocalBrowserView::OnTick() { c->Update(); if (changed && lastChanged < GetTicks()) diff --git a/src/gui/localbrowser/LocalBrowserView.h b/src/gui/localbrowser/LocalBrowserView.h index efa7f6850..77ef84e24 100644 --- a/src/gui/localbrowser/LocalBrowserView.h +++ b/src/gui/localbrowser/LocalBrowserView.h @@ -31,7 +31,7 @@ class LocalBrowserView: public ui::Window { public: LocalBrowserView(); //virtual void OnDraw(); - void OnTick(float dt) override; + void OnTick() override; void AttachController(LocalBrowserController * c_) { c = c_; } void NotifyPageChanged(LocalBrowserModel * sender); void NotifySavesListChanged(LocalBrowserModel * sender); diff --git a/src/gui/login/LoginView.cpp b/src/gui/login/LoginView.cpp index 9ba4d4f4d..805bd493c 100644 --- a/src/gui/login/LoginView.cpp +++ b/src/gui/login/LoginView.cpp @@ -108,7 +108,7 @@ void LoginView::NotifyStatusChanged(LoginModel * sender) } } -void LoginView::OnTick(float dt) +void LoginView::OnTick() { c->Tick(); //if(targetSize != Size) diff --git a/src/gui/login/LoginView.h b/src/gui/login/LoginView.h index 68dc06399..ef86f317f 100644 --- a/src/gui/login/LoginView.h +++ b/src/gui/login/LoginView.h @@ -27,5 +27,5 @@ public: void AttachController(LoginController * c_) { c = c_; } void NotifyStatusChanged(LoginModel * sender); void OnDraw() override; - void OnTick(float dt) override; + void OnTick() override; }; diff --git a/src/gui/options/OptionsView.cpp b/src/gui/options/OptionsView.cpp index 47735f5eb..20084d8b6 100644 --- a/src/gui/options/OptionsView.cpp +++ b/src/gui/options/OptionsView.cpp @@ -574,7 +574,7 @@ void OptionsView::AttachController(OptionsController * c_) c = c_; } -void OptionsView::OnTick(float dt) +void OptionsView::OnTick() { UpdateStartupRequestStatus(); } diff --git a/src/gui/options/OptionsView.h b/src/gui/options/OptionsView.h index 1090603d0..e2ff6fe7a 100644 --- a/src/gui/options/OptionsView.h +++ b/src/gui/options/OptionsView.h @@ -58,6 +58,6 @@ public: void NotifySettingsChanged(OptionsModel * sender); void AttachController(OptionsController * c_); void OnDraw() override; - void OnTick(float dt) final override; + void OnTick() final override; void OnTryExit(ExitMethod method) override; }; diff --git a/src/gui/preview/PreviewView.cpp b/src/gui/preview/PreviewView.cpp index 113a1a8d7..c83df636c 100644 --- a/src/gui/preview/PreviewView.cpp +++ b/src/gui/preview/PreviewView.cpp @@ -363,7 +363,7 @@ void PreviewView::OnDraw() } } -void PreviewView::OnTick(float dt) +void PreviewView::OnTick() { if(addCommentBox) { diff --git a/src/gui/preview/PreviewView.h b/src/gui/preview/PreviewView.h index 69df17287..3e1a48326 100644 --- a/src/gui/preview/PreviewView.h +++ b/src/gui/preview/PreviewView.h @@ -94,7 +94,7 @@ public: void SaveLoadingError(String errorMessage); void OnDraw() override; void DoDraw() override; - void OnTick(float dt) override; + void OnTick() override; void OnTryExit(ExitMethod method) override; void OnMouseWheel(int x, int y, int d) override; void OnMouseUp(int x, int y, unsigned int button) override; diff --git a/src/gui/profile/ProfileActivity.cpp b/src/gui/profile/ProfileActivity.cpp index de02d3693..14b3b44f8 100644 --- a/src/gui/profile/ProfileActivity.cpp +++ b/src/gui/profile/ProfileActivity.cpp @@ -197,7 +197,7 @@ void ProfileActivity::setUserInfo(UserInfo newInfo) scrollPanel->InnerSize = ui::Point(Size.X, currentY); } -void ProfileActivity::OnTick(float dt) +void ProfileActivity::OnTick() { if (doError) { diff --git a/src/gui/profile/ProfileActivity.h b/src/gui/profile/ProfileActivity.h index 87db26142..11dc2e7af 100644 --- a/src/gui/profile/ProfileActivity.h +++ b/src/gui/profile/ProfileActivity.h @@ -33,7 +33,7 @@ class ProfileActivity: public WindowActivity { public: ProfileActivity(ByteString username); virtual ~ProfileActivity(); - void OnTick(float dt) override; + void OnTick() override; void OnDraw() override; void OnTryExit(ExitMethod method) override; diff --git a/src/gui/render/RenderView.cpp b/src/gui/render/RenderView.cpp index eb27cece3..4dd51ef12 100644 --- a/src/gui/render/RenderView.cpp +++ b/src/gui/render/RenderView.cpp @@ -23,7 +23,6 @@ RenderView::RenderView(): ui::Window(ui::Point(0, 0), ui::Point(XRES, WINDOWH)), ren(nullptr), toolTip(""), - toolTipPresence(0), isToolTipFadingIn(false) { auto addPresetButton = [this](int index, Icon icon, ui::Point offset, String tooltip) { @@ -213,24 +212,14 @@ void RenderView::OnDraw() } } -void RenderView::OnTick(float dt) +void RenderView::OnTick() { if (isToolTipFadingIn) { isToolTipFadingIn = false; - if(toolTipPresence < 120) - { - toolTipPresence += int(dt*2)>1?int(dt*2):2; - if(toolTipPresence > 120) - toolTipPresence = 120; - } - } - if(toolTipPresence>0) - { - toolTipPresence -= int(dt)>0?int(dt):1; - if(toolTipPresence<0) - toolTipPresence = 0; + toolTipPresence.MarkGoingUpwardThisTick(); } + toolTipPresence.Tick(); } void RenderView::OnKeyPress(int key, int scan, bool repeat, bool shift, bool ctrl, bool alt) diff --git a/src/gui/render/RenderView.h b/src/gui/render/RenderView.h index 132445065..5aa06a9a2 100644 --- a/src/gui/render/RenderView.h +++ b/src/gui/render/RenderView.h @@ -1,5 +1,6 @@ #pragma once #include "gui/interface/Window.h" +#include "gui/interface/Fade.h" #include #include @@ -19,7 +20,7 @@ class RenderView: public ui::Window { std::vector displayModes; std::vector colourModes; String toolTip; - int toolTipPresence; + ui::Fade toolTipPresence{ 0, 0, 120, 120, 60, 1000 }; bool isToolTipFadingIn; int line1, line2, line3, line4; uint32_t CalculateRenderMode(); @@ -34,7 +35,7 @@ public: void OnMouseDown(int x, int y, unsigned button) override; void OnTryExit(ExitMethod method) override; void OnDraw() override; - void OnTick(float dt) override; + void OnTick() override; void OnKeyPress(int key, int scan, bool repeat, bool shift, bool ctrl, bool alt) override; void ToolTip(ui::Point senderPosition, String toolTip) override; virtual ~RenderView(); diff --git a/src/gui/save/LocalSaveActivity.cpp b/src/gui/save/LocalSaveActivity.cpp index 4d2fc9026..46bb7421c 100644 --- a/src/gui/save/LocalSaveActivity.cpp +++ b/src/gui/save/LocalSaveActivity.cpp @@ -61,7 +61,7 @@ LocalSaveActivity::LocalSaveActivity(std::unique_ptr newSave, OnSaved } } -void LocalSaveActivity::OnTick(float dt) +void LocalSaveActivity::OnTick() { if (thumbnailRenderer) { diff --git a/src/gui/save/LocalSaveActivity.h b/src/gui/save/LocalSaveActivity.h index 76c8355ce..37f6bdc49 100644 --- a/src/gui/save/LocalSaveActivity.h +++ b/src/gui/save/LocalSaveActivity.h @@ -36,6 +36,6 @@ public: void saveWrite(ByteString finalFilename); void Save(); void OnDraw() override; - void OnTick(float dt) override; + void OnTick() override; virtual ~LocalSaveActivity(); }; diff --git a/src/gui/save/ServerSaveActivity.cpp b/src/gui/save/ServerSaveActivity.cpp index c506bcbee..394a34055 100644 --- a/src/gui/save/ServerSaveActivity.cpp +++ b/src/gui/save/ServerSaveActivity.cpp @@ -351,7 +351,7 @@ void ServerSaveActivity::CheckName(String newname) titleLabel->SetText("Upload new simulation:"); } -void ServerSaveActivity::OnTick(float dt) +void ServerSaveActivity::OnTick() { if (thumbnailRenderer) { diff --git a/src/gui/save/ServerSaveActivity.h b/src/gui/save/ServerSaveActivity.h index a46f2d132..75d164f27 100644 --- a/src/gui/save/ServerSaveActivity.h +++ b/src/gui/save/ServerSaveActivity.h @@ -45,7 +45,7 @@ public: void ShowRules(); void CheckName(String newname); virtual void OnDraw() override; - virtual void OnTick(float dt) override; + virtual void OnTick() override; virtual ~ServerSaveActivity(); protected: void AddAuthorInfo(); diff --git a/src/gui/search/SearchView.cpp b/src/gui/search/SearchView.cpp index 2f0fe602d..41a3f4c46 100644 --- a/src/gui/search/SearchView.cpp +++ b/src/gui/search/SearchView.cpp @@ -672,7 +672,7 @@ void SearchView::NotifySelectedChanged(SearchModel * sender) } } -void SearchView::OnTick(float dt) +void SearchView::OnTick() { c->Update(); if (changed && lastChanged < GetTicks()) diff --git a/src/gui/search/SearchView.h b/src/gui/search/SearchView.h index 49d55b8f8..e8a39c0de 100644 --- a/src/gui/search/SearchView.h +++ b/src/gui/search/SearchView.h @@ -67,7 +67,7 @@ public: virtual ~SearchView(); void AttachController(SearchController * _c) { c = _c; } virtual void Search(String); - void OnTick(float dt) override; + void OnTick() override; void OnMouseWheel(int x, int y, int d) override; void OnKeyPress(int key, int scan, bool repeat, bool shift, bool ctrl, bool alt) override; void OnKeyRelease(int key, int scan, bool repeat, bool shift, bool ctrl, bool alt) override; diff --git a/src/gui/tags/TagsView.cpp b/src/gui/tags/TagsView.cpp index 5cd883ace..7e8a9d01c 100644 --- a/src/gui/tags/TagsView.cpp +++ b/src/gui/tags/TagsView.cpp @@ -51,7 +51,7 @@ TagsView::TagsView(): AddComponent(title); } -void TagsView::OnTick(float dt) +void TagsView::OnTick() { c->Tick(); } diff --git a/src/gui/tags/TagsView.h b/src/gui/tags/TagsView.h index 6e3a92295..411bbea07 100644 --- a/src/gui/tags/TagsView.h +++ b/src/gui/tags/TagsView.h @@ -22,7 +22,7 @@ class TagsView: public ui::Window { public: TagsView(); void OnDraw() override; - void OnTick(float dt) override; + void OnTick() override; void AttachController(TagsController * c_) { c = c_; } void OnKeyPress(int key, int scan, bool repeat, bool shift, bool ctrl, bool alt) override; void NotifyTagsChanged(TagsModel * sender); diff --git a/src/lua/LuaWindow.cpp b/src/lua/LuaWindow.cpp index 38f542324..1f4e052c9 100644 --- a/src/lua/LuaWindow.cpp +++ b/src/lua/LuaWindow.cpp @@ -69,7 +69,7 @@ LuaWindow::LuaWindow(lua_State *L) } void OnInitialized() override { luaWindow->triggerOnInitialized(); } void OnExit() override { luaWindow->triggerOnExit(); } - void OnTick(float dt) override { luaWindow->triggerOnTick( dt); } + void OnTick() override { luaWindow->triggerOnTick(); } void OnFocus() override { luaWindow->triggerOnFocus(); } void OnBlur() override { luaWindow->triggerOnBlur(); } void OnTryExit(ExitMethod) override { luaWindow->triggerOnTryExit(); } @@ -226,12 +226,12 @@ void LuaWindow::triggerOnExit() } } -void LuaWindow::triggerOnTick(float dt) +void LuaWindow::triggerOnTick() { if(onTickFunction) { lua_rawgeti(L, LUA_REGISTRYINDEX, onTickFunction); - lua_pushnumber(L, dt); + lua_pushnumber(L, 1); // this used to be dt, which was measured in 60ths of a second; this hardcodes 60fps if(tpt_lua_pcall(L, 1, 0, 0, eventTraitNone)) { ci->Log(CommandInterface::LogError, tpt_lua_toString(L, -1)); diff --git a/src/lua/LuaWindow.h b/src/lua/LuaWindow.h index 812101aa1..75361055c 100644 --- a/src/lua/LuaWindow.h +++ b/src/lua/LuaWindow.h @@ -54,7 +54,7 @@ class LuaWindow void triggerOnInitialized(); void triggerOnExit(); - void triggerOnTick(float deltaTime); + void triggerOnTick(); void triggerOnDraw(); void triggerOnFocus(); void triggerOnBlur(); diff --git a/src/tasks/TaskWindow.cpp b/src/tasks/TaskWindow.cpp index bf7e49c35..929f4c2e8 100644 --- a/src/tasks/TaskWindow.cpp +++ b/src/tasks/TaskWindow.cpp @@ -77,11 +77,9 @@ void TaskWindow::NotifyProgress(Task * task) progressBar->SetStatus(progressStatus); } -void TaskWindow::OnTick(float dt) +void TaskWindow::OnTick() { - intermediatePos += 1.0f*dt; - if(intermediatePos>100.0f) - intermediatePos = 0.0f; + intermediatePos = std::fmod(ui::Engine::Ref().LastTick() / 600.f, 100.f); task->Poll(); if (done) Exit(); diff --git a/src/tasks/TaskWindow.h b/src/tasks/TaskWindow.h index 1cdbd7d9c..41bc4b29e 100644 --- a/src/tasks/TaskWindow.h +++ b/src/tasks/TaskWindow.h @@ -26,7 +26,7 @@ public: void NotifyDone(Task * task) override; void NotifyProgress(Task * task) override; void NotifyError(Task * task) override; - void OnTick(float dt) override; + void OnTick() override; void OnDraw() override; void Exit(); };