Files
DarkRP2DServer/src/messages/Command.h
2019-06-02 17:52:15 +02:00

66 lines
1.3 KiB
C++

#pragma once
//Vendor
#include <yojimbo.h>
class Command;
#include "../GameServer.h"
// ---- Interface:
class Command
{
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;
};
// --- Classes Network:
class TestCommand : public Command
{
public:
TestCommand(int clientIndex, yojimbo::Message *message)
: m_clientIndex(clientIndex),
m_data(((TestMessage *)message)->m_data)
{}
virtual void execute(GameServer *server) override;
private:
int m_clientIndex;
int m_data;
};
class SetNameCommand : public Command
{
public:
SetNameCommand(int clientIndex, yojimbo::Message *message)
: m_clientIndex(clientIndex),
m_name(std::string(((SetNameMessage *)message)->buffer))
{}
virtual void execute(GameServer *server) override;
private:
int m_clientIndex;
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;
};