aboutsummaryrefslogtreecommitdiff
path: root/src/internal/concommandproxy.h
blob: 406675e0315c97feb7dc6b77081cb7162556e850 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#ifndef CONCOMMANDPROXY_H
#define CONCOMMANDPROXY_H

#include "ns_plugin.h"
#include "proxy.h"
#include "types.h"

class ConCommandProxy : public ClassProxy<ConCommand> {
    private:
        const char* name;
        PluginFnCommandCallback_t callback;
        const char* helpString;
        int flags;
        void* parent;

    public:
        ConCommandProxy(
            const char* name,
            PluginFnCommandCallback_t callback,
            const char* helpString,
            int flags,
            void* parent
        ) :
            name(name),
            callback(callback),
            helpString(helpString),
            flags(flags),
            parent(parent)
        {}

        virtual void initialize(void* data)
        {
            PLUGIN_DATA_TYPES* plugin_data = static_cast<PLUGIN_DATA_TYPES*>(data);

            PluginInitFuncs* funcs = plugin_data->funcs;
            PluginEngineData* engine_data = plugin_data->engine_data;

            assert(funcs->createObject);
            assert(engine_data->ConCommandConstructor);

            ptr = static_cast<ConCommand*>(funcs->createObject(ObjectType::CONCOMMANDS));

            spdlog::info("Registering ConCommand {}", name);
            engine_data->ConCommandConstructor(ptr, const_cast<char*>(name), callback, const_cast<char*>(helpString), flags, parent);
        }
};

#endif