Beispiel #1
0
    virtual bool onEvent(const GEvent& e) override {
        if (GApp::onEvent(e)) {
            return true;
        }

        switch (e.type) {
        case GEventType::GUI_ACTION:
            if (e.gui.control == m_connectToAddressBox) {
                connectToServer(m_connectToAddress);
                m_connectToAddress = "";
                return true;
            } else {
                // Send a text message to the other machine
                shared_ptr<Conversation> conversation = findConversation(e.gui.control);
                if (notNull(conversation)) {
                    BinaryOutput bo;
                    bo.writeString32(conversation->textToSend);
                    conversation->connection->send(TEXT, bo);
                    conversation->textToSend = "";
                    return true;
                }
            }
            break;

        case GEventType::GUI_CLOSE:
            {
                // Shut down the associated network connection by letting 
                // the Conversation's destructor execute
                for (int i = 0; i < m_conversationArray.size(); ++i) {
                    if (m_conversationArray[i]->window.get() == e.guiClose.window) {
                        m_conversationArray.fastRemove(i);
                        break; // Leave the FOR loop
                    }
                } // for
            }
            break;

        case GEventType::QUIT:
            m_conversationArray.clear();
            m_server->stop();
            m_server.reset();
            break;
        } //switch

        return false;
    } // onEvent
Beispiel #2
0
 void sendMyName(shared_ptr<NetSendConnection> connection) const {
     BinaryOutput bo;
     bo.writeString32(m_name);
     connection->send(CHANGE_NAME, bo);
 }