[Scummvm-git-logs] scummvm master -> 4127c3de4b5ae8716df0ffba3928e47592b3d802

dreammaster dreammaster at scummvm.org
Mon Dec 11 03:55:03 CET 2017


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
4127c3de4b XEEN: Add Awards dialog files missing from prior commit


Commit: 4127c3de4b5ae8716df0ffba3928e47592b3d802
    https://github.com/scummvm/scummvm/commit/4127c3de4b5ae8716df0ffba3928e47592b3d802
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2017-12-10T21:54:53-05:00

Commit Message:
XEEN: Add Awards dialog files missing from prior commit

Changed paths:
  A engines/xeen/dialogs_awards.cpp
  A engines/xeen/dialogs_awards.h


diff --git a/engines/xeen/dialogs_awards.cpp b/engines/xeen/dialogs_awards.cpp
new file mode 100644
index 0000000..91421ca
--- /dev/null
+++ b/engines/xeen/dialogs_awards.cpp
@@ -0,0 +1,131 @@
+/* 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.
+ *
+ */
+
+#include "xeen/dialogs_awards.h"
+#include "xeen/party.h"
+#include "xeen/resources.h"
+#include "xeen/xeen.h"
+
+namespace Xeen {
+
+void Awards::show(XeenEngine *vm, const Character *ch) {
+	Awards *dlg = new Awards(vm);
+	dlg->execute(ch);
+	delete dlg;
+}
+
+void Awards::execute(const Character *ch) {
+	EventsManager &events = *g_vm->_events;
+	Windows &windows = *g_vm->_windows;
+	Common::StringArray awards;
+	int numAwards;
+	Mode oldMode = g_vm->_mode;
+	int topIndex = 0;
+
+	loadStrings("award.bin");
+	addButtons();
+
+	// Open the window and draw contents
+	bool win29Open = windows[29]._enabled;
+	if (!win29Open) {
+		windows[29].open();
+		windows[30].open();
+	}
+
+	windows[29].writeString(Res.AWARDS_TEXT);
+	drawButtons(&windows[0]);
+
+	while (!_vm->shouldQuit()) {
+		// Build up a list of awards the character has
+		awards.clear();
+		awards.resize(AWARDS_TOTAL);
+		numAwards = 0;
+
+		for (int awardNum = 0; awardNum < AWARDS_TOTAL; ++awardNum) {
+			if (ch->hasAward(awardNum)) {
+				if (awardNum == 9) {
+					// # Warzone Wins
+					awards[numAwards] = Common::String::format(_textStrings[9].c_str(), 28);
+				} else if (awardNum == 17) {
+					// Legendary Race
+					awards[numAwards] = Common::String::format(_textStrings[17].c_str(),
+						Res.RACE_NAMES[ch->_race]);
+				} else {
+					awards[numAwards] = _textStrings[awardNum];
+				}
+				++numAwards;
+			}
+		}
+
+		// If no awards, add in a message indicating so
+		if (numAwards == 0) {
+			awards[1] = Res.NO_AWARDS;
+		}
+
+		Common::String msg = Common::String::format(Res.AWARDS_FOR,
+			ch->_name.c_str(), Res.CLASS_NAMES[ch->_class],
+			awards[topIndex].c_str(),
+			awards[topIndex + 1].c_str(),
+			awards[topIndex + 2].c_str(),
+			awards[topIndex + 3].c_str(),
+			awards[topIndex + 4].c_str(),
+			awards[topIndex + 5].c_str(),
+			awards[topIndex + 6].c_str(),
+			awards[topIndex + 7].c_str(),
+			awards[topIndex + 8].c_str()
+		);
+		windows[30].writeString(msg);
+		windows[24].update();
+
+		// Wait for keypress
+		do {
+			events.pollEventsAndWait();
+			checkEvents(_vm);
+		} while (!g_vm->shouldQuit() && !_buttonValue);
+
+		if (_buttonValue == Common::KEYCODE_ESCAPE) {
+			break;
+		} else if (_buttonValue == Common::KEYCODE_u) {
+			topIndex = MAX(topIndex - 1, 0);
+		} else if (_buttonValue == Common::KEYCODE_d) {
+			if ((++topIndex + 9) > numAwards)
+				--topIndex;
+		}
+	}
+
+	// Close the window
+	if (win29Open) {
+		windows[30].close();
+		windows[29].close();
+	}
+
+	g_vm->_mode = oldMode;
+}
+
+void Awards::addButtons() {
+	_iconSprites.load("award.icn");
+	addButton(Common::Rect(216, 109, 240, 129), Common::KEYCODE_u, &_iconSprites);
+	addButton(Common::Rect(250, 109, 274, 129), Common::KEYCODE_d, &_iconSprites);
+	addButton(Common::Rect(284, 109, 308, 129), Common::KEYCODE_ESCAPE, &_iconSprites);
+}
+
+} // End of namespace Xeen
diff --git a/engines/xeen/dialogs_awards.h b/engines/xeen/dialogs_awards.h
new file mode 100644
index 0000000..6ce3a05
--- /dev/null
+++ b/engines/xeen/dialogs_awards.h
@@ -0,0 +1,52 @@
+/* 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.
+ *
+ */
+
+#ifndef XEEN_DIALOGS_AWARDS_H
+#define XEEN_DIALOGS_AWARDS_H
+
+#include "xeen/dialogs.h"
+#include "xeen/character.h"
+
+namespace Xeen {
+
+class Awards : public ButtonContainer {
+private:
+	SpriteResource _iconSprites;
+private:
+	Awards(XeenEngine *vm) : ButtonContainer(vm) {}
+
+	/**
+	 * Executes the dialog
+	 */
+	void execute(const Character *ch);
+
+	/**
+	 * Add buttons for the dialog
+	 */
+	void addButtons();
+public:
+	static void show(XeenEngine *vm, const Character *ch);
+};
+
+} // End of namespace Xeen
+
+#endif /* XEEN_DIALOGS_AWARDS_H */





More information about the Scummvm-git-logs mailing list