aboutsummaryrefslogtreecommitdiff
path: root/engines/xeen
diff options
context:
space:
mode:
authorPaul Gilbert2015-02-11 20:04:38 -0500
committerPaul Gilbert2015-02-11 20:04:38 -0500
commit2f39bd5cd259cd5af16543338f4bb6a930191786 (patch)
treebf1c81d0db95c2cb700783b9afddc7aced7f7e1d /engines/xeen
parent50ae4f95229e9a11b86884aa1fa1dffb6cfdc7a8 (diff)
downloadscummvm-rg350-2f39bd5cd259cd5af16543338f4bb6a930191786.tar.gz
scummvm-rg350-2f39bd5cd259cd5af16543338f4bb6a930191786.tar.bz2
scummvm-rg350-2f39bd5cd259cd5af16543338f4bb6a930191786.zip
XEEN: Fixes for display of party dialog
Diffstat (limited to 'engines/xeen')
-rw-r--r--engines/xeen/dialogs_party.cpp20
-rw-r--r--engines/xeen/dialogs_party.h4
-rw-r--r--engines/xeen/interface.cpp5
-rw-r--r--engines/xeen/resources.cpp3
-rw-r--r--engines/xeen/resources.h1
5 files changed, 22 insertions, 11 deletions
diff --git a/engines/xeen/dialogs_party.cpp b/engines/xeen/dialogs_party.cpp
index 618d29781d..9de0346cc6 100644
--- a/engines/xeen/dialogs_party.cpp
+++ b/engines/xeen/dialogs_party.cpp
@@ -32,6 +32,7 @@ namespace Xeen {
PartyDialog::PartyDialog(XeenEngine *vm) : ButtonContainer(),
PartyDrawer(vm), _vm(vm) {
+ initDrawStructs();
}
void PartyDialog::show(XeenEngine *vm) {
@@ -68,7 +69,7 @@ void PartyDialog::execute() {
Window &w = screen._windows[11];
w.open();
setupFaces(startingChar, false);
- w.writeString(_displayText);
+ w.writeString(Common::String::format(PARTY_DIALOG_TEXT, _partyDetails.c_str()));
w.drawList(&_faceDrawStructs[0], 4);
_uiSprites.draw(w, 0, Common::Point(16, 100));
@@ -99,8 +100,10 @@ void PartyDialog::execute() {
bool breakFlag = false;
while (!_vm->shouldQuit() && !breakFlag) {
- events.pollEventsAndWait();
- checkEvents(_vm);
+ do {
+ events.pollEventsAndWait();
+ checkEvents(_vm);
+ } while (!_vm->shouldQuit() && !_buttonValue);
switch (_buttonValue) {
case Common::KEYCODE_ESCAPE:
@@ -226,7 +229,7 @@ void PartyDialog::loadButtons() {
addButton(Common::Rect(87, 100, 111, 120), Common::KEYCODE_d, &_uiSprites);
addButton(Common::Rect(122, 100, 146, 120), Common::KEYCODE_r, &_uiSprites);
addButton(Common::Rect(157, 100, 181, 120), Common::KEYCODE_c, &_uiSprites);
- addButton(Common::Rect(192, 100, 116, 120), Common::KEYCODE_x, &_uiSprites);
+ addButton(Common::Rect(192, 100, 216, 120), Common::KEYCODE_x, &_uiSprites);
addButton(Common::Rect(0, 0, 0, 0), Common::KEYCODE_ESCAPE, &_uiSprites, false);
addButton(Common::Rect(16, 16, 48, 48), Common::KEYCODE_1, &_uiSprites, false);
addButton(Common::Rect(117, 16, 149, 48), Common::KEYCODE_2, &_uiSprites, false);
@@ -247,7 +250,7 @@ void PartyDialog::setupBackground() {
}
/**
- * Sets up the faces for display in the party dialog
+ * Sets up the faces from the avaialble roster for display in the party dialog
*/
void PartyDialog::setupFaces(int firstDisplayChar, bool updateFlag) {
Party &party = *_vm->_party;
@@ -285,10 +288,11 @@ void PartyDialog::setupFaces(int firstDisplayChar, bool updateFlag) {
if ((firstDisplayChar + posIndex) >= (int)_charList.size())
_faceDrawStructs[posIndex]._sprites = nullptr;
else
- _faceDrawStructs[posIndex]._sprites = party._roster[posIndex]._faceSprites;
+ _faceDrawStructs[posIndex]._sprites = party._roster[
+ _charList[firstDisplayChar + posIndex]]._faceSprites;
}
- _displayText = Common::String::format(PARTY_DETAILS,
+ _partyDetails = Common::String::format(PARTY_DETAILS,
charNames[0].c_str(), charRaces[0].c_str(), charSex[0].c_str(), charClasses[0].c_str(),
charNames[1].c_str(), charRaces[1].c_str(), charSex[1].c_str(), charClasses[1].c_str(),
charNames[2].c_str(), charRaces[2].c_str(), charSex[2].c_str(), charClasses[2].c_str(),
@@ -300,7 +304,7 @@ void PartyDialog::startingCharChanged(int firstDisplayChar) {
Window &w = _vm->_screen->_windows[11];
setupFaces(firstDisplayChar, true);
- w.writeString(_displayText);
+ w.writeString(_partyDetails);
w.drawList(_faceDrawStructs, 4);
_uiSprites.draw(w, 0, Common::Point(16, 100));
diff --git a/engines/xeen/dialogs_party.h b/engines/xeen/dialogs_party.h
index 082c43bb22..1510b76093 100644
--- a/engines/xeen/dialogs_party.h
+++ b/engines/xeen/dialogs_party.h
@@ -36,7 +36,7 @@ private:
XeenEngine *_vm;
SpriteResource _uiSprites;
DrawStruct _faceDrawStructs[4];
- Common::String _displayText;
+ Common::String _partyDetails;
Common::Array<int> _charList;
PartyDialog(XeenEngine *vm);
@@ -49,8 +49,6 @@ private:
void setupBackground();
- void drawParty(bool updateFlag);
-
void setupFaces(int firstDisplayChar, bool updateFlag);
void startingCharChanged(int firstDisplayChar);
diff --git a/engines/xeen/interface.cpp b/engines/xeen/interface.cpp
index b88b64af5f..b8e6437f2a 100644
--- a/engines/xeen/interface.cpp
+++ b/engines/xeen/interface.cpp
@@ -31,6 +31,8 @@
#include "xeen/resources.h"
#include "xeen/xeen.h"
+#include "xeen/dialogs_party.h"
+
namespace Xeen {
PartyDrawer::PartyDrawer(XeenEngine *vm): _vm(vm) {
@@ -501,6 +503,9 @@ void Interface::perform() {
Quests::show(_vm);
break;
+ case Common::KEYCODE_x:
+ // ****DEBUG***
+ PartyDialog::show(_vm); //***DEBUG****
default:
break;
}
diff --git a/engines/xeen/resources.cpp b/engines/xeen/resources.cpp
index d309fe9cd4..d79ef8061d 100644
--- a/engines/xeen/resources.cpp
+++ b/engines/xeen/resources.cpp
@@ -354,6 +354,9 @@ const char *const PARTY_DETAILS = "\015\003l\002\014""00"
"\013""052""\011""136%s"
"\013""060""\011""136%s"
"\013""068""\011""136%s";
+const char *const PARTY_DIALOG_TEXT =
+ "%s\x2\x3""c\v106\t013Up\t048Down\t083\f37D\fdel\t118\f37R\fdem"
+ "\t153\f37C\fdreate\t188E\f37x\fdit\x1";
const int FACE_CONDITION_FRAMES[17] = {
2, 2, 2, 1, 1, 4, 4, 4, 3, 2, 4, 3, 3, 5, 6, 7, 0
diff --git a/engines/xeen/resources.h b/engines/xeen/resources.h
index a1734ce323..0e90a29a68 100644
--- a/engines/xeen/resources.h
+++ b/engines/xeen/resources.h
@@ -105,6 +105,7 @@ extern const char *const HEROISM;
extern const char *const IN_PARTY;
extern const char *const PARTY_DETAILS;
+extern const char *const PARTY_DIALOG_TEXT;
extern const int FACE_CONDITION_FRAMES[17];