1 #include "ChatState.hpp"
2 #include "MessageState.hpp"
3 #include "ProgressState.hpp"
5 #include "../app/Environment.hpp"
6 #include "../io/event.hpp"
13 ChatState::ChatState(Environment &env, State &parent, Responder &responder)
16 , responder(responder)
17 , input(env.assets.small_ui_font) {
18 input.Position(glm::vec3(25.0f, -25.0f, -1.0f), Gravity::SOUTH_WEST, Gravity::SOUTH_WEST);
19 input.Width(env.viewport.Width() - 50.0f);
20 input.Foreground(glm::vec4(1.0f));
21 input.Background(glm::vec4(0.5f));
24 void ChatState::OnResume() {
25 OnResize(env.viewport);
27 input.Focus(env.viewport);
30 void ChatState::OnPause() {
34 void ChatState::OnResize(Viewport &viewport) {
35 input.Width(viewport.Width() - 50.0f);
39 void ChatState::Handle(const SDL_Event &e) {
42 switch (e.key.keysym.sym) {
48 responder.OnLineSubmit(input.GetInput());
87 std::cout << e << std::endl;
96 void ChatState::Quit() {
97 env.state.PopUntil(this);
100 void ChatState::Update(int dt) {
104 void ChatState::Render(Viewport &viewport) {
105 parent.Render(viewport);
106 input.Render(viewport);
110 MessageState::MessageState(Environment &env)
112 message.Position(glm::vec3(0.0f), Gravity::CENTER);
114 press_key.Position(glm::vec3(0.0f, env.assets.large_ui_font.LineSkip(), 0.0f), Gravity::CENTER);
115 press_key.Set(env.assets.small_ui_font, "press any key to continue");
119 void MessageState::SetMessage(const char *msg) {
120 message.Set(env.assets.large_ui_font, msg);
124 void MessageState::ClearMessage() {
128 void MessageState::Handle(const SDL_Event &e) {
129 if (e.type == SDL_KEYDOWN) {
134 void MessageState::Update(int dt) {
138 void MessageState::Render(Viewport &viewport) {
139 if (message.Visible()) {
140 message.Render(viewport);
142 if (press_key.Visible()) {
143 press_key.Render(viewport);
148 ProgressState::ProgressState(Environment &env, const char *tpl)
150 , progress(env.assets.large_ui_font) {
151 progress.Position(glm::vec3(0.0f), Gravity::CENTER);
152 progress.Template(tpl);
155 void ProgressState::SetProgress(int value, int total) {
156 progress.Update(value, total);
159 void ProgressState::Handle(const SDL_Event &e) {
160 if (e.type == SDL_QUIT) {
165 void ProgressState::Render(Viewport &viewport) {
166 progress.Render(viewport);