[Scummvm-cvs-logs] CVS: scummvm/scumm actor.cpp,1.329,1.330 akos.h,1.35,1.36 base-costume.cpp,2.27,2.28 base-costume.h,1.36,1.37 costume.cpp,1.171,1.172 costume.h,1.34,1.35 scumm.h,1.549,1.550
Max Horn
fingolfin at users.sourceforge.net
Sat Mar 26 16:43:35 CET 2005
- Previous message: [Scummvm-cvs-logs] CVS: scummvm/scumm actor.cpp,1.328,1.329 akos.h,1.34,1.35 base-costume.cpp,2.26,2.27 base-costume.h,1.35,1.36 costume.cpp,1.170,1.171 costume.h,1.33,1.34 scumm.cpp,1.387,1.388 scumm.h,1.548,1.549
- Next message: [Scummvm-cvs-logs] CVS: scummvm/scumm actor.cpp,1.330,1.331 akos.cpp,1.211,1.212 akos.h,1.36,1.37 base-costume.cpp,2.28,2.29 scumm.cpp,1.388,1.389 scumm.h,1.550,1.551
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Update of /cvsroot/scummvm/scummvm/scumm
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv23535
Modified Files:
actor.cpp akos.h base-costume.cpp base-costume.h costume.cpp
costume.h scumm.h
Log Message:
More costume code restructuring
Index: actor.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/actor.cpp,v
retrieving revision 1.329
retrieving revision 1.330
diff -u -d -r1.329 -r1.330
--- actor.cpp 27 Mar 2005 00:23:37 -0000 1.329
+++ actor.cpp 27 Mar 2005 00:42:48 -0000 1.330
@@ -1128,7 +1128,7 @@
if (_animProgress >= _animSpeed) {
_animProgress = 0;
- BaseCostume *cost = 0;
+ BaseCostumeLoader *cost = 0;
if (_vm->_features & GF_NEW_COSTUMES) {
byte *akos = _vm->getResourceAddress(rtCostume, _costume);
@@ -1138,9 +1138,9 @@
}
} else {
if (_vm->_features & GF_NES)
- cost = new NESCostume(_vm);
+ cost = new NESCostumeLoader(_vm);
else
- cost = new ClassicCostume(_vm);
+ cost = new ClassicCostumeLoader(_vm);
cost->loadCostume(_costume);
if (cost->increaseAnims(this)) {
_needRedraw = true;
Index: akos.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/akos.h,v
retrieving revision 1.35
retrieving revision 1.36
diff -u -d -r1.35 -r1.36
--- akos.h 27 Mar 2005 00:23:37 -0000 1.35
+++ akos.h 27 Mar 2005 00:42:50 -0000 1.36
@@ -38,10 +38,15 @@
struct AkosOffset;
/* TODO:
-class AkosCostume : public BaseCostume {
+class AkosCostumeLoader : public BaseCostumeLoader {
public:
+ AkosCostumeLoader(ScummEngine *vm);
+
void loadCostume(int id);
byte increaseAnims(Actor *a);
+ void costumeDecodeData(Actor *a, int frame, uint usemask);
+
+ //void animateLimb(int limb, int f);
};
*/
Index: base-costume.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/base-costume.cpp,v
retrieving revision 2.27
retrieving revision 2.28
diff -u -d -r2.27 -r2.28
--- base-costume.cpp 27 Mar 2005 00:23:37 -0000 2.27
+++ base-costume.cpp 27 Mar 2005 00:42:50 -0000 2.28
@@ -22,6 +22,7 @@
#include "stdafx.h"
#include "scumm/base-costume.h"
+#include "scumm/costume.h"
namespace Scumm {
@@ -88,12 +89,17 @@
}
void ScummEngine::costumeDecodeData(Actor *a, int frame, uint usemask) {
+ // TODO: This should eventually become a method of the appropriate
+ // BaseCostumeLoader subclasses.
if (_features & GF_NEW_COSTUMES)
akos_decodeData(a, frame, usemask);
- else if (_features & GF_NES)
- NES_cost_decodeData(a, frame, usemask);
- else
- cost_decodeData(a, frame, usemask);
+ else if (_features & GF_NES) {
+ NESCostumeLoader lc(this);
+ lc.costumeDecodeData(a, frame, usemask);
+ } else {
+ ClassicCostumeLoader lc(this);
+ lc.costumeDecodeData(a, frame, usemask);
+ }
}
} // End of namespace Scumm
Index: base-costume.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/base-costume.h,v
retrieving revision 1.36
retrieving revision 1.37
diff -u -d -r1.36 -r1.37
--- base-costume.h 27 Mar 2005 00:23:37 -0000 1.36
+++ base-costume.h 27 Mar 2005 00:42:51 -0000 1.37
@@ -46,12 +46,17 @@
class ScummEngine;
struct VirtScreen;
-class BaseCostume {
+class BaseCostumeLoader {
+protected:
+ ScummEngine *_vm;
+
public:
- virtual ~BaseCostume() {}
+ BaseCostumeLoader(ScummEngine *vm) : _vm(vm) {}
+ virtual ~BaseCostumeLoader() {}
virtual void loadCostume(int id) = 0;
virtual byte increaseAnims(Actor *a) = 0;
+ virtual void costumeDecodeData(Actor *a, int frame, uint usemask) = 0;
};
Index: costume.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/costume.cpp,v
retrieving revision 1.171
retrieving revision 1.172
diff -u -d -r1.171 -r1.172
--- costume.cpp 27 Mar 2005 00:23:37 -0000 1.171
+++ costume.cpp 27 Mar 2005 00:42:52 -0000 1.172
@@ -74,6 +74,15 @@
};
#endif
+static const int v1MMNESLookup[25] = {
+ 0x00, 0x03, 0x01, 0x06, 0x08,
+ 0x02, 0x00, 0x07, 0x0C, 0x04,
+ 0x09, 0x0A, 0x12, 0x0B, 0x14,
+ 0x0D, 0x11, 0x0F, 0x0E, 0x10,
+ 0x17, 0x00, 0x01, 0x05, 0x16
+};
+
+
byte ClassicCostumeRenderer::mainRoutine(int xmoveCur, int ymoveCur) {
int i, skip = 0;
byte drawFlag = 1;
@@ -564,46 +573,7 @@
} while (1);
}
-static const int v1MMNESLookup[25] = {
- 0x00, 0x03, 0x01, 0x06, 0x08,
- 0x02, 0x00, 0x07, 0x0C, 0x04,
- 0x09, 0x0A, 0x12, 0x0B, 0x14,
- 0x0D, 0x11, 0x0F, 0x0E, 0x10,
- 0x17, 0x00, 0x01, 0x05, 0x16
-};
-
-/**
- * costume ID -> v1MMNESLookup[] -> desc -> lens & offs -> data -> Gfx & pal
- */
-void NESCostume::loadCostume(int id) {
- const byte *src;
- int frameset, framenum;
- int offset;
-
- _id = id;
- _baseptr = _vm->getResourceAddress(rtCostume, id);
-
- _format = 0x01;
- _mirror = 0;
- _dataOffsets = _baseptr + 4;
-
- frameset = 0;
- framenum = 0;
-
- src = _dataOffsets;
- // Cost(a)
- offset = src[(frameset * 4 + framenum) * 2];
-
- // Lookup & desc
- offset = READ_LE_UINT16(_vm->_NEScostdesc + v1MMNESLookup[_id] * 2);
- if (v1MMNESLookup[_id] * 2 + 2 < READ_LE_UINT16(_vm->_NEScostdesc - 2)) {
- _numAnim = (READ_LE_UINT16(_vm->_NEScostdesc + v1MMNESLookup[_id] * 2 + 2) - offset);
- } else {
- _numAnim = ((READ_LE_UINT16(_vm->_NEScostlens - 2) - 2) - offset);
- }
-}
-
-void ClassicCostume::loadCostume(int id) {
+void ClassicCostumeLoader::loadCostume(int id) {
_id = id;
byte *ptr = _vm->getResourceAddress(rtCostume, id);
@@ -824,54 +794,36 @@
}
void NESCostumeRenderer::setFacing(const Actor *a) {
- _mirror = newDirToOldDir(a->getFacing()) != 0 || _loaded._mirror;
+ // TODO
+ //_mirror = newDirToOldDir(a->getFacing()) != 0 || _loaded._mirror;
}
void NESCostumeRenderer::setCostume(int costume) {
_loaded.loadCostume(costume);
}
-void ScummEngine::NES_cost_decodeData(Actor *a, int frame, uint usemask) {
- int anim;
- NESCostume lc(this);
-
- lc.loadCostume(a->_costume);
-
- anim = newDirToOldDir(a->getFacing()) + frame * 4;
-
- if (anim > lc._numAnim) {
- return;
- }
-
- a->_cost.curpos[0] = 0;
- a->_cost.start[0] = 0;
- a->_cost.end[0] = lc._baseptr[2 + 8 * frame + 2 * newDirToOldDir(a->getFacing()) + 1];
- a->_cost.frame[0] = frame;
-}
-
-void ScummEngine::cost_decodeData(Actor *a, int frame, uint usemask) {
+void ClassicCostumeLoader::costumeDecodeData(Actor *a, int frame, uint usemask) {
const byte *r;
uint mask, j;
int i;
byte extra, cmd;
int anim;
- ClassicCostume lc(this);
- lc.loadCostume(a->_costume);
+ loadCostume(a->_costume);
anim = newDirToOldDir(a->getFacing()) + frame * 4;
- if (anim > lc._numAnim) {
+ if (anim > _numAnim) {
return;
}
- r = lc._baseptr + READ_LE_UINT16(lc._dataOffsets + anim * 2);
+ r = _baseptr + READ_LE_UINT16(_dataOffsets + anim * 2);
- if (r == lc._baseptr) {
+ if (r == _baseptr) {
return;
}
- if (_version == 1) {
+ if (_vm->_version == 1) {
mask = *r++ << 8;
} else {
mask = READ_LE_UINT16(r);
@@ -880,7 +832,7 @@
i = 0;
do {
if (mask & 0x8000) {
- if (_version <= 3) {
+ if (_vm->_version <= 3) {
j = *r++;
if (j == 0xFF)
@@ -896,7 +848,7 @@
a->_cost.frame[i] = frame;
} else {
extra = *r++;
- cmd = lc._animCmds[j];
+ cmd = _animCmds[j];
if (cmd == 0x7A) {
a->_cost.stopped &= ~(1 << i);
} else if (cmd == 0x79) {
@@ -957,7 +909,7 @@
_loaded.loadCostume(costume);
}
-byte ClassicCostume::increaseAnims(Actor *a) {
+byte ClassicCostumeLoader::increaseAnims(Actor *a) {
int i;
byte r = 0;
@@ -968,14 +920,7 @@
return r;
}
-byte NESCostume::increaseAnim(Actor *a, int slot) {
- a->_cost.curpos[slot]++;
- if (a->_cost.curpos[slot] >= a->_cost.end[slot])
- a->_cost.curpos[slot] = a->_cost.start[slot];
- return 0;
-}
-
-byte ClassicCostume::increaseAnim(Actor *a, int slot) {
+byte ClassicCostumeLoader::increaseAnim(Actor *a, int slot) {
int highflag;
int i, end;
byte code, nc;
@@ -1029,6 +974,71 @@
} while (1);
}
+/**
+ * costume ID -> v1MMNESLookup[] -> desc -> lens & offs -> data -> Gfx & pal
+ */
+void NESCostumeLoader::loadCostume(int id) {
+ const byte *src;
+ int frameset, framenum;
+ int offset;
+
+ _id = id;
+ _baseptr = _vm->getResourceAddress(rtCostume, id);
+
+ _dataOffsets = _baseptr + 4;
+
+ frameset = 0;
+ framenum = 0;
+
+ src = _dataOffsets;
+ // Cost(a)
+ offset = src[(frameset * 4 + framenum) * 2];
+
+ // Lookup & desc
+ offset = READ_LE_UINT16(_vm->_NEScostdesc + v1MMNESLookup[_id] * 2);
+ if (v1MMNESLookup[_id] * 2 + 2 < READ_LE_UINT16(_vm->_NEScostdesc - 2)) {
+ _numAnim = (READ_LE_UINT16(_vm->_NEScostdesc + v1MMNESLookup[_id] * 2 + 2) - offset);
+ } else {
+ _numAnim = ((READ_LE_UINT16(_vm->_NEScostlens - 2) - 2) - offset);
+ }
+}
+
+void NESCostumeLoader::costumeDecodeData(Actor *a, int frame, uint usemask) {
+ int anim;
+
+ loadCostume(a->_costume);
+
+ anim = newDirToOldDir(a->getFacing()) + frame * 4;
+
+ if (anim > _numAnim) {
+ return;
+ }
+
+ a->_cost.curpos[0] = 0;
+ a->_cost.start[0] = 0;
+ a->_cost.end[0] = _baseptr[2 + 8 * frame + 2 * newDirToOldDir(a->getFacing()) + 1];
+ a->_cost.frame[0] = frame;
+}
+
+byte NESCostumeLoader::increaseAnims(Actor *a) {
+ int i;
+ byte r = 0;
+
+ for (i = 0; i != 16; i++) {
+ if (a->_cost.curpos[i] != 0xFFFF)
+ r += increaseAnim(a, i);
+ }
+ return r;
+}
+
+byte NESCostumeLoader::increaseAnim(Actor *a, int slot) {
+ a->_cost.curpos[slot]++;
+ if (a->_cost.curpos[slot] >= a->_cost.end[slot])
+ a->_cost.curpos[slot] = a->_cost.start[slot];
+ return 0;
+}
+
+
} // End of namespace Scumm
#ifdef __PALM_OS__
Index: costume.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/costume.h,v
retrieving revision 1.34
retrieving revision 1.35
diff -u -d -r1.34 -r1.35
--- costume.h 27 Mar 2005 00:23:38 -0000 1.34
+++ costume.h 27 Mar 2005 00:42:53 -0000 1.35
@@ -25,10 +25,7 @@
namespace Scumm {
-class ClassicCostume : public BaseCostume {
-protected:
- ScummEngine *_vm;
-
+class ClassicCostumeLoader : public BaseCostumeLoader {
public:
int _id;
const byte *_baseptr;
@@ -41,21 +38,30 @@
byte _format;
bool _mirror;
- ClassicCostume(ScummEngine *vm) :
- _vm(vm), _id(-1), _baseptr(0), _animCmds(0), _dataOffsets(0), _palette(0),
+ ClassicCostumeLoader(ScummEngine *vm) :
+ BaseCostumeLoader(vm),
+ _id(-1), _baseptr(0), _animCmds(0), _dataOffsets(0), _palette(0),
_frameOffsets(0), _numColors(0), _numAnim(0), _format(0), _mirror(false) {}
void loadCostume(int id);
+ void costumeDecodeData(Actor *a, int frame, uint usemask);
byte increaseAnims(Actor *a);
protected:
byte increaseAnim(Actor *a, int slot);
};
-class NESCostume : public ClassicCostume {
+class NESCostumeLoader : public BaseCostumeLoader {
public:
- NESCostume(ScummEngine *vm) : ClassicCostume(vm) {}
+ int _id;
+ const byte *_baseptr;
+ const byte *_dataOffsets;
+ byte _numAnim;
+
+ NESCostumeLoader(ScummEngine *vm) : BaseCostumeLoader(vm) {}
void loadCostume(int id);
+ void costumeDecodeData(Actor *a, int frame, uint usemask);
+ byte increaseAnims(Actor *a);
protected:
byte increaseAnim(Actor *a, int slot);
@@ -63,7 +69,7 @@
class ClassicCostumeRenderer : public BaseCostumeRenderer {
protected:
- ClassicCostume _loaded;
+ ClassicCostumeLoader _loaded;
byte _scaleIndexX; /* must wrap at 256 */
byte _scaleIndexY;
@@ -89,7 +95,7 @@
class NESCostumeRenderer : public BaseCostumeRenderer {
protected:
- NESCostume _loaded;
+ NESCostumeLoader _loaded;
public:
NESCostumeRenderer(ScummEngine *vm) : BaseCostumeRenderer(vm), _loaded(vm) {}
Index: scumm.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/scumm.h,v
retrieving revision 1.549
retrieving revision 1.550
diff -u -d -r1.549 -r1.550
--- scumm.h 27 Mar 2005 00:23:38 -0000 1.549
+++ scumm.h 27 Mar 2005 00:42:53 -0000 1.550
@@ -848,13 +848,6 @@
void costumeDecodeData(Actor *a, int frame, uint usemask);
bool isCostumeInUse(int i) const;
- // Classic costume class
- void cost_decodeData(Actor *a, int frame, uint usemask);
-
- // NEWS costume class
- void NES_cost_decodeData(Actor *a, int frame, uint usemask);
- void cost_decodeNESCostumeGfx();
-
// Akos Class
struct {
int16 cmd;
- Previous message: [Scummvm-cvs-logs] CVS: scummvm/scumm actor.cpp,1.328,1.329 akos.h,1.34,1.35 base-costume.cpp,2.26,2.27 base-costume.h,1.35,1.36 costume.cpp,1.170,1.171 costume.h,1.33,1.34 scumm.cpp,1.387,1.388 scumm.h,1.548,1.549
- Next message: [Scummvm-cvs-logs] CVS: scummvm/scumm actor.cpp,1.330,1.331 akos.cpp,1.211,1.212 akos.h,1.36,1.37 base-costume.cpp,2.28,2.29 scumm.cpp,1.388,1.389 scumm.h,1.550,1.551
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the Scummvm-git-logs
mailing list