Eliminate _scene->getMode() and use scene flags instead

svn-id: r16482
This commit is contained in:
Eugene Sandulenko 2005-01-07 22:18:53 +00:00
parent f74fce354f
commit c316ab62cf
5 changed files with 21 additions and 54 deletions

View File

@ -295,7 +295,7 @@ void Actor::realLocation(ActorLocation &location, uint16 objectId, uint16 walkFl
ActorData *actor;
if (walkFlags & kWalkUseAngle) {
// tiled stuff
if (_vm->_scene->getMode() == SCENE_MODE_ISO) {
if (_vm->_scene->getFlags() & kSceneFlagISO) {
//todo: it
} else {
angle = location.x & 15;
@ -324,7 +324,7 @@ void Actor::actorFaceTowardsPoint(uint16 actorId, const ActorLocation &toLocatio
actor = getActor(actorId);
// tiled stuff
if (_vm->_scene->getMode() == SCENE_MODE_ISO) {
if (_vm->_scene->getFlags() & kSceneFlagISO) {
//todo: it
} else {
toLocation.delta(actor->location, delta);
@ -415,14 +415,14 @@ void Actor::updateActorsScene() {
/* setup protagonist entry
// tiled stuff
if (_vm->_scene->getMode() == SCENE_MODE_ISO) {
if (_vm->_scene->getFlags() & kSceneFlagISO) {
//todo: it
} else {
}
*/
_protagonist->currentAction = kActionWait;
if (_vm->_scene->getMode() == SCENE_MODE_ISO) {
if (_vm->_scene->getFlags() & kSceneFlagISO) {
//todo: it
} else {
_vm->_scene->initDoorsState();
@ -440,7 +440,7 @@ void Actor::updateActorsScene() {
actor->location.z = _protagonist->location.z;
if (_vm->_scene->getMode() == SCENE_MODE_ISO) {
if (_vm->_scene->getFlags() & kSceneFlagISO) {
//todo: it
} else {
followerDirection &= 0x07;
@ -656,7 +656,7 @@ void Actor::handleActions(int msec, bool setup) {
case kActionWalkToPoint:
case kActionWalkToLink:
// tiled stuff
if (_vm->_scene->getMode() == SCENE_MODE_ISO) {
if (_vm->_scene->getFlags() & kSceneFlagISO) {
//todo: it
} else {
actor->partialTarget.delta(actor->location, delta);
@ -735,7 +735,7 @@ void Actor::handleActions(int msec, bool setup) {
case kActionWalkDir:
// tiled stuff
if (_vm->_scene->getMode() == SCENE_MODE_ISO) {
if (_vm->_scene->getFlags() & kSceneFlagISO) {
//todo: it
} else {
actor->location.x += directionLUT[actor->actionDirection][0] * 2;
@ -859,7 +859,7 @@ int Actor::direct(int msec) {
void Actor::calcActorScreenPosition(ActorData *actor) {
int beginSlope, endSlope, middle;
if (_vm->_scene->getMode() == SCENE_MODE_ISO) {
if (_vm->_scene->getFlags() & kSceneFlagISO) {
//todo: it
} else {
middle = _vm->getStatusYOffset() - actor->location.y / ACTOR_LMULT;
@ -935,7 +935,7 @@ int Actor::drawActors() {
continue;
}
if (_vm->_scene->getMode() == SCENE_MODE_ISO) {
if (_vm->_scene->getFlags() & kSceneFlagISO) {
//todo: it
} else {
_vm->_sprite->drawOccluded(back_buf, spriteList, frameNumber, actor->screenPosition, actor->screenScale, actor->screenDepth);
@ -1003,7 +1003,7 @@ bool Actor::followProtagonist(ActorData *actor) {
protagonistLocation = _protagonist->location;
calcActorScreenPosition(_protagonist);
if (_vm->_scene->getMode() == SCENE_MODE_ISO) {
if (_vm->_scene->getFlags() & kSceneFlagISO) {
//todo: it
} else {
prefer1.x = (100 * _protagonist->screenScale) >> 8;
@ -1136,7 +1136,7 @@ bool Actor::actorWalkTo(uint16 actorId, const ActorLocation &toLocation) {
_vm->_scene->setDoorState(3, 0xff);
}
if (_vm->_scene->getMode() == SCENE_MODE_ISO) {
if (_vm->_scene->getFlags() & kSceneFlagISO) {
//todo: it
} else {

View File

@ -305,7 +305,7 @@ int Events::handleOneShot(EVENT *event) {
BUFFER_INFO rbuf_info;
Point bg_pt;
if (_vm->_scene->getMode() == SCENE_MODE_NORMAL) {
if (!(_vm->_scene->getFlags() & kSceneFlagISO)) {
back_buf = _vm->_gfx->getBackBuffer();

View File

@ -112,7 +112,6 @@ Scene::Scene(SagaEngine *vm) : _vm(vm), _initialized(false) {
}
_sceneLoaded = false;
_sceneMode = 0;
_sceneNumber = 0;
_sceneResNum = 0;
_inGame = false;
@ -315,12 +314,6 @@ int Scene::changeScene(int scene_num) {
return SUCCESS;
}
int Scene::getMode() {
assert(_initialized);
return _sceneMode;
}
void Scene::getSlopes(int &beginSlope, int &endSlope) {
beginSlope = _vm->getStatusYOffset() - _desc.beginSlope;
endSlope = _vm->getStatusYOffset() - _desc.endSlope;
@ -532,7 +525,6 @@ int Scene::loadScene(int scene_num, int load_flag, SCENE_PROC scene_proc, SCENE_
return FAILURE;
}
_sceneMode = 0;
_loadDesc = true;
_sceneNumber = -1;
@ -796,7 +788,6 @@ int Scene::processSceneResources() {
pal_p = _vm->getImagePal(_bg.res_buf, _bg.res_len);
memcpy(_bg.pal, pal_p, sizeof(_bg.pal));
_sceneMode = SCENE_MODE_NORMAL;
break;
case SAGA_BG_MASK: // Scene background mask resource
if (_bgMask.loaded) {
@ -827,7 +818,7 @@ int Scene::processSceneResources() {
_actionMap->load(res_data, res_data_len);
break;
case SAGA_ISO_TILESET:
if (_sceneMode == SCENE_MODE_NORMAL) {
if (!(_vm->_scene->getFlags() & kSceneFlagISO)) {
warning("Scene::ProcessSceneResources(): Isometric tileset incompatible with normal scene mode");
return FAILURE;
}
@ -838,11 +829,9 @@ int Scene::processSceneResources() {
warning("Scene::ProcessSceneResources(): Error loading isometric tileset resource");
return FAILURE;
}
_sceneMode = SCENE_MODE_ISO;
break;
case SAGA_ISO_METAMAP:
if (_sceneMode == SCENE_MODE_NORMAL) {
if (!(_vm->_scene->getFlags() & kSceneFlagISO)) {
warning("Scene::ProcessSceneResources(): Isometric metamap incompatible with normal scene mode");
return FAILURE;
}
@ -853,11 +842,9 @@ int Scene::processSceneResources() {
warning("Scene::ProcessSceneResources(): Error loading isometric metamap resource");
return FAILURE;
}
_sceneMode = SCENE_MODE_ISO;
break;
case SAGA_ISO_METATILESET:
if (_sceneMode == SCENE_MODE_NORMAL) {
if (!(_vm->_scene->getFlags() & kSceneFlagISO)) {
warning("Scene::ProcessSceneResources(): Isometric metatileset incompatible with normal scene mode");
return FAILURE;
}
@ -868,8 +855,6 @@ int Scene::processSceneResources() {
warning("Scene::ProcessSceneResources(): Error loading isometric tileset resource");
return FAILURE;
}
_sceneMode = SCENE_MODE_ISO;
break;
case SAGA_ANIM_1:
case SAGA_ANIM_2:
@ -929,20 +914,11 @@ int Scene::draw(SURFACE *dst_s) {
bg_pt.x = 0;
bg_pt.y = 0;
switch (_sceneMode) {
case SCENE_MODE_NORMAL:
if (_vm->_scene->getFlags() & kSceneFlagISO)
_vm->_isoMap->draw(dst_s);
else
bufToSurface(dst_s, buf_info.bg_buf, disp_info.logical_w,
MAX(disp_info.scene_h, _bg.h), NULL, &bg_pt);
break;
case SCENE_MODE_ISO:
_vm->_isoMap->draw(dst_s);
break;
default:
// Unknown scene mode
return FAILURE;
break;
};
return SUCCESS;
}

View File

@ -36,13 +36,6 @@ namespace Saga {
class ActionMap;
class ObjectMap;
enum SCENE_MODES {
SCENE_MODE_INVALID,
SCENE_MODE_NORMAL,
SCENE_MODE_ISO
};
struct SCENE_BGINFO {
int bg_x;
int bg_y;
@ -232,7 +225,6 @@ class Scene {
int endScene();
int queueScene(SCENE_QUEUE *scene_queue);
int draw(SURFACE *);
int getMode();
int getFlags() { return _desc.flags; }
bool isInDemo() { return !_inGame; }
@ -279,7 +271,6 @@ class Scene {
SceneQueueList _sceneQueue;
int _firstScene;
bool _sceneLoaded;
int _sceneMode;
int _sceneNumber;
int _sceneResNum;
bool _inGame;

View File

@ -494,7 +494,7 @@ int Script::sfScriptOpenDoor(SCRIPTFUNC_PARAMS) {
int doorNumber;
doorNumber = getUWord(thread->pop());
if (_vm->_scene->getMode() == SCENE_MODE_ISO) {
if (_vm->_scene->getFlags() & kSceneFlagISO) {
//todo: it
} else {
_vm->_scene->setDoorState(doorNumber, 0);
@ -508,7 +508,7 @@ int Script::sfScriptCloseDoor(SCRIPTFUNC_PARAMS) {
int doorNumber;
doorNumber = getUWord(thread->pop());
if (_vm->_scene->getMode() == SCENE_MODE_ISO) {
if (_vm->_scene->getFlags() & kSceneFlagISO) {
//todo: it
} else {
_vm->_scene->setDoorState(doorNumber, 0xff);
@ -1251,7 +1251,7 @@ int Script::sfSetDoorState(SCRIPTFUNC_PARAMS) {
doorNumber = getUWord(thread->pop());
doorState = getUWord(thread->pop());
if (_vm->_scene->getMode() == SCENE_MODE_ISO) {
if (_vm->_scene->getFlags() & kSceneFlagISO) {
//todo: it
} else {
_vm->_scene->setDoorState(doorNumber, doorState);