summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorglx <glx@openttd.org>2008-05-14 20:01:06 +0000
committerglx <glx@openttd.org>2008-05-14 20:01:06 +0000
commitbe43bbc3f35275fb0bd52e4da0146d165a8063a9 (patch)
tree31c7c5eecb653588f9d088392a9bd8d38aa27bb1
parent22960e82aaf87973c471c190f693754c9f018afb (diff)
downloadopenttd-be43bbc3f35275fb0bd52e4da0146d165a8063a9.tar.xz
(svn r13093) -Codechange: make a class of AboutWindow.
-rw-r--r--src/misc_gui.cpp204
1 files changed, 101 insertions, 103 deletions
diff --git a/src/misc_gui.cpp b/src/misc_gui.cpp
index 684b225ab..f0d868dc3 100644
--- a/src/misc_gui.cpp
+++ b/src/misc_gui.cpp
@@ -206,107 +206,6 @@ void PlaceLandBlockInfo()
}
}
-struct scroller_d {
- int height;
- uint16 counter;
-};
-assert_compile(WINDOW_CUSTOM_SIZE >= sizeof(scroller_d));
-
-static const char *credits[] = {
- /*************************************************************************
- * maximum length of string which fits in window -^*/
- "Original design by Chris Sawyer",
- "Original graphics by Simon Foster",
- "",
- "The OpenTTD team (in alphabetical order):",
- " Jean-Francois Claeys (Belugas) - GUI, newindustries and more",
- " Bjarni Corfitzen (Bjarni) - MacOSX port, coder and vehicles",
- " Matthijs Kooijman (blathijs) - Pathfinder-guru, pool rework",
- " Loïc Guilloux (glx) - General coding",
- " Christoph Elsenhans (frosch) - General coding",
- " Jaroslav Mazanec (KUDr) - YAPG (Yet Another Pathfinder God) ;)",
- " Jonathan Coome (Maedhros) - High priest of the newGRF Temple",
- " Attila Bán (MiHaMiX) - WebTranslator, Nightlies, Wiki and bugtracker host",
- " Owen Rudge (orudge) - Forum host, OS/2 port",
- " Peter Nelson (peter1138) - Spiritual descendant from newGRF gods",
- " Remko Bijker (Rubidium) - Lead coder and way more",
- " Benedikt Brüggemeier (skidd13) - Bug fixer and code reworker",
- " Zdenek Sojka (SmatZ) - Bug finder and fixer",
- "",
- "Inactive Developers:",
- " Victor Fischer (Celestar) - Programming everywhere you need him to",
- " Tamás Faragó (Darkvater) - Ex-Lead coder",
- " Christoph Mallon (Tron) - Programmer, code correctness police",
- "",
- "Retired Developers:",
- " Ludvig Strigeus (ludde) - OpenTTD author, main coder (0.1 - 0.3.3)",
- " Serge Paquet (vurlix) - Assistant project manager, coder (0.1 - 0.3.3)",
- " Dominik Scherer (dominik81) - Lead programmer, GUI expert (0.3.0 - 0.3.6)",
- " Patric Stout (TrueLight) - Programmer, webhoster (0.3 - pre0.6)",
- "",
- "Special thanks go out to:",
- " Josef Drexler - For his great work on TTDPatch",
- " Marcin Grzegorczyk - For his documentation of TTD internals",
- " Petr Baudis (pasky) - Many patches, newGRF support",
- " Stefan Meißner (sign_de) - For his work on the console",
- " Simon Sasburg (HackyKid) - Many bugfixes he has blessed us with",
- " Cian Duffy (MYOB) - BeOS port / manual writing",
- " Christian Rosentreter (tokai) - MorphOS / AmigaOS port",
- " Richard Kempton (richK) - additional airports, initial TGP implementation",
- "",
- " Michael Blunck - Pre-Signals and Semaphores © 2003",
- " George - Canal/Lock graphics © 2003-2004",
- " David Dallaston - Tram tracks",
- " Marcin Grzegorczyk - Foundations for Tracks on Slopes",
- " All Translators - Who made OpenTTD a truly international game",
- " Bug Reporters - Without whom OpenTTD would still be full of bugs!",
- "",
- "",
- "And last but not least:",
- " Chris Sawyer - For an amazing game!"
-};
-
-static void AboutWindowProc(Window *w, WindowEvent *e)
-{
- switch (e->event) {
- case WE_CREATE: // Set up window counter and start position of scroller
- WP(w, scroller_d).counter = 5;
- WP(w, scroller_d).height = w->height - 40;
- break;
-
- case WE_PAINT: {
- int y = WP(w, scroller_d).height;
- DrawWindowWidgets(w);
-
- /* Show original copyright and revision version */
- DrawStringCentered(210, 17, STR_00B6_ORIGINAL_COPYRIGHT, TC_FROMSTRING);
- DrawStringCentered(210, 17 + 10, STR_00B7_VERSION, TC_FROMSTRING);
-
- /* Show all scrolling credits */
- for (uint i = 0; i < lengthof(credits); i++) {
- if (y >= 50 && y < (w->height - 40)) {
- DoDrawString(credits[i], 10, y, TC_BLACK);
- }
- y += 10;
- }
-
- /* If the last text has scrolled start anew from the start */
- if (y < 50) WP(w, scroller_d).height = w->height - 40;
-
- DoDrawStringCentered(210, w->height - 25, "Website: http://www.openttd.org", TC_BLACK);
- DrawStringCentered(210, w->height - 15, STR_00BA_COPYRIGHT_OPENTTD, TC_FROMSTRING);
- } break;
-
- case WE_TICK: // Timer to scroll the text and adjust the new top
- if (--WP(w, scroller_d).counter == 0) {
- WP(w, scroller_d).counter = 5;
- WP(w, scroller_d).height--;
- w->SetDirty();
- }
- break;
- }
-}
-
static const Widget _about_widgets[] = {
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, RESIZE_NONE, 14, 11, 419, 0, 13, STR_015B_OPENTTD, STR_NULL},
@@ -320,14 +219,113 @@ static const WindowDesc _about_desc = {
WC_GAME_OPTIONS, WC_NONE,
WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET,
_about_widgets,
- AboutWindowProc
+ NULL
};
+struct AboutWindow : public Window {
+ int scroll_height;
+ uint16 counter;
+
+ AboutWindow() : Window(&_about_desc)
+ {
+ this->counter = 5;
+ this->scroll_height = this->height - 40;
+ this->FindWindowPlacementAndResize(&_about_desc);
+ }
+
+ virtual void OnPaint()
+ {
+ static const char *credits[] = {
+ /*************************************************************************
+ * maximum length of string which fits in window -^*/
+ "Original design by Chris Sawyer",
+ "Original graphics by Simon Foster",
+ "",
+ "The OpenTTD team (in alphabetical order):",
+ " Jean-Francois Claeys (Belugas) - GUI, newindustries and more",
+ " Bjarni Corfitzen (Bjarni) - MacOSX port, coder and vehicles",
+ " Matthijs Kooijman (blathijs) - Pathfinder-guru, pool rework",
+ " Loïc Guilloux (glx) - General coding",
+ " Christoph Elsenhans (frosch) - General coding",
+ " Jaroslav Mazanec (KUDr) - YAPG (Yet Another Pathfinder God) ;)",
+ " Jonathan Coome (Maedhros) - High priest of the newGRF Temple",
+ " Attila Bán (MiHaMiX) - WebTranslator, Nightlies, Wiki and bugtracker host",
+ " Owen Rudge (orudge) - Forum host, OS/2 port",
+ " Peter Nelson (peter1138) - Spiritual descendant from newGRF gods",
+ " Remko Bijker (Rubidium) - Lead coder and way more",
+ " Benedikt Brüggemeier (skidd13) - Bug fixer and code reworker",
+ " Zdenek Sojka (SmatZ) - Bug finder and fixer",
+ "",
+ "Inactive Developers:",
+ " Victor Fischer (Celestar) - Programming everywhere you need him to",
+ " Tamás Faragó (Darkvater) - Ex-Lead coder",
+ " Christoph Mallon (Tron) - Programmer, code correctness police",
+ "",
+ "Retired Developers:",
+ " Ludvig Strigeus (ludde) - OpenTTD author, main coder (0.1 - 0.3.3)",
+ " Serge Paquet (vurlix) - Assistant project manager, coder (0.1 - 0.3.3)",
+ " Dominik Scherer (dominik81) - Lead programmer, GUI expert (0.3.0 - 0.3.6)",
+ " Patric Stout (TrueLight) - Programmer, webhoster (0.3 - pre0.6)",
+ "",
+ "Special thanks go out to:",
+ " Josef Drexler - For his great work on TTDPatch",
+ " Marcin Grzegorczyk - For his documentation of TTD internals",
+ " Petr Baudis (pasky) - Many patches, newGRF support",
+ " Stefan Meißner (sign_de) - For his work on the console",
+ " Simon Sasburg (HackyKid) - Many bugfixes he has blessed us with",
+ " Cian Duffy (MYOB) - BeOS port / manual writing",
+ " Christian Rosentreter (tokai) - MorphOS / AmigaOS port",
+ " Richard Kempton (richK) - additional airports, initial TGP implementation",
+ "",
+ " Michael Blunck - Pre-Signals and Semaphores © 2003",
+ " George - Canal/Lock graphics © 2003-2004",
+ " David Dallaston - Tram tracks",
+ " Marcin Grzegorczyk - Foundations for Tracks on Slopes",
+ " All Translators - Who made OpenTTD a truly international game",
+ " Bug Reporters - Without whom OpenTTD would still be full of bugs!",
+ "",
+ "",
+ "And last but not least:",
+ " Chris Sawyer - For an amazing game!"
+ };
+
+ DrawWindowWidgets(this);
+
+ /* Show original copyright and revision version */
+ DrawStringCentered(210, 17, STR_00B6_ORIGINAL_COPYRIGHT, TC_FROMSTRING);
+ DrawStringCentered(210, 17 + 10, STR_00B7_VERSION, TC_FROMSTRING);
+
+ int y = this->scroll_height;
+
+ /* Show all scrolling credits */
+ for (uint i = 0; i < lengthof(credits); i++) {
+ if (y >= 50 && y < (this->height - 40)) {
+ DoDrawString(credits[i], 10, y, TC_BLACK);
+ }
+ y += 10;
+ }
+
+ /* If the last text has scrolled start a new from the start */
+ if (y < 50) this->scroll_height = this->height - 40;
+
+ DoDrawStringCentered(210, this->height - 25, "Website: http://www.openttd.org", TC_BLACK);
+ DrawStringCentered(210, this->height - 15, STR_00BA_COPYRIGHT_OPENTTD, TC_FROMSTRING);
+ }
+
+ virtual void OnTick()
+ {
+ if (--this->counter == 0) {
+ this->counter = 5;
+ this->scroll_height--;
+ this->SetDirty();
+ }
+ }
+};
void ShowAboutWindow()
{
DeleteWindowById(WC_GAME_OPTIONS, 0);
- new Window(&_about_desc);
+ new AboutWindow();
}
static uint64 _errmsg_decode_params[20];