// Copyright (c) Hercules Dev Team, licensed under GNU GPL.
// See the LICENSE file
#ifndef _HPMi_H_
#define _HPMi_H_
#include "../common/cbasetypes.h"
#include "../common/core.h"
#include "../common/console.h"
struct script_state;
struct AtCommandInfo;
#ifdef WIN32
#define HPExport __declspec(dllexport)
#else
#define HPExport
#endif
#ifndef _SHOWMSG_H_
HPExport void (*ShowMessage) (const char *, ...);
HPExport void (*ShowStatus) (const char *, ...);
HPExport void (*ShowSQL) (const char *, ...);
HPExport void (*ShowInfo) (const char *, ...);
HPExport void (*ShowNotice) (const char *, ...);
HPExport void (*ShowWarning) (const char *, ...);
HPExport void (*ShowDebug) (const char *, ...);
HPExport void (*ShowError) (const char *, ...);
HPExport void (*ShowFatalError) (const char *, ...);
#endif
/* after */
#include "../common/showmsg.h"
#define HPM_VERSION "0.1"
struct hplugin_info {
char* name;
enum server_types type;
char* version;
char* req_version;
};
HPExport void *(*import_symbol) (char *name);
#define GET_SYMBOL(n) import_symbol(n)
#define SERVER_TYPE_ALL SERVER_TYPE_LOGIN|SERVER_TYPE_CHAR|SERVER_TYPE_MAP
enum hp_event_types {
HPET_INIT,/* server starts */
HPET_FINAL,/* server is shutting down */
HPET_READY,/* server is ready (online) */
HPET_MAX,
};
/* Hercules Plugin Mananger Include Interface */
struct HPMi_interface {
void (*event[HPET_MAX]) (void);
bool (*addCommand) (char *name, bool (*func)(const int fd, struct map_session_data* sd, const char* command, const char* message,struct AtCommandInfo *info));
bool (*addScript) (char *name, char *args, bool (*func)(struct script_state *st));
void (*addCPCommand) (char *name, CParseFunc func);
} HPMi_s;
#ifndef _HPM_H_
struct HPMi_interface *HPMi;
#endif
#endif /* _HPMi_H_ */