diff options
-rw-r--r-- | engines/glk/alan2/decode.cpp | 2 | ||||
-rw-r--r-- | engines/glk/alan2/execute.cpp | 67 | ||||
-rw-r--r-- | engines/glk/alan2/parse.cpp | 102 | ||||
-rw-r--r-- | engines/glk/alan2/parse.h | 4 | ||||
-rw-r--r-- | engines/glk/alan2/saveload.cpp | 6 |
5 files changed, 89 insertions, 92 deletions
diff --git a/engines/glk/alan2/decode.cpp b/engines/glk/alan2/decode.cpp index 3a93d1d3a8..58e814f97f 100644 --- a/engines/glk/alan2/decode.cpp +++ b/engines/glk/alan2/decode.cpp @@ -60,7 +60,7 @@ void Decode::startDecoding() { int Decode::decodeChar() { const long range = (long)(_high - _low) + 1; - const int f = (((long)(_value - _low) + 1) * _freq[0] - 1) / range; + const uint f = (((long)(_value - _low) + 1) * _freq[0] - 1) / range; int symbol; // Find the symbol diff --git a/engines/glk/alan2/execute.cpp b/engines/glk/alan2/execute.cpp index 64b405b7d3..fa7bdd7d7a 100644 --- a/engines/glk/alan2/execute.cpp +++ b/engines/glk/alan2/execute.cpp @@ -42,7 +42,7 @@ bool Execute::exitto(int to, int from) { return false; // No exits for (ExtElem *ext = (ExtElem *)addrTo(_locs[from - LOCMIN].exts); !endOfTable(ext); ext++) - if (ext->next == to) + if ((int)ext->next == to) return true; return false; @@ -51,7 +51,7 @@ bool Execute::exitto(int to, int from) { int Execute::count(int cnt) { int j = 0; - for (int i = OBJMIN; i <= OBJMAX; i++) + for (uint i = OBJMIN; i <= OBJMAX; i++) if (in(i, cnt)) j++; // Then it's in this container also @@ -61,7 +61,7 @@ int Execute::count(int cnt) { int Execute::sumAttributes(Aword atr, Aword cnt) { int sum = 0; - for (int i = OBJMIN; i <= OBJMAX; i++) { + for (uint i = OBJMIN; i <= OBJMAX; i++) { if (_objs[i - OBJMIN].loc == cnt) { // Then it's in this container if (_objs[i - OBJMIN].cont != 0) // This is also a container! sum = sum + sumAttributes(atr, i); @@ -92,7 +92,7 @@ bool Execute::checkContainerLimit(Aword cnt, Aword obj) { if (_cnts[props - CNTMIN].lims != 0) { /* Any limits at all? */ for (lim = (LimElem *)addrTo(_cnts[props - CNTMIN].lims); !endOfTable(lim); lim++) { if (lim->atr == 0) { - if (count(cnt) >= lim->val) { + if (count(cnt) >= (int)lim->val) { _vm->_interpreter->interpret(lim->stms); return true; // Limit check failed } @@ -113,12 +113,12 @@ bool Execute::checkContainerLimit(Aword cnt, Aword obj) { void Execute::print(Aword fpos, Aword len) { char str[2 * WIDTH]; // String buffer int outlen = 0; // Current output length - int ch; + int ch = 0; int i; - long savfp; // Temporary saved text file position + long savfp = 0; // Temporary saved text file position bool printFlag = false; // Printing already? bool savedPrintFlag = printFlag; - DecodeInfo *info; // Saved decoding info + DecodeInfo *info = nullptr; // Saved decoding info if (len == 0) @@ -138,10 +138,10 @@ void Execute::print(Aword fpos, Aword len) { if (_vm->header->pack) _vm->_decode->startDecoding(); - for (outlen = 0; outlen != len; outlen = outlen + strlen(str)) { + for (outlen = 0; outlen != (int)len; outlen = outlen + strlen(str)) { // Fill the buffer from the beginning for (i = 0; i <= WIDTH || (i > WIDTH && ch != ' '); i++) { - if (outlen + i == len) // No more characters? + if (outlen + i == (int)len) // No more characters? break; if (_vm->header->pack) ch = _vm->_decode->decodeChar(); @@ -246,7 +246,7 @@ bool Execute::confirm(MsgKind msgno) { void Execute::quit() { char buf[80]; - char choices[10]; +// char choices[10]; _vm->paragraph(); @@ -310,7 +310,7 @@ void Execute::cancl(Aword evt) { int i; for (i = etop - 1; i >= 0; i--) { - if (eventq[i].event == evt) { + if (eventq[i].event == (int)evt) { while (i < etop - 1) { eventq[i].event = eventq[i + 1].event; eventq[i].time = eventq[i + 1].time; @@ -417,11 +417,11 @@ void Execute::incr(Aword id, Aword atr, Aword step) { void Execute::decr(Aword id, Aword atr, Aword step) { if (isObj(id)) - incObject(id, atr, -step); + incObject(id, atr, -(int)step); else if (isLoc(id)) - incLocation(id, atr, -step); + incLocation(id, atr, -(int)step); else if (isAct(id)) - incract(id, atr, -step); + incract(id, atr, -(int)step); else error("Can't DECR item (%ld).", (unsigned long)id); } @@ -473,7 +473,7 @@ Aword Execute::where(Aword id) { Aint Execute::agrmax(Aword atr, Aword whr) { Aword i; - Aint max = 0; + uint max = 0; for (i = OBJMIN; i <= OBJMAX; i++) { if (isLoc(whr)) { @@ -488,7 +488,7 @@ Aint Execute::agrmax(Aword atr, Aword whr) { Aint Execute::agrsum(Aword atr, Aword whr) { Aword i; - Aint sum = 0; + uint sum = 0; for (i = OBJMIN; i <= OBJMAX; i++) { if (isLoc(whr)) { @@ -563,7 +563,7 @@ void Execute::locact(Aword act, Aword whr) { _vm->cur.act = prevact; } - if (_vm->cur.act != act) + if (_vm->cur.act != (int)act) _vm->cur.loc = prevloc; } @@ -582,13 +582,13 @@ Abool Execute::objhere(Aword obj) { if (isObj(_objs[obj - OBJMIN].loc) || isAct(_objs[obj - OBJMIN].loc)) return(isHere(_objs[obj - OBJMIN].loc)); else // If the container wasn't anywhere, assume where HERO is! - return(where(HERO) == _vm->cur.loc); + return((int)where(HERO) == _vm->cur.loc); } else - return(_objs[obj - OBJMIN].loc == _vm->cur.loc); + return((int)_objs[obj - OBJMIN].loc == _vm->cur.loc); } Aword Execute::acthere(Aword act) { - return _acts[act - ACTMIN].loc == _vm->cur.loc; + return (int)_acts[act - ACTMIN].loc == _vm->cur.loc; } Abool Execute::isHere(Aword id) { @@ -705,7 +705,7 @@ void Execute::dscract(Aword act) { } void Execute::describe(Aword id) { - for (int i = 0; i < _describeStack.size(); i++) { + for (uint i = 0; i < _describeStack.size(); i++) { _describeStack.push(id); if (isObj(id)) @@ -730,9 +730,9 @@ void Execute::use(Aword act, Aword scr) { } void Execute::list(Aword cnt) { - int i; + uint i; Aword props; - Aword prevobj; + Aword prevobj = 0; bool found = false; bool multiple = false; @@ -800,29 +800,26 @@ void Execute::list(Aword cnt) { } void Execute::empty(Aword cnt, Aword whr) { - for (int i = OBJMIN; i <= OBJMAX; i++) + for (uint i = OBJMIN; i <= OBJMAX; i++) if (in(i, cnt)) locate(i, whr); } void Execute::dscrobjs() { - int i; - int prevobj; + uint i; + int prevobj = 0; bool found = false; bool multiple = false; // First describe everything here with its own description for (i = OBJMIN; i <= OBJMAX; i++) { - if (_objs[i - OBJMIN].loc == _vm->cur.loc && - _objs[i - OBJMIN].describe && - _objs[i - OBJMIN].dscr1) + if ((int)_objs[i - OBJMIN].loc == _vm->cur.loc && _objs[i - OBJMIN].describe && _objs[i - OBJMIN].dscr1) describe(i); } // Then list everything else here for (i = OBJMIN; i <= OBJMAX; i++) { - if (_objs[i - OBJMIN].loc == _vm->cur.loc && - _objs[i - OBJMIN].describe) { + if ((int)_objs[i - OBJMIN].loc == _vm->cur.loc && _objs[i - OBJMIN].describe) { if (!found) { _vm->printMessage(M_SEEOBJ1); sayarticle(i); @@ -860,18 +857,18 @@ void Execute::dscrobjs() { void Execute::dscracts() { - for (int i = HERO+1; i <= ACTMAX; i++) - if (_acts[i-ACTMIN].loc == _vm->cur.loc && + for (uint i = HERO+1; i <= ACTMAX; i++) + if ((int)_acts[i-ACTMIN].loc == _vm->cur.loc && _acts[i-ACTMIN].describe) describe(i); // Set describe flag for all actors - for (int i = HERO; i <= ACTMAX; i++) + for (uint i = HERO; i <= ACTMAX; i++) _acts[i-ACTMIN].describe = true; } void Execute::look() { - int i; + uint i; _vm->looking = true; // Set describe flag for all objects and actors diff --git a/engines/glk/alan2/parse.cpp b/engines/glk/alan2/parse.cpp index e8b4f1f695..dd0623888e 100644 --- a/engines/glk/alan2/parse.cpp +++ b/engines/glk/alan2/parse.cpp @@ -162,7 +162,7 @@ void Parser::agetline() { } void Parser::scan() { - int i; + uint i; int w; char *str; @@ -258,9 +258,9 @@ Abool Parser::objhere(Aword obj) { if (isObj(objs[obj - OBJMIN].loc) || isAct(objs[obj - OBJMIN].loc)) return isHere(objs[obj - OBJMIN].loc); else // If the container wasn't anywhere, assume where HERO is! - return where(HERO) == _vm->cur.loc; + return (int)where(HERO) == _vm->cur.loc; } else - return(objs[obj - OBJMIN].loc == _vm->cur.loc); + return((int)objs[obj - OBJMIN].loc == _vm->cur.loc); } @@ -268,7 +268,7 @@ Abool Parser::isHere(Aword id) { if (isObj(id)) return objhere(id); else if (isAct(id)) - return acts[id - ACTMIN].loc == _vm->cur.loc; + return (int)acts[id - ACTMIN].loc == _vm->cur.loc; else error("Can't HERE item (%ld).", (unsigned long)id); } @@ -276,21 +276,21 @@ Abool Parser::isHere(Aword id) { // ---------------------------------------------------------------------------- void Parser::buildall(ParamElem list[]) { - int o, i = 0; + uint o, i = 0; bool found = false; for (o = OBJMIN; o <= OBJMAX; o++) { if (isHere(o)) { found = true; list[i].code = o; - list[i++].firstWord = EOF; + list[i++].firstWord = (Aword)EOF; } } if (!found) _vm->printError(M_WHAT_ALL); else - list[i].code = EOF; + list[i].code = (Aword)EOF; } void Parser::listCopy(ParamElem a[], ParamElem b[]) { @@ -299,7 +299,7 @@ void Parser::listCopy(ParamElem a[], ParamElem b[]) { for (i = 0; b[i].code != EOF; i++) a[i] = b[i]; - a[i].code = EOF; + a[i].code = (Aword)EOF; } bool Parser::listContains(ParamElem l[], Aword e) { @@ -317,7 +317,7 @@ void Parser::listIntersection(ParamElem a[], ParamElem b[]) { if (listContains(b, a[i].code)) a[last++] = a[i]; - a[last].code = EOF; + a[last].code = (Aword)EOF; } void Parser::listCopyFromDictionary(ParamElem p[], Aword r[]) { @@ -325,10 +325,10 @@ void Parser::listCopyFromDictionary(ParamElem p[], Aword r[]) { for (i = 0; r[i] != EOF; i++) { p[i].code = r[i]; - p[i].firstWord = EOF; + p[i].firstWord = (Aword)EOF; } - p[i].code = EOF; + p[i].code = (Aword)EOF; } int Parser::listLength(ParamElem a[]) { @@ -347,7 +347,7 @@ void Parser::listCompact(ParamElem a[]) { if (a[j].code != 0) a[i++] = a[j]; - a[i].code = EOF; + a[i].code = (Aword)EOF; } void Parser::listMerge(ParamElem a[], ParamElem b[]) { @@ -358,7 +358,7 @@ void Parser::listMerge(ParamElem a[], ParamElem b[]) { for (i = 0; b[i].code != EOF; i++) { if (!listContains(a, b[i].code)) { a[last++] = b[i]; - a[last].code = EOF; + a[last].code = (Aword)EOF; } } } @@ -387,12 +387,12 @@ void Parser::unambig(ParamElem plst[]) { if (isLiteral(wrds[wrdidx])) { // Transform the word into a reference to the literal value plst[0].code = wrds[wrdidx++] - dictsize + LITMIN; - plst[0].firstWord = EOF; // No words used! - plst[1].code = EOF; + plst[0].firstWord = (Aword)EOF; // No words used! + plst[1].code = (Aword)EOF; return; } - plst[0].code = EOF; // Make empty + plst[0].code = (Aword)EOF; // Make empty if (isIt(wrds[wrdidx])) { wrdidx++; @@ -405,14 +405,14 @@ void Parser::unambig(ParamElem plst[]) { if (!isHere(pparams[i].code)) { params[0].code = pparams[i].code; - params[0].firstWord = EOF; - params[1].code = EOF; + params[0].firstWord = (Aword)EOF; + params[1].code = (Aword)EOF; _vm->printError(M_NO_SUCH); } plst[0] = pparams[i]; - plst[0].firstWord = EOF; // No words used! - plst[1].code = EOF; + plst[0].firstWord = (Aword)EOF; // No words used! + plst[1].code = (Aword)EOF; return; } @@ -478,7 +478,7 @@ void Parser::unambig(ParamElem plst[]) { params[0].code = 0; /* Just make it anything != EOF */ params[0].firstWord = firstWord; /* Remember words for errors below */ params[0].lastWord = lastWord; - params[1].code = EOF; /* But be sure to terminate */ + params[1].code = (Aword)EOF; /* But be sure to terminate */ if (listLength(plst) > 1) _vm->printError(M_WHICH_ONE); @@ -499,7 +499,7 @@ void Parser::simple(ParamElem olst[]) { if (tlst == NULL) tlst = new ParamElem[MAXENTITY + 1]; - tlst[0].code = EOF; + tlst[0].code = (Aword)EOF; for (;;) { if (isThem(wrds[wrdidx])) { @@ -515,7 +515,7 @@ void Parser::simple(ParamElem olst[]) { _vm->printError(M_WHAT_THEM); listCopy(olst, pmlst); - olst[0].firstWord = EOF; // No words used + olst[0].firstWord = (Aword)EOF; // No words used wrdidx++; } else { unambig(olst); // Look for unambigous noun phrase @@ -607,7 +607,7 @@ void Parser::resolve(ParamElem plst[]) { if (plst[i].code < LITMIN) { // Literals are always 'here' if (!isHere(plst[i].code)) { params[0] = plst[i]; // Copy error param as first one for message - params[1].code = EOF; // But be sure to terminate + params[1].code = (Aword)EOF; // But be sure to terminate _vm->printError(M_NO_SUCH); } } @@ -657,7 +657,7 @@ AltElem *Parser::findalt(Aword vrbsadr, Aword param) { return NULL; for (vrb = (VrbElem *)addrTo(vrbsadr); !endOfTable(vrb); vrb++) { - if (vrb->code == _vm->cur.vrb) { + if ((int)vrb->code == _vm->cur.vrb) { for (alt = (AltElem *)addrTo(vrb->alts); !endOfTable(alt); alt++) if (alt->param == param || alt->param == 0) return alt; @@ -727,7 +727,7 @@ bool Parser::possible() { return true; } -void Parser::tryMatch(ParamElem mlst[]) { +void Parser::tryMatch(ParamElem mlstArr[]) { ElmElem *elms; // Pointer to element list StxElem *stx; // Pointer to syntax list ClaElem *cla; // Pointer to class definitions @@ -742,7 +742,7 @@ void Parser::tryMatch(ParamElem mlst[]) { } for (stx = stxs; !endOfTable(stx); stx++) - if (stx->code == vrbcode) + if ((int)stx->code == vrbcode) break; if (endOfTable(stx)) @@ -795,13 +795,13 @@ void Parser::tryMatch(ParamElem mlst[]) { // Mark this as the multiple position in which to insert // actual parameter values later params[paramidx++].code = 0; - listCopy(mlst, tlst); + listCopy(mlstArr, tlst); anyPlural = true; } } else params[paramidx++] = tlst[0]; - params[paramidx].code = EOF; + params[paramidx].code = (Aword)EOF; } elms = (ElmElem *) addrTo(elms->next); @@ -818,8 +818,8 @@ void Parser::tryMatch(ParamElem mlst[]) { for (cla = (ClaElem *) addrTo(elms->next); !endOfTable(cla); cla++) { if (params[cla->code - 1].code == 0) { // This was a multiple parameter, so check all and remove failing - for (i = 0; mlst[i].code != EOF; i++) { - params[cla->code-1] = mlst[i]; + for (i = 0; mlstArr[i].code != EOF; i++) { + params[cla->code-1] = mlstArr[i]; if (!claCheck(cla)) { // Multiple could be both an explicit list of params and an ALL if (allLength == 0) { @@ -832,7 +832,7 @@ void Parser::tryMatch(ParamElem mlst[]) { _vm->paragraph(); } - mlst[i].code = 0; // In any case remove it from the list + mlstArr[i].code = 0; // In any case remove it from the list } } @@ -852,9 +852,9 @@ void Parser::tryMatch(ParamElem mlst[]) { if (!checked[p]) { if (params[p].code == 0) { // This was a multiple parameter, check all and remove failing - for (i = 0; mlst[i].code != EOF; i++) { - if (mlst[i].code != 0 && !isObj(mlst[i].code)) // Skip any empty slots - mlst[i].code = 0; + for (i = 0; mlstArr[i].code != EOF; i++) { + if (mlstArr[i].code != 0 && !isObj(mlstArr[i].code)) // Skip any empty slots + mlstArr[i].code = 0; } } else if (!isObj(params[p].code)) _vm->printError(M_CANT0); @@ -869,35 +869,35 @@ void Parser::tryMatch(ParamElem mlst[]) { for (p = 0; params[p].code != 0; p++); // Find multiple marker for (i = 0; i < allLength; i++) { - if (mlst[i].code != 0) { // Already empty? - params[p] = mlst[i]; + if (mlstArr[i].code != 0) { // Already empty? + params[p] = mlstArr[i]; if (!possible()) - mlst[i].code = 0; // Remove this from list + mlstArr[i].code = 0; // Remove this from list } } params[p].code = 0; // Restore multiple marker - listCompact(mlst); + listCompact(mlstArr); - if (listLength(mlst) == 0) { - params[0].code = EOF; + if (listLength(mlstArr) == 0) { + params[0].code = (Aword)EOF; _vm->printError(M_WHAT_ALL); } } else if (anyPlural) { - listCompact(mlst); + listCompact(mlstArr); // If there where multiple parameters but non left, exit without a // word, assuming we have already said enough - if (listLength(mlst) == 0) + if (listLength(mlstArr) == 0) _vm->printError(MSGMAX); } plural = anyPlural; // Remember that we found plural objects } -void Parser::match(ParamElem *mlst) { - tryMatch(mlst); // try to understand what the user said +void Parser::match(ParamElem *mlstArr) { + tryMatch(mlstArr); // try to understand what the user said if (wrds[wrdidx] != EOF && !isConj(wrds[wrdidx])) _vm->printError(M_WHAT); @@ -933,10 +933,10 @@ void Parser::action(ParamElem plst[]) { void Parser::parse() { if (mlst == NULL) { // Allocate large enough paramlists mlst = new ParamElem[MAXENTITY + 1]; - mlst[0].code = EOF; + mlst[0].code = (Aword)EOF; pmlst = new ParamElem[MAXENTITY + 1]; params = new ParamElem[MAXENTITY + 1]; - params[0].code = EOF; + params[0].code = (Aword)EOF; pparams = new ParamElem[MAXENTITY + 1]; } @@ -949,9 +949,9 @@ void Parser::parse() { allLength = 0; paramidx = 0; listCopy(pparams, params); - params[0].code = EOF; + params[0].code = (Aword)EOF; listCopy(pmlst, mlst); - mlst[0].code = EOF; + mlst[0].code = (Aword)EOF; if (isVerb(wrds[wrdidx])) { vrbwrd = wrds[wrdidx]; @@ -960,8 +960,8 @@ void Parser::parse() { match(mlst); action(mlst); // mlst contains possible multiple params } else { - params[0].code = EOF; - pmlst[0].code = EOF; + params[0].code = (Aword)EOF; + pmlst[0].code = (Aword)EOF; nonverb(); } } diff --git a/engines/glk/alan2/parse.h b/engines/glk/alan2/parse.h index f88fd74a58..1e3601c773 100644 --- a/engines/glk/alan2/parse.h +++ b/engines/glk/alan2/parse.h @@ -138,8 +138,8 @@ private: */ bool possible(); - void tryMatch(ParamElem mlst[]); - void match(ParamElem *mlst); + void tryMatch(ParamElem mlstArr[]); + void match(ParamElem *mlstArr); /** * Execute all activities commanded. Handles possible multiple actions diff --git a/engines/glk/alan2/saveload.cpp b/engines/glk/alan2/saveload.cpp index 8d2f7a43be..2e7e3d54d0 100644 --- a/engines/glk/alan2/saveload.cpp +++ b/engines/glk/alan2/saveload.cpp @@ -30,7 +30,7 @@ namespace Glk { namespace Alan2 { void SaveLoad::save() { - int i; + uint i; Common::SaveFileManager *saveFileMan = _vm->getSaveFileManager(); Common::OutSaveFile *saveFile = nullptr; Common::String str; @@ -102,7 +102,7 @@ void SaveLoad::save() { // Save the event queue _events[*_eventTop].time = 0; // Mark the top - for (i = 0; i < *_eventTop + 1; i++) + for (i = 0; i < (uint)*_eventTop + 1; i++) saveFile->write(&_events[i], sizeof(_events[0])); // Save scores @@ -113,7 +113,7 @@ void SaveLoad::save() { } void SaveLoad::restore() { - int i, tmp; + uint i; Common::SaveFileManager *saveFileMan = _vm->getSaveFileManager(); Common::InSaveFile *saveFile = nullptr; Common::String str; |