ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/server/cfperl.xs
(Generate patch)

Comparing deliantra/server/server/cfperl.xs (file contents):
Revision 1.173 by root, Mon Mar 5 19:54:49 2007 UTC vs.
Revision 1.178 by root, Wed Mar 14 01:19:09 2007 UTC

349inline SV *to_sv (living * v) { return newSVptr (v, stash_cf_living_wrap); } 349inline SV *to_sv (living * v) { return newSVptr (v, stash_cf_living_wrap); }
350 350
351inline SV *to_sv (object & v) { return to_sv (&v); } 351inline SV *to_sv (object & v) { return to_sv (&v); }
352inline SV *to_sv (living & v) { return to_sv (&v); } 352inline SV *to_sv (living & v) { return to_sv (&v); }
353 353
354inline SV *to_sv (facetile * v) { return to_sv (v->name); } 354//inline SV *to_sv (faceinfo * v) { return to_sv (v->name); }
355inline SV *to_sv (treasurelist * v) { return to_sv (v->name); } 355inline SV *to_sv (treasurelist * v) { return to_sv (v->name); }
356inline SV *to_sv (std::string & v) { return newSVpvn (v.data (), v.size ()); }
356 357
357inline SV *to_sv (UUID v) 358inline SV *to_sv (UUID v)
358{ 359{
359 char buf[128]; 360 char buf[128];
360 snprintf (buf, 128, "<1.%" PRIx64 ">", v.seq); 361 snprintf (buf, 128, "<1.%" PRIx64 ">", v.seq);
384inline void sv_to (SV *sv, attachable * &v) { v = (attachable *)SvPTR_ornull (sv, "cf::attachable"); } 385inline void sv_to (SV *sv, attachable * &v) { v = (attachable *)SvPTR_ornull (sv, "cf::attachable"); }
385inline void sv_to (SV *sv, partylist * &v) { v = (partylist *)SvPTR_ornull (sv, "cf::party"); } 386inline void sv_to (SV *sv, partylist * &v) { v = (partylist *)SvPTR_ornull (sv, "cf::party"); }
386inline void sv_to (SV *sv, region * &v) { v = (region *)SvPTR_ornull (sv, "cf::region"); } 387inline void sv_to (SV *sv, region * &v) { v = (region *)SvPTR_ornull (sv, "cf::region"); }
387inline void sv_to (SV *sv, living * &v) { v = (living *)SvPTR_ornull (sv, "cf::living"); } 388inline void sv_to (SV *sv, living * &v) { v = (living *)SvPTR_ornull (sv, "cf::living"); }
388 389
389inline void sv_to (SV *sv, facetile * &v) { v = &new_faces[FindFace (SvPV_nolen (sv), 0)]; } 390//inline void sv_to (SV *sv, faceinfo * &v) { v = &faces [face_find (SvPV_nolen (sv), 0)]; }
390inline void sv_to (SV *sv, treasurelist * &v) { v = find_treasurelist (SvPV_nolen (sv)); } 391inline void sv_to (SV *sv, treasurelist * &v) { v = find_treasurelist (SvPV_nolen (sv)); }
391 392
392template<class T> 393template<class T>
393inline void sv_to (SV *sv, refptr<T> &v) { T *tmp; sv_to (sv, tmp); v = tmp; } 394inline void sv_to (SV *sv, refptr<T> &v) { T *tmp; sv_to (sv, tmp); v = tmp; }
394 395
398inline void sv_to (SV *sv, rangetype &v) { v = (rangetype) SvIV (sv); } 399inline void sv_to (SV *sv, rangetype &v) { v = (rangetype) SvIV (sv); }
399inline void sv_to (SV *sv, bowtype_t &v) { v = (bowtype_t) SvIV (sv); } 400inline void sv_to (SV *sv, bowtype_t &v) { v = (bowtype_t) SvIV (sv); }
400inline void sv_to (SV *sv, petmode_t &v) { v = (petmode_t) SvIV (sv); } 401inline void sv_to (SV *sv, petmode_t &v) { v = (petmode_t) SvIV (sv); }
401inline void sv_to (SV *sv, usekeytype &v) { v = (usekeytype) SvIV (sv); } 402inline void sv_to (SV *sv, usekeytype &v) { v = (usekeytype) SvIV (sv); }
402inline void sv_to (SV *sv, unapplymode &v) { v = (unapplymode) SvIV (sv); } 403inline void sv_to (SV *sv, unapplymode &v) { v = (unapplymode) SvIV (sv); }
404
405inline void sv_to (SV *sv, std::string &v)
406{
407 STRLEN len;
408 char *data = SvPVbyte (sv, len);
409 v.assign (data, len);
410}
403 411
404inline void sv_to (SV *sv, UUID &v) 412inline void sv_to (SV *sv, UUID &v)
405{ 413{
406 unsigned int version; 414 unsigned int version;
407 415
1586{ 1594{
1587 // reattach to all attachable objects in the game. 1595 // reattach to all attachable objects in the game.
1588 for_all_clients (ns) 1596 for_all_clients (ns)
1589 ns->reattach (); 1597 ns->reattach ();
1590 1598
1591 for_all_players (pl)
1592 pl->reattach ();
1593
1594 //TODO
1595 //for (map_container::iterator i = maps.begin (); i != maps.end (); ++i)
1596 // i->second->reattach ();
1597
1598 for_all_objects (op) 1599 for_all_objects (op)
1599 op->reattach (); 1600 op->reattach ();
1600} 1601}
1601 1602
1602NV floor (NV x) 1603NV floor (NV x)
2068void clear_los (object *op) 2069void clear_los (object *op)
2069 2070
2070int command_summon (object *op, char *params) 2071int command_summon (object *op, char *params)
2071 2072
2072int command_arrest (object *op, char *params) 2073int command_arrest (object *op, char *params)
2073
2074int command_banish (object *op, char *params)
2075 2074
2076 2075
2077MODULE = cf PACKAGE = cf::player PREFIX = cf_player_ 2076MODULE = cf PACKAGE = cf::player PREFIX = cf_player_
2078 2077
2079INCLUDE: $PERL $srcdir/genacc player ../include/player.h | 2078INCLUDE: $PERL $srcdir/genacc player ../include/player.h |
2515 char *buf = SvPVbyte (packet, len); 2514 char *buf = SvPVbyte (packet, len);
2516 2515
2517 THIS->send_packet (buf, len); 2516 THIS->send_packet (buf, len);
2518} 2517}
2519 2518
2519MODULE = cf PACKAGE = cf::face PREFIX = face_
2520
2521INCLUDE: $PERL $srcdir/genacc faceset ../include/face.h |
2522
2523faceidx face_find (const char *name, faceidx defidx = 0)
2524
2525faceidx alloc (const char *name)
2526 CODE:
2527{
2528 do
2529 {
2530 RETVAL = faces.size ();
2531 faces.resize (RETVAL + 1);
2532 }
2533 while (!RETVAL); // crude way to leave index 0
2534
2535 faces [RETVAL].name = name;
2536 facehash.insert (std::make_pair (faces [RETVAL].name, RETVAL));
2537
2538 if (!strcmp (name, BLANK_FACE_NAME)) blank_face = RETVAL;
2539 if (!strcmp (name, EMPTY_FACE_NAME)) empty_face = RETVAL;
2540}
2541 OUTPUT: RETVAL
2542
2543void set (faceidx idx, int visibility, int magicmap)
2544 CODE:
2545 faceinfo *f = face_info (idx);
2546 assert (f);
2547 f->visibility = visibility;
2548 f->magicmap = magicmap;
2549
2550void set_smooth (faceidx idx, faceidx smooth)
2551 CODE:
2552 faceinfo *f = face_info (idx);
2553 assert (f);
2554 f->smooth = smooth;
2555
2556void set_data (faceidx idx, int faceset, SV *data, SV *chksum)
2557 CODE:
2558 facedata *d = face_data (idx, faceset);
2559 assert (d);
2560 assert (sv_len (chksum) == CHKSUM_SIZE);
2561 sv_to (data, d->data); memcpy (d->chksum, SvPVbyte_nolen (chksum), CHKSUM_SIZE);
2562
2563void invalidate (faceidx idx)
2564 CODE:
2565 for_all_clients (ns)
2566 ns->faces_sent [idx] = false;
2567
2568void invalidate_all ()
2569 CODE:
2570 for_all_clients (ns)
2571 ns->faces_sent.reset ();
2572

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines