aboutsummaryrefslogtreecommitdiff
path: root/engines/parallaction/parallaction.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/parallaction/parallaction.cpp')
-rw-r--r--engines/parallaction/parallaction.cpp19
1 files changed, 18 insertions, 1 deletions
diff --git a/engines/parallaction/parallaction.cpp b/engines/parallaction/parallaction.cpp
index cb31ad63f4..1a958eb3e9 100644
--- a/engines/parallaction/parallaction.cpp
+++ b/engines/parallaction/parallaction.cpp
@@ -56,6 +56,8 @@ uint32 _engineFlags = 0;
char *_objectsNames[100];
Zone *_activeZone = NULL;
Animation _yourself;
+StaticCnv _yourHead;
+Cnv _yourTalk;
uint16 _score = 1;
Command *_locationACommands = NULL;
Command *_locationCommands = NULL;
@@ -131,7 +133,6 @@ Point _firstPosition = { -1000, -1000 };
char _newLocation[100];
char *_globalTable[32];
uint16 _firstFrame = 0;
-Cnv _characterFace;
byte _mouseHidden = 0;
Node _locationWalkNodes = { 0, 0 };
uint32 _commandFlags = 0;
@@ -261,6 +262,17 @@ int Parallaction::init() {
memset(_locationNames, 0, 120*32);
_numLocations = 0;
+ _yourTalk._width = 0;
+ _yourTalk._height = 0;
+ _yourTalk._count = 0;
+ _yourTalk._array = NULL;
+
+ _yourHead._width = 0;
+ _yourHead._height = 0;
+ _yourHead._data0 = NULL;
+ _yourHead._data1 = NULL;
+ _yourHead._data2 = NULL;
+
_yourself._zone.pos._position._x = 150;
_yourself._zone.pos._position._y = 100;
initInventory();
@@ -820,6 +832,8 @@ void freeCharacterFrames() {
if (_vm->_characterName[0] != 'D') {
_vm->_graphics->freeCnv(&_miniCharacterFrames);
_vm->freeTable(_objectsNames);
+ _vm->_graphics->freeCnv(&_yourTalk);
+ _vm->_graphics->freeStaticCnv(&_yourHead);
}
return;
@@ -858,6 +872,9 @@ void Parallaction::changeCharacter(const char *name) {
strcpy(path, v32);
_disk->loadFrames(path, &_tempFrames);
+ _disk->loadHead(path, &_yourHead);
+ _disk->loadTalk(path, &_yourTalk);
+
if (name[0] != 'D') {
sprintf(path, "mini%s", v32);
_disk->loadFrames(path, &_miniCharacterFrames);