#define GUICHATCONSOLE_HEADER
#include "irrlichttypes_extrabloated.h"
+#include "modalMenu.h"
#include "chat.h"
+#include "config.h"
class Client;
gui::IGUIElement* parent,
s32 id,
ChatBackend* backend,
- Client* client);
+ Client* client,
+ IMenuManager* menumgr);
virtual ~GUIChatConsole();
// Open the console (height = desired fraction of screen size)
// This doesn't open immediately but initiates an animation.
// You should call isOpenInhibited() before this.
- void openConsole(f32 height);
+ void openConsole(f32 scale);
+
+ bool isOpen() const;
+
// Check if the console should not be opened at the moment
// This is to avoid reopening the console immediately after closing
bool isOpenInhibited() const;
void closeConsole();
// Close the console immediately, without animation.
void closeConsoleAtOnce();
+ // Set whether to close the console after the user presses enter.
+ void setCloseOnEnter(bool close) { m_close_on_enter = close; }
// Return the desired height (fraction of screen size)
// Zero if the console is closed or getting closed
f32 getDesiredHeight() const;
+ // Replace actual line when adding the actual to the history (if there is any)
+ void replaceAndAddToHistory(std::wstring line);
+
// Change how the cursor looks
void setCursor(
bool visible,
virtual bool OnEvent(const SEvent& event);
+ virtual void setVisible(bool visible);
+
private:
void reformatConsole();
void recalculateConsolePosition();
void drawPrompt();
private:
- // pointer to the chat backend
ChatBackend* m_chat_backend;
-
- // pointer to the client
Client* m_client;
+ IMenuManager* m_menumgr;
// current screen size
v2u32 m_screensize;
// used to compute how much time passed since last animate()
- u32 m_animate_time_old;
+ u64 m_animate_time_old;
// should the console be opened or closed?
bool m_open;
+ // should it close after you press enter?
+ bool m_close_on_enter;
// current console height [pixels]
s32 m_height;
// desired height [pixels]