/* -*- LPC -*- */ /* * $Locker: $ * $Id: money.c,v 1.6 1998/12/02 07:27:55 pinkfish Exp $ * * $Log: money.c,v $ * Revision 1.6 1998/12/02 07:27:55 pinkfish * Make it handle -ve numbers. * * Revision 1.5 1998/09/10 19:46:51 pinkfish * Fix it up to handle the pence shortening as well. * * Revision 1.4 1998/08/18 23:12:06 pinkfish * Fix a spelling mistake. * * Revision 1.3 1998/08/18 20:08:16 pinkfish * Get it to handle a$ as well as just $ * * Revision 1.2 1998/08/14 10:30:44 pinkfish * aAdd in code to turn a string back into a bvalue. * * Revision 1.1 1998/02/11 04:13:54 terano * Initial revision * */ /* * Symboliser for Pumpkin money. */ /** * This method turns a number into a string. This is callec by the * money handler when it wants to create a nice string for the money * you have. * @param value the cost of the item to turn into a string * @return the value as a string * @see unsymbolise_string() * @see /obj/handlers/money_handler */ string symbolise_value( int value ) { int dollars; int pence; string s; if (value < 0) { s = "-"; value = - value; } else { s = ""; } dollars = value / 100; pence = ( value % 100 ); if ( !pence ) { return "P$"+ s + dollars; } if ( !dollars ) { return s + pence +"p"; } if ( pence < 10 ) { return "P$"+ s + dollars +".0"+ pence; } return "P$" + s + dollars + "." + pence; } /* symbolise_value() */ /** * This method turns a string into a number. This is called by the money * handler when it wishes to change a string into value. This should * handle reversing the string, exactly as handled above. * @param str the string to turn into a value * @return the value, 0 if unable to decode * @see symbolise_value() * @see /obj/handlers/money_handler */ int unsymbolise_string( string str ) { int dollars; int pence; if (strlen(str) < 2) { return 0; } if (str[0] == '$' || lower_case(str[0..1]) == "p$") { if (str[0] == 'p') { str = str[1..]; } if (sscanf(str, "$%d.%d", dollars, pence) == 2) { return dollars * 100 + pence; } else if (sscanf(str, "$%d", dollars) == 1) { return dollars * 100; } } else if (lower_case(str[<1..<1]) == "p") { if (sscanf(str, "%dp", pence) == 1) { return pence; } } return 0; } /* unsymbolise_string() */