mirror of
https://github.com/libretro/scummvm.git
synced 2024-12-20 16:59:06 +00:00
PRINCE: Option window texts drawing and highlighting
This commit is contained in:
parent
5163d6ce4e
commit
8fd44cbbf3
84
engines/prince/option_text.h
Normal file
84
engines/prince/option_text.h
Normal file
@ -0,0 +1,84 @@
|
||||
/* ScummVM - Graphic Adventure Engine
|
||||
*
|
||||
* ScummVM is the legal property of its developers, whose names
|
||||
* are too numerous to list here. Please refer to the COPYRIGHT
|
||||
* file distributed with this source distribution.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version 2
|
||||
* of the License, or (at your option) any later version.
|
||||
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
*/
|
||||
|
||||
namespace Prince {
|
||||
|
||||
// Mazovia coding (with U2 negation)
|
||||
|
||||
const char invOptionsTextPL[5][18] = {
|
||||
{ 'O', 'b', 'e', 'j', 'r', 'z', 'y', 'j', '\0' },
|
||||
{ 'U', -89, 'y', 'j', '\0' },
|
||||
{ 'O', 't', 'w', -94, 'r', 'z', '/', 'P', 'c', 'h', 'n', 'i', 'j', '\0' },
|
||||
{ 'Z', 'a', 'm', 'k', 'n', 'i', 'j', '/', 'P', 'o', 'c', 'i', -122, 'g', 'n', 'i', 'j', '\0' },
|
||||
{ 'D', 'a', 'j', '\0' }
|
||||
};
|
||||
|
||||
// TODO
|
||||
const char *invOptionsTextDE[] = {
|
||||
"Anschauen",
|
||||
"Benutzen",
|
||||
"Öffnen/Stoßen",
|
||||
"Schließen/Ziehen",
|
||||
"Geben"
|
||||
};
|
||||
|
||||
const char *invOptionsTextEN[] = {
|
||||
"Examine",
|
||||
"Use",
|
||||
"Open/Push",
|
||||
"Close/Pull",
|
||||
"Give"
|
||||
};
|
||||
|
||||
const char optionsTextPL[7][18] = {
|
||||
{ 'P', 'o', 'd', 'e', 'j', 'd', -90, '\0' },
|
||||
{ 'O', 'b', 'e', 'j', 'r', 'z', 'y', 'j', '\0' },
|
||||
{ 'Z', 'a', 'b', 'i', 'e', 'r', 'z', '\0' },
|
||||
{ 'U', -89, 'y', 'j' },
|
||||
{ 'O', 't', 'w', -94, 'r', 'z', '/', 'P', 'c', 'h', 'n', 'i', 'j', '\0' },
|
||||
{ 'Z', 'a', 'm', 'k', 'n', 'i', 'j', '/', 'P', 'o', 'c', 'i', -122, 'g', 'n', 'i', 'j', '\0' },
|
||||
{ 'P', 'o', 'r', 'o', 'z', 'm', 'a', 'w', 'i', 'a', 'j', '\0' }
|
||||
};
|
||||
|
||||
// TODO
|
||||
const char *optionsTextDE[] = {
|
||||
"Hingehen",
|
||||
"Anschauen",
|
||||
"Wegnehmen",
|
||||
"Benutzen",
|
||||
"Öffnen/Stoßen",
|
||||
"Schließen/Ziehen",
|
||||
"Ansprechen"
|
||||
};
|
||||
|
||||
const char *optionsTextEN[] = {
|
||||
"Walk to",
|
||||
"Examine",
|
||||
"Pick up",
|
||||
"Use",
|
||||
"Open/Push",
|
||||
"Close/Pull",
|
||||
"Talk to"
|
||||
};
|
||||
|
||||
}
|
||||
|
@ -60,6 +60,7 @@
|
||||
#include "prince/hero.h"
|
||||
#include "prince/resource.h"
|
||||
#include "prince/animation.h"
|
||||
#include "prince/option_text.h"
|
||||
|
||||
namespace Prince {
|
||||
|
||||
@ -82,9 +83,10 @@ PrinceEngine::PrinceEngine(OSystem *syst, const PrinceGameDescription *gameDesc)
|
||||
_invLineX(134), _invLineY(176), _invLine(5), _invLines(3), _invLineW(70), _invLineH(76), _maxInvW(72), _maxInvH(76),
|
||||
_invLineSkipX(2), _invLineSkipY(3), _showInventoryFlag(false), _inventoryBackgroundRemember(false),
|
||||
_mst_shadow(0), _mst_shadow2(0), _candleCounter(0), _invX1(53), _invY1(18), _invWidth(536), _invHeight(438),
|
||||
_invCurInside(false), _optionsFlag(false), _optionEnabled(0), _invOptionsNumber(5), _invExamY(120),
|
||||
_invCurInside(false), _optionsFlag(false), _optionEnabled(0), _invExamY(120),
|
||||
_optionsMob(0), _currentPointerNumber(1), _selectedMob(0), _selectedItem(0), _selectedMode(0),
|
||||
_optionsWidth(210), _optionsHeight(170), _invOptionsWidth(210), _invOptionsHeight(130) {
|
||||
_optionsWidth(210), _optionsHeight(170), _invOptionsWidth(210), _invOptionsHeight(130), _optionsStep(20),
|
||||
_invOptionsStep(20), _optionsNumber(7), _invOptionsNumber(5), _optionsColor1(0xFF00EC), _optionsColor2(0xFF00FC) {
|
||||
|
||||
// Debug/console setup
|
||||
DebugMan.addDebugChannel(DebugChannel::kScript, "script", "Prince Script debug channel");
|
||||
@ -1666,6 +1668,47 @@ void PrinceEngine::checkInvOptions() {
|
||||
return;
|
||||
}
|
||||
_graph->drawAsShadowSurface(_graph->_screenForInventory, _optionsX, _optionsY, _optionsPicInInventory, _graph->_shadowTable50);
|
||||
|
||||
_optionEnabled = -1;
|
||||
int optionsYCord = mousePos.y - (_optionsY + 16);
|
||||
if (optionsYCord >= 0) {
|
||||
int selectedOptionNr = optionsYCord / _invOptionsStep;
|
||||
if (selectedOptionNr < _optionsNumber) {
|
||||
_optionEnabled = selectedOptionNr;
|
||||
}
|
||||
}
|
||||
//NoBackgroundFlag = 1;
|
||||
//int eax = _optionsX + _invOptionsWidth / 2;
|
||||
//int ecx = _optionsNumber;
|
||||
int optionsColor;
|
||||
int textY = _optionsY + 16;
|
||||
for (int i = 0; i < _invOptionsNumber; i++) {
|
||||
if (i != _optionEnabled) {
|
||||
optionsColor = _optionsColor1;
|
||||
} else {
|
||||
optionsColor = _optionsColor2;
|
||||
}
|
||||
Common::String invText;
|
||||
switch(getLanguage()) {
|
||||
case Common::PL_POL:
|
||||
invText = invOptionsTextPL[i];
|
||||
break;
|
||||
case Common::DE_DEU:
|
||||
invText = invOptionsTextDE[i];
|
||||
break;
|
||||
case Common::EN_ANY:
|
||||
invText = invOptionsTextEN[i];
|
||||
break;
|
||||
};
|
||||
uint16 textW = 0;
|
||||
for (uint16 i = 0; i < invText.size(); i++) {
|
||||
textW += _font->getCharWidth(invText[i]);
|
||||
}
|
||||
uint16 textX = _optionsX + _optionsWidth / 2 - textW / 2;
|
||||
_font->drawString(_graph->_screenForInventory, invText, textX, textY, _graph->_screenForInventory->w, optionsColor);
|
||||
textY += _invOptionsStep;
|
||||
}
|
||||
//NoBackgroundFlag = 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -295,9 +295,14 @@ public:
|
||||
int _optionsHeight;
|
||||
int _invOptionsWidth;
|
||||
int _invOptionsHeight;
|
||||
int _optionsStep;
|
||||
int _invOptionsStep;
|
||||
int _optionsNumber;
|
||||
int _invOptionsNumber;
|
||||
int _optionsColor1; // color for non-selected options
|
||||
int _optionsColor2; // color for selected option
|
||||
|
||||
bool _showInventoryFlag;
|
||||
int _invOptionsNumber;
|
||||
int _invExamY;
|
||||
bool _inventoryBackgroundRemember;
|
||||
int _invLineX;
|
||||
|
Loading…
Reference in New Issue
Block a user