int parse_arg(int who, char *s) { int n; /* * scode() will perform an atoi() if the string is a digits-only * number, or a code_to_int() if the string is a location code. */ n = scode(s); if (n < 0) n = 0; if (n == 0 && who && subloc(who) && fuzzy_strcmp(s, "garrison")) { n = garrison_here(subloc(who)); if (n == 0) n = garrison_magic; } return n; }
CString CLevel::getSignCode(CString& pText) { CString retVal; int txtLen = pText.length(); for(int i = 0; i < txtLen; i++) { char letter = pText[i]; if(letter == '#') { i ++; if(i < txtLen) { letter = pText[i]; int code = signSymbols.find(letter); if(code != -1) { for(int ii = 0; ii < ctablen[code]; ii++) retVal.writeChar(ctab[ctabindex[code] + ii] + 32); continue; } else letter = pText[--i]; } } int code = signText.find(letter); if (letter == '#') code = 86; if(code != -1) retVal.writeChar(code+32); else { retVal.writeChar(86 +32); // # retVal.writeChar(10 +32); // K retVal.writeChar(69 +32); // ( char buf[10]; memset(buf, 0, 10); sprintf(buf,"%d", code); CString scode(buf); for (int i = 0; i < scode.length(); ++i) { int c = signText.find(scode[i]); if (c != -1) retVal.writeChar(c +32); } retVal.writeChar(70 +32); // ) } } return retVal; }
CString encodeSignCode(CString& pText) { CString retVal; int txtLen = pText.length(); for (int i = 0; i < txtLen; i++) { char letter = pText[i]; if (letter == '#') { i++; if (i < txtLen) { letter = pText[i]; int code = signSymbols.find(letter); if (code != -1) { for (int ii = 0; ii < ctablen[code]; ii++) retVal.writeGChar((char)ctab[ctabindex[code] + ii]); continue; } else letter = pText[--i]; } } int code = signText.find(letter); if (letter == '#') code = 86; if (code != -1) retVal.writeGChar((char)code); else { if (letter != '\r') { // Write the character code directly into the sign. retVal >> (char)86 >> (char)10 >> (char)69; // #K( CString scode((int)letter); for (int i = 0; i < scode.length(); ++i) { int c = signText.find(scode[i]); if (scode != -1) retVal.writeGChar((char)c); } retVal >> (char)70; // ) } } }