kaliber/src/demo/hud.h

70 lines
1.4 KiB
C
Raw Normal View History

#ifndef DEMO_HUD_H
#define DEMO_HUD_H
2020-04-13 11:24:53 +00:00
#include <memory>
#include <string>
#include "base/closure.h"
#include "engine/animator.h"
#include "engine/image_quad.h"
#include "engine/solid_quad.h"
2020-04-13 11:24:53 +00:00
namespace eng {
class Image;
} // namespace eng
class Hud {
public:
Hud();
~Hud();
bool Initialize();
2021-08-31 21:21:29 +00:00
void Pause(bool pause);
2020-04-13 11:24:53 +00:00
void Show();
2021-08-31 21:21:29 +00:00
void Hide();
void HideProgress();
2020-04-13 11:24:53 +00:00
2021-08-31 21:21:29 +00:00
void SetScore(size_t score, bool flash);
void SetWave(int wave, bool flash);
2020-04-13 11:24:53 +00:00
void SetProgress(float progress);
2021-08-31 21:21:29 +00:00
void ShowMessage(const std::string& text, float duration);
void ShowBonus(size_t bonus);
2020-04-13 11:24:53 +00:00
private:
eng::SolidQuad progress_bar_[2];
eng::ImageQuad text_[2];
2021-08-31 21:21:29 +00:00
eng::ImageQuad message_;
eng::ImageQuad bonus_;
2020-04-13 11:24:53 +00:00
eng::Animator progress_bar_animator_[2];
eng::Animator text_animator_[2];
2021-08-31 21:21:29 +00:00
eng::Animator message_animator_;
2020-04-13 11:24:53 +00:00
base::Closure text_animator_cb_[2];
2021-08-31 21:21:29 +00:00
eng::Animator bonus_animator_;
2020-04-13 11:24:53 +00:00
int max_text_width_ = 0;
2021-08-31 21:21:29 +00:00
size_t last_score_ = 0;
2020-04-13 11:24:53 +00:00
int last_wave_ = 0;
float last_progress_ = 0;
2021-08-31 21:21:29 +00:00
std::string message_text_;
size_t bonus_score_ = 0;
std::unique_ptr<eng::Image> CreateScoreImage();
std::unique_ptr<eng::Image> CreateWaveImage();
2021-08-31 21:21:29 +00:00
std::unique_ptr<eng::Image> CreateMessageImage();
std::unique_ptr<eng::Image> CreateBonusImage();
std::unique_ptr<eng::Image> Print(int i, const std::string& text);
2020-04-13 11:24:53 +00:00
std::unique_ptr<eng::Image> CreateImage();
};
#endif // DEMO_HUD_H