implemented DOS version 1 pixel clipping
game options WIP3 svn-id: r18293
This commit is contained in:
parent
d4456afa44
commit
99b9fc7070
8 changed files with 670 additions and 102 deletions
|
@ -84,29 +84,41 @@ static PanelButton ITE_OptionPanelButtons[] = {
|
||||||
{kPanelButtonOption, 241,98, 57,17, kTextSave,'s',0, 0,0,0}, //save
|
{kPanelButtonOption, 241,98, 57,17, kTextSave,'s',0, 0,0,0}, //save
|
||||||
{kPanelButtonOptionSaveFiles, 166,20, 112,74, 0,'-',0, 0,0,0}, //savefiles
|
{kPanelButtonOptionSaveFiles, 166,20, 112,74, 0,'-',0, 0,0,0}, //savefiles
|
||||||
|
|
||||||
{kPanelButtonOptionText,114,4, 0,0, kTextGameOptions,'-',0, 0,0,0}, // text: game options
|
{kPanelButtonOptionText,114-8,4, 0,0, kTextGameOptions,'-',0, 0,0,0}, // text: game options
|
||||||
{kPanelButtonOptionText,10,22, 0,0, kTextReadingSpeed,'-',0, 0,0,0}, // text: read speed
|
{kPanelButtonOptionText,10,22, 0,0, kTextReadingSpeed,'-',0, 0,0,0}, // text: read speed
|
||||||
{kPanelButtonOptionText,73,41, 0,0, kTextMusic,'-',0, 0,0,0}, // text: music
|
{kPanelButtonOptionText,73,41, 0,0, kTextMusic,'-',0, 0,0,0}, // text: music
|
||||||
{kPanelButtonOptionText,69,60, 0,0, kTextSound,'-',0, 0,0,0}, // text: noise
|
{kPanelButtonOptionText,69,60, 0,0, kTextSound,'-',0, 0,0,0}, // text: noise
|
||||||
};
|
};
|
||||||
|
|
||||||
static PanelButton ITE_QuitPanelButtons[] = {
|
static PanelButton ITE_QuitPanelButtons[] = {
|
||||||
{kPanelButtonArrow, 0,0, 0,0, 0,'-',0, 0,0,0}, //TODO
|
{kPanelButtonQuit, 11,17, 60,16, kTextQuit,'q',0, 0,0,0},
|
||||||
|
{kPanelButtonQuit, 121,17, 60,16, kTextCancel,'c',0, 0,0,0},
|
||||||
|
{kPanelButtonQuitText, -1,5, 0,0, kTextQuitTheGameQuestion,'-',0, 0,0,0},
|
||||||
};
|
};
|
||||||
|
|
||||||
static PanelButton ITE_LoadPanelButtons[] = {
|
static PanelButton ITE_LoadPanelButtons[] = {
|
||||||
{kPanelButtonArrow, 0,0, 0,0, 0,'-',0, 0,0,0}, //TODO
|
{kPanelButtonLoad, 101,19, 60,16, kTextOK,'o',0, 0,0,0},
|
||||||
|
{kPanelButtonLoadText, -1,5, 0,0, kTextLoadSuccessful,'-',0, 0,0,0},
|
||||||
};
|
};
|
||||||
|
|
||||||
static PanelButton ITE_SavePanelButtons[] = {
|
static PanelButton ITE_SavePanelButtons[] = {
|
||||||
{kPanelButtonArrow, 0,0, 0,0, 0,'-',0, 0,0,0}, //TODO
|
{kPanelButtonSave, 11,37, 60,16, kTextSave,'s',0, 0,0,0},
|
||||||
|
{kPanelButtonSave, 101,37, 60,16, kTextCancel,'c',0, 0,0,0},
|
||||||
|
{kPanelButtonSaveEdit, 26,17, 119,17, 0,'-',0, 0,0,0},
|
||||||
|
{kPanelButtonSaveText, -1,5, 0,0, kTextEnterSaveGameName,'-',0, 0,0,0},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
static PanelButton ITE_ProtectionPanelButtons[] = {
|
||||||
|
{kPanelButtonArrow, 0,0, 0,0, 0,'-',0, 0,0,0}, //TODO
|
||||||
|
};*/
|
||||||
|
|
||||||
static GameDisplayInfo ITE_DisplayInfo = {
|
static GameDisplayInfo ITE_DisplayInfo = {
|
||||||
320, 200, // logical width&height
|
320, 200, // logical width&height
|
||||||
|
|
||||||
35, // scene path y offset
|
35, // scene path y offset
|
||||||
137, // scene height
|
137, // scene height
|
||||||
|
137, // clipped scene height
|
||||||
|
|
||||||
0, // status x offset
|
0, // status x offset
|
||||||
137, // status y offset
|
137, // status y offset
|
||||||
|
@ -115,7 +127,7 @@ static GameDisplayInfo ITE_DisplayInfo = {
|
||||||
2, // status text y offset
|
2, // status text y offset
|
||||||
186, // status text color
|
186, // status text color
|
||||||
15, // status BG color
|
15, // status BG color
|
||||||
308,138, // save reminder pos
|
308,137, // save reminder pos
|
||||||
12,12, // save reminder w & h
|
12,12, // save reminder w & h
|
||||||
6,7, // save reminder sprite numbers
|
6,7, // save reminder sprite numbers
|
||||||
|
|
||||||
|
@ -144,15 +156,19 @@ static GameDisplayInfo ITE_DisplayInfo = {
|
||||||
ARRAYSIZE(ITE_OptionPanelButtons),
|
ARRAYSIZE(ITE_OptionPanelButtons),
|
||||||
ITE_OptionPanelButtons,
|
ITE_OptionPanelButtons,
|
||||||
|
|
||||||
0, 0, // quit panel offsets
|
64,54, // quit panel offsets
|
||||||
|
192,38, // quit panel width & height
|
||||||
ARRAYSIZE(ITE_QuitPanelButtons),
|
ARRAYSIZE(ITE_QuitPanelButtons),
|
||||||
ITE_QuitPanelButtons,
|
ITE_QuitPanelButtons,
|
||||||
|
|
||||||
0, 0, // load panel offsets
|
74, 53, // load panel offsets
|
||||||
|
172, 40, // load panel width & height
|
||||||
ARRAYSIZE(ITE_LoadPanelButtons),
|
ARRAYSIZE(ITE_LoadPanelButtons),
|
||||||
ITE_LoadPanelButtons,
|
ITE_LoadPanelButtons,
|
||||||
|
|
||||||
0, 0, // save panel offsets
|
2, // save edit index
|
||||||
|
74, 44, // save panel offsets
|
||||||
|
172, 58, // save panel width & height
|
||||||
ARRAYSIZE(ITE_SavePanelButtons),
|
ARRAYSIZE(ITE_SavePanelButtons),
|
||||||
ITE_SavePanelButtons
|
ITE_SavePanelButtons
|
||||||
};
|
};
|
||||||
|
@ -302,6 +318,7 @@ static GameDisplayInfo IHNM_DisplayInfo = { //TODO: fill it all
|
||||||
|
|
||||||
0, // scene path y offset
|
0, // scene path y offset
|
||||||
304, // scene height
|
304, // scene height
|
||||||
|
304, // clipped scene height
|
||||||
|
|
||||||
0, // status x offset
|
0, // status x offset
|
||||||
304, // status y offset
|
304, // status y offset
|
||||||
|
@ -341,14 +358,18 @@ static GameDisplayInfo IHNM_DisplayInfo = { //TODO: fill it all
|
||||||
IHNM_OptionPanelButtons,
|
IHNM_OptionPanelButtons,
|
||||||
|
|
||||||
0,0, // quit panel offsets
|
0,0, // quit panel offsets
|
||||||
|
0,0, // quit panel width & height
|
||||||
ARRAYSIZE(IHNM_QuitPanelButtons),
|
ARRAYSIZE(IHNM_QuitPanelButtons),
|
||||||
IHNM_QuitPanelButtons,
|
IHNM_QuitPanelButtons,
|
||||||
|
|
||||||
0, 0, // load panel offsets
|
0, 0, // load panel offsets
|
||||||
|
0, 0, // load panel width & height
|
||||||
ARRAYSIZE(IHNM_LoadPanelButtons),
|
ARRAYSIZE(IHNM_LoadPanelButtons),
|
||||||
IHNM_LoadPanelButtons,
|
IHNM_LoadPanelButtons,
|
||||||
|
|
||||||
|
-1, // save edit index
|
||||||
0, 0, // save panel offsets
|
0, 0, // save panel offsets
|
||||||
|
0, 0, // save panel width & height
|
||||||
ARRAYSIZE(IHNM_SavePanelButtons),
|
ARRAYSIZE(IHNM_SavePanelButtons),
|
||||||
IHNM_SavePanelButtons
|
IHNM_SavePanelButtons
|
||||||
};
|
};
|
||||||
|
@ -1005,6 +1026,15 @@ int SagaEngine::loadGame(int gameNumber) {
|
||||||
_gameFileContexts[i] = loadContext;
|
_gameFileContexts[i] = loadContext;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (_vm->getGameId() == GID_ITE_DISK_G) {
|
||||||
|
//DOS ITE version clips scene height by 1
|
||||||
|
_gameDisplayInfo.clippedSceneHeight--;
|
||||||
|
_gameDisplayInfo.statusYOffset--;
|
||||||
|
_gameDisplayInfo.mainPanelYOffset--;
|
||||||
|
_gameDisplayInfo.conversePanelYOffset--;
|
||||||
|
}
|
||||||
|
|
||||||
return SUCCESS;
|
return SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -57,18 +57,18 @@ int SagaEngine::processInput() {
|
||||||
_interface->draw();
|
_interface->draw();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 269:
|
/* case 269:
|
||||||
case 270:
|
case 270:
|
||||||
case 273:
|
case 273:
|
||||||
case 274:
|
case 274:
|
||||||
case 275:
|
case 275:
|
||||||
case 276:
|
case 276:
|
||||||
if (_vm->_scene->getFlags() & kSceneFlagISO) {
|
if (_vm->_scene->getFlags() & kSceneFlagISO) {
|
||||||
/* _vm->_isoMap->_viewDiff += (event.kbd.keycode == 270) - (event.kbd.keycode == 269);
|
_vm->_isoMap->_viewDiff += (event.kbd.keycode == 270) - (event.kbd.keycode == 269);
|
||||||
_vm->_isoMap->_viewScroll.y += (_vm->_isoMap->_viewDiff * (event.kbd.keycode == 274) - _vm->_isoMap->_viewDiff * (event.kbd.keycode == 273));
|
_vm->_isoMap->_viewScroll.y += (_vm->_isoMap->_viewDiff * (event.kbd.keycode == 274) - _vm->_isoMap->_viewDiff * (event.kbd.keycode == 273));
|
||||||
_vm->_isoMap->_viewScroll.x += (_vm->_isoMap->_viewDiff * (event.kbd.keycode == 275) - _vm->_isoMap->_viewDiff * (event.kbd.keycode == 276));*/
|
_vm->_isoMap->_viewScroll.x += (_vm->_isoMap->_viewDiff * (event.kbd.keycode == 275) - _vm->_isoMap->_viewDiff * (event.kbd.keycode == 276));
|
||||||
}
|
}
|
||||||
break;
|
break;*/
|
||||||
case 282: // F1
|
case 282: // F1
|
||||||
_render->toggleFlag(RF_SHOW_FPS);
|
_render->toggleFlag(RF_SHOW_FPS);
|
||||||
_vm->_actor->_handleActionDiv = (_vm->_actor->_handleActionDiv == 15) ? 50 : 15;
|
_vm->_actor->_handleActionDiv = (_vm->_actor->_handleActionDiv == 15) ? 50 : 15;
|
||||||
|
|
|
@ -151,6 +151,31 @@ Interface::Interface(SagaEngine *vm) : _vm(vm), _initialized(false) {
|
||||||
_optionSaveFileSlider = _optionPanel.getButton(_vm->getDisplayInfo().optionSaveFileSliderIndex);
|
_optionSaveFileSlider = _optionPanel.getButton(_vm->getDisplayInfo().optionSaveFileSliderIndex);
|
||||||
_optionSaveFilePanel = _optionPanel.getButton(_vm->getDisplayInfo().optionSaveFilePanelIndex);
|
_optionSaveFilePanel = _optionPanel.getButton(_vm->getDisplayInfo().optionSaveFilePanelIndex);
|
||||||
|
|
||||||
|
_quitPanel.x = _vm->getDisplayInfo().quitPanelXOffset;
|
||||||
|
_quitPanel.y = _vm->getDisplayInfo().quitPanelYOffset;
|
||||||
|
_quitPanel.imageWidth = _vm->getDisplayInfo().quitPanelWidth;
|
||||||
|
_quitPanel.imageHeight = _vm->getDisplayInfo().quitPanelHeight;
|
||||||
|
_quitPanel.buttons = _vm->getDisplayInfo().quitPanelButtons;
|
||||||
|
_quitPanel.buttonsCount = _vm->getDisplayInfo().quitPanelButtonsCount;
|
||||||
|
_quitPanel.currentButton = NULL;
|
||||||
|
|
||||||
|
_loadPanel.x = _vm->getDisplayInfo().loadPanelXOffset;
|
||||||
|
_loadPanel.y = _vm->getDisplayInfo().loadPanelYOffset;
|
||||||
|
_loadPanel.imageWidth = _vm->getDisplayInfo().loadPanelWidth;
|
||||||
|
_loadPanel.imageHeight = _vm->getDisplayInfo().loadPanelHeight;
|
||||||
|
_loadPanel.buttons = _vm->getDisplayInfo().loadPanelButtons;
|
||||||
|
_loadPanel.buttonsCount = _vm->getDisplayInfo().loadPanelButtonsCount;
|
||||||
|
_loadPanel.currentButton = NULL;
|
||||||
|
|
||||||
|
_savePanel.x = _vm->getDisplayInfo().savePanelXOffset;
|
||||||
|
_savePanel.y = _vm->getDisplayInfo().savePanelYOffset;
|
||||||
|
_savePanel.imageWidth = _vm->getDisplayInfo().savePanelWidth;
|
||||||
|
_savePanel.imageHeight = _vm->getDisplayInfo().savePanelHeight;
|
||||||
|
_savePanel.buttons = _vm->getDisplayInfo().savePanelButtons;
|
||||||
|
_savePanel.buttonsCount = _vm->getDisplayInfo().savePanelButtonsCount;
|
||||||
|
_saveEdit = _savePanel.getButton(_vm->getDisplayInfo().saveEditIndex);
|
||||||
|
_savePanel.currentButton = NULL;
|
||||||
|
|
||||||
_active = false;
|
_active = false;
|
||||||
_panelMode = _lockedMode = kPanelNull;
|
_panelMode = _lockedMode = kPanelNull;
|
||||||
_savedMode = -1;
|
_savedMode = -1;
|
||||||
|
@ -167,6 +192,7 @@ Interface::Interface(SagaEngine *vm) : _vm(vm), _initialized(false) {
|
||||||
_saveReminderState = 0;
|
_saveReminderState = 0;
|
||||||
|
|
||||||
_optionSaveFileTop = 0;
|
_optionSaveFileTop = 0;
|
||||||
|
_optionSaveFileTitleNumber = 0;
|
||||||
|
|
||||||
_inventory = (uint16 *)calloc(_inventorySize, sizeof(uint16));
|
_inventory = (uint16 *)calloc(_inventorySize, sizeof(uint16));
|
||||||
if (_inventory == NULL) {
|
if (_inventory == NULL) {
|
||||||
|
@ -249,20 +275,37 @@ void Interface::setMode(int mode, bool force) {
|
||||||
else
|
else
|
||||||
_panelMode = mode;
|
_panelMode = mode;
|
||||||
|
|
||||||
if (_panelMode == kPanelMain) {
|
switch(_panelMode) {
|
||||||
|
case(kPanelMain):
|
||||||
_mainPanel.currentButton = NULL;
|
_mainPanel.currentButton = NULL;
|
||||||
} else {
|
break;
|
||||||
if (_panelMode == kPanelConverse) {
|
case(kPanelConverse):
|
||||||
_conversePanel.currentButton = NULL;
|
_conversePanel.currentButton = NULL;
|
||||||
converseDisplayText();
|
converseDisplayText();
|
||||||
} else {
|
break;
|
||||||
if (_panelMode == kPanelOption) {
|
case(kPanelOption):
|
||||||
_optionPanel.currentButton = NULL;
|
_optionPanel.currentButton = NULL;
|
||||||
_vm->fillSaveList();
|
_vm->fillSaveList();
|
||||||
calcOptionSaveSlider();
|
calcOptionSaveSlider();
|
||||||
_optionSaveFileTitleNumber = 0;
|
if (_optionSaveFileTitleNumber >= _vm->getDisplayInfo().optionSaveFileVisible) {
|
||||||
}
|
_optionSaveFileTitleNumber = _vm->getDisplayInfo().optionSaveFileVisible - 1;
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
|
case(kPanelLoad):
|
||||||
|
_loadPanel.currentButton = NULL;
|
||||||
|
break;
|
||||||
|
case(kPanelQuit):
|
||||||
|
_quitPanel.currentButton = NULL;
|
||||||
|
break;
|
||||||
|
case(kPanelSave):
|
||||||
|
_savePanel.currentButton = NULL;
|
||||||
|
_textInputMaxWidth = _saveEdit->width - 9;
|
||||||
|
_textInput = true;
|
||||||
|
_textInputString[0] = 0;
|
||||||
|
strcpy(_textInputString, "test1");
|
||||||
|
_textInputStringLength = strlen(_textInputString);
|
||||||
|
_textInputPos = _textInputStringLength + 1;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
draw();
|
draw();
|
||||||
|
@ -297,6 +340,49 @@ bool Interface::processAscii(uint16 ascii) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case kPanelSave:
|
||||||
|
if (_textInput) {
|
||||||
|
processTextInput(ascii);
|
||||||
|
} else {
|
||||||
|
if (ascii == 27) {// Esc
|
||||||
|
ascii = 'c'; //cancel
|
||||||
|
}
|
||||||
|
for (i = 0; i < _savePanel.buttonsCount; i++) {
|
||||||
|
panelButton = &_savePanel.buttons[i];
|
||||||
|
if(panelButton->type == kPanelButtonSave) {
|
||||||
|
if (panelButton->ascii == ascii) {
|
||||||
|
setSave(panelButton);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case kPanelQuit:
|
||||||
|
if (ascii == 27) {// Esc
|
||||||
|
ascii = 'c'; //cancel
|
||||||
|
}
|
||||||
|
for (i = 0; i < _quitPanel.buttonsCount; i++) {
|
||||||
|
panelButton = &_quitPanel.buttons[i];
|
||||||
|
if(panelButton->type == kPanelButtonQuit) {
|
||||||
|
if (panelButton->ascii == ascii) {
|
||||||
|
setQuit(panelButton);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case kPanelLoad:
|
||||||
|
for (i = 0; i < _loadPanel.buttonsCount; i++) {
|
||||||
|
panelButton = &_loadPanel.buttons[i];
|
||||||
|
if(panelButton->type == kPanelButtonLoad) {
|
||||||
|
if (panelButton->ascii == ascii) {
|
||||||
|
setLoad(panelButton);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
case kPanelMain:
|
case kPanelMain:
|
||||||
for (i = 0; i < _mainPanel.buttonsCount; i++) {
|
for (i = 0; i < _mainPanel.buttonsCount; i++) {
|
||||||
panelButton = &_mainPanel.buttons[i];
|
panelButton = &_mainPanel.buttons[i];
|
||||||
|
@ -412,8 +498,8 @@ void Interface::draw() {
|
||||||
|
|
||||||
if (_panelMode == kPanelMain) {
|
if (_panelMode == kPanelMain) {
|
||||||
|
|
||||||
origin.x = 0;
|
origin.x = _mainPanel.x;
|
||||||
origin.y = _vm->getDisplayHeight() - _mainPanel.imageHeight;
|
origin.y = _mainPanel.y;
|
||||||
|
|
||||||
bufToSurface(backBuffer, _mainPanel.image, _mainPanel.imageWidth, _mainPanel.imageHeight, NULL, &origin);
|
bufToSurface(backBuffer, _mainPanel.image, _mainPanel.imageWidth, _mainPanel.imageHeight, NULL, &origin);
|
||||||
for (i = 0; i < kVerbTypesMax; i++) {
|
for (i = 0; i < kVerbTypesMax; i++) {
|
||||||
|
@ -424,8 +510,8 @@ void Interface::draw() {
|
||||||
} else {
|
} else {
|
||||||
if (_panelMode == kPanelConverse) {
|
if (_panelMode == kPanelConverse) {
|
||||||
|
|
||||||
origin.x = 0;
|
origin.x = _conversePanel.x;
|
||||||
origin.y = _vm->getDisplayHeight() - _mainPanel.imageHeight;
|
origin.y = _conversePanel.y;
|
||||||
|
|
||||||
bufToSurface(backBuffer, _conversePanel.image, _conversePanel.imageWidth,
|
bufToSurface(backBuffer, _conversePanel.image, _conversePanel.imageWidth,
|
||||||
_conversePanel.imageHeight, NULL, &origin);
|
_conversePanel.imageHeight, NULL, &origin);
|
||||||
|
@ -495,6 +581,22 @@ void Interface::calcOptionSaveSlider() {
|
||||||
_optionSaveRectBottom.right--;
|
_optionSaveRectBottom.right--;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Interface::drawPanelText(SURFACE *ds, InterfacePanel *panel, PanelButton *panelButton) {
|
||||||
|
const char *text;
|
||||||
|
int textWidth;
|
||||||
|
Rect rect;
|
||||||
|
|
||||||
|
text = _vm->getTextString(panelButton->id);
|
||||||
|
panel->calcPanelButtonRect(panelButton, rect);
|
||||||
|
if (panelButton->xOffset < 0) {
|
||||||
|
textWidth = _vm->_font->getStringWidth(MEDIUM_FONT_ID, text, 0, 0);
|
||||||
|
rect.left += 2 + (panel->imageWidth - 1 - textWidth) / 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
_vm->_font->draw(MEDIUM_FONT_ID, ds, text, 0, rect.left , rect.top + 1,
|
||||||
|
_vm->getDisplayInfo().verbTextColor, _vm->getDisplayInfo().verbTextShadowColor, FONT_SHADOW);
|
||||||
|
}
|
||||||
|
|
||||||
void Interface::drawOption() {
|
void Interface::drawOption() {
|
||||||
const char *text;
|
const char *text;
|
||||||
SURFACE *backBuffer;
|
SURFACE *backBuffer;
|
||||||
|
@ -517,13 +619,10 @@ void Interface::drawOption() {
|
||||||
for (i = 0; i < _optionPanel.buttonsCount; i++) {
|
for (i = 0; i < _optionPanel.buttonsCount; i++) {
|
||||||
panelButton = &_optionPanel.buttons[i];
|
panelButton = &_optionPanel.buttons[i];
|
||||||
if(panelButton->type == kPanelButtonOption) {
|
if(panelButton->type == kPanelButtonOption) {
|
||||||
drawOptionPanelButtonText(backBuffer, panelButton);
|
drawPanelButtonText(backBuffer, &_optionPanel, panelButton);
|
||||||
}
|
}
|
||||||
if (panelButton->type == kPanelButtonOptionText) {
|
if (panelButton->type == kPanelButtonOptionText) {
|
||||||
text = _vm->getTextString(panelButton->id);
|
drawPanelText(backBuffer, &_optionPanel, panelButton);
|
||||||
_optionPanel.calcPanelButtonRect(panelButton, rect);
|
|
||||||
_vm->_font->draw(MEDIUM_FONT_ID, backBuffer, text, 0, rect.left , rect.top,
|
|
||||||
_vm->getDisplayInfo().verbTextColor, _vm->getDisplayInfo().verbTextShadowColor, FONT_SHADOW); //TODO: create Option button colors constant
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -531,13 +630,14 @@ void Interface::drawOption() {
|
||||||
drawRect(backBuffer, _optionSaveRectTop, kITEColorDarkGrey);
|
drawRect(backBuffer, _optionSaveRectTop, kITEColorDarkGrey);
|
||||||
}
|
}
|
||||||
|
|
||||||
drawButtonBox(backBuffer, _optionSaveRectSlider, true, _optionSaveFileSlider->state > 0);
|
drawButtonBox(backBuffer, _optionSaveRectSlider, kSlider, _optionSaveFileSlider->state > 0);
|
||||||
|
|
||||||
if(_optionSaveRectBottom.height() > 0) {
|
if(_optionSaveRectBottom.height() > 0) {
|
||||||
drawRect(backBuffer, _optionSaveRectBottom, kITEColorDarkGrey);
|
drawRect(backBuffer, _optionSaveRectBottom, kITEColorDarkGrey);
|
||||||
}
|
}
|
||||||
|
|
||||||
_optionPanel.calcPanelButtonRect(_optionSaveFilePanel, rect);
|
_optionPanel.calcPanelButtonRect(_optionSaveFilePanel, rect);
|
||||||
|
rect.top++;
|
||||||
rect2 = rect;
|
rect2 = rect;
|
||||||
fontHeight = _vm->_font->getHeight(SMALL_FONT_ID);
|
fontHeight = _vm->_font->getHeight(SMALL_FONT_ID);
|
||||||
for (j = 0; j < _vm->getDisplayInfo().optionSaveFileVisible; j++) {
|
for (j = 0; j < _vm->getDisplayInfo().optionSaveFileVisible; j++) {
|
||||||
|
@ -560,12 +660,296 @@ void Interface::drawOption() {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Interface::handleOptionUpdate(const Point& mousePoint) {
|
void Interface::drawQuit() {
|
||||||
|
SURFACE *backBuffer;
|
||||||
|
Rect rect;
|
||||||
int i;
|
int i;
|
||||||
|
PanelButton *panelButton;
|
||||||
|
|
||||||
|
backBuffer = _vm->_gfx->getBackBuffer();
|
||||||
|
|
||||||
|
_quitPanel.getRect(rect);
|
||||||
|
drawButtonBox(backBuffer, rect, kButton, false);
|
||||||
|
for (i = 0; i < _quitPanel.buttonsCount; i++) {
|
||||||
|
panelButton = &_quitPanel.buttons[i];
|
||||||
|
if(panelButton->type == kPanelButtonQuit) {
|
||||||
|
drawPanelButtonText(backBuffer, &_quitPanel, panelButton);
|
||||||
|
}
|
||||||
|
if(panelButton->type == kPanelButtonQuitText) {
|
||||||
|
drawPanelText(backBuffer, &_quitPanel, panelButton);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Interface::handleQuitUpdate(const Point& mousePoint) {
|
||||||
|
Rect rect;
|
||||||
|
bool releasedButton;
|
||||||
|
|
||||||
|
_quitPanel.currentButton = quitHitTest(mousePoint);
|
||||||
|
releasedButton = (_quitPanel.currentButton != NULL) && (_quitPanel.currentButton->state > 0) && (!_vm->mouseButtonPressed());
|
||||||
|
|
||||||
|
if (!_vm->mouseButtonPressed()) {
|
||||||
|
_quitPanel.zeroAllButtonState();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (releasedButton) {
|
||||||
|
setQuit(_quitPanel.currentButton);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Interface::handleQuitClick(const Point& mousePoint) {
|
||||||
|
_quitPanel.currentButton = quitHitTest(mousePoint);
|
||||||
|
|
||||||
|
_quitPanel.zeroAllButtonState();
|
||||||
|
|
||||||
|
if (_quitPanel.currentButton == NULL) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
_quitPanel.currentButton->state = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Interface::setQuit(PanelButton *panelButton) {
|
||||||
|
_quitPanel.currentButton = NULL;
|
||||||
|
switch (panelButton->id) {
|
||||||
|
case kTextCancel:
|
||||||
|
setMode(kPanelOption);
|
||||||
|
break;
|
||||||
|
case kTextQuit:
|
||||||
|
_vm->shutDown();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Interface::drawLoad() {
|
||||||
|
SURFACE *backBuffer;
|
||||||
|
Rect rect;
|
||||||
|
int i;
|
||||||
|
PanelButton *panelButton;
|
||||||
|
|
||||||
|
backBuffer = _vm->_gfx->getBackBuffer();
|
||||||
|
|
||||||
|
_loadPanel.getRect(rect);
|
||||||
|
drawButtonBox(backBuffer, rect, kButton, false);
|
||||||
|
for (i = 0; i < _loadPanel.buttonsCount; i++) {
|
||||||
|
panelButton = &_loadPanel.buttons[i];
|
||||||
|
if(panelButton->type == kPanelButtonLoad) {
|
||||||
|
drawPanelButtonText(backBuffer, &_loadPanel, panelButton);
|
||||||
|
}
|
||||||
|
if(panelButton->type == kPanelButtonLoadText) {
|
||||||
|
drawPanelText(backBuffer, &_loadPanel, panelButton);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Interface::handleLoadUpdate(const Point& mousePoint) {
|
||||||
|
Rect rect;
|
||||||
|
bool releasedButton;
|
||||||
|
|
||||||
|
_loadPanel.currentButton = loadHitTest(mousePoint);
|
||||||
|
releasedButton = (_loadPanel.currentButton != NULL) && (_loadPanel.currentButton->state > 0) && (!_vm->mouseButtonPressed());
|
||||||
|
|
||||||
|
if (!_vm->mouseButtonPressed()) {
|
||||||
|
_loadPanel.zeroAllButtonState();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (releasedButton) {
|
||||||
|
setLoad(_loadPanel.currentButton);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Interface::handleLoadClick(const Point& mousePoint) {
|
||||||
|
_loadPanel.currentButton = loadHitTest(mousePoint);
|
||||||
|
|
||||||
|
_loadPanel.zeroAllButtonState();
|
||||||
|
|
||||||
|
if (_loadPanel.currentButton == NULL) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
_loadPanel.currentButton->state = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Interface::setLoad(PanelButton *panelButton) {
|
||||||
|
_loadPanel.currentButton = NULL;
|
||||||
|
switch (panelButton->id) {
|
||||||
|
case kTextOK:
|
||||||
|
setMode(kPanelMain);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Interface::processTextInput(uint16 ascii) {
|
||||||
|
char ch[2];
|
||||||
|
char tempString[SAVE_TITLE_SIZE];
|
||||||
|
uint tempWidth;
|
||||||
|
memset(tempString, 0, SAVE_TITLE_SIZE);
|
||||||
|
ch[1] = 0;
|
||||||
|
|
||||||
|
switch (ascii) {
|
||||||
|
case(8): // backspace
|
||||||
|
if (_textInputPos <= 1) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
_textInputPos--;
|
||||||
|
case(127): // del
|
||||||
|
if (_textInputPos <= _textInputStringLength) {
|
||||||
|
if (_textInputPos != 1) {
|
||||||
|
strncpy(tempString, _textInputString, _textInputPos - 1);
|
||||||
|
}
|
||||||
|
if (_textInputPos != _textInputStringLength) {
|
||||||
|
strncat(tempString, &_textInputString[_textInputPos], _textInputStringLength - _textInputPos);
|
||||||
|
}
|
||||||
|
strcpy(_textInputString, tempString);
|
||||||
|
_textInputStringLength = strlen(_textInputString);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case(276): // left
|
||||||
|
if (_textInputPos > 1) {
|
||||||
|
_textInputPos--;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case(275): // right
|
||||||
|
if (_textInputPos <= _textInputStringLength) {
|
||||||
|
_textInputPos++;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
if (((ascii >= 'a') && (ascii <='z')) ||
|
||||||
|
((ascii >= '0') && (ascii <='9')) ||
|
||||||
|
((ascii >= 'A') && (ascii <='Z'))) {
|
||||||
|
if (_textInputStringLength < SAVE_TITLE_SIZE - 1) {
|
||||||
|
ch[0] = ascii;
|
||||||
|
tempWidth = _vm->_font->getStringWidth(SMALL_FONT_ID, ch, 0, 0);
|
||||||
|
tempWidth += _vm->_font->getStringWidth(SMALL_FONT_ID, _textInputString, 0, 0);
|
||||||
|
if (tempWidth > _textInputMaxWidth) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (_textInputPos != 1) {
|
||||||
|
strncpy(tempString, _textInputString, _textInputPos - 1);
|
||||||
|
strcat(tempString, ch);
|
||||||
|
}
|
||||||
|
if ((_textInputStringLength == 0) || (_textInputPos == 1)) {
|
||||||
|
strcpy(tempString, ch);
|
||||||
|
}
|
||||||
|
if ((_textInputStringLength != 0) && (_textInputPos != _textInputStringLength)) {
|
||||||
|
strncat(tempString, &_textInputString[_textInputPos - 1], _textInputStringLength - _textInputPos + 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
strcpy(_textInputString, tempString);
|
||||||
|
_textInputStringLength = strlen(_textInputString);
|
||||||
|
_textInputPos++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Interface::drawTextInput(SURFACE *ds, InterfacePanel *panel, PanelButton *panelButton) {
|
||||||
|
Rect rect;
|
||||||
|
Point drawPoint;
|
||||||
|
char ch[2];
|
||||||
|
int fgColor;
|
||||||
|
uint i;
|
||||||
|
|
||||||
|
ch[1] = 0;
|
||||||
|
panel->calcPanelButtonRect(panelButton, rect);
|
||||||
|
drawButtonBox(ds, rect, kEdit, _textInput);
|
||||||
|
rect.left += 4;
|
||||||
|
rect.top += 4;
|
||||||
|
rect.setHeight(_vm->_font->getHeight(SMALL_FONT_ID));
|
||||||
|
|
||||||
|
i = 0;
|
||||||
|
while ((ch[0] = _textInputString[i++]) != 0) {
|
||||||
|
rect.setWidth(_vm->_font->getStringWidth(SMALL_FONT_ID, ch, 0, 0));
|
||||||
|
if ((i == _textInputPos) && _textInput) {
|
||||||
|
fgColor = kITEColorBlack;
|
||||||
|
ds->fillRect(rect, kITEColorWhite);
|
||||||
|
} else {
|
||||||
|
fgColor = kITEColorWhite;
|
||||||
|
}
|
||||||
|
_vm->_font->draw(SMALL_FONT_ID, ds, ch, 0, rect.left,
|
||||||
|
rect.top + 1, fgColor, 0, 0);
|
||||||
|
rect.left += rect.width();
|
||||||
|
}
|
||||||
|
if (_textInput && (_textInputPos >= i)) {
|
||||||
|
ch[0] = ' ';
|
||||||
|
rect.setWidth(_vm->_font->getStringWidth(SMALL_FONT_ID, ch, 0, 0));
|
||||||
|
ds->fillRect(rect, kITEColorWhite);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Interface::drawSave() {
|
||||||
|
SURFACE *backBuffer;
|
||||||
|
Rect rect;
|
||||||
|
int i;
|
||||||
|
PanelButton *panelButton;
|
||||||
|
|
||||||
|
backBuffer = _vm->_gfx->getBackBuffer();
|
||||||
|
|
||||||
|
_savePanel.getRect(rect);
|
||||||
|
drawButtonBox(backBuffer, rect, kButton, false);
|
||||||
|
for (i = 0; i < _savePanel.buttonsCount; i++) {
|
||||||
|
panelButton = &_savePanel.buttons[i];
|
||||||
|
if(panelButton->type == kPanelButtonSave) {
|
||||||
|
drawPanelButtonText(backBuffer, &_savePanel, panelButton);
|
||||||
|
}
|
||||||
|
if(panelButton->type == kPanelButtonSaveText) {
|
||||||
|
drawPanelText(backBuffer, &_savePanel, panelButton);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
drawTextInput(backBuffer, &_savePanel, _saveEdit);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Interface::handleSaveUpdate(const Point& mousePoint) {
|
||||||
|
Rect rect;
|
||||||
|
bool releasedButton;
|
||||||
|
|
||||||
|
_savePanel.currentButton = saveHitTest(mousePoint);
|
||||||
|
releasedButton = (_savePanel.currentButton != NULL) &&
|
||||||
|
(_savePanel.currentButton->state > 0) && (!_vm->mouseButtonPressed());
|
||||||
|
|
||||||
|
if (!_vm->mouseButtonPressed()) {
|
||||||
|
_savePanel.zeroAllButtonState();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (releasedButton) {
|
||||||
|
setSave(_savePanel.currentButton);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Interface::handleSaveClick(const Point& mousePoint) {
|
||||||
|
_savePanel.currentButton = saveHitTest(mousePoint);
|
||||||
|
|
||||||
|
_savePanel.zeroAllButtonState();
|
||||||
|
|
||||||
|
if (_savePanel.currentButton == NULL) {
|
||||||
|
_textInput = false;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
_savePanel.currentButton->state = 1;
|
||||||
|
if (_savePanel.currentButton == _saveEdit) {
|
||||||
|
_textInput = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Interface::setSave(PanelButton *panelButton) {
|
||||||
|
/* _savePanel.currentButton = NULL;
|
||||||
|
switch (panelButton->id) {
|
||||||
|
case kTextOK:
|
||||||
|
setMode(kPanelMain);
|
||||||
|
break;
|
||||||
|
}*/
|
||||||
|
}
|
||||||
|
|
||||||
|
void Interface::handleOptionUpdate(const Point& mousePoint) {
|
||||||
int16 mouseY;
|
int16 mouseY;
|
||||||
Rect rect;
|
Rect rect;
|
||||||
int totalFiles = _vm->getSaveFileNameCount();
|
int totalFiles = _vm->getSaveFileNameCount();
|
||||||
int visibleFiles = _vm->getDisplayInfo().optionSaveFileVisible;
|
int visibleFiles = _vm->getDisplayInfo().optionSaveFileVisible;
|
||||||
|
bool releasedButton;
|
||||||
|
|
||||||
if (_vm->mouseButtonPressed()) {
|
if (_vm->mouseButtonPressed()) {
|
||||||
if (_optionSaveFileSlider->state > 0) {
|
if (_optionSaveFileSlider->state > 0) {
|
||||||
|
@ -586,29 +970,23 @@ void Interface::handleOptionUpdate(const Point& mousePoint) {
|
||||||
}
|
}
|
||||||
|
|
||||||
_optionPanel.currentButton = optionHitTest(mousePoint);
|
_optionPanel.currentButton = optionHitTest(mousePoint);
|
||||||
bool releasedButton = (_optionPanel.currentButton != NULL) && (_optionPanel.currentButton->state > 0) && (!_vm->mouseButtonPressed());
|
releasedButton = (_optionPanel.currentButton != NULL) && (_optionPanel.currentButton->state > 0) && (!_vm->mouseButtonPressed());
|
||||||
|
|
||||||
if (!_vm->mouseButtonPressed()) {
|
if (!_vm->mouseButtonPressed()) {
|
||||||
for (i = 0; i < _optionPanel.buttonsCount; i++) {
|
_optionPanel.zeroAllButtonState();
|
||||||
_optionPanel.buttons[i].state = 0;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (releasedButton) {
|
if (releasedButton) {
|
||||||
setOption(_optionPanel.currentButton);
|
setOption(_optionPanel.currentButton);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void Interface::handleOptionClick(const Point& mousePoint) {
|
void Interface::handleOptionClick(const Point& mousePoint) {
|
||||||
int i;
|
|
||||||
Rect rect;
|
Rect rect;
|
||||||
_optionPanel.currentButton = optionHitTest(mousePoint);
|
_optionPanel.currentButton = optionHitTest(mousePoint);
|
||||||
|
|
||||||
for (i = 0; i < _optionPanel.buttonsCount; i++) {
|
_optionPanel.zeroAllButtonState();
|
||||||
_optionPanel.buttons[i].state = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (_optionPanel.currentButton == NULL) {
|
if (_optionPanel.currentButton == NULL) {
|
||||||
return;
|
return;
|
||||||
|
@ -634,9 +1012,7 @@ void Interface::handleOptionClick(const Point& mousePoint) {
|
||||||
if (_optionPanel.currentButton == _optionSaveFilePanel) {
|
if (_optionPanel.currentButton == _optionSaveFilePanel) {
|
||||||
_optionPanel.calcPanelButtonRect(_optionSaveFilePanel, rect);
|
_optionPanel.calcPanelButtonRect(_optionSaveFilePanel, rect);
|
||||||
_optionSaveFileTitleNumber = (mousePoint.y - rect.top) / (_vm->_font->getHeight(SMALL_FONT_ID) + 1);
|
_optionSaveFileTitleNumber = (mousePoint.y - rect.top) / (_vm->_font->getHeight(SMALL_FONT_ID) + 1);
|
||||||
if (_optionSaveFileTitleNumber < 0) {
|
|
||||||
_optionSaveFileTitleNumber = 0;
|
|
||||||
}
|
|
||||||
if (_optionSaveFileTitleNumber >= _vm->getDisplayInfo().optionSaveFileVisible) {
|
if (_optionSaveFileTitleNumber >= _vm->getDisplayInfo().optionSaveFileVisible) {
|
||||||
_optionSaveFileTitleNumber = _vm->getDisplayInfo().optionSaveFileVisible - 1;
|
_optionSaveFileTitleNumber = _vm->getDisplayInfo().optionSaveFileVisible - 1;
|
||||||
}
|
}
|
||||||
|
@ -652,12 +1028,20 @@ void Interface::handleOptionClick(const Point& mousePoint) {
|
||||||
|
|
||||||
|
|
||||||
void Interface::setOption(PanelButton *panelButton) {
|
void Interface::setOption(PanelButton *panelButton) {
|
||||||
|
_optionPanel.currentButton = NULL;
|
||||||
switch (panelButton->id) {
|
switch (panelButton->id) {
|
||||||
case kTextContinuePlaying:
|
case kTextContinuePlaying:
|
||||||
setMode(kPanelMain);
|
setMode(kPanelMain);
|
||||||
break;
|
break;
|
||||||
case kTextQuitGame:
|
case kTextQuitGame:
|
||||||
_vm->shutDown();
|
setMode(kPanelQuit);
|
||||||
|
break;
|
||||||
|
case kTextLoad:
|
||||||
|
//todo: load
|
||||||
|
setMode(kPanelLoad);
|
||||||
|
break;
|
||||||
|
case kTextSave:
|
||||||
|
setMode(kPanelSave);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -719,6 +1103,41 @@ void Interface::update(const Point& mousePoint, int updateFlag) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (_panelMode == kPanelQuit) {
|
||||||
|
if (updateFlag & UPDATE_MOUSEMOVE) {
|
||||||
|
|
||||||
|
handleQuitUpdate(mousePoint);
|
||||||
|
|
||||||
|
} else {
|
||||||
|
if (updateFlag & UPDATE_MOUSECLICK) {
|
||||||
|
handleQuitClick(mousePoint);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_panelMode == kPanelLoad) {
|
||||||
|
if (updateFlag & UPDATE_MOUSEMOVE) {
|
||||||
|
|
||||||
|
handleLoadUpdate(mousePoint);
|
||||||
|
|
||||||
|
} else {
|
||||||
|
if (updateFlag & UPDATE_MOUSECLICK) {
|
||||||
|
handleLoadClick(mousePoint);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_panelMode == kPanelSave) {
|
||||||
|
if (updateFlag & UPDATE_MOUSEMOVE) {
|
||||||
|
|
||||||
|
handleSaveUpdate(mousePoint);
|
||||||
|
|
||||||
|
} else {
|
||||||
|
if (updateFlag & UPDATE_MOUSECLICK) {
|
||||||
|
handleSaveClick(mousePoint);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
_lastMousePoint = mousePoint;
|
_lastMousePoint = mousePoint;
|
||||||
}
|
}
|
||||||
|
@ -755,7 +1174,7 @@ void Interface::drawStatusBar() {
|
||||||
else
|
else
|
||||||
color = _statusOnceColor;
|
color = _statusOnceColor;
|
||||||
|
|
||||||
_vm->_font->draw(SMALL_FONT_ID, backBuffer, _statusText, 0, _vm->getDisplayInfo().statusXOffset + (_vm->getDisplayInfo().statusWidth / 2) - (string_w / 2),
|
_vm->_font->draw(SMALL_FONT_ID, backBuffer, _statusText, 0, _vm->getDisplayInfo().statusXOffset + (_vm->getDisplayInfo().statusWidth - string_w) / 2,
|
||||||
_vm->getDisplayInfo().statusYOffset + _vm->getDisplayInfo().statusTextY, color, 0, 0);
|
_vm->getDisplayInfo().statusYOffset + _vm->getDisplayInfo().statusTextY, color, 0, 0);
|
||||||
|
|
||||||
if (_saveReminderState > 0) {
|
if (_saveReminderState > 0) {
|
||||||
|
@ -995,14 +1414,15 @@ void Interface::setVerbState(int verb, int state) {
|
||||||
draw();
|
draw();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Interface::drawButtonBox(SURFACE *ds, const Rect& rect, bool slider, bool down) {
|
void Interface::drawButtonBox(SURFACE *ds, const Rect& rect, ButtonKind kind, bool down) {
|
||||||
byte cornerColor;
|
byte cornerColor;
|
||||||
byte frameColor;
|
byte frameColor;
|
||||||
byte fillColor;
|
byte fillColor;
|
||||||
byte solidColor;
|
byte solidColor;
|
||||||
byte odl, our, idl, iur;
|
byte odl, our, idl, iur;
|
||||||
|
|
||||||
if (slider) {
|
switch (kind ) {
|
||||||
|
case( kSlider):
|
||||||
cornerColor = 0x8b;
|
cornerColor = 0x8b;
|
||||||
frameColor = kITEColorBlack;
|
frameColor = kITEColorBlack;
|
||||||
fillColor = kITEColorLightBlue96;
|
fillColor = kITEColorLightBlue96;
|
||||||
|
@ -1011,7 +1431,22 @@ void Interface::drawButtonBox(SURFACE *ds, const Rect& rect, bool slider, bool d
|
||||||
idl = 0x89;
|
idl = 0x89;
|
||||||
iur = 0x94;
|
iur = 0x94;
|
||||||
solidColor = down ? kITEColorLightBlue94 : kITEColorLightBlue96;
|
solidColor = down ? kITEColorLightBlue94 : kITEColorLightBlue96;
|
||||||
|
break;
|
||||||
|
case( kEdit):
|
||||||
|
cornerColor = kITEColorLightBlue96;
|
||||||
|
frameColor = kITEColorLightBlue96;
|
||||||
|
fillColor = kITEColorLightBlue96;
|
||||||
|
our = kITEColorDarkBlue8a;
|
||||||
|
odl = kITEColorLightBlue94;
|
||||||
|
iur = 0x97;
|
||||||
|
idl = 0x95;
|
||||||
|
if (down) {
|
||||||
|
solidColor = kITEColorBlue;
|
||||||
} else {
|
} else {
|
||||||
|
solidColor = kITEColorDarkGrey0C;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
cornerColor = 0x8b;
|
cornerColor = 0x8b;
|
||||||
frameColor = kITEColorBlack;
|
frameColor = kITEColorBlack;
|
||||||
solidColor = fillColor = kITEColorLightBlue96;
|
solidColor = fillColor = kITEColorLightBlue96;
|
||||||
|
@ -1023,7 +1458,7 @@ void Interface::drawButtonBox(SURFACE *ds, const Rect& rect, bool slider, bool d
|
||||||
SWAP(odl, our);
|
SWAP(odl, our);
|
||||||
SWAP(idl, iur);
|
SWAP(idl, iur);
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
int x = rect.left;
|
int x = rect.left;
|
||||||
|
@ -1073,7 +1508,7 @@ void Interface::drawButtonBox(SURFACE *ds, const Rect& rect, bool slider, bool d
|
||||||
ds->fillRect(fill, solidColor);
|
ds->fillRect(fill, solidColor);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Interface::drawOptionPanelButtonText(SURFACE *ds, PanelButton *panelButton) {
|
void Interface::drawPanelButtonText(SURFACE *ds, InterfacePanel *panel, PanelButton *panelButton) {
|
||||||
const char *text;
|
const char *text;
|
||||||
int textId;
|
int textId;
|
||||||
int textWidth;
|
int textWidth;
|
||||||
|
@ -1099,19 +1534,20 @@ void Interface::drawOptionPanelButtonText(SURFACE *ds, PanelButton *panelButton)
|
||||||
textWidth = _vm->_font->getStringWidth(MEDIUM_FONT_ID, text, 0, 0);
|
textWidth = _vm->_font->getStringWidth(MEDIUM_FONT_ID, text, 0, 0);
|
||||||
textHeight = _vm->_font->getHeight(MEDIUM_FONT_ID);
|
textHeight = _vm->_font->getHeight(MEDIUM_FONT_ID);
|
||||||
|
|
||||||
point.x = _optionPanel.x + panelButton->xOffset + (panelButton->width / 2) - (textWidth / 2);
|
point.x = panel->x + panelButton->xOffset + (panelButton->width / 2) - (textWidth / 2);
|
||||||
point.y = _optionPanel.y + panelButton->yOffset + (panelButton->height / 2) - (textHeight / 2);
|
point.y = panel->y + panelButton->yOffset + (panelButton->height / 2) - (textHeight / 2);
|
||||||
|
|
||||||
if (panelButton == _optionPanel.currentButton) {
|
if (panelButton == panel->currentButton) {
|
||||||
textColor = _vm->getDisplayInfo().verbTextActiveColor; //TODO: create Option button colors constant
|
textColor = _vm->getDisplayInfo().verbTextActiveColor;
|
||||||
} else {
|
} else {
|
||||||
textColor = _vm->getDisplayInfo().verbTextColor; //TODO: create Option button colors constant
|
textColor = _vm->getDisplayInfo().verbTextColor;
|
||||||
}
|
}
|
||||||
|
|
||||||
_optionPanel.calcPanelButtonRect(panelButton, rect);
|
panel->calcPanelButtonRect(panelButton, rect);
|
||||||
drawButtonBox(ds, rect, false, panelButton->state > 0);
|
drawButtonBox(ds, rect, kButton, panelButton->state > 0);
|
||||||
|
|
||||||
_vm->_font->draw(MEDIUM_FONT_ID, ds, text, 0, point.x , point.y, textColor, _vm->getDisplayInfo().verbTextShadowColor, FONT_SHADOW); //TODO: create Option button colors constant
|
_vm->_font->draw(MEDIUM_FONT_ID, ds, text, 0, point.x , point.y,
|
||||||
|
textColor, _vm->getDisplayInfo().verbTextShadowColor, FONT_SHADOW);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Interface::drawPanelButtonArrow(SURFACE *ds, InterfacePanel *panel, PanelButton *panelButton) {
|
void Interface::drawPanelButtonArrow(SURFACE *ds, InterfacePanel *panel, PanelButton *panelButton) {
|
||||||
|
@ -1149,7 +1585,7 @@ void Interface::drawVerbPanelText(SURFACE *ds, PanelButton *panelButton, int tex
|
||||||
|
|
||||||
textWidth = _vm->_font->getStringWidth(SMALL_FONT_ID, text, 0, 0);
|
textWidth = _vm->_font->getStringWidth(SMALL_FONT_ID, text, 0, 0);
|
||||||
|
|
||||||
point.x = _mainPanel.x + panelButton->xOffset + (panelButton->width / 2) - (textWidth / 2);
|
point.x = _mainPanel.x + panelButton->xOffset + 1 + (panelButton->width - 1 - textWidth) / 2;
|
||||||
point.y = _mainPanel.y + panelButton->yOffset + 1;
|
point.y = _mainPanel.y + panelButton->yOffset + 1;
|
||||||
|
|
||||||
_vm->_font->draw(SMALL_FONT_ID, ds, text, 0, point.x , point.y, textColor, textShadowColor, (textShadowColor != 0) ? FONT_SHADOW : 0);
|
_vm->_font->draw(SMALL_FONT_ID, ds, text, 0, point.x , point.y, textColor, textShadowColor, (textShadowColor != 0) ? FONT_SHADOW : 0);
|
||||||
|
|
|
@ -58,7 +58,7 @@ enum PanelModes {
|
||||||
kPanelNull,
|
kPanelNull,
|
||||||
kPanelMain,
|
kPanelMain,
|
||||||
kPanelOption,
|
kPanelOption,
|
||||||
kPanelTextBox,
|
kPanelSave, //ex- kPanelTextBox,
|
||||||
kPanelQuit,
|
kPanelQuit,
|
||||||
kPanelError,
|
kPanelError,
|
||||||
kPanelLoad,
|
kPanelLoad,
|
||||||
|
@ -83,6 +83,16 @@ struct InterfacePanel {
|
||||||
PanelButton *buttons;
|
PanelButton *buttons;
|
||||||
SpriteList sprites;
|
SpriteList sprites;
|
||||||
|
|
||||||
|
InterfacePanel() {
|
||||||
|
x = y = 0;
|
||||||
|
image = NULL;
|
||||||
|
imageLength = 0;
|
||||||
|
imageWidth = imageHeight = 0;
|
||||||
|
currentButton = NULL;
|
||||||
|
buttonsCount = 0;
|
||||||
|
buttons = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
PanelButton *getButton(int index) {
|
PanelButton *getButton(int index) {
|
||||||
if ((index >= 0) && (index < buttonsCount)) {
|
if ((index >= 0) && (index < buttonsCount)) {
|
||||||
return &buttons[index];
|
return &buttons[index];
|
||||||
|
@ -90,6 +100,13 @@ struct InterfacePanel {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void getRect(Rect &rect) {
|
||||||
|
rect.left = x;
|
||||||
|
rect.right = rect.left + imageWidth;
|
||||||
|
rect.top = y;
|
||||||
|
rect.bottom = rect.top + imageHeight;
|
||||||
|
}
|
||||||
|
|
||||||
void calcPanelButtonRect(const PanelButton* panelButton, Rect &rect) {
|
void calcPanelButtonRect(const PanelButton* panelButton, Rect &rect) {
|
||||||
rect.left = x + panelButton->xOffset;
|
rect.left = x + panelButton->xOffset;
|
||||||
rect.right = rect.left + panelButton->width;
|
rect.right = rect.left + panelButton->width;
|
||||||
|
@ -115,6 +132,14 @@ struct InterfacePanel {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void zeroAllButtonState() {
|
||||||
|
int i;
|
||||||
|
for (i = 0; i < buttonsCount; i++) {
|
||||||
|
buttons[i].state = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -177,6 +202,9 @@ public:
|
||||||
}
|
}
|
||||||
void draw();
|
void draw();
|
||||||
void drawOption();
|
void drawOption();
|
||||||
|
void drawQuit();
|
||||||
|
void drawLoad();
|
||||||
|
void drawSave();
|
||||||
void update(const Point& mousePoint, int updateFlag);
|
void update(const Point& mousePoint, int updateFlag);
|
||||||
void drawStatusBar();
|
void drawStatusBar();
|
||||||
void setVerbState(int verb, int state);
|
void setVerbState(int verb, int state);
|
||||||
|
@ -230,17 +258,46 @@ private:
|
||||||
void handleOptionUpdate(const Point& mousePoint); // option panel update
|
void handleOptionUpdate(const Point& mousePoint); // option panel update
|
||||||
void handleOptionClick(const Point& mousePoint); // option panel click
|
void handleOptionClick(const Point& mousePoint); // option panel click
|
||||||
|
|
||||||
|
PanelButton *quitHitTest(const Point& mousePoint) {
|
||||||
|
return _quitPanel.hitTest(mousePoint, kPanelAllButtons);
|
||||||
|
}
|
||||||
|
void handleQuitUpdate(const Point& mousePoint); // quit panel update
|
||||||
|
void handleQuitClick(const Point& mousePoint); // quit panel click
|
||||||
|
|
||||||
|
PanelButton *loadHitTest(const Point& mousePoint) {
|
||||||
|
return _loadPanel.hitTest(mousePoint, kPanelAllButtons);
|
||||||
|
}
|
||||||
|
void handleLoadUpdate(const Point& mousePoint); // load panel update
|
||||||
|
void handleLoadClick(const Point& mousePoint); // load panel click
|
||||||
|
|
||||||
|
PanelButton *saveHitTest(const Point& mousePoint) {
|
||||||
|
return _savePanel.hitTest(mousePoint, kPanelAllButtons);
|
||||||
|
}
|
||||||
|
void handleSaveUpdate(const Point& mousePoint); // save panel update
|
||||||
|
void handleSaveClick(const Point& mousePoint); // save panel click
|
||||||
|
|
||||||
void lockMode() { _lockedMode = _panelMode; }
|
void lockMode() { _lockedMode = _panelMode; }
|
||||||
void unlockMode() { _panelMode = _lockedMode; }
|
void unlockMode() { _panelMode = _lockedMode; }
|
||||||
|
|
||||||
void setOption(PanelButton *panelButton);
|
void setOption(PanelButton *panelButton);
|
||||||
|
void setQuit(PanelButton *panelButton);
|
||||||
|
void setLoad(PanelButton *panelButton);
|
||||||
|
void setSave(PanelButton *panelButton);
|
||||||
|
|
||||||
void drawOptionPanelButtonText(SURFACE *ds, PanelButton *panelButton);
|
void drawTextInput(SURFACE *ds, InterfacePanel *panel, PanelButton *panelButton);
|
||||||
void drawButtonBox(SURFACE *ds, const Rect &rect, bool slider, bool down);
|
void drawPanelText(SURFACE *ds, InterfacePanel *panel, PanelButton *panelButton);
|
||||||
|
void drawPanelButtonText(SURFACE *ds, InterfacePanel *panel, PanelButton *panelButton);
|
||||||
|
enum ButtonKind {
|
||||||
|
kButton,
|
||||||
|
kSlider,
|
||||||
|
kEdit
|
||||||
|
};
|
||||||
|
void drawButtonBox(SURFACE *ds, const Rect &rect, ButtonKind kind, bool down);
|
||||||
void drawPanelButtonArrow(SURFACE *ds, InterfacePanel *panel, PanelButton *panelButton);
|
void drawPanelButtonArrow(SURFACE *ds, InterfacePanel *panel, PanelButton *panelButton);
|
||||||
void drawVerbPanelText(SURFACE *ds, PanelButton *panelButton, int textColor, int textShadowColor);
|
void drawVerbPanelText(SURFACE *ds, PanelButton *panelButton, int textColor, int textShadowColor);
|
||||||
void drawVerbPanel(SURFACE *backBuffer, PanelButton* panelButton);
|
void drawVerbPanel(SURFACE *backBuffer, PanelButton* panelButton);
|
||||||
void calcOptionSaveSlider();
|
void calcOptionSaveSlider();
|
||||||
|
void processTextInput(uint16 ascii);
|
||||||
public:
|
public:
|
||||||
void converseInit(void);
|
void converseInit(void);
|
||||||
void converseClear(void);
|
void converseClear(void);
|
||||||
|
@ -275,6 +332,10 @@ private:
|
||||||
InterfacePanel _optionPanel;
|
InterfacePanel _optionPanel;
|
||||||
PanelButton * _optionSaveFileSlider;
|
PanelButton * _optionSaveFileSlider;
|
||||||
PanelButton * _optionSaveFilePanel;
|
PanelButton * _optionSaveFilePanel;
|
||||||
|
InterfacePanel _quitPanel;
|
||||||
|
InterfacePanel _loadPanel;
|
||||||
|
InterfacePanel _savePanel;
|
||||||
|
PanelButton * _saveEdit;
|
||||||
|
|
||||||
int _saveReminderState;
|
int _saveReminderState;
|
||||||
bool _active;
|
bool _active;
|
||||||
|
@ -312,6 +373,11 @@ private:
|
||||||
Rect _optionSaveRectSlider;
|
Rect _optionSaveRectSlider;
|
||||||
Rect _optionSaveRectBottom;
|
Rect _optionSaveRectBottom;
|
||||||
|
|
||||||
|
bool _textInput;
|
||||||
|
char _textInputString[SAVE_TITLE_SIZE];
|
||||||
|
uint _textInputStringLength;
|
||||||
|
uint _textInputPos;
|
||||||
|
uint _textInputMaxWidth;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // End of namespace Saga
|
} // End of namespace Saga
|
||||||
|
|
|
@ -379,7 +379,7 @@ int16 IsoMap::findMulti(int16 tileIndex, int16 absU, int16 absV, int16 absH) {
|
||||||
|
|
||||||
int IsoMap::draw(SURFACE *ds) {
|
int IsoMap::draw(SURFACE *ds) {
|
||||||
|
|
||||||
Rect isoRect(_vm->getDisplayWidth(), _vm->getDisplayInfo().sceneHeight);
|
Rect isoRect(_vm->getDisplayWidth(), _vm->getClippedSceneHeight());
|
||||||
drawRect(ds, isoRect, 0);
|
drawRect(ds, isoRect, 0);
|
||||||
_tileClip = isoRect;
|
_tileClip = isoRect;
|
||||||
drawTiles(ds, NULL);
|
drawTiles(ds, NULL);
|
||||||
|
@ -399,7 +399,7 @@ void IsoMap::drawSprite(SURFACE *ds, SpriteList &spriteList, int spriteNumber, c
|
||||||
int yAlign;
|
int yAlign;
|
||||||
const byte *spriteBuffer;
|
const byte *spriteBuffer;
|
||||||
Point spritePointer;
|
Point spritePointer;
|
||||||
Rect clip(_vm->getDisplayWidth(),_vm->getSceneHeight());
|
Rect clip(_vm->getDisplayWidth(),_vm->getClippedSceneHeight());
|
||||||
|
|
||||||
_vm->_sprite->getScaledSpriteBuffer(spriteList,spriteNumber,scale, width, height, xAlign, yAlign, spriteBuffer);
|
_vm->_sprite->getScaledSpriteBuffer(spriteList,spriteNumber,scale, width, height, xAlign, yAlign, spriteBuffer);
|
||||||
|
|
||||||
|
@ -460,7 +460,7 @@ void IsoMap::drawTiles(SURFACE *ds, const Location *location) {
|
||||||
metaTileY.y = (view1.y * 16 - fineScroll.y) - (u0 + v0) * 64;
|
metaTileY.y = (view1.y * 16 - fineScroll.y) - (u0 + v0) * 64;
|
||||||
|
|
||||||
workAreaWidth = _vm->getDisplayWidth() + 128;
|
workAreaWidth = _vm->getDisplayWidth() + 128;
|
||||||
workAreaHeight = _vm->getDisplayInfo().sceneHeight + 128 + 80;
|
workAreaHeight = _vm->getSceneHeight() + 128 + 80;
|
||||||
|
|
||||||
for (u1 = u0, v1 = v0; metaTileY.y < workAreaHeight; u1--, v1-- ) {
|
for (u1 = u0, v1 = v0; metaTileY.y < workAreaHeight; u1--, v1-- ) {
|
||||||
metaTileX = metaTileY;
|
metaTileX = metaTileY;
|
||||||
|
|
|
@ -136,8 +136,21 @@ int Render::drawScene() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_vm->_interface->getMode() == kPanelOption) {
|
if ((_vm->_interface->getMode() == kPanelOption) ||
|
||||||
|
(_vm->_interface->getMode() == kPanelQuit) ||
|
||||||
|
(_vm->_interface->getMode() == kPanelLoad) ||
|
||||||
|
(_vm->_interface->getMode() == kPanelSave)) {
|
||||||
_vm->_interface->drawOption();
|
_vm->_interface->drawOption();
|
||||||
|
|
||||||
|
if (_vm->_interface->getMode() == kPanelQuit) {
|
||||||
|
_vm->_interface->drawQuit();
|
||||||
|
}
|
||||||
|
if (_vm->_interface->getMode() == kPanelLoad) {
|
||||||
|
_vm->_interface->drawLoad();
|
||||||
|
}
|
||||||
|
if (_vm->_interface->getMode() == kPanelSave) {
|
||||||
|
_vm->_interface->drawSave();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Draw queued text strings
|
// Draw queued text strings
|
||||||
|
|
|
@ -62,7 +62,7 @@ static const GameSettings saga_games[] = {
|
||||||
{0, 0, 0}
|
{0, 0, 0}
|
||||||
};
|
};
|
||||||
|
|
||||||
static const char *interfaceTextStrings[][39] = {
|
static const char *interfaceTextStrings[][42] = {
|
||||||
{
|
{
|
||||||
"Walk to", "Look At", "Pick Up", "Talk to", "Open",
|
"Walk to", "Look At", "Pick Up", "Talk to", "Open",
|
||||||
"Close", "Use", "Give", "Options", "Test",
|
"Close", "Use", "Give", "Options", "Test",
|
||||||
|
@ -71,7 +71,8 @@ static const char *interfaceTextStrings[][39] = {
|
||||||
"Game Options", "Reading Speed", "Music", "Sound", "Cancel",
|
"Game Options", "Reading Speed", "Music", "Sound", "Cancel",
|
||||||
"Quit", "OK", "Mid", "Click",
|
"Quit", "OK", "Mid", "Click",
|
||||||
"10%", "20%", "30%", "40%", "50%",
|
"10%", "20%", "30%", "40%", "50%",
|
||||||
"60%", "70%", "80%", "90%", "Max"
|
"60%", "70%", "80%", "90%", "Max", "Quit the Game?", "Load Successful!",
|
||||||
|
"Enter Save Game Name"
|
||||||
},
|
},
|
||||||
// German
|
// German
|
||||||
{
|
{
|
||||||
|
@ -82,7 +83,8 @@ static const char *interfaceTextStrings[][39] = {
|
||||||
"Spieleoptionen", "Lesegeschw.", "Musik", "Sound", "Abbr.",
|
"Spieleoptionen", "Lesegeschw.", "Musik", "Sound", "Abbr.",
|
||||||
"Beenden", NULL, "M", "Klick",
|
"Beenden", NULL, "M", "Klick",
|
||||||
NULL, NULL, NULL, NULL, NULL,
|
NULL, NULL, NULL, NULL, NULL,
|
||||||
NULL, NULL, NULL, NULL, NULL
|
NULL, NULL, NULL, NULL, NULL, "Quit the Game?", "Load Successful!",
|
||||||
|
"Enter Save Game Name"
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
25
saga/saga.h
25
saga/saga.h
|
@ -157,7 +157,16 @@ enum PanelButtonType {
|
||||||
kPanelButtonOptionSaveFiles = 0x40,
|
kPanelButtonOptionSaveFiles = 0x40,
|
||||||
kPanelButtonOptionText = 0x80,
|
kPanelButtonOptionText = 0x80,
|
||||||
|
|
||||||
kPanelButtonReserved = 0x100,
|
kPanelButtonQuit = 0x100,
|
||||||
|
kPanelButtonQuitText = 0x200,
|
||||||
|
|
||||||
|
kPanelButtonLoad = 0x400,
|
||||||
|
kPanelButtonLoadText = 0x800,
|
||||||
|
|
||||||
|
kPanelButtonSave = 0x1000,
|
||||||
|
kPanelButtonSaveText = 0x2000,
|
||||||
|
kPanelButtonSaveEdit = 0x4000,
|
||||||
|
|
||||||
kPanelAllButtons = 0xFFFFF
|
kPanelAllButtons = 0xFFFFF
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -200,7 +209,10 @@ enum TextStringIds {
|
||||||
kText70Percent,
|
kText70Percent,
|
||||||
kText80Percent,
|
kText80Percent,
|
||||||
kText90Percent,
|
kText90Percent,
|
||||||
kTextMax
|
kTextMax,
|
||||||
|
kTextQuitTheGameQuestion,
|
||||||
|
kTextLoadSuccessful,
|
||||||
|
kTextEnterSaveGameName
|
||||||
};
|
};
|
||||||
|
|
||||||
struct IMAGE_HEADER {
|
struct IMAGE_HEADER {
|
||||||
|
@ -346,6 +358,7 @@ struct GameDisplayInfo {
|
||||||
|
|
||||||
int pathStartY;
|
int pathStartY;
|
||||||
int sceneHeight;
|
int sceneHeight;
|
||||||
|
int clippedSceneHeight;
|
||||||
|
|
||||||
int statusXOffset;
|
int statusXOffset;
|
||||||
int statusYOffset;
|
int statusYOffset;
|
||||||
|
@ -400,16 +413,23 @@ struct GameDisplayInfo {
|
||||||
|
|
||||||
int quitPanelXOffset;
|
int quitPanelXOffset;
|
||||||
int quitPanelYOffset;
|
int quitPanelYOffset;
|
||||||
|
int quitPanelWidth;
|
||||||
|
int quitPanelHeight;
|
||||||
int quitPanelButtonsCount;
|
int quitPanelButtonsCount;
|
||||||
PanelButton *quitPanelButtons;
|
PanelButton *quitPanelButtons;
|
||||||
|
|
||||||
int loadPanelXOffset;
|
int loadPanelXOffset;
|
||||||
int loadPanelYOffset;
|
int loadPanelYOffset;
|
||||||
|
int loadPanelWidth;
|
||||||
|
int loadPanelHeight;
|
||||||
int loadPanelButtonsCount;
|
int loadPanelButtonsCount;
|
||||||
PanelButton *loadPanelButtons;
|
PanelButton *loadPanelButtons;
|
||||||
|
|
||||||
|
int saveEditIndex;
|
||||||
int savePanelXOffset;
|
int savePanelXOffset;
|
||||||
int savePanelYOffset;
|
int savePanelYOffset;
|
||||||
|
int savePanelWidth;
|
||||||
|
int savePanelHeight;
|
||||||
int savePanelButtonsCount;
|
int savePanelButtonsCount;
|
||||||
PanelButton *savePanelButtons;
|
PanelButton *savePanelButtons;
|
||||||
};
|
};
|
||||||
|
@ -613,6 +633,7 @@ public:
|
||||||
int getDisplayWidth() const { return _gameDisplayInfo.logicalWidth; }
|
int getDisplayWidth() const { return _gameDisplayInfo.logicalWidth; }
|
||||||
int getDisplayHeight() const { return _gameDisplayInfo.logicalHeight;}
|
int getDisplayHeight() const { return _gameDisplayInfo.logicalHeight;}
|
||||||
int getSceneHeight() const { return _gameDisplayInfo.sceneHeight; }
|
int getSceneHeight() const { return _gameDisplayInfo.sceneHeight; }
|
||||||
|
int getClippedSceneHeight() const { return _gameDisplayInfo.clippedSceneHeight; }
|
||||||
const GameDisplayInfo & getDisplayInfo() { return _gameDisplayInfo; }
|
const GameDisplayInfo & getDisplayInfo() { return _gameDisplayInfo; }
|
||||||
|
|
||||||
const char *getTextString(int textStringId);
|
const char *getTextString(int textStringId);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue