Skip to content

Commit

Permalink
KYRA: Cleanup static variable usage in LoK.
Browse files Browse the repository at this point in the history
  • Loading branch information
Johannes Schickel committed Apr 6, 2011
1 parent f4dde64 commit 6d0bb19
Show file tree
Hide file tree
Showing 7 changed files with 164 additions and 150 deletions.
7 changes: 3 additions & 4 deletions engines/kyra/gui_lok.cpp
Expand Up @@ -564,7 +564,6 @@ int GUI_LoK::resumeGame(Button *button) {

void GUI_LoK::setupSavegames(Menu &menu, int num) {
Common::InSaveFile *in;
static char savenames[5][35];
uint8 startSlot;
assert(num <= 5);

Expand All @@ -583,11 +582,11 @@ void GUI_LoK::setupSavegames(Menu &menu, int num) {
KyraEngine_LoK::SaveHeader header;
for (int i = startSlot; i < num && uint(_savegameOffset + i) < _saveSlots.size(); i++) {
if ((in = _vm->openSaveForReading(_vm->getSavegameFilename(_saveSlots[i + _savegameOffset]), header))) {
Common::strlcpy(savenames[i], header.description.c_str(), ARRAYSIZE(savenames[0]));
Common::strlcpy(_savegameNames[i], header.description.c_str(), ARRAYSIZE(_savegameNames[0]));

Util::convertISOToDOS(savenames[i]);
Util::convertISOToDOS(_savegameNames[i]);

menu.item[i].itemString = savenames[i];
menu.item[i].itemString = _savegameNames[i];
menu.item[i].enabled = 1;
menu.item[i].saveSlot = _saveSlots[i + _savegameOffset];
delete in;
Expand Down
1 change: 1 addition & 0 deletions engines/kyra/gui_lok.h
Expand Up @@ -166,6 +166,7 @@ class GUI_LoK : public GUI {
uint8 _toplevelMenu;
int _savegameOffset;
char _savegameName[35];
char _savegameNames[5][35];
const char *_specialSavegameString;

Button::Callback _scrollUpFunctor;
Expand Down
12 changes: 12 additions & 0 deletions engines/kyra/kyra_lok.cpp
Expand Up @@ -92,10 +92,22 @@ KyraEngine_LoK::KyraEngine_LoK(OSystem *system, const GameFlags &flags)
memset(_panPagesTable, 0, sizeof(_panPagesTable));
memset(_sceneAnimTable, 0, sizeof(_sceneAnimTable));
_currHeadShape = 0;
_currentHeadFrameTableIndex = 0;
_speechPlayTime = 0;
_seqPlayerFlag = false;

memset(&_characterFacingZeroCount, 0, sizeof(_characterFacingZeroCount));
memset(&_characterFacingFourCount, 0, sizeof(_characterFacingFourCount));

memset(&_itemBkgBackUp, 0, sizeof(_itemBkgBackUp));

_beadStateTimer1 = _beadStateTimer2 = 0;
memset(&_beadState1, 0, sizeof(_beadState1));
_beadState1.x = -1;
memset(&_beadState2, 0, sizeof(_beadState2));

_malcolmFrame = 0;
_malcolmTimer1 = _malcolmTimer2 = 0;
}

KyraEngine_LoK::~KyraEngine_LoK() {
Expand Down
13 changes: 13 additions & 0 deletions engines/kyra/kyra_lok.h
Expand Up @@ -447,6 +447,9 @@ class KyraEngine_LoK : public KyraEngine_v1 {
uint16 _currentChatPartnerBackupFrame;
uint16 _currentCharAnimFrame;

int _characterFacingZeroCount[8];
int _characterFacingFourCount[8];

int8 *_sceneAnimTable[50];

uint8 _itemHtDat[145];
Expand All @@ -471,6 +474,7 @@ class KyraEngine_LoK : public KyraEngine_v1 {
int8 _charSayUnk2;
int8 _charSayUnk3;
int8 _currHeadShape;
int _currentHeadFrameTableIndex;
int8 _disabledTalkAnimObject;
int8 _enabledTalkAnimObject;
uint8 _currSentenceColor[3];
Expand Down Expand Up @@ -498,6 +502,15 @@ class KyraEngine_LoK : public KyraEngine_v1 {
Button *_buttonList;
GUI_LoK *_gui;

uint16 _malcolmFrame;
uint32 _malcolmTimer1;
uint32 _malcolmTimer2;

uint32 _beadStateTimer1;
uint32 _beadStateTimer2;
BeadState _beadState1;
BeadState _beadState2;

struct KyragemState {
uint16 nextOperation;
uint16 rOffset;
Expand Down
17 changes: 7 additions & 10 deletions engines/kyra/scene_lok.cpp
Expand Up @@ -314,38 +314,35 @@ void KyraEngine_LoK::setCharacterPositionHelper(int character, int *facingTable)
}
}

static uint8 facingIsZero[8] = { 0, 0, 0, 0, 0, 0, 0, 0 };
static uint8 facingIsFour[8] = { 0, 0, 0, 0, 0, 0, 0, 0 };

if (facing == 0) {
++facingIsZero[character];
++_characterFacingZeroCount[character];
} else {
bool resetTables = false;
if (facing != 7) {
if (facing - 1 != 0) {
if (facing != 4) {
if (facing == 3 || facing == 5) {
if (facingIsFour[character] > 2)
if (_characterFacingFourCount[character] > 2)
facing = 4;
resetTables = true;
}
} else {
++facingIsFour[character];
++_characterFacingFourCount[character];
}
} else {
if (facingIsZero[character] > 2)
if (_characterFacingZeroCount[character] > 2)
facing = 0;
resetTables = true;
}
} else {
if (facingIsZero[character] > 2)
if (_characterFacingZeroCount[character] > 2)
facing = 0;
resetTables = true;
}

if (resetTables) {
facingIsZero[character] = 0;
facingIsFour[character] = 0;
_characterFacingZeroCount[character] = 0;
_characterFacingFourCount[character] = 0;
}
}

Expand Down

0 comments on commit 6d0bb19

Please sign in to comment.