resolve scene resources without shift hack
svn-id: r18584
This commit is contained in:
parent
545ce7e004
commit
e175e68b99
3 changed files with 107 additions and 52 deletions
|
@ -36,8 +36,8 @@
|
||||||
namespace Saga {
|
namespace Saga {
|
||||||
|
|
||||||
SceneResourceData IHNM_IntroMovie1RL[] = {
|
SceneResourceData IHNM_IntroMovie1RL[] = {
|
||||||
{30, SAGA_BG_IMAGE, 0, 0, false} ,
|
{30, 2, 0, 0, false} ,
|
||||||
{31, SAGA_ANIM_1, 0, 0, false}
|
{31, 14, 0, 0, false}
|
||||||
};
|
};
|
||||||
|
|
||||||
SceneDescription IHNM_IntroMovie1Desc = {
|
SceneDescription IHNM_IntroMovie1Desc = {
|
||||||
|
@ -47,8 +47,8 @@ SceneDescription IHNM_IntroMovie1Desc = {
|
||||||
};
|
};
|
||||||
|
|
||||||
SceneResourceData IHNM_IntroMovie2RL[] = {
|
SceneResourceData IHNM_IntroMovie2RL[] = {
|
||||||
{32, SAGA_BG_IMAGE, 0, 0, false} ,
|
{32, 2, 0, 0, false} ,
|
||||||
{33, SAGA_ANIM_1, 0, 0, false}
|
{33, 14, 0, 0, false}
|
||||||
};
|
};
|
||||||
|
|
||||||
SceneDescription IHNM_IntroMovie2Desc = {
|
SceneDescription IHNM_IntroMovie2Desc = {
|
||||||
|
@ -58,8 +58,8 @@ SceneDescription IHNM_IntroMovie2Desc = {
|
||||||
};
|
};
|
||||||
|
|
||||||
SceneResourceData IHNM_IntroMovie3RL[] = {
|
SceneResourceData IHNM_IntroMovie3RL[] = {
|
||||||
{34, SAGA_BG_IMAGE, 0, 0, false},
|
{34, 2, 0, 0, false},
|
||||||
{35, SAGA_ANIM_1, 0, 0, false}
|
{35, 14, 0, 0, false}
|
||||||
};
|
};
|
||||||
|
|
||||||
SceneDescription IHNM_IntroMovie3Desc = {
|
SceneDescription IHNM_IntroMovie3Desc = {
|
||||||
|
@ -69,8 +69,8 @@ SceneDescription IHNM_IntroMovie3Desc = {
|
||||||
};
|
};
|
||||||
|
|
||||||
SceneResourceData IHNM_IntroMovie4RL[] = {
|
SceneResourceData IHNM_IntroMovie4RL[] = {
|
||||||
{1227, SAGA_BG_IMAGE, 0, 0, false},
|
{1227, 2, 0, 0, false},
|
||||||
{1226, SAGA_ANIM_1, 0, 0, false}
|
{1226, 14, 0, 0, false}
|
||||||
};
|
};
|
||||||
|
|
||||||
SceneDescription IHNM_IntroMovie4Desc = {
|
SceneDescription IHNM_IntroMovie4Desc = {
|
||||||
|
|
|
@ -47,7 +47,67 @@
|
||||||
namespace Saga {
|
namespace Saga {
|
||||||
|
|
||||||
static int initSceneDoors[SCENE_DOORS_MAX] = {
|
static int initSceneDoors[SCENE_DOORS_MAX] = {
|
||||||
0, 0xff, 0, 0, 0, 0, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
|
0, 0xff, 0, 0, 0, 0, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
|
||||||
|
};
|
||||||
|
|
||||||
|
static SAGAResourceTypes ITESceneResourceTypes[26] = {
|
||||||
|
SAGA_ACTOR,
|
||||||
|
SAGA_OBJECT,
|
||||||
|
SAGA_BG_IMAGE,
|
||||||
|
SAGA_BG_MASK,
|
||||||
|
SAGA_UNKNOWN,
|
||||||
|
SAGA_STRINGS,
|
||||||
|
SAGA_OBJECT_MAP,
|
||||||
|
SAGA_ACTION_MAP,
|
||||||
|
SAGA_ISO_IMAGES,
|
||||||
|
SAGA_ISO_MAP,
|
||||||
|
SAGA_ISO_PLATFORMS,
|
||||||
|
SAGA_ISO_METATILES,
|
||||||
|
SAGA_ENTRY,
|
||||||
|
SAGA_UNKNOWN,
|
||||||
|
SAGA_ANIM,
|
||||||
|
SAGA_ANIM,
|
||||||
|
SAGA_ANIM,
|
||||||
|
SAGA_ANIM,
|
||||||
|
SAGA_ANIM,
|
||||||
|
SAGA_ANIM,
|
||||||
|
SAGA_ANIM,
|
||||||
|
SAGA_ANIM,
|
||||||
|
SAGA_ISO_MULTI,
|
||||||
|
SAGA_PAL_ANIM,
|
||||||
|
SAGA_FACES,
|
||||||
|
SAGA_PALETTE
|
||||||
|
};
|
||||||
|
|
||||||
|
static SAGAResourceTypes IHNMSceneResourceTypes[28] = {
|
||||||
|
SAGA_ACTOR,
|
||||||
|
SAGA_UNKNOWN,
|
||||||
|
SAGA_BG_IMAGE,
|
||||||
|
SAGA_BG_MASK,
|
||||||
|
SAGA_UNKNOWN,
|
||||||
|
SAGA_STRINGS,
|
||||||
|
SAGA_OBJECT_MAP,
|
||||||
|
SAGA_ACTION_MAP,
|
||||||
|
SAGA_ISO_IMAGES,
|
||||||
|
SAGA_ISO_MAP,
|
||||||
|
SAGA_ISO_PLATFORMS,
|
||||||
|
SAGA_ISO_METATILES,
|
||||||
|
SAGA_ENTRY,
|
||||||
|
SAGA_UNKNOWN,
|
||||||
|
SAGA_ANIM,
|
||||||
|
SAGA_ANIM,
|
||||||
|
SAGA_ANIM,
|
||||||
|
SAGA_ANIM,
|
||||||
|
SAGA_ANIM,
|
||||||
|
SAGA_ANIM,
|
||||||
|
SAGA_ANIM,
|
||||||
|
SAGA_ANIM,
|
||||||
|
SAGA_ANIM,
|
||||||
|
SAGA_ANIM,
|
||||||
|
SAGA_ISO_MULTI,
|
||||||
|
SAGA_PAL_ANIM,
|
||||||
|
SAGA_FACES,
|
||||||
|
SAGA_PALETTE
|
||||||
};
|
};
|
||||||
|
|
||||||
Scene::Scene(SagaEngine *vm) : _vm(vm) {
|
Scene::Scene(SagaEngine *vm) : _vm(vm) {
|
||||||
|
@ -688,7 +748,17 @@ void Scene::processSceneResources() {
|
||||||
size_t resourceDataLength;
|
size_t resourceDataLength;
|
||||||
const byte *palPointer;
|
const byte *palPointer;
|
||||||
size_t i;
|
size_t i;
|
||||||
int resType;
|
SAGAResourceTypes *types;
|
||||||
|
int typesCount;
|
||||||
|
SAGAResourceTypes resType;
|
||||||
|
|
||||||
|
if (_vm->getGameType() == GType_IHNM) {
|
||||||
|
typesCount = ARRAYSIZE(IHNMSceneResourceTypes);
|
||||||
|
types = IHNMSceneResourceTypes;
|
||||||
|
} else {
|
||||||
|
typesCount = ARRAYSIZE(ITESceneResourceTypes);
|
||||||
|
types = ITESceneResourceTypes;
|
||||||
|
}
|
||||||
|
|
||||||
// Process the scene resource list
|
// Process the scene resource list
|
||||||
for (i = 0; i < _resourceListCount; i++) {
|
for (i = 0; i < _resourceListCount; i++) {
|
||||||
|
@ -698,17 +768,16 @@ void Scene::processSceneResources() {
|
||||||
resourceData = _resourceList[i].buffer;
|
resourceData = _resourceList[i].buffer;
|
||||||
resourceDataLength = _resourceList[i].size;
|
resourceDataLength = _resourceList[i].size;
|
||||||
|
|
||||||
resType = _resourceList[i].resourceType;
|
if (_resourceList[i].resourceType >= typesCount) {
|
||||||
|
error("Scene::processSceneResources() wrong resource type %i", _resourceList[i].resourceType);
|
||||||
if (_vm->getGameType() == GType_IHNM) {
|
|
||||||
// IHNM has more animation slots and so resource numbers are shifted
|
|
||||||
// We use this trick to avoid code duplication.
|
|
||||||
// SAGA_ANIM_X code is correctly dependent on _resourceList[i].resourceType
|
|
||||||
if (resType > SAGA_ANIM_7)
|
|
||||||
resType -= 3;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
resType = types[_resourceList[i].resourceType];
|
||||||
|
|
||||||
switch (resType) {
|
switch (resType) {
|
||||||
|
case SAGA_UNKNOWN:
|
||||||
|
warning("UNKNOWN resourceType %i", _resourceList[i].resourceType);
|
||||||
|
break;
|
||||||
case SAGA_ACTOR:
|
case SAGA_ACTOR:
|
||||||
//for (a = actorsInScene; a; a = a->nextInScene)
|
//for (a = actorsInScene; a; a = a->nextInScene)
|
||||||
// if (a->obj.figID == glist->file_id)
|
// if (a->obj.figID == glist->file_id)
|
||||||
|
@ -807,15 +876,9 @@ void Scene::processSceneResources() {
|
||||||
|
|
||||||
_vm->_isoMap->loadMetaTiles(resourceData, resourceDataLength);
|
_vm->_isoMap->loadMetaTiles(resourceData, resourceDataLength);
|
||||||
break;
|
break;
|
||||||
case SAGA_ANIM_1:
|
case SAGA_ANIM:
|
||||||
case SAGA_ANIM_2:
|
|
||||||
case SAGA_ANIM_3:
|
|
||||||
case SAGA_ANIM_4:
|
|
||||||
case SAGA_ANIM_5:
|
|
||||||
case SAGA_ANIM_6:
|
|
||||||
case SAGA_ANIM_7:
|
|
||||||
{
|
{
|
||||||
uint16 animId = _resourceList[i].resourceType - SAGA_ANIM_1;
|
uint16 animId = _resourceList[i].resourceType - 14;
|
||||||
|
|
||||||
debug(3, "Loading animation resource animId=%i", animId);
|
debug(3, "Loading animation resource animId=%i", animId);
|
||||||
|
|
||||||
|
|
44
saga/scene.h
44
saga/scene.h
|
@ -59,32 +59,24 @@ enum SCENE_PROC_PARAMS {
|
||||||
|
|
||||||
// Resource type numbers
|
// Resource type numbers
|
||||||
enum SAGAResourceTypes {
|
enum SAGAResourceTypes {
|
||||||
SAGA_ACTOR = 0,
|
SAGA_UNKNOWN,
|
||||||
SAGA_OBJECT = 1,
|
SAGA_ACTOR,
|
||||||
SAGA_BG_IMAGE = 2,
|
SAGA_OBJECT,
|
||||||
SAGA_BG_MASK = 3,
|
SAGA_BG_IMAGE,
|
||||||
SAGA_STRINGS = 5,
|
SAGA_BG_MASK,
|
||||||
SAGA_OBJECT_MAP = 6,
|
SAGA_STRINGS,
|
||||||
SAGA_ACTION_MAP = 7,
|
SAGA_OBJECT_MAP,
|
||||||
SAGA_ISO_IMAGES = 8,
|
SAGA_ACTION_MAP,
|
||||||
SAGA_ISO_MAP = 9,
|
SAGA_ISO_IMAGES,
|
||||||
SAGA_ISO_PLATFORMS = 10,
|
SAGA_ISO_MAP,
|
||||||
SAGA_ISO_METATILES = 11,
|
SAGA_ISO_PLATFORMS,
|
||||||
SAGA_ENTRY = 12,
|
SAGA_ISO_METATILES,
|
||||||
SAGA_ANIM_1 = 14,
|
SAGA_ENTRY,
|
||||||
SAGA_ANIM_2,
|
SAGA_ANIM,
|
||||||
SAGA_ANIM_3,
|
SAGA_ISO_MULTI,
|
||||||
SAGA_ANIM_4,
|
SAGA_PAL_ANIM,
|
||||||
SAGA_ANIM_5,
|
SAGA_FACES,
|
||||||
SAGA_ANIM_6,
|
SAGA_PALETTE
|
||||||
SAGA_ANIM_7,
|
|
||||||
//SAGA_ANIM_8, // IHNM. We use trick to avoid code duplication
|
|
||||||
//SAGA_ANIM_9,
|
|
||||||
//SAGA_ANIM_10,
|
|
||||||
SAGA_ISO_MULTI = 22,
|
|
||||||
SAGA_PAL_ANIM = 23,
|
|
||||||
SAGA_FACES = 24,
|
|
||||||
SAGA_PALETTE = 25
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#define SAGA_RESLIST_ENTRY_LEN 4
|
#define SAGA_RESLIST_ENTRY_LEN 4
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue