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.367 by root, Mon Apr 12 05:22:38 2010 UTC vs.
Revision 1.374 by root, Thu Apr 15 06:05:52 2010 UTC

51#include <perl.h> 51#include <perl.h>
52#include <XSUB.h> 52#include <XSUB.h>
53 53
54#include "CoroAPI.h" 54#include "CoroAPI.h"
55#include "perlxsi.c" 55#include "perlxsi.c"
56
57extern sint64 *levels; // the experience table
58 56
59typedef object_thawer &object_thawer_ref; 57typedef object_thawer &object_thawer_ref;
60typedef object_freezer &object_freezer_ref; 58typedef object_freezer &object_freezer_ref;
61 59
62typedef std::string std__string; 60typedef std::string std__string;
1139 1137
1140 return retval; 1138 return retval;
1141} 1139}
1142 1140
1143maptile * 1141maptile *
1144find_style (const_utf8_string dirname, const_utf8_string stylename, int difficulty) 1142find_style (const_utf8_string dirname, const_utf8_string stylename, int difficulty, bool recurse)
1145{ 1143{
1146 CALL_BEGIN (3); 1144 CALL_BEGIN (4);
1147 CALL_ARG (dirname); 1145 CALL_ARG (dirname);
1148 CALL_ARG (stylename); 1146 CALL_ARG (stylename);
1149 CALL_ARG (difficulty); 1147 CALL_ARG (difficulty);
1148 CALL_ARG (recurse);
1150 CALL_CALL ("ext::map_random::find_style", G_SCALAR); 1149 CALL_CALL ("ext::map_random::find_style", G_SCALAR);
1151 1150
1152 maptile *retval = 0; 1151 maptile *retval = 0;
1153 if (count) sv_to (POPs, retval); 1152 if (count) sv_to (POPs, retval);
1154 1153
1664 switch (items) 1663 switch (items)
1665 { 1664 {
1666 case 0: RETVAL = gen (); break; 1665 case 0: RETVAL = gen (); break;
1667 case 1: RETVAL = gen (SvUV (ST (0))); break; 1666 case 1: RETVAL = gen (SvUV (ST (0))); break;
1668 case 2: RETVAL = gen (SvIV (ST (0)), SvIV (ST (1))); break; 1667 case 2: RETVAL = gen (SvIV (ST (0)), SvIV (ST (1))); break;
1669 default: croak ("cf::rndm requires none, one or two parameters."); break; 1668 default: croak ("cf::rndm requires zero, one or two parameters."); break;
1670 } 1669 }
1671} 1670}
1672 OUTPUT: 1671 OUTPUT:
1673 RETVAL 1672 RETVAL
1674 1673
1798 1797
1799int random_roll (int min, int max, object *op, int goodbad); 1798int random_roll (int min, int max, object *op, int goodbad);
1800 1799
1801const_utf8_string cost_string_from_value(uint64 cost, int approx = 0) 1800const_utf8_string cost_string_from_value(uint64 cost, int approx = 0)
1802 1801
1803int
1804exp_to_level (val64 exp) 1802int exp_to_level (val64 exp)
1805 CODE:
1806{
1807 int i = 0;
1808 1803
1809 RETVAL = settings.max_level;
1810
1811 for (i = 1; i <= settings.max_level; i++)
1812 {
1813 if (levels[i] > exp)
1814 {
1815 RETVAL = i - 1;
1816 break;
1817 }
1818 }
1819}
1820 OUTPUT: RETVAL
1821
1822val64
1823level_to_min_exp (int level) 1804val64 level_to_min_exp (int level)
1824 CODE:
1825 if (level > settings.max_level)
1826 RETVAL = levels[settings.max_level];
1827 else if (level < 1)
1828 RETVAL = 0;
1829 else
1830 RETVAL = levels[level];
1831 OUTPUT: RETVAL
1832 1805
1833SV * 1806SV *
1834resistance_to_string (int atnr) 1807resistance_to_string (int atnr)
1835 CODE: 1808 CODE:
1836 if (atnr >= 0 && atnr < NROFATTACKS) 1809 if (atnr >= 0 && atnr < NROFATTACKS)
2027} 2000}
2028 OUTPUT: 2001 OUTPUT:
2029 RETVAL 2002 RETVAL
2030 2003
2031object *find_best_object_match (object *op, utf8_string match) 2004object *find_best_object_match (object *op, utf8_string match)
2032
2033object *find_marked_object (object *op)
2034
2035int need_identify (object *obj);
2036 2005
2037int apply_shop_mat (object *shop_mat, object *op); 2006int apply_shop_mat (object *shop_mat, object *op);
2038 2007
2039int move (object *op, int dir, object *originator = op) 2008int move (object *op, int dir, object *originator = op)
2040 CODE: 2009 CODE:
2807 while (!RETVAL); // crude way to leave index 0 2776 while (!RETVAL); // crude way to leave index 0
2808 2777
2809 faces [RETVAL].name = name; 2778 faces [RETVAL].name = name;
2810 facehash.insert (std::make_pair (faces [RETVAL].name, RETVAL)); 2779 facehash.insert (std::make_pair (faces [RETVAL].name, RETVAL));
2811 2780
2812 if (!strcmp (name, BLANK_FACE_NAME)) blank_face = RETVAL; 2781 if (!strcmp (name, BLANK_FACE_NAME )) blank_face = RETVAL;
2813 if (!strcmp (name, EMPTY_FACE_NAME)) empty_face = RETVAL; 2782 if (!strcmp (name, EMPTY_FACE_NAME )) empty_face = RETVAL;
2783 if (!strcmp (name, MAGICMOUTH_FACE_NAME)) magicmouth_face = RETVAL;
2814} 2784}
2815 OUTPUT: RETVAL 2785 OUTPUT: RETVAL
2816 2786
2817void set_type (faceidx idx, int value) 2787void set_type (faceidx idx, int value)
2818 ALIAS: 2788 ALIAS:
2952 sv_to (sv, self); 2922 sv_to (sv, self);
2953 delete self; 2923 delete self;
2954 2924
2955MODULE = cf PACKAGE = cf::object::thawer 2925MODULE = cf PACKAGE = cf::object::thawer
2956 2926
2957INCLUDE: $PERL $srcdir/genacc object_thawer $srcdir/../include/cfperl.h | 2927INCLUDE: $PERL $srcdir/genacc object_thawer $srcdir/../include/freezethaw.h |
2928
2929bool
2930errors_are_fatal (bool fatal)
2931 CODE:
2932 RETVAL = object_thawer::errors_are_fatal;
2933 object_thawer::errors_are_fatal = fatal;
2934 OUTPUT:
2935 RETVAL
2958 2936
2959SV * 2937SV *
2960new_from_file (char *klass, octet_string path) 2938new_from_file (char *klass, octet_string path)
2961 CODE: 2939 CODE:
2962 object_thawer *f = new object_thawer (path); 2940 object_thawer *f = new object_thawer (path);

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines