#include "mmokobanmodule.h" #include "message.h" #include "user.h" #include #include #include #include #include MMOkobanModule::MMOkobanModule() : m_running(false), m_mmokoban_server(nullptr) { } bool MMOkobanModule::messageHandler(Message msg) { User* user = getUsers()->getFromNick(msg.nick); if(user == nullptr || !user->isOp()) return false; if(msg.args.startsWith("!mmokoban")) { if(msg.args.compare("!mmokoban start") == 0) { if(m_running) answer = say("MMOkoban server is already running."); else { start(); answer = say("MMOkoban server starting..."); } return true; } else if(msg.args.compare("!mmokoban stop") == 0) { if(!m_running) answer = say("MMOkoban server is already stopped."); else { stop(); answer = say("MMOkoban server stopping..."); } return true; } } return false; } QString MMOkobanModule::getName() { return "mmokoban"; } void MMOkobanModule::start() { m_running = true; // launching server m_mmokoban_server = new Server(TCP_PORT); m_mmokoban_server->initMap(); new std::thread(MMOkobanModule::startUpdateLoop, m_mmokoban_server, &m_running); } void MMOkobanModule::startUpdateLoop(Server* server, bool *running) { while(*running) server->update(); delete server; } void MMOkobanModule::stop() { m_running = false; m_mmokoban_server = nullptr; }