Skip to content

Commit

Permalink
KYRA: (EOB) - implement memorize/pray spells menu
Browse files Browse the repository at this point in the history
  • Loading branch information
athrxx authored and Johannes Schickel committed Dec 26, 2011
1 parent d7f2720 commit b7f7635
Show file tree
Hide file tree
Showing 15 changed files with 411 additions and 82 deletions.
24 changes: 12 additions & 12 deletions devtools/create_kyradat/create_kyradat.cpp
Expand Up @@ -275,10 +275,10 @@ const ExtractFilename extractFilenames[] = {

{ kEobBaseSpellLevelsMage, kTypeRawData, false },
{ kEobBaseSpellLevelsCleric, kTypeRawData, false },
{ kEobBaseSpellMps1, kTypeRawData, false },
{ kEobBaseSpellMps2, kTypeRawData, false },
{ kEobBaseSpellMps3, kTypeRawData, false },
{ kEobBaseSpellMps4, kTypeRawData, false },
{ kEobBaseNumSpellsCleric, kTypeRawData, false },
{ kEobBaseNumSpellsWisAdj, kTypeRawData, false },
{ kEobBaseNumSpellsPal, kTypeRawData, false },
{ kEobBaseNumSpellsMage, kTypeRawData, false },

{ kEobBaseCharGuiStringsHp, kTypeStringList, true },
{ kEobBaseCharGuiStringsWp1, kTypeStringList, true },
Expand Down Expand Up @@ -1367,14 +1367,14 @@ const char *getIdString(const int id) {
return "kEobBaseSpellLevelsMage";
case kEobBaseSpellLevelsCleric:
return "kEobBaseSpellLevelsCleric";
case kEobBaseSpellMps1:
return "kEobBaseSpellMps1";
case kEobBaseSpellMps2:
return "kEobBaseSpellMps2";
case kEobBaseSpellMps3:
return "kEobBaseSpellMps3";
case kEobBaseSpellMps4:
return "kEobBaseSpellMps4";
case kEobBaseNumSpellsCleric:
return "kEobBaseNumSpellsCleric";
case kEobBaseNumSpellsWisAdj:
return "kEobBaseNumSpellsWisAdj";
case kEobBaseNumSpellsPal:
return "kEobBaseNumSpellsPal";
case kEobBaseNumSpellsMage:
return "kEobBaseNumSpellsMage";
case kEobBaseCharGuiStringsHp:
return "kEobBaseCharGuiStringsHp";
case kEobBaseCharGuiStringsWp1:
Expand Down
8 changes: 4 additions & 4 deletions devtools/create_kyradat/create_kyradat.h
Expand Up @@ -250,10 +250,10 @@ enum kExtractID {

kEobBaseSpellLevelsMage,
kEobBaseSpellLevelsCleric,
kEobBaseSpellMps1,
kEobBaseSpellMps2,
kEobBaseSpellMps3,
kEobBaseSpellMps4,
kEobBaseNumSpellsCleric,
kEobBaseNumSpellsWisAdj,
kEobBaseNumSpellsPal,
kEobBaseNumSpellsMage,

kEobBaseCharGuiStringsHp,
kEobBaseCharGuiStringsWp1,
Expand Down
16 changes: 8 additions & 8 deletions devtools/create_kyradat/games.cpp
Expand Up @@ -1097,10 +1097,10 @@ const int eob1FloppyNeed[] = {

kEobBaseSpellLevelsMage,
kEobBaseSpellLevelsCleric,
kEobBaseSpellMps1,
kEobBaseSpellMps2,
kEobBaseSpellMps3,
kEobBaseSpellMps4,
kEobBaseNumSpellsCleric,
kEobBaseNumSpellsWisAdj,
kEobBaseNumSpellsPal,
kEobBaseNumSpellsMage,

kEobBaseCharGuiStringsHp,
kEobBaseCharGuiStringsWp1,
Expand Down Expand Up @@ -1285,10 +1285,10 @@ const int eob2FloppyNeed[] = {

kEobBaseSpellLevelsMage,
kEobBaseSpellLevelsCleric,
kEobBaseSpellMps1,
kEobBaseSpellMps2,
kEobBaseSpellMps3,
kEobBaseSpellMps4,
kEobBaseNumSpellsCleric,
kEobBaseNumSpellsWisAdj,
kEobBaseNumSpellsPal,
kEobBaseNumSpellsMage,

kEobBaseCharGuiStringsHp,
kEobBaseCharGuiStringsWp2,
Expand Down
16 changes: 8 additions & 8 deletions devtools/create_kyradat/tables.cpp
Expand Up @@ -1687,25 +1687,25 @@ const ExtractEntrySearchData kEobBaseSpellLevelsClericProvider[] = {
EXTRACT_END_ENTRY
};

const ExtractEntrySearchData kEobBaseSpellMps1Provider[] = {
const ExtractEntrySearchData kEobBaseNumSpellsClericProvider[] = {
{ UNK_LANG, kPlatformUnknown, { 0x00000032, 0x0000004C, { { 0x87, 0xDD, 0xD0, 0xF8, 0x52, 0x84, 0x26, 0xC4, 0x9C, 0x5D, 0x0E, 0x46, 0x1A, 0xE8, 0x19, 0xD6 } } } }, // EOB1
{ UNK_LANG, kPlatformUnknown, { 0x00000088, 0x00000114, { { 0xA0, 0xB7, 0x2F, 0xED, 0x50, 0xE7, 0xC6, 0x11, 0xC9, 0x25, 0xB2, 0xB9, 0x81, 0xFB, 0xD8, 0x59 } } } }, // EOB2
EXTRACT_END_ENTRY
};

const ExtractEntrySearchData kEobBaseSpellMps2Provider[] = {
const ExtractEntrySearchData kEobBaseNumSpellsWisAdjProvider[] = {
{ UNK_LANG, kPlatformUnknown, { 0x00000028, 0x0000001D, { { 0xA5, 0xCA, 0x1D, 0x96, 0xAE, 0x89, 0xBC, 0x7A, 0x32, 0x50, 0xCE, 0x44, 0x5D, 0x93, 0x25, 0x4B } } } }, // EOB1
{ UNK_LANG, kPlatformUnknown, { 0x00000040, 0x0000001D, { { 0x07, 0x31, 0x0D, 0x12, 0x55, 0x11, 0x11, 0xB6, 0x68, 0xC7, 0xEE, 0xDE, 0xC6, 0xED, 0x82, 0x5A } } } }, // EOB2
EXTRACT_END_ENTRY
};

const ExtractEntrySearchData kEobBaseSpellMps3Provider[] = {
const ExtractEntrySearchData kEobBaseNumSpellsPalProvider[] = {
{ UNK_LANG, kPlatformUnknown, { 0x0000003C, 0x00000012, { { 0x96, 0x7E, 0x17, 0x9E, 0xFD, 0x39, 0xC9, 0x3A, 0xB7, 0x3E, 0x8D, 0xA8, 0xED, 0xA3, 0x07, 0xEB } } } }, // EOB1
{ UNK_LANG, kPlatformUnknown, { 0x00000088, 0x0000002F, { { 0x19, 0x1A, 0x9B, 0x42, 0xA0, 0x67, 0x10, 0x1A, 0xAC, 0x00, 0x0F, 0xF7, 0xBE, 0x04, 0x61, 0x36 } } } }, // EOB2
EXTRACT_END_ENTRY
};

const ExtractEntrySearchData kEobBaseSpellMps4Provider[] = {
const ExtractEntrySearchData kEobBaseNumSpellsMageProvider[] = {
{ UNK_LANG, kPlatformUnknown, { 0x00000037, 0x0000005E, { { 0x61, 0x30, 0x1A, 0x74, 0x9B, 0x4C, 0x8C, 0x83, 0xD5, 0xE6, 0x39, 0x6E, 0xCA, 0x18, 0x16, 0x63 } } } }, // EOB1
{ UNK_LANG, kPlatformUnknown, { 0x00000114, 0x00000102, { { 0x33, 0xEE, 0x32, 0x9C, 0xB2, 0xB3, 0x60, 0x66, 0x91, 0xE0, 0x90, 0x0E, 0x8F, 0xE1, 0xA5, 0x4A } } } }, // EOB2
EXTRACT_END_ENTRY
Expand Down Expand Up @@ -3437,10 +3437,10 @@ const ExtractEntry extractProviders[] = {

{ kEobBaseSpellLevelsMage, kEobBaseSpellLevelsMageProvider },
{ kEobBaseSpellLevelsCleric, kEobBaseSpellLevelsClericProvider },
{ kEobBaseSpellMps1, kEobBaseSpellMps1Provider },
{ kEobBaseSpellMps2, kEobBaseSpellMps2Provider },
{ kEobBaseSpellMps3, kEobBaseSpellMps3Provider },
{ kEobBaseSpellMps4, kEobBaseSpellMps4Provider },
{ kEobBaseNumSpellsCleric, kEobBaseNumSpellsClericProvider },
{ kEobBaseNumSpellsWisAdj, kEobBaseNumSpellsWisAdjProvider },
{ kEobBaseNumSpellsPal, kEobBaseNumSpellsPalProvider },
{ kEobBaseNumSpellsMage, kEobBaseNumSpellsMageProvider },

{ kEobBaseCharGuiStringsHp, kEobBaseCharGuiStringsHpProvider },
{ kEobBaseCharGuiStringsWp1, kEobBaseCharGuiStringsWp1Provider },
Expand Down
30 changes: 15 additions & 15 deletions engines/kyra/chargen.cpp
Expand Up @@ -172,7 +172,7 @@ bool CharacterGenerator::start(EobCharacter *characters, uint8 ***faceShapes) {
_activeBox = 0;

for (bool loop = true; loop && (!_vm->shouldQuit()); ) {
_vm->_gui->highLightBoxFrame(_activeBox + 6);
_vm->_gui->updateBoxFrameHighLight(_activeBox + 6);
_vm->sound()->process();
int inputFlag = _vm->checkInput(_vm->_activeButtons, false, 0);
_vm->removeInputTop();
Expand All @@ -187,7 +187,7 @@ bool CharacterGenerator::start(EobCharacter *characters, uint8 ***faceShapes) {
_vm->sound()->haltTrack();
return false;
}
_vm->_gui->highLightBoxFrame(-1);
_vm->_gui->updateBoxFrameHighLight(-1);
}

if (inputFlag & 0x8000) {
Expand All @@ -201,7 +201,7 @@ bool CharacterGenerator::start(EobCharacter *characters, uint8 ***faceShapes) {
}

if (inputFlag == _vm->_keyMap[Common::KEYCODE_RETURN] || inputFlag == _vm->_keyMap[Common::KEYCODE_SPACE] || inputFlag == _vm->_keyMap[Common::KEYCODE_KP5]) {
_vm->_gui->highLightBoxFrame(-1);
_vm->_gui->updateBoxFrameHighLight(-1);
if (_characters[_activeBox].name[0]) {
int b = _activeBox;
if (viewDeleteCharacter())
Expand Down Expand Up @@ -379,12 +379,12 @@ int CharacterGenerator::viewDeleteCharacter() {
initButtonsFromList(0, 7);
_vm->removeInputTop();

_vm->_gui->highLightBoxFrame(-1);
_vm->_gui->updateBoxFrameHighLight(-1);
printStats(_activeBox, 2);

int res = 0;
for (bool loop = true; loop && _characters[_activeBox].name[0] && !_vm->shouldQuit(); ) {
_vm->_gui->highLightBoxFrame(_activeBox + 6);
_vm->_gui->updateBoxFrameHighLight(_activeBox + 6);
_vm->sound()->process();

int inputFlag = _vm->checkInput(_vm->_activeButtons, false, 0);
Expand Down Expand Up @@ -423,14 +423,14 @@ int CharacterGenerator::viewDeleteCharacter() {
}

if (loop == false)
_vm->_gui->highLightBoxFrame(-1);
_vm->_gui->updateBoxFrameHighLight(-1);

if (!_characters[cbx].name[0])
loop = false;

if (cbx != _activeBox) {
_activeBox = cbx;
_vm->_gui->highLightBoxFrame(-1);
_vm->_gui->updateBoxFrameHighLight(-1);
if (loop)
printStats(_activeBox, 2);
}
Expand Down Expand Up @@ -753,8 +753,8 @@ void CharacterGenerator::statsAndFacesMenu() {
}
}

_vm->_gui->highLightBoxFrame(6 + _activeBox);
_vm->_gui->highLightBoxFrame(-1);
_vm->_gui->updateBoxFrameHighLight(6 + _activeBox);
_vm->_gui->updateBoxFrameHighLight(-1);
}

void CharacterGenerator::faceSelectMenu() {
Expand All @@ -769,7 +769,7 @@ void CharacterGenerator::faceSelectMenu() {
printStats(_activeBox, 4);
toggleSpecialButton(12, 0, 0);
toggleSpecialButton(13, 0, 0);
_vm->_gui->highLightBoxFrame(-1);
_vm->_gui->updateBoxFrameHighLight(-1);

shp = getNextFreeFaceShape(shp, charSex, 1, _chargenSelectedPortraits);

Expand All @@ -793,7 +793,7 @@ void CharacterGenerator::faceSelectMenu() {
in = _vm->checkInput(_vm->_activeButtons, false, 0);
_vm->removeInputTop();

_vm->_gui->highLightBoxFrame(box + 10);
_vm->_gui->updateBoxFrameHighLight(box + 10);

if (in == 0x8002 || in == _vm->_keyMap[Common::KEYCODE_RIGHT]) {
processSpecialButton(13);
Expand All @@ -813,7 +813,7 @@ void CharacterGenerator::faceSelectMenu() {
}
}

_vm->_gui->highLightBoxFrame(-1);
_vm->_gui->updateBoxFrameHighLight(-1);

if (in == 1)
shp = getNextFreeFaceShape(shp - 1, charSex, -1, _chargenSelectedPortraits);
Expand All @@ -824,7 +824,7 @@ void CharacterGenerator::faceSelectMenu() {
}

if (!_vm->shouldQuit()) {
_vm->_gui->highLightBoxFrame(-1);
_vm->_gui->updateBoxFrameHighLight(-1);
updateMagicShapes();

_chargenSelectedPortraits[_activeBox] = sp[res];
Expand Down Expand Up @@ -859,7 +859,7 @@ int CharacterGenerator::getNextFreeFaceShape(int shpIndex, int charSex, int step
}

void CharacterGenerator::processFaceMenuSelection(int index) {
_vm->_gui->highLightBoxFrame(-1);
_vm->_gui->updateBoxFrameHighLight(-1);
if (index <= 48)
_screen->drawShape(0, _characters[_activeBox].faceShape, _chargenBoxX[_activeBox], _chargenBoxY[_activeBox] + 1, 0);
else
Expand Down Expand Up @@ -1403,7 +1403,7 @@ const EobRect8 CharacterGenerator::_chargenButtonBodyCoords[] = {
{ 0x14, 0x90, 0x0B, 0x10 }
};

const EobRect16 GUI_Eob::_highLightBoxFrames[] = {
const EobRect16 GUI_Eob::_updateBoxFrameHighLights[] = {
{ 0x00B7, 0x0001, 0x00F7, 0x0034 },
{ 0x00FF, 0x0001, 0x013F, 0x0034 },
{ 0x00B7, 0x0035, 0x00F7, 0x0068 },
Expand Down
2 changes: 0 additions & 2 deletions engines/kyra/eobcommon.cpp
Expand Up @@ -344,8 +344,6 @@ Common::Error EobCoreEngine::go() {
_screen->setMouseCursor(0, 0, _itemIconShapes[0]);
_screen->showMouse();

//initPlayBuffers

loadItemDefs();
int action = 0;

Expand Down
10 changes: 6 additions & 4 deletions engines/kyra/eobcommon.h
Expand Up @@ -1006,11 +1006,13 @@ friend class CharacterGenerator;
const char *const *_menuStringsSpellNo;

const uint8 *_spellLevelsMage;
int _spellLevelsMageSize;
const uint8 *_spellLevelsCleric;
const uint8 *_spellLevelsMps1;
const uint8 *_spellLevelsMps2;
const uint8 *_spellLevelsMps3;
const uint8 *_spellLevelsMps4;
int _spellLevelsClericSize;
const uint8 *_numSpellsCleric;
const uint8 *_numSpellsWisAdj;
const uint8 *_numSpellsPal;
const uint8 *_numSpellsMage;

// sound
void snd_playSoundEffect(int id, int volume=0xFF);
Expand Down

0 comments on commit b7f7635

Please sign in to comment.