From 05750c44046f320109055aa5954ef0bbd977705f Mon Sep 17 00:00:00 2001 From: Joursoir Date: Thu, 10 Dec 2020 16:02:46 +0000 Subject: refactor clui: delete class ChatRoom, create own class for chat, players, tips (new), input --- src/client/clui/clui.hpp | 69 ++++++++++++++++++++++-------------------------- 1 file changed, 31 insertions(+), 38 deletions(-) (limited to 'src/client/clui/clui.hpp') diff --git a/src/client/clui/clui.hpp b/src/client/clui/clui.hpp index e337aa9..87445db 100644 --- a/src/client/clui/clui.hpp +++ b/src/client/clui/clui.hpp @@ -3,59 +3,52 @@ #ifndef WC_CLUI_H #define WC_CLUI_H -#include +#include "WindowInterface.hpp" #include "../../const_vars.hpp" -class Interface_wc { - WINDOW *w; - int ny, nx; - int beg_y, beg_x; - int ch_line; -public: - Interface_wc(int num_y, int num_x, int by, int bx, char ch); - - WINDOW *GetWindow() { return w; } - void SetCursor(int y, int x) { wmove(w, y, x); } - void Clear(bool full); - void Update() { wrefresh(w); } - void Delete() { delwin(w); } - - void Hide(); -}; - -class ChatRoom { - Interface_wc *chat; - Interface_wc *players; - Interface_wc *input; - int i_nx, i_ny; - +class WindowChat : public WindowInterface { struct message { - char msg[max_msg_len]; + char text[max_msg_len]; int num_lines; // number of lines int type; message *prev; }; message *first; public: - ChatRoom(); - ~ChatRoom(); + WindowChat(int num_y, int num_x, int by, int bx, char ch) + : WindowInterface(num_y, num_x, by, bx, ch), first(0) {} + ~WindowChat(); - // for chat: void AddMessage(const char *msg, int type); +private: + void ChatRedraw(); + void PrintMessage(int line, message *m); +}; - // for players: - //void AddPlayer() +class WindowPlayers : public WindowInterface { +public: + WindowPlayers(int num_y, int num_x, int by, int bx, char ch) + : WindowInterface(num_y, num_x, by, bx, ch) {} + ~WindowPlayers() {} +}; + +class WindowTips : public WindowInterface { +public: + WindowTips(int num_y, int num_x, int by, int bx, char ch) + : WindowInterface(num_y, num_x, by, bx, ch) {} + ~WindowTips() {} +}; - // for input: - int InputGetch() { return wgetch(input->GetWindow()); } +class WindowInput : public WindowInterface { + int i_ny, i_nx; +public: + WindowInput(int num_y, int num_x, int by, int bx, char ch); + ~WindowInput() {} + + int GetChar(); bool AddCharToSendMsg(char ch); bool RemoveCharFromMsg(); - void InputClear() { input->Clear(false); } - void SetInputCursor(int y, int x); -private: - // for chat: - void ChatRedraw(); - void PrintMessage(int line, message *m); + void SetPosCursor(int y, int x); }; #endif \ No newline at end of file -- cgit v1.2.3-18-g5258