aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthew Stewart2018-05-19 14:58:16 -0400
committerEugene Sandulenko2018-08-09 08:37:30 +0200
commitf66b77d9fd34e4845a214e1c1ff42e5e2211c991 (patch)
tree83cacbc8a008bf0bc98f47c569280df3e8b0b11d
parentec2306f8b03f4ebfc0cc65b506ec3c1b9135481f (diff)
downloadscummvm-rg350-f66b77d9fd34e4845a214e1c1ff42e5e2211c991.tar.gz
scummvm-rg350-f66b77d9fd34e4845a214e1c1ff42e5e2211c991.tar.bz2
scummvm-rg350-f66b77d9fd34e4845a214e1c1ff42e5e2211c991.zip
STARTREK: Rename objects to actors
-rw-r--r--engines/startrek/awaymission.cpp58
-rw-r--r--engines/startrek/items.h2
-rw-r--r--engines/startrek/object.h33
-rw-r--r--engines/startrek/startrek.cpp478
-rw-r--r--engines/startrek/startrek.h61
5 files changed, 327 insertions, 305 deletions
diff --git a/engines/startrek/awaymission.cpp b/engines/startrek/awaymission.cpp
index ae05485dcd..e0499240be 100644
--- a/engines/startrek/awaymission.cpp
+++ b/engines/startrek/awaymission.cpp
@@ -89,12 +89,12 @@ void StarTrekEngine::loadRoom(const Common::String &missionName, int roomIndex)
_mapFile = loadFile(_mapFilename + ".map");
_iwFile = SharedPtr<IWFile>(new IWFile(this, _mapFilename + ".iw"));
- objectFunc1();
- initObjects();
+ actorFunc1();
+ initActors();
double num = _room->getVar0c() - _room->getVar0a();
double den = _room->getVar06() - _room->getVar08() + 1;
- _playerObjectScale = (int32)(num * 256 / den);
+ _playerActorScale = (int32)(num * 256 / den);
// TODO: RDF vars 1e/1f and 20/21; relates to BAN files?
@@ -121,11 +121,11 @@ void StarTrekEngine::initAwayCrewPositions(int warpEntryIndex) {
int16 destX = _room->readRdfWord(rdfOffset + 4); // Position to walk to
int16 destY = _room->readRdfWord(rdfOffset + 6);
- objectWalkToPosition(i, anim, srcX, srcY, destX, destY);
+ actorWalkToPosition(i, anim, srcX, srcY, destX, destY);
}
- _kirkObject->walkingIntoRoom = 1;
- _kirkObject->field66 = 0xff;
+ _kirkActor->walkingIntoRoom = 1;
+ _kirkActor->field66 = 0xff;
_awayMission.transitioningIntoRoom = 1;
_warpHotspotsActive = false;
break;
@@ -134,10 +134,10 @@ void StarTrekEngine::initAwayCrewPositions(int warpEntryIndex) {
for (int i = 0; i < (_awayMission.redshirtDead ? 3 : 4); i++) {
Common::String animFilename = getCrewmanAnimFilename(i, "tele");
Common::Point warpPos = _room->getBeamInPosition(i);
- loadObjectAnimWithRoomScaling(i, animFilename, warpPos.x, warpPos.y);
+ loadActorAnimWithRoomScaling(i, animFilename, warpPos.x, warpPos.y);
}
- _kirkObject->walkingIntoRoom = 1;
- _kirkObject->field66 = 0xff;
+ _kirkActor->walkingIntoRoom = 1;
+ _kirkActor->field66 = 0xff;
_awayMission.transitioningIntoRoom = 1;
playSoundEffectIndex(0x09);
_warpHotspotsActive = false;
@@ -155,7 +155,7 @@ void StarTrekEngine::handleAwayMissionEvents() {
if (popNextEvent(&event)) {
switch (event.type) {
case TREKEVENT_TICK:
- updateObjectAnimations();
+ updateActorAnimations();
// sub_236bb();
updateMouseBitmap();
// doSomethingWithBanData1();
@@ -177,22 +177,22 @@ void StarTrekEngine::handleAwayMissionEvents() {
switch (_awayMission.activeAction) {
case ACTION_WALK:
if (_awayMission.field1c == 0) {
- _kirkObject->sprite.drawMode = 1; // Hide these objects for function call below?
- _spockObject->sprite.drawMode = 1;
- _mccoyObject->sprite.drawMode = 1;
- _redshirtObject->sprite.drawMode = 1;
+ _kirkActor->sprite.drawMode = 1; // Hide these objects for function call below?
+ _spockActor->sprite.drawMode = 1;
+ _mccoyActor->sprite.drawMode = 1;
+ _redshirtActor->sprite.drawMode = 1;
- // findObjectClickedOn();
+ // findActorClickedOn();
// ...
- _kirkObject->sprite.drawMode = 0;
- _spockObject->sprite.drawMode = 0;
- _mccoyObject->sprite.drawMode = 0;
- _redshirtObject->sprite.drawMode = 0;
+ _kirkActor->sprite.drawMode = 0;
+ _spockActor->sprite.drawMode = 0;
+ _mccoyActor->sprite.drawMode = 0;
+ _redshirtActor->sprite.drawMode = 0;
Common::String animFilename = getCrewmanAnimFilename(0, "walk");
Common::Point mousePos = _gfx->getMousePos();
- objectWalkToPosition(0, animFilename, _kirkObject->pos.x, _kirkObject->pos.y, mousePos.x, mousePos.y);
+ actorWalkToPosition(0, animFilename, _kirkActor->pos.x, _kirkActor->pos.y, mousePos.x, mousePos.y);
}
break;
@@ -276,21 +276,21 @@ void StarTrekEngine::handleAwayMissionEvents() {
void StarTrekEngine::unloadRoom() {
_gfx->fadeoutScreen();
// sub_2394b(); // TODO
- objectFunc1();
+ actorFunc1();
_room.reset();
_mapFile.reset();
}
/**
- * Similar to loadObjectAnim, but scale is determined by the y-position in the room. The
+ * Similar to loadActorAnim, but scale is determined by the y-position in the room. The
* further up (away) the object is, the smaller it is.
*/
-int StarTrekEngine::loadObjectAnimWithRoomScaling(int objectIndex, const Common::String &animName, int16 x, int16 y) {
- uint16 scale = getObjectScaleAtPosition(y);
- return loadObjectAnim(objectIndex, animName, x, y, scale);
+int StarTrekEngine::loadActorAnimWithRoomScaling(int actorIndex, const Common::String &animName, int16 x, int16 y) {
+ uint16 scale = getActorScaleAtPosition(y);
+ return loadActorAnim(actorIndex, animName, x, y, scale);
}
-uint16 StarTrekEngine::getObjectScaleAtPosition(int16 y) {
+uint16 StarTrekEngine::getActorScaleAtPosition(int16 y) {
int16 var06 = _room->getVar06();
int16 var08 = _room->getVar08();
int16 var0a = _room->getVar0a();
@@ -300,7 +300,7 @@ uint16 StarTrekEngine::getObjectScaleAtPosition(int16 y) {
if (var08 > y)
y = var08;
- return ((_playerObjectScale * (y - var08)) >> 8) + var0a;
+ return ((_playerActorScale * (y - var08)) >> 8) + var0a;
}
SharedPtr<Room> StarTrekEngine::getRoom() {
@@ -316,12 +316,12 @@ void StarTrekEngine::addCommand(const Command &command) {
void StarTrekEngine::handleAwayMissionCommand() {
Command command = _commandQueue.pop();
- if ((command.type == COMMAND_FINISHED_BEAMING_IN || command.type == FINISHED_ENTERING_ROOM) && command.b1 == 0xff) {
+ if ((command.type == COMMAND_FINISHED_BEAMING_IN || command.type == COMMAND_FINISHED_ENTERING_ROOM) && command.b1 == 0xff) {
_awayMission.transitioningIntoRoom = 0;
_warpHotspotsActive = true;
return;
}
- else if (command.type == FINISHED_ENTERING_ROOM && command.b1 >= 0xe0) { // TODO
+ else if (command.type == COMMAND_FINISHED_ENTERING_ROOM && command.b1 >= 0xe0) { // TODO
return;
}
diff --git a/engines/startrek/items.h b/engines/startrek/items.h
index 6ef69cf8ab..913ec7dfc6 100644
--- a/engines/startrek/items.h
+++ b/engines/startrek/items.h
@@ -177,7 +177,7 @@ const Item g_itemList[] = {
{ false, 0x00, "", 0x00 },
};
-const int NUM_ITEMS = sizeof(g_itemList) / sizeof(struct Item);
+const int NUM_ITEMS = sizeof(g_itemList) / sizeof(struct Item) - 0x40; // 0x49
}
diff --git a/engines/startrek/object.h b/engines/startrek/object.h
index 8885390f60..71c9f8448c 100644
--- a/engines/startrek/object.h
+++ b/engines/startrek/object.h
@@ -24,6 +24,7 @@
#define STARTREK_OBJECT_H
#include "startrek/common.h"
+#include "startrek/items.h"
#include "startrek/sprite.h"
#include "common/scummsys.h"
@@ -34,7 +35,37 @@ class StarTrekEngine;
class FileStream;
-struct Object {
+// Objects 0-31 are "actors" that are drawn to the screen, are animated, etc.
+// Objects 32-63 are "hotspots" corresponding to specific regions in the screen.
+// Objects 64+ are "items".
+// All interactions in the game consist of specific object indices interacting with each
+// other, ie. object 0 (kirk) interacts with object 32 (a hotspot) via ACTION_LOOK.
+
+const int ACTORS_START = 0;
+const int ACTORS_END = 32;
+const int NUM_ACTORS = ACTORS_END - ACTORS_START;
+
+const int HOTSPOTS_START = 32;
+const int HOTSPOTS_END = 64;
+const int NUM_HOTSPOTS = HOTSPOTS_END - HOTSPOTS_START;
+
+const int ITEMS_START = 64;
+const int ITEMS_END = ITEMS_START + NUM_ITEMS; // See items.h
+
+const int NUM_OBJECTS = ITEMS_END;
+
+
+// Some object indices are reserved (see items.h for item objects)
+enum Objects {
+ OBJECT_KIRK = 0,
+ OBJECT_SPOCK = 1,
+ OBJECT_MCCOY = 2,
+ OBJECT_REDSHIRT = 3,
+ OBJECT_INVENTORY_ICON = 31
+};
+
+
+struct Actor {
uint16 spriteDrawn;
char animationString3[16];
uint16 animType;
diff --git a/engines/startrek/startrek.cpp b/engines/startrek/startrek.cpp
index efde236580..8df22ead12 100644
--- a/engines/startrek/startrek.cpp
+++ b/engines/startrek/startrek.cpp
@@ -44,10 +44,10 @@ StarTrekEngine::StarTrekEngine(OSystem *syst, const StarTrekGameDescription *gam
Engine(syst),
_gameDescription(gamedesc),
_randomSource("Star Trek"),
- _kirkObject(&_objectList[0]),
- _spockObject(&_objectList[1]),
- _mccoyObject(&_objectList[2]),
- _redshirtObject(&_objectList[3]) {
+ _kirkActor(&_actorList[0]),
+ _spockActor(&_actorList[1]),
+ _mccoyActor(&_actorList[2]),
+ _redshirtActor(&_actorList[3]) {
DebugMan.addDebugChannel(kDebugSound, "sound", "Sound");
DebugMan.addDebugChannel(kDebugGraphics, "graphics", "Graphics");
@@ -79,7 +79,7 @@ StarTrekEngine::StarTrekEngine(OSystem *syst, const StarTrekGameDescription *gam
_missionToLoad = "DEMON";
_roomIndexToLoad = 0;
- for (int i = 0; i < NUM_ITEMS; i++)
+ for (int i = 0; i < NUM_OBJECTS; i++)
_itemList[i] = g_itemList[i];
}
@@ -202,8 +202,8 @@ void StarTrekEngine::runTransportSequence(const Common::String &name) {
_sound->stopAllVocSounds();
_gfx->fadeoutScreen();
- objectFunc1();
- initObjects();
+ actorFunc1();
+ initActors();
SharedPtr<Bitmap> bgImage = _gfx->loadBitmap("transprt");
_gfx->setBackgroundImage(bgImage);
@@ -216,25 +216,25 @@ void StarTrekEngine::runTransportSequence(const Common::String &name) {
Common::String filename = getCrewmanAnimFilename(i, name);
int x = crewmanTransportPositions[i][0];
int y = crewmanTransportPositions[i][1];
- loadObjectAnim(i, filename, x, y, 256);
- _objectList[i].animationString[0] = '\0';
+ loadActorAnim(i, filename, x, y, 256);
+ _actorList[i].animationString[0] = '\0';
}
if (_missionToLoad.equalsIgnoreCase("feather") && name[4] == 'b') {
- loadObjectAnim(9, "qteleb", 0x61, 0x79, 0x100);
+ loadActorAnim(9, "qteleb", 0x61, 0x79, 0x100);
}
else if (_missionToLoad.equalsIgnoreCase("trial")) {
if (name[4] == 'd') {
- loadObjectAnim(9, "qteled", 0x61, 0x79, 0x100);
+ loadActorAnim(9, "qteled", 0x61, 0x79, 0x100);
}
/* TODO
else if (word_51156 >= 3) {
- loadObjectAnim(9, "qteleb", 0x61, 0x79, 0x100);
+ loadActorAnim(9, "qteleb", 0x61, 0x79, 0x100);
}
*/
}
- loadObjectAnim(8, "transc", 0, 0, 0x100);
+ loadActorAnim(8, "transc", 0, 0, 0x100);
// TODO: redraw mouse and sprite_52c4e?
@@ -248,13 +248,13 @@ void StarTrekEngine::runTransportSequence(const Common::String &name) {
else
playSoundEffectIndex(0x09);
- while (_objectList[0].field62 == 0) {
+ while (_actorList[0].field62 == 0) {
TrekEvent event;
if (popNextEvent(&event)) {
if (event.type == TREKEVENT_TICK) {
// TODO: redraw sprite_52c4e?
_frameIndex++;
- updateObjectAnimations();
+ updateActorAnimations();
_gfx->drawAllSprites();
}
}
@@ -264,8 +264,8 @@ void StarTrekEngine::runTransportSequence(const Common::String &name) {
_gfx->drawAllSprites();
_gfx->fadeoutScreen();
- objectFunc1();
- initObjects();
+ actorFunc1();
+ initActors();
}
void StarTrekEngine::playSoundEffectIndex(int index) {
@@ -328,215 +328,215 @@ void StarTrekEngine::stopPlayingSpeech() {
_sound->stopPlayingSpeech();
}
-void StarTrekEngine::initObjects() {
- for (int i = 0; i < MAX_OBJECTS; i++) {
- _objectList[i] = Object();
+void StarTrekEngine::initActors() {
+ for (int i = 0; i < NUM_ACTORS; i++) {
+ _actorList[i] = Actor();
}
- for (int i = 0; i < MAX_OBJECTS / 2; i++)
- _objectBanFiles[i].reset();
+ for (int i = 0; i < NUM_ACTORS / 2; i++)
+ _actorBanFiles[i].reset();
- strcpy(_kirkObject->animationString, "kstnd");
- strcpy(_spockObject->animationString, "sstnd");
- strcpy(_mccoyObject->animationString, "mstnd");
- strcpy(_redshirtObject->animationString, "rstnd");
+ strcpy(_kirkActor->animationString, "kstnd");
+ strcpy(_spockActor->animationString, "sstnd");
+ strcpy(_mccoyActor->animationString, "mstnd");
+ strcpy(_redshirtActor->animationString, "rstnd");
}
/**
- * Set an object's animation, position, and scale.
+ * Set an actor's animation, position, and scale.
*/
-int StarTrekEngine::loadObjectAnim(int objectIndex, const Common::String &animName, int16 x, int16 y, Fixed16 scale) {
- debugC(6, kDebugGraphics, "Load animation '%s' on object %d", animName.c_str(), objectIndex);
+int StarTrekEngine::loadActorAnim(int actorIndex, const Common::String &animName, int16 x, int16 y, Fixed16 scale) {
+ debugC(6, kDebugGraphics, "Load animation '%s' on actor %d", animName.c_str(), actorIndex);
- Object *object;
+ Actor *actor;
- if (objectIndex == -1) {
+ if (actorIndex == -1) {
// TODO
}
else
- object = &_objectList[objectIndex];
+ actor = &_actorList[actorIndex];
- if (object->spriteDrawn) {
- releaseAnim(object);
- drawObjectToScreen(object, animName, x, y, scale, false);
+ if (actor->spriteDrawn) {
+ releaseAnim(actor);
+ drawActorToScreen(actor, animName, x, y, scale, false);
}
else {
- drawObjectToScreen(object, animName, x, y, scale, true);
+ drawActorToScreen(actor, animName, x, y, scale, true);
}
- object->walkingIntoRoom = 0;
- object->field66 = 0;
+ actor->walkingIntoRoom = 0;
+ actor->field66 = 0;
- return objectIndex;
+ return actorIndex;
}
/**
- * Tries to make an object walk to a position.
+ * Tries to make an actor walk to a position.
* Returns true if successful in initiating the walk.
*/
-bool StarTrekEngine::objectWalkToPosition(int objectIndex, const Common::String &animFile, int16 srcX, int16 srcY, int16 destX, int16 destY) {
- debugC(6, "Obj %d: walk from (%d,%d) to (%d,%d)", objectIndex, srcX, srcY, destX, destY);
+bool StarTrekEngine::actorWalkToPosition(int actorIndex, const Common::String &animFile, int16 srcX, int16 srcY, int16 destX, int16 destY) {
+ debugC(6, "Obj %d: walk from (%d,%d) to (%d,%d)", actorIndex, srcX, srcY, destX, destY);
- Object *object = &_objectList[objectIndex];
+ Actor *actor = &_actorList[actorIndex];
- object->walkingIntoRoom = 0;
+ actor->walkingIntoRoom = 0;
if (isPositionSolid(destX, destY))
return false;
- if (object->spriteDrawn)
- releaseAnim(object);
+ if (actor->spriteDrawn)
+ releaseAnim(actor);
else
- _gfx->addSprite(&object->sprite);
+ _gfx->addSprite(&actor->sprite);
- object->spriteDrawn = true;
- object->animType = 1;
- object->frameToStartNextAnim = _frameIndex + 1;
- strcpy(object->animationString2, animFile.c_str());
+ actor->spriteDrawn = true;
+ actor->animType = 1;
+ actor->frameToStartNextAnim = _frameIndex + 1;
+ strcpy(actor->animationString2, animFile.c_str());
- object->dest.x = destX;
- object->dest.y = destY;
- object->field92 = 0;
- object->walkingIntoRoom = 0;
+ actor->dest.x = destX;
+ actor->dest.y = destY;
+ actor->field92 = 0;
+ actor->walkingIntoRoom = 0;
- object->iwDestPosition = -1;
- object->iwSrcPosition = -1;
+ actor->iwDestPosition = -1;
+ actor->iwSrcPosition = -1;
if (directPathExists(srcX, srcY, destX, destY)) {
- chooseObjectDirectionForWalking(object, srcX, srcY, destX, destY);
- updateObjectPositionWhileWalking(object, (object->granularPosX + 0x8000) >> 16, (object->granularPosY + 0x8000) >> 16);
+ chooseActorDirectionForWalking(actor, srcX, srcY, destX, destY);
+ updateActorPositionWhileWalking(actor, (actor->granularPosX + 0x8000) >> 16, (actor->granularPosY + 0x8000) >> 16);
return true;
}
else {
- object->iwSrcPosition = _iwFile->getClosestKeyPosition(srcX, srcY);
- object->iwDestPosition = _iwFile->getClosestKeyPosition(destX, destY);
+ actor->iwSrcPosition = _iwFile->getClosestKeyPosition(srcX, srcY);
+ actor->iwDestPosition = _iwFile->getClosestKeyPosition(destX, destY);
- if (object->iwSrcPosition == -1 || object->iwDestPosition == -1) {
+ if (actor->iwSrcPosition == -1 || actor->iwDestPosition == -1) {
// No path exists; face south by default.
- strcat(object->animationString2, "S");
- object->direction = 'S';
+ strcat(actor->animationString2, "S");
+ actor->direction = 'S';
- updateObjectPositionWhileWalking(object, srcX, srcY);
- initStandAnim(objectIndex);
+ updateActorPositionWhileWalking(actor, srcX, srcY);
+ initStandAnim(actorIndex);
return false;
}
else {
- Common::Point iwSrc = _iwFile->_keyPositions[object->iwSrcPosition];
- chooseObjectDirectionForWalking(object, srcX, srcY, iwSrc.x, iwSrc.y);
- updateObjectPositionWhileWalking(object, (object->granularPosX + 0x8000) >> 16, (object->granularPosY + 0x8000) >> 16);
+ Common::Point iwSrc = _iwFile->_keyPositions[actor->iwSrcPosition];
+ chooseActorDirectionForWalking(actor, srcX, srcY, iwSrc.x, iwSrc.y);
+ updateActorPositionWhileWalking(actor, (actor->granularPosX + 0x8000) >> 16, (actor->granularPosY + 0x8000) >> 16);
return true;
}
}
}
-void StarTrekEngine::updateObjectAnimations() {
- for (int i = 0; i < MAX_OBJECTS; i++) {
- Object *object = &_objectList[i];
- if (!object->spriteDrawn)
+void StarTrekEngine::updateActorAnimations() {
+ for (int i = 0; i < NUM_ACTORS; i++) {
+ Actor *actor = &_actorList[i];
+ if (!actor->spriteDrawn)
continue;
- switch (object->animType) {
+ switch (actor->animType) {
case 0: // Not walking?
case 2:
- if (_frameIndex >= object->frameToStartNextAnim) {
+ if (_frameIndex >= actor->frameToStartNextAnim) {
int nextAnimIndex = getRandomWord() & 3;
- object->animFile->seek(18 + nextAnimIndex + object->animFrame * 22, SEEK_SET);
- byte nextAnimFrame = object->animFile->readByte();
-
- if (object->animFrame != nextAnimFrame) {
- if (nextAnimFrame == object->numAnimFrames - 1) {
- object->field62++;
- if (object->walkingIntoRoom != 0) {
- addCommand(Command(COMMAND_FINISHED_BEAMING_IN, object->field66, 0, 0));
+ actor->animFile->seek(18 + nextAnimIndex + actor->animFrame * 22, SEEK_SET);
+ byte nextAnimFrame = actor->animFile->readByte();
+
+ if (actor->animFrame != nextAnimFrame) {
+ if (nextAnimFrame == actor->numAnimFrames - 1) {
+ actor->field62++;
+ if (actor->walkingIntoRoom != 0) {
+ addCommand(Command(COMMAND_FINISHED_BEAMING_IN, actor->field66, 0, 0));
}
}
}
- object->animFrame = nextAnimFrame;
- if (object->animFrame >= object->numAnimFrames) {
- if (object->animationString[0] == '\0')
- removeObjectFromScreen(i);
+ actor->animFrame = nextAnimFrame;
+ if (actor->animFrame >= actor->numAnimFrames) {
+ if (actor->animationString[0] == '\0')
+ removeActorFromScreen(i);
else
initStandAnim(i);
}
else {
- Sprite *sprite = &object->sprite;
+ Sprite *sprite = &actor->sprite;
- object->animFile->seek(object->animFrame * 22, SEEK_SET);
+ actor->animFile->seek(actor->animFrame * 22, SEEK_SET);
char animFrameFilename[16];
- object->animFile->read(animFrameFilename, 16);
- sprite->setBitmap(loadAnimationFrame(animFrameFilename, object->scale));
+ actor->animFile->read(animFrameFilename, 16);
+ sprite->setBitmap(loadAnimationFrame(animFrameFilename, actor->scale));
- memset(object->animationString4, 0, 10);
- strncpy(object->animationString4, animFrameFilename, 9);
+ memset(actor->animationString4, 0, 10);
+ strncpy(actor->animationString4, animFrameFilename, 9);
- object->animFile->seek(10 + object->animFrame * 22, SEEK_SET);
- uint16 xOffset = object->animFile->readUint16();
- uint16 yOffset = object->animFile->readUint16();
- uint16 basePriority = object->animFile->readUint16();
- uint16 frames = object->animFile->readUint16();
+ actor->animFile->seek(10 + actor->animFrame * 22, SEEK_SET);
+ uint16 xOffset = actor->animFile->readUint16();
+ uint16 yOffset = actor->animFile->readUint16();
+ uint16 basePriority = actor->animFile->readUint16();
+ uint16 frames = actor->animFile->readUint16();
- sprite->pos.x = xOffset + object->pos.x;
- sprite->pos.y = yOffset + object->pos.y;
- sprite->drawPriority = _gfx->getPriValue(0, yOffset + object->pos.y) + basePriority;
+ sprite->pos.x = xOffset + actor->pos.x;
+ sprite->pos.y = yOffset + actor->pos.y;
+ sprite->drawPriority = _gfx->getPriValue(0, yOffset + actor->pos.y) + basePriority;
sprite->bitmapChanged = true;
- object->frameToStartNextAnim = frames + _frameIndex;
+ actor->frameToStartNextAnim = frames + _frameIndex;
}
}
break;
case 1: // Walking
- if (_frameIndex < object->frameToStartNextAnim)
+ if (_frameIndex < actor->frameToStartNextAnim)
break;
if (i == 0) // Kirk only
- checkTouchedLoadingZone(object->pos.x, object->pos.y);
- if (object->field90 != 0) {
- Sprite *sprite = &object->sprite;
+ checkTouchedLoadingZone(actor->pos.x, actor->pos.y);
+ if (actor->field90 != 0) {
+ Sprite *sprite = &actor->sprite;
int loops;
- if (getObjectScaleAtPosition((object->granularPosY + 0x8000) >> 16) < 0xa0)
+ if (getActorScaleAtPosition((actor->granularPosY + 0x8000) >> 16) < 0xa0)
loops = 1;
else
loops = 2;
for (int k = 0; k < loops; k++) {
- if (object->field90 == 0)
+ if (actor->field90 == 0)
break;
- object->field90--;
- uint32 newX = object->granularPosX + object->speedX;
- uint32 newY = object->granularPosY + object->speedY;
- if ((object->field90 & 3) == 0) {
+ actor->field90--;
+ uint32 newX = actor->granularPosX + actor->speedX;
+ uint32 newY = actor->granularPosY + actor->speedY;
+ if ((actor->field90 & 3) == 0) {
sprite->bitmap.reset();
- updateObjectPositionWhileWalking(object, (newX + 0x8000) >> 16, (newY + 0x8000) >> 16);
- object->field92++;
+ updateActorPositionWhileWalking(actor, (newX + 0x8000) >> 16, (newY + 0x8000) >> 16);
+ actor->field92++;
}
- object->granularPosX = newX;
- object->granularPosY = newY;
- object->frameToStartNextAnim = _frameIndex;
+ actor->granularPosX = newX;
+ actor->granularPosY = newY;
+ actor->frameToStartNextAnim = _frameIndex;
}
}
- else { // object->field90 == 0
- if (object->iwSrcPosition == -1) {
- if (object->walkingIntoRoom != 0) {
- object->walkingIntoRoom = 0;
- addCommand(Command(FINISHED_ENTERING_ROOM, object->field66 & 0xff, 0, 0));
+ else { // actor->field90 == 0
+ if (actor->iwSrcPosition == -1) {
+ if (actor->walkingIntoRoom != 0) {
+ actor->walkingIntoRoom = 0;
+ addCommand(Command(COMMAND_FINISHED_ENTERING_ROOM, actor->field66 & 0xff, 0, 0));
}
- object->sprite.bitmap.reset();
- updateObjectPositionWhileWalking(object, (object->granularPosX + 0x8000) >> 16, (object->granularPosY + 0x8000) >> 16);
+ actor->sprite.bitmap.reset();
+ updateActorPositionWhileWalking(actor, (actor->granularPosX + 0x8000) >> 16, (actor->granularPosY + 0x8000) >> 16);
initStandAnim(i);
}
- else { // object->iwSrcPosition != -1
- if (object->iwSrcPosition == object->iwDestPosition) {
- object->animationString2[strlen(object->animationString2) - 1] = '\0';
- object->iwDestPosition = -1;
- object->iwSrcPosition = -1;
- chooseObjectDirectionForWalking(object, object->pos.x, object->pos.y, object->dest.x, object->dest.y);
+ else { // actor->iwSrcPosition != -1
+ if (actor->iwSrcPosition == actor->iwDestPosition) {
+ actor->animationString2[strlen(actor->animationString2) - 1] = '\0';
+ actor->iwDestPosition = -1;
+ actor->iwSrcPosition = -1;
+ chooseActorDirectionForWalking(actor, actor->pos.x, actor->pos.y, actor->dest.x, actor->dest.y);
}
else {
- int index = _iwFile->_iwEntries[object->iwSrcPosition][object->iwDestPosition];
- object->iwSrcPosition = index;
- Common::Point dest = _iwFile->_keyPositions[object->iwSrcPosition];
- object->animationString2[strlen(object->animationString2) - 1] = '\0';
- chooseObjectDirectionForWalking(object, object->pos.x, object->pos.y, dest.x, dest.y);
+ int index = _iwFile->_iwEntries[actor->iwSrcPosition][actor->iwDestPosition];
+ actor->iwSrcPosition = index;
+ Common::Point dest = _iwFile->_keyPositions[actor->iwSrcPosition];
+ actor->animationString2[strlen(actor->animationString2) - 1] = '\0';
+ chooseActorDirectionForWalking(actor, actor->pos.x, actor->pos.y, dest.x, dest.y);
}
}
}
@@ -548,154 +548,154 @@ void StarTrekEngine::updateObjectAnimations() {
}
}
-void StarTrekEngine::removeObjectFromScreen(int objectIndex) {
- Object *object = &_objectList[objectIndex];
+void StarTrekEngine::removeActorFromScreen(int actorIndex) {
+ Actor *actor = &_actorList[actorIndex];
- if (object->spriteDrawn != 1)
+ if (actor->spriteDrawn != 1)
return;
- debugC(6, kDebugGraphics, "Stop drawing object %d", objectIndex);
+ debugC(6, kDebugGraphics, "Stop drawing actor %d", actorIndex);
- Sprite *sprite = &object->sprite;
+ Sprite *sprite = &actor->sprite;
sprite->field16 = true;
sprite->bitmapChanged = true;
_gfx->drawAllSprites();
_gfx->delSprite(sprite);
- releaseAnim(object);
+ releaseAnim(actor);
}
-void StarTrekEngine::objectFunc1() {
- for (int i = 0; i < MAX_OBJECTS; i++) {
- if (_objectList[i].spriteDrawn == 1) {
- removeObjectFromScreen(i);
+void StarTrekEngine::actorFunc1() {
+ for (int i = 0; i < NUM_ACTORS; i++) {
+ if (_actorList[i].spriteDrawn == 1) {
+ removeActorFromScreen(i);
}
}
- for (int i = 0; i < MAX_OBJECTS / 2; i++) {
- _objectBanFiles[i].reset();
+ for (int i = 0; i < NUM_ACTORS / 2; i++) {
+ _actorBanFiles[i].reset();
}
}
-void StarTrekEngine::drawObjectToScreen(Object *object, const Common::String &_animName, int16 x, int16 y, Fixed16 scale, bool addSprite) {
+void StarTrekEngine::drawActorToScreen(Actor *actor, const Common::String &_animName, int16 x, int16 y, Fixed16 scale, bool addSprite) {
Common::String animFilename = _animName;
if (_animName.hasPrefixIgnoreCase("stnd") /* && word_45d20 == -1 */) // TODO
animFilename += 'j';
- memcpy(object->animationString3, _animName.c_str(), sizeof(object->animationString3));
+ memcpy(actor->animationString3, _animName.c_str(), sizeof(actor->animationString3));
- object->animType = 2;
- object->animFile = loadFile(animFilename + ".anm");
- object->numAnimFrames = object->animFile->size() / 22;
- object->animFrame = 0;
- object->pos.x = x;
- object->pos.y = y;
- object->field62 = 0;
- object->scale = scale;
+ actor->animType = 2;
+ actor->animFile = loadFile(animFilename + ".anm");
+ actor->numAnimFrames = actor->animFile->size() / 22;
+ actor->animFrame = 0;
+ actor->pos.x = x;
+ actor->pos.y = y;
+ actor->field62 = 0;
+ actor->scale = scale;
- object->animFile->seek(16, SEEK_SET);
- object->frameToStartNextAnim = object->animFile->readUint16() + _frameIndex;
+ actor->animFile->seek(16, SEEK_SET);
+ actor->frameToStartNextAnim = actor->animFile->readUint16() + _frameIndex;
char firstFrameFilename[10];
- object->animFile->seek(0, SEEK_SET);
- object->animFile->read(firstFrameFilename, 10);
+ actor->animFile->seek(0, SEEK_SET);
+ actor->animFile->read(firstFrameFilename, 10);
- Sprite *sprite = &object->sprite;
+ Sprite *sprite = &actor->sprite;
if (addSprite)
_gfx->addSprite(sprite);
sprite->setBitmap(loadAnimationFrame(firstFrameFilename, scale));
- memset(object->animationString4, 0, sizeof(char) * 10);
- strncpy(object->animationString4, firstFrameFilename, sizeof(char) * 9);
+ memset(actor->animationString4, 0, sizeof(char) * 10);
+ strncpy(actor->animationString4, firstFrameFilename, sizeof(char) * 9);
- object->scale = scale;
+ actor->scale = scale;
- object->animFile->seek(10, SEEK_SET);
- uint16 xOffset = object->animFile->readUint16();
- uint16 yOffset = object->animFile->readUint16();
- uint16 basePriority = object->animFile->readUint16();
+ actor->animFile->seek(10, SEEK_SET);
+ uint16 xOffset = actor->animFile->readUint16();
+ uint16 yOffset = actor->animFile->readUint16();
+ uint16 basePriority = actor->animFile->readUint16();
- sprite->pos.x = xOffset + object->pos.x;
- sprite->pos.y = yOffset + object->pos.y;
- sprite->drawPriority = _gfx->getPriValue(0, yOffset + object->pos.y) + basePriority;
+ sprite->pos.x = xOffset + actor->pos.x;
+ sprite->pos.y = yOffset + actor->pos.y;
+ sprite->drawPriority = _gfx->getPriValue(0, yOffset + actor->pos.y) + basePriority;
sprite->bitmapChanged = true;
- object->spriteDrawn = 1;
+ actor->spriteDrawn = 1;
}
-void StarTrekEngine::releaseAnim(Object *object) {
- switch (object->animType) {
+void StarTrekEngine::releaseAnim(Actor *actor) {
+ switch (actor->animType) {
case 0:
case 2:
- object->sprite.bitmap.reset();
- object->animFile.reset();
+ actor->sprite.bitmap.reset();
+ actor->animFile.reset();
break;
case 1:
- object->sprite.bitmap.reset();
+ actor->sprite.bitmap.reset();
break;
default:
error("Invalid anim type");
break;
}
- object->spriteDrawn = 0;
+ actor->spriteDrawn = 0;
}
-void StarTrekEngine::initStandAnim(int objectIndex) {
- Object *object = &_objectList[objectIndex];
+void StarTrekEngine::initStandAnim(int actorIndex) {
+ Actor *actor = &_actorList[actorIndex];
- if (!object->spriteDrawn)
+ if (!actor->spriteDrawn)
error("initStandAnim: dead anim");
////////////////////
// sub_239d2
const char *directions = "nsew";
- if (objectIndex >= 0 && objectIndex <= 3) {
- int8 dir = _awayMission.field25[objectIndex];
+ if (actorIndex >= 0 && actorIndex <= 3) {
+ int8 dir = _awayMission.field25[actorIndex];
if (dir != -1) {
- object->direction = directions[dir];
- _awayMission.field25[objectIndex] = -1;
+ actor->direction = directions[dir];
+ _awayMission.field25[actorIndex] = -1;
}
}
// end of sub_239d2
////////////////////
Common::String animName;
- if (object->direction != 0)
- animName = Common::String(object->animationString) + (char)object->direction;
+ if (actor->direction != 0)
+ animName = Common::String(actor->animationString) + (char)actor->direction;
else // Default to facing south
- animName = Common::String(object->animationString) + 's';
+ animName = Common::String(actor->animationString) + 's';
- uint16 scale = getObjectScaleAtPosition(object->pos.y);
- loadObjectAnim(objectIndex, animName, object->pos.x, object->pos.y, scale);
- object->animType = 0;
+ uint16 scale = getActorScaleAtPosition(actor->pos.y);
+ loadActorAnim(actorIndex, animName, actor->pos.x, actor->pos.y, scale);
+ actor->animType = 0;
}
-void StarTrekEngine::updateObjectPositionWhileWalking(Object *object, int16 x, int16 y) {
- object->scale = getObjectScaleAtPosition(y);
- Common::String animName = Common::String::format("%s%02d", object->animationString2, object->field92 & 7);
- object->sprite.setBitmap(loadAnimationFrame(animName, object->scale));
+void StarTrekEngine::updateActorPositionWhileWalking(Actor *actor, int16 x, int16 y) {
+ actor->scale = getActorScaleAtPosition(y);
+ Common::String animName = Common::String::format("%s%02d", actor->animationString2, actor->field92 & 7);
+ actor->sprite.setBitmap(loadAnimationFrame(animName, actor->scale));
- memset(object->animationString4, 0, 10);
- strncpy(object->animationString4, animName.c_str(), 9);
+ memset(actor->animationString4, 0, 10);
+ strncpy(actor->animationString4, animName.c_str(), 9);
- Sprite *sprite = &object->sprite;
+ Sprite *sprite = &actor->sprite;
sprite->drawPriority = _gfx->getPriValue(0, y);
sprite->pos.x = x;
sprite->pos.y = y;
sprite->bitmapChanged = true;
- object->frameToStartNextAnim = _frameIndex;
- object->pos.x = x;
- object->pos.y = y;
+ actor->frameToStartNextAnim = _frameIndex;
+ actor->pos.x = x;
+ actor->pos.y = y;
}
/**
- * Chooses a value for the object's speed and direction, based on a source position and
+ * Chooses a value for the actor's speed and direction, based on a source position and
* a destination position it's walking to.
*/
-void StarTrekEngine::chooseObjectDirectionForWalking(Object *object, int16 srcX, int16 srcY, int16 destX, int16 destY) {
- object->granularPosX = srcX << 16;
- object->granularPosY = srcY << 16;
+void StarTrekEngine::chooseActorDirectionForWalking(Actor *actor, int16 srcX, int16 srcY, int16 destX, int16 destY) {
+ actor->granularPosX = srcX << 16;
+ actor->granularPosY = srcY << 16;
int16 distX = destX - srcX;
int16 distY = destY - srcY;
@@ -710,19 +710,19 @@ void StarTrekEngine::chooseObjectDirectionForWalking(Object *object, int16 srcX,
d = 'W';
// Append direction to animation string
- object->animationString2[strlen(object->animationString2) + 1] = '\0';
- object->animationString2[strlen(object->animationString2)] = d;
+ actor->animationString2[strlen(actor->animationString2) + 1] = '\0';
+ actor->animationString2[strlen(actor->animationString2)] = d;
- object->direction = d;
- object->field90 = absDistX;
+ actor->direction = d;
+ actor->field90 = absDistX;
if (distX != 0) {
if (distX > 0)
- object->speedX = 1 << 16;
+ actor->speedX = 1 << 16;
else
- object->speedX = -1 << 16; // 0xffff0000
+ actor->speedX = -1 << 16; // 0xffff0000
- object->speedY = (distY << 16) / absDistX;
+ actor->speedY = (distY << 16) / absDistX;
}
}
else {
@@ -733,25 +733,25 @@ void StarTrekEngine::chooseObjectDirectionForWalking(Object *object, int16 srcX,
d = 'N';
// Append direction to animation string
- object->animationString2[strlen(object->animationString2) + 1] = '\0';
- object->animationString2[strlen(object->animationString2)] = d;
+ actor->animationString2[strlen(actor->animationString2) + 1] = '\0';
+ actor->animationString2[strlen(actor->animationString2)] = d;
- object->direction = d;
- object->field90 = absDistY;
+ actor->direction = d;
+ actor->field90 = absDistY;
if (distY != 0) {
if (distY > 0)
- object->speedY = 1 << 16;
+ actor->speedY = 1 << 16;
else
- object->speedY = -1 << 16; // 0xffff0000
+ actor->speedY = -1 << 16; // 0xffff0000
- object->speedX = (distX << 16) / absDistY;
+ actor->speedX = (distX << 16) / absDistY;
}
}
}
/**
- * Returns true if an object can walk directly from a source position to a destination
+ * Returns true if an actor can walk directly from a source position to a destination
* position without running into unwalkable terrain.
*/
bool StarTrekEngine::directPathExists(int16 srcX, int16 srcY, int16 destX, int16 destY) {
@@ -817,9 +817,9 @@ int StarTrekEngine::findObjectAt(int x, int y) {
else if (sprite == &_itemIconSprite)
return _awayMission.activeItem;
- for (int i = 0; i < MAX_OBJECTS; i++) {
- Object *object = &_objectList[i];
- if (sprite == &object->sprite)
+ for (int i = 0; i < NUM_ACTORS; i++) {
+ Actor *actor = &_actorList[i];
+ if (sprite == &actor->sprite)
return i;
}
@@ -834,11 +834,11 @@ int StarTrekEngine::findObjectAt(int x, int y) {
uint16 word = _room->readRdfWord(offset);
if (word & 0x8000) {
if ((word & actionBit) && isPointInPolygon((int16 *)(_room->_rdfData + offset + 6), x, y)) {
- int objectIndex = _room->readRdfWord(offset + 6);
+ int actorIndex = _room->readRdfWord(offset + 6);
// word_4b418 = 1;
// word_4a792 = _room->readRdfWord(offset + 2);
// word_4a796 = _room->readRdfWord(offset + 4); // TODO
- return objectIndex;
+ return actorIndex;
}
int numVertices = _room->readRdfWord(offset + 8);
@@ -846,8 +846,8 @@ int StarTrekEngine::findObjectAt(int x, int y) {
}
else {
if (isPointInPolygon((int16 *)(_room->_rdfData + offset), x, y)) {
- int objectIndex = _room->readRdfWord(offset);
- return objectIndex;
+ int actorIndex = _room->readRdfWord(offset);
+ return actorIndex;
}
int numVertices = _room->readRdfWord(offset + 2);
@@ -957,10 +957,10 @@ SharedPtr<Bitmap> StarTrekEngine::loadAnimationFrame(const Common::String &filen
return bitmapToReturn;
}
-Common::String StarTrekEngine::getCrewmanAnimFilename(int objectIndex, const Common::String &basename) {
+Common::String StarTrekEngine::getCrewmanAnimFilename(int actorIndex, const Common::String &basename) {
const char *crewmanChars = "ksmr";
- assert(objectIndex >= 0 && objectIndex < 4);
- return crewmanChars[objectIndex] + basename;
+ assert(actorIndex >= 0 && actorIndex < 4);
+ return crewmanChars[actorIndex] + basename;
}
/**
@@ -974,7 +974,7 @@ void StarTrekEngine::updateMouseBitmap() {
true, // ACTION_LOOK
true // ACTION_TALK
};
- const bool worksOnObjects[] = { // True if the action reacts with other objects
+ const bool worksOnActors[] = { // True if the action reacts with other objects
false, // ACTION_WALK
true, // ACTION_USE
true, // ACTION_GET
@@ -998,9 +998,9 @@ void StarTrekEngine::updateMouseBitmap() {
if (selected >= 0 && selected <= 3 && worksOnCrewmen[action - 1])
withRedOutline = true;
- else if (selected > 3 && selected < MAX_OBJECTS && worksOnObjects[action - 1])
+ else if (selected > 3 && selected < NUM_ACTORS && worksOnActors[action - 1])
withRedOutline = true;
- else if (selected >= MAX_OBJECTS && selected < MAX_OBJECTS_2 && worksOnHotspots[action - 1])
+ else if (selected >= NUM_ACTORS && selected < HOTSPOTS_END && worksOnHotspots[action - 1])
withRedOutline = true;
else
withRedOutline = false;
@@ -1082,11 +1082,11 @@ int StarTrekEngine::showInventoryMenu(int x, int y, bool restoreMouse) {
int itemIndex = 0;
int numItems = 0;
- char itemNames[NUM_ITEMS][10];
- Common::Point itemPositions[NUM_ITEMS];
- int16 itemIndices[NUM_ITEMS];
+ char itemNames[NUM_OBJECTS][10];
+ Common::Point itemPositions[NUM_OBJECTS];
+ int16 itemIndices[NUM_OBJECTS];
- while (itemIndex < NUM_ITEMS) {
+ while (itemIndex < NUM_OBJECTS) {
if (_itemList[itemIndex].have) {
strcpy(itemNames[numItems], _itemList[itemIndex].name);
@@ -1100,7 +1100,7 @@ int StarTrekEngine::showInventoryMenu(int x, int y, bool restoreMouse) {
itemIndex++;
}
- Sprite itemSprites[NUM_ITEMS];
+ Sprite itemSprites[NUM_OBJECTS];
for (int i = 0; i < numItems; i++) {
_gfx->addSprite(&itemSprites[i]);
diff --git a/engines/startrek/startrek.h b/engines/startrek/startrek.h
index f1a5176c94..b853809413 100644
--- a/engines/startrek/startrek.h
+++ b/engines/startrek/startrek.h
@@ -58,8 +58,7 @@ class StarTrekEngine;
typedef String (StarTrekEngine::*TextGetterFunc)(int, uintptr, String *);
-const int MAX_OBJECTS = 32;
-const int MAX_OBJECTS_2 = 64; // TODO: better name; indices 32 and above used for something
+
const int MAX_MENUBUTTONS = 32;
const int TEXTBOX_WIDTH = 26;
@@ -106,6 +105,7 @@ struct Menu {
};
// Special events that can be returned by handleMenuEvents.
+// (Normally it returns the "retval" of a pressed button, which is positive.)
enum MenuEvent {
MENUEVENT_RCLICK_OFFBUTTON = -4,
MENUEVENT_ENABLEINPUT, // Makes buttons selectable (occurs after a delay)
@@ -165,7 +165,7 @@ enum Commands {
COMMAND_TOUCHED_WARP = 6,
COMMAND_7 = 7, // Doors? (Or just hotspots activated by Kirk moving there?)
COMMAND_FINISHED_BEAMING_IN = 10,
- FINISHED_ENTERING_ROOM = 12
+ COMMAND_FINISHED_ENTERING_ROOM = 12
};
struct Command {
@@ -188,15 +188,6 @@ enum Acton {
ACTION_OPTIONS = 13 // Not really an action, but selectable from action menu
};
-// First 4 objects are reserved for crewmen
-enum Objects {
- OBJECT_KIRK = 0,
- OBJECT_SPOCK = 1,
- OBJECT_MCCOY = 2,
- OBJECT_REDSHIRT = 3,
- OBJECT_INVENTORY_ICON = 31
-};
-
struct StarTrekGameDescription;
class Graphics;
@@ -219,8 +210,8 @@ private:
void initAwayCrewPositions(int warpEntryIndex);
void handleAwayMissionEvents();
void unloadRoom();
- int loadObjectAnimWithRoomScaling(int objectIndex, const Common::String &animName, int16 x, int16 y);
- uint16 getObjectScaleAtPosition(int16 y);
+ int loadActorAnimWithRoomScaling(int actorIndex, const Common::String &animName, int16 x, int16 y);
+ uint16 getActorScaleAtPosition(int16 y);
void addCommand(const Command &command);
void handleAwayMissionCommand();
@@ -244,24 +235,24 @@ public:
void playSpeech(const Common::String &filename);
void stopPlayingSpeech();
- // Objects
- void initObjects();
- int loadObjectAnim(int objectIndex, const Common::String &animName, int16 x, int16 y, Fixed16 scale);
- bool objectWalkToPosition(int objectIndex, const Common::String &animFile, int16 srcX, int16 srcY, int16 destX, int16 destY);
- void updateObjectAnimations();
- void removeObjectFromScreen(int objectIndex);
- void objectFunc1();
- void drawObjectToScreen(Object *object, const Common::String &animName, int16 x, int16 y, Fixed16 scale, bool addSprite);
- void releaseAnim(Object *object);
- void initStandAnim(int objectIndex);
- void updateObjectPositionWhileWalking(Object *object, int16 x, int16 y);
- void chooseObjectDirectionForWalking(Object *object, int16 srcX, int16 srcY, int16 destX, int16 destY);
+ // Actors
+ void initActors();
+ int loadActorAnim(int actorIndex, const Common::String &animName, int16 x, int16 y, Fixed16 scale);
+ bool actorWalkToPosition(int actorIndex, const Common::String &animFile, int16 srcX, int16 srcY, int16 destX, int16 destY);
+ void updateActorAnimations();
+ void removeActorFromScreen(int actorIndex);
+ void actorFunc1();
+ void drawActorToScreen(Actor *actor, const Common::String &animName, int16 x, int16 y, Fixed16 scale, bool addSprite);
+ void releaseAnim(Actor *actor);
+ void initStandAnim(int actorIndex);
+ void updateActorPositionWhileWalking(Actor *actor, int16 x, int16 y);
+ void chooseActorDirectionForWalking(Actor *actor, int16 srcX, int16 srcY, int16 destX, int16 destY);
bool directPathExists(int16 srcX, int16 srcY, int16 destX, int16 destY);
int findObjectAt(int x, int y);
int findObjectAt(Common::Point p) { return findObjectAt(p.x, p.y); }
SharedPtr<Bitmap> loadAnimationFrame(const Common::String &filename, Fixed16 scale);
- Common::String getCrewmanAnimFilename(int objectIndex, const Common::String &basename);
+ Common::String getCrewmanAnimFilename(int actorIndex, const Common::String &basename);
void updateMouseBitmap();
void showInventoryIcons(bool showItem);
void hideInventoryIcons();
@@ -382,7 +373,7 @@ public:
Common::String _screenName; // _screenName = _missionName + _roomIndex
Common::String _mapFilename; // Similar to _screenName, but used for .map files?
SharedPtr<FileStream> _mapFile;
- int32 _playerObjectScale;
+ int32 _playerActorScale;
// Queue of "commands" (ie. next frame, clicked on object) for away mission or bridge
Common::Queue<Command> _commandQueue;
@@ -395,14 +386,14 @@ public:
Item _itemList[NUM_ITEMS];
- Object _objectList[MAX_OBJECTS];
- Object * const _kirkObject;
- Object * const _spockObject;
- Object * const _mccoyObject;
- Object * const _redshirtObject;
+ Actor _actorList[NUM_ACTORS];
+ Actor * const _kirkActor;
+ Actor * const _spockActor;
+ Actor * const _mccoyActor;
+ Actor * const _redshirtActor;
- SharedPtr<FileStream> _objectBanFiles[MAX_OBJECTS / 2];
- uint16 _objectBanVar2[MAX_OBJECTS / 2]; // TODO: initialize?
+ SharedPtr<FileStream> _actorBanFiles[NUM_ACTORS / 2];
+ uint16 _actorBanVar2[NUM_ACTORS / 2]; // TODO: initialize?
Sprite _inventoryIconSprite;
Sprite _itemIconSprite;