--- deliantra/server/server/cfperl.xs 2006/08/28 07:07:42 1.18 +++ deliantra/server/server/cfperl.xs 2006/08/28 07:54:11 1.19 @@ -61,11 +61,10 @@ #define newSVval64 newSVnv #define SvVAL64 SvNV -static f_plug_api gethook; -static f_plug_api systemDirectory; -static f_plug_api object_set_property; -static f_plug_api map_get_map; -static f_plug_api object_insert; +static f_plug_api gethook = cfapi_get_hooks; +static f_plug_api object_set_property = cfapi_object_set_property; +static f_plug_api map_get_map = cfapi_map_get_map; +static f_plug_api object_insert = cfapi_object_insert; /* this is a stupid way to do things, and awkward to use for plug-in authors */ typedef struct @@ -483,8 +482,6 @@ extern "C" int cfperl_initPlugin (const char *iversion, f_plug_api gethooksptr) { - gethook = gethooksptr; - return 0; } @@ -574,11 +571,6 @@ int hooktype = 1; int rtype = 0; - systemDirectory = (void* (*)(int*, ...)) gethook (&rtype, hooktype, "cfapi_system_directory"); - object_set_property = (void* (*)(int*, ...)) gethook (&rtype, hooktype, "cfapi_object_set_property"); - map_get_map = (void* (*)(int*, ...)) gethook (&rtype, hooktype, "cfapi_map_get_map"); - object_insert = (void* (*)(int*, ...)) gethook (&rtype, hooktype, "cfapi_object_insert"); - cf_init_plugin (gethook); return 0; @@ -1523,10 +1515,13 @@ char *path_combine_and_normalize (char *base, char *path) PROTOTYPE: $$ -char * -cf_get_maps_directory (char *path) +const char * +get_maps_directory (char *path) PROTOTYPE: $ ALIAS: maps_directory = 0 + CODE: + RETVAL = create_pathname (path); + OUTPUT: RETVAL void sub_generation_inc () @@ -1545,10 +1540,16 @@ playerdir = 5 datadir = 6 CODE: -{ - int unused_type; - RETVAL = (char *)systemDirectory (&unused_type, ix); -} + switch (ix) + { + case 0: RETVAL = settings.mapdir ; break; + case 1: RETVAL = settings.uniquedir; break; + case 2: RETVAL = settings.tmpdir ; break; + case 3: RETVAL = settings.confdir ; break; + case 4: RETVAL = settings.localdir ; break; + case 5: RETVAL = settings.playerdir; break; + case 6: RETVAL = settings.datadir ; break; + } OUTPUT: RETVAL int @@ -2156,7 +2157,7 @@ { mapstruct *nmap = 0; I16 nx = 0, ny = 0; - int flags = cf_map_get_flags (map, &nmap, x, y, &nx, &ny); + int flags = get_map_flags (map, &nmap, x, y, &nx, &ny); EXTEND (SP, 4); PUSHs (sv_2mortal (newSViv (flags))); @@ -2178,7 +2179,7 @@ mapstruct *nmap = 0; I16 nx, ny; - cf_map_get_flags (map, &nmap, x, y, &nx, &ny); + get_map_flags (map, &nmap, x, y, &nx, &ny); if (nmap) for (o = GET_MAP_OB (nmap, nx, ny); o; o = o->above) @@ -2247,71 +2248,96 @@ } -MODULE = cf PACKAGE = cf::arch PREFIX = cf_archetype_ +MODULE = cf PACKAGE = cf::arch -archetype *cf_archetype_get_first() +archetype *first() PROTOTYPE: - ALIAS: first = 0 + CODE: + RETVAL = first_archetype; + OUTPUT: RETVAL -archetype *cf_archetype_get_next (archetype *arch) - ALIAS: next = 0 +archetype *next (archetype *arch) + CODE: + RETVAL = arch->next; + OUTPUT: RETVAL -archetype *cf_archetype_get_head (archetype *arch) - ALIAS: head = 0 +archetype *head (archetype *arch) + CODE: + RETVAL = arch->head; + OUTPUT: RETVAL -archetype *cf_archetype_get_more (archetype *arch) - ALIAS: more = 0 +archetype *more (archetype *arch) + CODE: + RETVAL = arch->more; + OUTPUT: RETVAL -const char *cf_archetype_get_name (archetype *arch) - ALIAS: name = 0 +const char *name (archetype *arch) + CODE: + RETVAL = arch->name; + OUTPUT: RETVAL -object *cf_archetype_get_clone (archetype *arch) - ALIAS: clone = 0 +object *clone (archetype *arch) + CODE: + RETVAL = &arch->clone; + OUTPUT: RETVAL -MODULE = cf PACKAGE = cf::party PREFIX = cf_party_ +MODULE = cf PACKAGE = cf::party -partylist *cf_party_get_first () +partylist *first () PROTOTYPE: - ALIAS: first = 0 - -partylist *cf_party_get_next (partylist *party) - ALIAS: next = 0 - -const char *cf_party_get_name (partylist *party) - -const char *cf_party_get_password (partylist *party) - ALIAS: password = 0 + CODE: + RETVAL = get_firstparty (); + OUTPUT: RETVAL -player *cf_party_get_first_player (partylist *party) - ALIAS: first_player = 0 +partylist *next (partylist *party) + CODE: + RETVAL = party->next; + OUTPUT: RETVAL -player *cf_party_get_next_player (partylist *party, player *op) - ALIAS: next_player = 0 +const char *name (partylist *party) + CODE: + RETVAL = party->partyname; + OUTPUT: RETVAL +const char *password (partylist *party) + CODE: + RETVAL = party->passwd; + OUTPUT: RETVAL -MODULE = cf PACKAGE = cf::region PREFIX = cf_region_ +MODULE = cf PACKAGE = cf::region -region *cf_region_get_first () +region *first () PROTOTYPE: - ALIAS: first = 0 - -const char *cf_region_get_name (region *reg) - ALIAS: name = 0 + CODE: + RETVAL = first_region; + OUTPUT: RETVAL -region *cf_region_get_next (region *reg) - ALIAS: next = 0 +region *next (region *reg) + CODE: + RETVAL = reg->next; + OUTPUT: RETVAL -region *cf_region_get_parent (region *reg) - ALIAS: parent = 0 +const char *name (region *reg) + CODE: + RETVAL = reg->name; + OUTPUT: RETVAL -const char *cf_region_get_longname (region *reg) - ALIAS: longname = 0 +region *parent (region *reg) + CODE: + RETVAL = reg->parent; + OUTPUT: RETVAL -const char *cf_region_get_message (region *reg) - ALIAS: message = 0 +const char *longname (region *reg) + CODE: + RETVAL = reg->longname; + OUTPUT: RETVAL +const char *msg (region *reg) + CODE: + RETVAL = reg->msg; + OUTPUT: RETVAL -MODULE = cf PACKAGE = cf::living PREFIX = cf_living_ +MODULE = cf PACKAGE = cf::living val64 exp (living *liv, val64 new_val = 0)