summaryrefslogtreecommitdiff
path: root/src/map/HPMmap.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/map/HPMmap.c')
-rw-r--r--src/map/HPMmap.c51
1 files changed, 50 insertions, 1 deletions
diff --git a/src/map/HPMmap.c b/src/map/HPMmap.c
index 3ba9ae725..ca4a7a2e8 100644
--- a/src/map/HPMmap.c
+++ b/src/map/HPMmap.c
@@ -11,6 +11,7 @@
#include "map.h"
//
+#include "atcommand.h"
#include "chat.h"
#include "chrif.h"
#include "duel.h"
@@ -33,6 +34,18 @@
#include <string.h>
#include <time.h>
+struct HPM_atcommand_list {
+ //tracking currently not enabled
+ // - requires modifying how plugins calls atcommand creation
+ // - needs load/unload during runtime support
+ //unsigned int pID;/* plugin id */
+ char name[ATCOMMAND_LENGTH];
+ AtCommandFunc func;
+};
+
+struct HPM_atcommand_list *atcommand_list = NULL;
+unsigned int atcommand_list_items = 0;
+
void HPM_map_addToMSD(struct map_session_data *sd, void *data, unsigned int id, unsigned int type, bool autofree) {
struct HPluginData *HPData;
unsigned int i;
@@ -103,4 +116,40 @@ void HPM_map_plugin_load_sub(struct hplugin *plugin) {
plugin->hpi->addToMSD = HPM->import_symbol("addToMSD",plugin->idx);
plugin->hpi->getFromMSD = HPM->import_symbol("getFromMSD",plugin->idx);
plugin->hpi->removeFromMSD = HPM->import_symbol("removeFromMSD",plugin->idx);
-} \ No newline at end of file
+}
+
+bool HPM_map_add_atcommand(char *name, AtCommandFunc func) {
+ unsigned int i = 0;
+
+ for(i = 0; i < atcommand_list_items; i++) {
+ if( !strcmpi(atcommand_list[i].name,name) ) {
+ ShowDebug("HPM_map_add_atcommand: duplicate command '%s', skipping...\n", name);
+ return false;
+ }
+ }
+
+ i = atcommand_list_items;
+
+ RECREATE(atcommand_list, struct HPM_atcommand_list , ++atcommand_list_items);
+
+ safestrncpy(atcommand_list[i].name, name, sizeof(atcommand_list[i].name));
+ atcommand_list[i].func = func;
+
+ return true;
+}
+
+void HPM_map_atcommands(void) {
+ unsigned int i;
+
+ for(i = 0; i < atcommand_list_items; i++) {
+ if( !atcommand->add(atcommand_list[i].name,atcommand_list[i].func) ) {
+ ShowDebug("HPM_map_atcommands: duplicate command '%s', skipping...\n", atcommand_list[i].name);
+ continue;
+ }
+ }
+}
+
+void HPM_map_do_final(void) {
+ if( atcommand_list )
+ aFree(atcommand_list);
+}