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

summaryrefslogtreecommitdiff
path: root/source/frontend/StarRadioMessagePopup.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/frontend/StarRadioMessagePopup.hpp')
-rw-r--r--source/frontend/StarRadioMessagePopup.hpp65
1 files changed, 65 insertions, 0 deletions
diff --git a/source/frontend/StarRadioMessagePopup.hpp b/source/frontend/StarRadioMessagePopup.hpp
new file mode 100644
index 0000000..11c18d5
--- /dev/null
+++ b/source/frontend/StarRadioMessagePopup.hpp
@@ -0,0 +1,65 @@
+#ifndef STAR_RADIO_MESSAGE_POPUP_HPP
+#define STAR_RADIO_MESSAGE_POPUP_HPP
+
+#include "StarGameTimers.hpp"
+#include "StarPane.hpp"
+#include "StarAiTypes.hpp"
+#include "StarRadioMessageDatabase.hpp"
+
+namespace Star {
+
+STAR_CLASS(LabelWidget);
+STAR_CLASS(ImageWidget);
+STAR_CLASS(AudioInstance);
+
+class RadioMessagePopup : public Pane {
+public:
+ RadioMessagePopup();
+
+ void update() override;
+ void dismissed() override;
+
+ bool messageActive();
+
+ void setMessage(RadioMessage message);
+ void setChatHeight(int chatHeight);
+ void interrupt();
+
+private:
+ enum PopupStage { AnimateIn, ScrollText, Persist, AnimateOut, Hidden };
+
+ void updateAnchorOffset();
+ void nextPopupStage();
+ void enterStage(PopupStage newStage);
+
+ PopupStage m_popupStage;
+ GameTimer m_stageTimer;
+
+ LabelWidgetPtr m_messageLabel;
+ ImageWidgetPtr m_portraitImage;
+
+ RadioMessage m_message;
+
+ String m_backgroundImage;
+
+ float m_animateInTime;
+ String m_animateInImage;
+ int m_animateInFrames;
+
+ float m_animateOutTime;
+ String m_animateOutImage;
+ int m_animateOutFrames;
+
+ Vec2I m_chatOffset;
+ Vec2I m_chatStartPosition;
+ Vec2I m_chatEndPosition;
+
+ float m_slideTimer;
+ float m_slideTime;
+
+ AudioInstancePtr m_chatterSound;
+};
+
+}
+
+#endif