aboutsummaryrefslogtreecommitdiff
path: root/engines/cge
diff options
context:
space:
mode:
Diffstat (limited to 'engines/cge')
-rw-r--r--engines/cge/cge_main.cpp85
-rw-r--r--engines/cge/vga13h.cpp71
2 files changed, 66 insertions, 90 deletions
diff --git a/engines/cge/cge_main.cpp b/engines/cge/cge_main.cpp
index d3c88845c2..e56fad5d91 100644
--- a/engines/cge/cge_main.cpp
+++ b/engines/cge/cge_main.cpp
@@ -477,11 +477,11 @@ void CGEEngine::tooFar() {
void CGEEngine::loadHeroXY() {
debugC(1, kCGEDebugEngine, "CGEEngine::loadHeroXY()");
- VFile cf("CGE.HXY");
+ EncryptedStream cf("CGE.HXY");
uint16 x, y;
memset(_heroXY, 0, sizeof(_heroXY));
- if (!cf._error) {
+ if (!cf.err()) {
for (int i = 0; i < kCaveMax; ++i) {
cf.read((byte *)&x, 2);
cf.read((byte *)&y, 2);
@@ -496,8 +496,8 @@ void CGEEngine::loadMapping() {
debugC(1, kCGEDebugEngine, "CGEEngine::loadMapping()");
if (_now <= kCaveMax) {
- VFile cf("CGE.TAB");
- if (!cf._error) {
+ EncryptedStream cf("CGE.TAB");
+ if (!cf.err()) {
// Move to the data for the given room
cf.seek((_now - 1) * kMapArrSize);
@@ -1030,23 +1030,24 @@ void CGEEngine::loadSprite(const char *fname, int ref, int cav, int col = 0, int
bool tran = false;
int i, lcnt = 0;
- char line[kLineMax];
- mergeExt(line, fname, kSprExt);
+ char tmpStr[kLineMax + 1];
+ Common::String line;
+ mergeExt(tmpStr, fname, kSprExt);
- if (_cat->exist(line)) { // sprite description file exist
- VFile sprf(line);
- if (sprf._error)
- error("Bad SPR [%s]", line);
+ if (_cat->exist(tmpStr)) { // sprite description file exist
+ EncryptedStream sprf(tmpStr);
+ if (sprf.err())
+ error("Bad SPR [%s]", tmpStr);
uint16 len;
- while ((len = sprf.read((uint8 *)line)) != 0) {
+ for (line = sprf.readLine(); !sprf.eos(); line = sprf.readLine()) {
+ len = line.size();
lcnt++;
- if (len && line[len - 1] == '\n')
- line[--len] = '\0';
- if (len == 0 || *line == '.')
+ strcpy(tmpStr, line.c_str());
+ if (len == 0 || *tmpStr == '.')
continue;
- if ((i = takeEnum(Comd, strtok(line, " =\t"))) < 0)
+ if ((i = takeEnum(Comd, strtok(tmpStr, " =\t"))) < 0)
error("Bad line %d [%s]", lcnt, fname);
@@ -1073,7 +1074,8 @@ void CGEEngine::loadSprite(const char *fname, int ref, int cav, int col = 0, int
}
if (! shpcnt)
error("No shapes [%s]", fname);
- } else { // no sprite description: mono-shaped sprite with only .BMP file
+ } else {
+ // no sprite description: mono-shaped sprite with only .BMP file
++shpcnt;
}
@@ -1084,7 +1086,6 @@ void CGEEngine::loadSprite(const char *fname, int ref, int cav, int col = 0, int
_sprite = new Sprite(this, NULL);
if (_sprite) {
_sprite->gotoxy(col, row);
- //Sprite->Time = 1;//-----------$$$$$$$$$$$$$$$$
}
break;
case 2:
@@ -1099,45 +1100,14 @@ void CGEEngine::loadSprite(const char *fname, int ref, int cav, int col = 0, int
_sprite = w;
break;
}
- /*
- case 3 : // NEWTON
- NEWTON * n = new NEWTON(NULL);
- if (n)
- {
- n->Ay = (bottom-n->H);
- n->By = 90;
- n->Cy = 3;
- n->Bx = 99;
- n->Cx = 3;
- n->Goto(col, row);
- }
- _sprite = n;
- break;
- */
- case 4:
- // LISSAJOUS
+ case 3: // NEWTON
+ case 4: // LISSAJOUS
error("Bad type [%s]", fname);
- /*
- LISSAJOUS * l = new LISSAJOUS(NULL);
- if (l)
- {
- l->Ax = SCR_WID/2;
- l->Ay = SCR_HIG/2;
- l->Bx = 7;
- l->By = 13;
- l->Cx = 300;
- l->Cy = 500;
- *(long *) &l->Dx = 0; // movex * cnt
- l->Goto(col, row);
- }
- _sprite = l;
- */
break;
case 5:
{ // FLY
Fly *f = new Fly(this, NULL);
_sprite = f;
- //////Sprite->Time = 1;//-----------$$$$$$$$$$$$$$
break;
}
default:
@@ -1170,26 +1140,29 @@ void CGEEngine::loadSprite(const char *fname, int ref, int cav, int col = 0, int
}
void CGEEngine::loadScript(const char *fname) {
- VFile scrf(fname);
+ EncryptedStream scrf(fname);
- if (scrf._error)
+ if (scrf.err())
return;
bool ok = true;
int lcnt = 0;
- char line[kLineMax];
- while (scrf.read((uint8 *)line) != 0) {
+ char tmpStr[kLineMax+1];
+ Common::String line;
+
+ for (line = scrf.readLine(); !scrf.eos(); line = scrf.readLine()) {
char *p;
lcnt++;
- if (*line == 0 || *line == '\n' || *line == '.')
+ strcpy(tmpStr, line.c_str());
+ if ((line.size() == 0) || (*tmpStr == '.'))
continue;
ok = false; // not OK if break
// sprite ident number
- if ((p = strtok(line, " \t\n")) == NULL)
+ if ((p = strtok(tmpStr, " \t\n")) == NULL)
break;
int SpI = atoi(p);
diff --git a/engines/cge/vga13h.cpp b/engines/cge/vga13h.cpp
index 727cc72e39..ef085359a7 100644
--- a/engines/cge/vga13h.cpp
+++ b/engines/cge/vga13h.cpp
@@ -209,37 +209,40 @@ Sprite *Sprite::expand() {
return this;
static const char *Comd[] = { "Name", "Phase", "Seq", "Near", "Take", NULL };
- char line[kLineMax], fname[kPathMax];
+ char fname[kPathMax];
Common::Array<BitmapPtr> shplist;
for (int i = 0; i < _shpCnt + 1; ++i)
shplist.push_back(NULL);
Seq *seq = NULL;
- int shpcnt = 0,
- seqcnt = 0,
- neacnt = 0,
- takcnt = 0,
+ int shapeCount = 0,
+ seqCount = 0,
+ nearCount = 0,
+ takeCount = 0,
maxnow = 0,
maxnxt = 0;
- Snail::Com *nea = NULL;
- Snail::Com *tak = NULL;
+ Snail::Com *near = NULL;
+ Snail::Com *take = NULL;
mergeExt(fname, _file, kSprExt);
if (_cat->exist(fname)) { // sprite description file exist
- VFile sprf(fname);
- if (!(sprf._error==0))
+ EncryptedStream sprf(fname);
+ if (sprf.err())
error("Bad SPR [%s]", fname);
+ Common::String line;
+ char tmpStr[kLineMax + 1];
int len = 0, lcnt = 0;
- while ((len = sprf.read((uint8 *)line)) != 0) {
+
+ for (line = sprf.readLine(); !sprf.eos(); line = sprf.readLine()) {
+ len = line.size();
+ strcpy(tmpStr, line.c_str());
lcnt++;
- if (len && line[len - 1] == '\n')
- line[--len] = '\0';
- if (len == 0 || *line == '.')
+ if (len == 0 || *tmpStr == '.')
continue;
Snail::Com *c;
- switch (takeEnum(Comd, strtok(line, " =\t"))) {
+ switch (takeEnum(Comd, strtok(tmpStr, " =\t"))) {
case 0:
// Name
setName(strtok(NULL, ""));
@@ -247,28 +250,28 @@ Sprite *Sprite::expand() {
case 1:
// Phase
// In case the shape index gets too high, increase the array size
- while ((shpcnt + 1) >= (int)shplist.size()) {
+ while ((shapeCount + 1) >= (int)shplist.size()) {
shplist.push_back(NULL);
++_shpCnt;
}
- shplist[shpcnt++] = new Bitmap(strtok(NULL, " \t,;/"));
+ shplist[shapeCount++] = new Bitmap(strtok(NULL, " \t,;/"));
break;
case 2:
// Seq
- seq = (Seq *) realloc(seq, (seqcnt + 1) * sizeof(*seq));
+ seq = (Seq *)realloc(seq, (seqCount + 1) * sizeof(*seq));
assert(seq != NULL);
Seq *s;
- s = &seq[seqcnt++];
+ s = &seq[seqCount++];
s->_now = atoi(strtok(NULL, " \t,;/"));
if (s->_now > maxnow)
maxnow = s->_now;
s->_next = atoi(strtok(NULL, " \t,;/"));
switch (s->_next) {
case 0xFF:
- s->_next = seqcnt;
+ s->_next = seqCount;
break;
case 0xFE:
- s->_next = seqcnt - 1;
+ s->_next = seqCount - 1;
break;
}
if (s->_next > maxnxt)
@@ -281,9 +284,9 @@ Sprite *Sprite::expand() {
// Near
if (_nearPtr == kNoPtr)
break;
- nea = (Snail::Com *) realloc(nea, (neacnt + 1) * sizeof(*nea));
- assert(nea != NULL);
- c = &nea[neacnt++];
+ near = (Snail::Com *)realloc(near, (nearCount + 1) * sizeof(*near));
+ assert(near != NULL);
+ c = &near[nearCount++];
if ((c->_com = (SnCom)takeEnum(Snail::_comText, strtok(NULL, " \t,;/"))) < 0)
error("Bad NEAR in %d [%s]", lcnt, fname);
c->_ref = atoi(strtok(NULL, " \t,;/"));
@@ -294,9 +297,9 @@ Sprite *Sprite::expand() {
// Take
if (_takePtr == kNoPtr)
break;
- tak = (Snail::Com *) realloc(tak, (takcnt + 1) * sizeof(*tak));
- assert(tak != NULL);
- c = &tak[takcnt++];
+ take = (Snail::Com *)realloc(take, (takeCount + 1) * sizeof(*take));
+ assert(take != NULL);
+ c = &take[takeCount++];
if ((c->_com = (SnCom)takeEnum(Snail::_comText, strtok(NULL, " \t,;/"))) < 0)
error("Bad NEAR in %d [%s]", lcnt, fname);
c->_ref = atoi(strtok(NULL, " \t,;/"));
@@ -307,14 +310,14 @@ Sprite *Sprite::expand() {
}
} else {
// no sprite description: try to read immediately from .BMP
- shplist[shpcnt++] = new Bitmap(_file);
+ shplist[shapeCount++] = new Bitmap(_file);
}
- shplist[shpcnt] = NULL;
+ shplist[shapeCount] = NULL;
if (seq) {
- if (maxnow >= shpcnt)
+ if (maxnow >= shapeCount)
error("Bad PHASE in SEQ [%s]", fname);
- if (maxnxt >= seqcnt)
+ if (maxnxt >= seqCount)
error("Bad JUMP in SEQ [%s]", fname);
setSeq(seq);
} else
@@ -327,12 +330,12 @@ Sprite *Sprite::expand() {
setShapeList(shapeList);
- if (nea)
- nea[neacnt - 1]._ptr = _ext->_near = nea;
+ if (near)
+ near[nearCount - 1]._ptr = _ext->_near = near;
else
_nearPtr = kNoPtr;
- if (tak)
- tak[takcnt - 1]._ptr = _ext->_take = tak;
+ if (take)
+ take[takeCount - 1]._ptr = _ext->_take = take;
else
_takePtr = kNoPtr;