Add internal command interpretation

This commit is contained in:
Julian Nießner
2019-06-02 17:52:15 +02:00
parent 8ad1c7219d
commit 84beaf7fd6
9 changed files with 128 additions and 20 deletions

View File

@@ -2,6 +2,8 @@
//Vendor
#include <yojimbo.h>
class Command;
#include "../GameServer.h"
// ---- Interface:
@@ -12,33 +14,53 @@ public:
// Create Commands from Network messages (Limited list)
static Command *create(int clientIndex, yojimbo::Message *message);
// Create Commands from Strings (Limited list)
static Command *create(std::string);
virtual void execute(GameServer *server) = 0;
};
// --- implemented Classes:
// --- Classes Network:
class TestCommand : public Command
{
public:
TestCommand(int clientIndex, yojimbo::Message *message)
: m_clientIndex(clientIndex), m_message((TestMessage *)message) {}
: m_clientIndex(clientIndex),
m_data(((TestMessage *)message)->m_data)
{}
virtual void execute(GameServer *server) override;
private:
int m_clientIndex;
TestMessage *m_message;
int m_data;
};
class SetNameCommand : public Command
{
public:
SetNameCommand(int clientIndex, yojimbo::Message *message)
: m_clientIndex(clientIndex), m_message((SetNameMessage *)message) {}
: m_clientIndex(clientIndex),
m_name(std::string(((SetNameMessage *)message)->buffer))
{}
virtual void execute(GameServer *server) override;
private:
int m_clientIndex;
SetNameMessage *m_message;
std::string m_name;
};
// --- Classes Internal:
class TestCommandInternal : public Command
{
public:
virtual void execute(GameServer *server) override;
};
class StopCommandInternal : public Command
{
public:
virtual void execute(GameServer *server) override;
};