#include "../include/MessageBoard.hpp" #include "../include/User.hpp" #include "../include/Chatbar.hpp" #include #include #include using namespace std; using namespace dchat; int main() { sf::RenderWindow window(sf::VideoMode(1920, 1080), "dchat"); window.setVerticalSyncEnabled(false); window.setFramerateLimit(60); OfflineUser *localOfflineUser = new OfflineUser("You"); MessageBoard messageBoard(window.getSize()); { Message *message = new Message(localOfflineUser); message->addText(u8"hello, world!"); messageBoard.addMessage(message); } { Message *message = new Message(localOfflineUser); message->addText(u8"hello, world!"); messageBoard.addMessage(message); } { Message *message = new Message(localOfflineUser); message->addText(u8"hello, world!"); messageBoard.addMessage(message); } Chatbar chatbar; while (window.isOpen()) { sf::Event event; while (window.pollEvent(event)) { if (event.type == sf::Event::Closed) window.close(); else if(event.type == sf::Event::Resized) { sf::View view(sf::FloatRect(0.0f, 0.0f, event.size.width, event.size.height)); window.setView(view); } else if(event.type == sf::Event::TextEntered) { if(event.text.unicode == 8) // backspace chatbar.removePreviousChar(); else if(event.text.unicode == 13) // enter { Message *message = new Message(localOfflineUser); auto chatbarMsgUtf8 = chatbar.getString().toUtf8(); string msg; msg.resize(chatbarMsgUtf8.size()); memcpy(&msg[0], chatbarMsgUtf8.data(), chatbarMsgUtf8.size()); message->addText(msg); messageBoard.addMessage(message); chatbar.clear(); } else if(event.text.unicode == 127) // delete { chatbar.removeNextChar(); } else { chatbar.addChar(event.text.unicode); } } else if(event.type == sf::Event::KeyPressed) { if(event.key.code == sf::Keyboard::Left) chatbar.moveCaretLeft(); else if(event.key.code == sf::Keyboard::Right) chatbar.moveCaretRight(); } messageBoard.processEvent(event); } window.clear(); messageBoard.draw(window); chatbar.draw(window); window.display(); } return 0; }