mirror of
https://github.com/libretro/scummvm.git
synced 2025-02-23 20:51:14 +00:00
Implemented some of the sprite animations loading logic for the first scene (no display yet)
svn-id: r48099
This commit is contained in:
parent
43ca6071ea
commit
6969b5ebe6
@ -31,7 +31,7 @@ namespace M4 {
|
||||
|
||||
/*--------------------------------------------------------------------------*/
|
||||
|
||||
const char *MadsSceneLogic::formAnimName(char sepChar, int suffixNum) {
|
||||
const char *MadsSceneLogic::formAnimName(char sepChar, int16 suffixNum) {
|
||||
return MADSResourceManager::getResourceName(sepChar, _sceneNumber, EXTTYPE_NONE, NULL, suffixNum);
|
||||
}
|
||||
|
||||
@ -69,6 +69,15 @@ void MadsSceneLogic::getAnimName() {
|
||||
strcpy(_madsVm->scene()->_aaName, newName);
|
||||
}
|
||||
|
||||
/*--------------------------------------------------------------------------*/
|
||||
|
||||
uint16 MadsSceneLogic::loadSpriteSet(uint16 suffixNum, uint16 sepChar) {
|
||||
assert(sepChar < 256);
|
||||
const char *resName = formAnimName((char)sepChar, (int16)suffixNum);
|
||||
return _madsVm->scene()->loadSceneSpriteSet(resName);
|
||||
}
|
||||
|
||||
|
||||
/*--------------------------------------------------------------------------*/
|
||||
|
||||
/**
|
||||
@ -96,7 +105,15 @@ warning("anim - %s\n", animName);
|
||||
}
|
||||
|
||||
void MadsSceneLogic::enterScene() {
|
||||
|
||||
for (int i = 1; i <= 7; ++i)
|
||||
_spriteIndexes[i - 1] = loadSpriteSet(i, 'x');
|
||||
_spriteIndexes[7] = loadSpriteSet(0xFFFF, 'm');
|
||||
_spriteIndexes[8] = loadSpriteSet(1, 'b');
|
||||
_spriteIndexes[9] = loadSpriteSet(2, 'b');
|
||||
_spriteIndexes[10] = loadSpriteSet(0, 'a');
|
||||
_spriteIndexes[11] = loadSpriteSet(1, 'a');
|
||||
_spriteIndexes[12] = loadSpriteSet(8, 'x');
|
||||
_spriteIndexes[13] = loadSpriteSet(0, 'x');
|
||||
}
|
||||
|
||||
void MadsSceneLogic::doAction() {
|
||||
|
@ -34,11 +34,13 @@ namespace M4 {
|
||||
class MadsSceneLogic {
|
||||
private:
|
||||
// Library interface methods
|
||||
uint16 loadSpriteSet(uint16 suffixNum, uint16 sepChar);
|
||||
private:
|
||||
int _sceneNumber;
|
||||
uint16 _spriteIndexes[50];
|
||||
|
||||
// Support functions
|
||||
const char *formAnimName(char sepChar, int suffixNum);
|
||||
const char *formAnimName(char sepChar, int16 suffixNum);
|
||||
void getSceneSpriteSet();
|
||||
void getAnimName();
|
||||
public:
|
||||
|
@ -334,7 +334,7 @@ const char *MADSResourceManager::getResourceName(char asciiCh, int prefix, Exten
|
||||
strcat(resourceName, asciiStr);
|
||||
|
||||
// Add in the index specified
|
||||
if (index > 0)
|
||||
if (index >= 0)
|
||||
sprintf(resourceName + strlen(resourceName), "%d", index);
|
||||
|
||||
// Add in any suffix
|
||||
|
@ -608,10 +608,18 @@ void MadsScene::loadScene(int sceneNumber) {
|
||||
// Handle common scene setting
|
||||
Scene::loadScene(sceneNumber);
|
||||
|
||||
// Signal the script engine what scene is to be active
|
||||
_sceneLogic.selectScene(sceneNumber);
|
||||
_vm->globals()->addVisitedScene(sceneNumber);
|
||||
_sceneLogic.setupScene();
|
||||
|
||||
// Add the scene if necessary to the list of scenes that have been visited
|
||||
_vm->globals()->addVisitedScene(sceneNumber);
|
||||
|
||||
|
||||
// Do any scene specific setup
|
||||
_sceneLogic.enterScene();
|
||||
|
||||
/* Existing code that eventually needs to be replaced with the proper MADS code */
|
||||
// Set system palette entries
|
||||
_vm->_palette->blockRange(0, 7);
|
||||
RGB8 sysColors[3] = { {0x1f<<2, 0x2d<<2, 0x31<<2, 0}, {0x24<<2, 0x37<<2, 0x3a<<2, 0},
|
||||
@ -787,6 +795,23 @@ void MadsScene::update() {
|
||||
_sceneSprites[0]->getFrame(1)->copyTo(this, 120, 90, 0);
|
||||
}
|
||||
|
||||
int MadsScene::loadSceneSpriteSet(const char *setName) {
|
||||
char resName[100];
|
||||
strcpy(resName, setName);
|
||||
|
||||
// Append a '.SS' if it doesn't alreayd have an extension
|
||||
if (!strchr(resName, '.'))
|
||||
strcat(resName, ".SS");
|
||||
|
||||
Common::SeekableReadStream *data = _vm->res()->get(resName);
|
||||
SpriteAsset *spriteSet = new SpriteAsset(_vm, data, data->size(), resName);
|
||||
spriteSet->translate(_vm->_palette);
|
||||
_vm->res()->toss(resName);
|
||||
|
||||
_sceneSprites.push_back(spriteSet);
|
||||
return _sceneSprites.size() - 1;
|
||||
}
|
||||
|
||||
void MadsScene::loadPlayerSprites(const char *prefix) {
|
||||
const char suffixList[8] = { '8', '9', '6', '3', '2', '7', '4', '1' };
|
||||
char setName[80];
|
||||
@ -800,12 +825,7 @@ void MadsScene::loadPlayerSprites(const char *prefix) {
|
||||
*digitP = suffixList[idx];
|
||||
|
||||
if (_vm->res()->resourceExists(setName)) {
|
||||
Common::SeekableReadStream *data = _vm->res()->get(setName);
|
||||
SpriteAsset *playerSprites = new SpriteAsset(_vm, data, data->size(), setName);
|
||||
playerSprites->translate(_vm->_palette);
|
||||
_vm->res()->toss(setName);
|
||||
|
||||
_sceneSprites.push_back(playerSprites);
|
||||
loadSceneSpriteSet(setName);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
@ -189,6 +189,7 @@ public:
|
||||
virtual void setStatusText(const char *text);
|
||||
virtual void update();
|
||||
|
||||
int loadSceneSpriteSet(const char *setName);
|
||||
void loadPlayerSprites(const char *prefix);
|
||||
|
||||
MadsInterfaceView *getInterface() { return (MadsInterfaceView *)_interfaceSurface; };
|
||||
|
Loading…
x
Reference in New Issue
Block a user