aboutsummaryrefslogtreecommitdiff
path: root/saga
diff options
context:
space:
mode:
Diffstat (limited to 'saga')
-rw-r--r--saga/actor.cpp51
-rw-r--r--saga/script.cpp3
-rw-r--r--saga/sfuncs.cpp5
3 files changed, 42 insertions, 17 deletions
diff --git a/saga/actor.cpp b/saga/actor.cpp
index ed052f8c0e..095d245dcd 100644
--- a/saga/actor.cpp
+++ b/saga/actor.cpp
@@ -138,10 +138,6 @@ Actor::Actor(SagaEngine *vm) : _vm(vm) {
debug(9, "Actor::Actor()");
_actors = NULL;
- if (_vm->getGameType() == GType_IHNM) {
- warning("Actors aren't implemented for IHNM yet");
- return;
- }
#ifdef ACTOR_DEBUG
_debugPoints = NULL;
@@ -156,7 +152,6 @@ Actor::Actor(SagaEngine *vm) : _vm(vm) {
_pathDirectionListCount = 0;
_pathDirectionListAlloced = 0;
-
_centerActor = _protagonist = NULL;
_lastTickMsec = 0;
@@ -165,25 +160,28 @@ Actor::Actor(SagaEngine *vm) : _vm(vm) {
_pathCell = (int8*) malloc(_yCellCount * _xCellCount * sizeof(*_pathCell));
-
_pathRect.left = 0;
_pathRect.right = _vm->getDisplayWidth();
_pathRect.top = _vm->getDisplayInfo().pathStartY;
_pathRect.bottom = _vm->getSceneHeight();
- // Get actor resource file context
- _actorContext = _vm->getFileContext(GAME_RESOURCEFILE, 0);
- if (_actorContext == NULL) {
- error("Actor::Actor(): Couldn't load actor module resource context.");
- }
+ if (_vm->getGameType() == GType_ITE) {
+ // Get actor resource file context
+ _actorContext = _vm->getFileContext(GAME_RESOURCEFILE, 0);
+ if (_actorContext == NULL) {
+ error("Actor::Actor(): Couldn't load actor module resource context.");
+ }
- result = RSC_LoadResource(_actorContext, RID_ITE_ACTOR_NAMES, &stringsPointer, &stringsLength); // fixme: IHNM
- if ((result != SUCCESS) || (stringsLength == 0)) {
- error("Error loading strings list resource");
- }
+ result = RSC_LoadResource(_actorContext, RID_ITE_ACTOR_NAMES, &stringsPointer, &stringsLength); // fixme: IHNM
+ if ((result != SUCCESS) || (stringsLength == 0)) {
+ error("Error loading strings list resource");
+ }
- _vm->loadStrings(_actorsStrings, stringsPointer, stringsLength);
- RSC_FreeResource(stringsPointer);
+ _vm->loadStrings(_actorsStrings, stringsPointer, stringsLength);
+ RSC_FreeResource(stringsPointer);
+ } else {
+ // TODO
+ }
if (_vm->getGameType() == GType_ITE) {
_actorsCount = ITE_ACTORCOUNT;
@@ -217,6 +215,15 @@ Actor::Actor(SagaEngine *vm) : _vm(vm) {
warning("Disabling actorId=%d index=%d", actor->actorId, actor->index);
}
}
+ } else {
+ // TODO.
+ static ActorData dummyActor;
+
+ dummyActor.frames = NULL;
+ dummyActor.walkStepsPoints = NULL;
+
+ _protagonist = &dummyActor;
+ _actorsCount = 0;
}
}
@@ -1421,6 +1428,11 @@ void Actor::actorSpeech(uint16 actorId, const char **strings, int stringsCount,
ActorData *actor;
int i;
+ if (_vm->getGameType() == GType_IHNM) {
+ warning("Actors aren't implemented for IHNM yet");
+ return;
+ }
+
actor = getActor(actorId);
for (i = 0; i < stringsCount; i++) {
_activeSpeech.strings[i] = strings[i];
@@ -1462,6 +1474,11 @@ void Actor::nonActorSpeech(const char **strings, int stringsCount, int speechFla
void Actor::simulSpeech(const char *string, uint16 *actorIds, int actorIdsCount, int speechFlags) {
int i;
+ if (_vm->getGameType() == GType_IHNM) {
+ warning("Actors aren't implemented for IHNM yet");
+ return;
+ }
+
for (i = 0; i < actorIdsCount; i++) {
ActorData *actor;
diff --git a/saga/script.cpp b/saga/script.cpp
index f404c3abe3..8310049b35 100644
--- a/saga/script.cpp
+++ b/saga/script.cpp
@@ -63,6 +63,9 @@ Script::Script() {
_abortEnabled = true;
_skipSpeeches = false;
+ _firstObjectSet = false;
+ _secondObjectNeeded = false;
+ _pendingVerb = kVerbNone;
_currentVerb = kVerbNone;
_stickyVerb = kVerbWalkTo;
_leftButtonVerb = kVerbNone;
diff --git a/saga/sfuncs.cpp b/saga/sfuncs.cpp
index d3dc57858f..31ae5fd28e 100644
--- a/saga/sfuncs.cpp
+++ b/saga/sfuncs.cpp
@@ -934,6 +934,11 @@ int Script::sfPlaceActor(SCRIPTFUNC_PARAMS) {
debug(1, "sfPlaceActor(%d, %d, %d, %d, %d, %d)", actorId, actorLocation.x,
actorLocation.y, actorDirection, frameType, frameOffset);
+ if (_vm->getGameType() == GType_IHNM) {
+ warning("Actors aren't implemented for IHNM yet");
+ return SUCCESS;
+ }
+
actor = _vm->_actor->getActor(actorId);
actor->location.x = actorLocation.x;
actor->location.y = actorLocation.y;