(svn r1340) -Feature: scrolling credits list...finally! Hope nobody gets offended if I forgot them.
This commit is contained in:
92
misc_gui.c
92
misc_gui.c
@@ -164,28 +164,91 @@ void PlaceLandBlockInfo()
|
||||
}
|
||||
}
|
||||
|
||||
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:",
|
||||
" Dominik Scherer (dominik81) - Lead coder",
|
||||
" Tamas Farago (Darkvater) - Lead coder",
|
||||
" Patric Stout (TrueLight) - Coder, network guru, SVN- and website host",
|
||||
" Owen Rudge (orudge) - Forum- and masterserver host, OS/2 port",
|
||||
" Bjarni Corfitzen (Bjarni) - MacOS port",
|
||||
" Kerekes Miham (MiHaMiX) - Translator system, and Nightlies host",
|
||||
" Cian Duffy (MYOB) - BeOS port / manual writing",
|
||||
" Christian Rosentreter (tokaiz) - MorphOS / AmigaOS port",
|
||||
" Ludvig Strigeus (ludde) - OpenTTD author, main coder (0.1 - 0.3.3)",
|
||||
" Serge Paquet (vurlix) - Assistant project manager, coder (0.1 - 0.3.3)",
|
||||
"",
|
||||
"Special thanks go out to:",
|
||||
" Josef Drexler - For his great work on TTDPatch",
|
||||
" Marcin Grzegorczyk - For his documentation of TTD internals",
|
||||
" Tron - Many patches, suggestions and relentless correcting of the code",
|
||||
" Celestar - For his many patches, suggestions and fixes",
|
||||
" blathijs - For his many patches, suggestions and code documentation",
|
||||
" pasky - Many patches, newgrf support",
|
||||
" Stefan Mei<65>ner (sign_de) - For his work on the console",
|
||||
"",
|
||||
" Michael Blunck - Pre-Signals and Semaphores <20> 2003",
|
||||
" George - Canal/Lock graphics <20> 2003-2004",
|
||||
" 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!",
|
||||
NULL,
|
||||
"",
|
||||
"",
|
||||
"And finally:",
|
||||
" 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, general_d).i = 0;
|
||||
WP(w, general_d).j = w->height - 40;
|
||||
break;
|
||||
case WE_PAINT: {
|
||||
int x,y;
|
||||
const char *str;
|
||||
char buffer[100];
|
||||
int i;
|
||||
int y = WP(w, general_d).j;
|
||||
DrawWindowWidgets(w);
|
||||
|
||||
x = 200;
|
||||
y = 0;
|
||||
DrawStringCentered(x, y += 17, STR_00B6_ORIGINAL_COPYRIGHT, 0);
|
||||
DrawStringCentered(x, y += 10, STR_00B7_VERSION, 0);
|
||||
DrawString(20, y += 20, STR_00B8_ORIGINAL_DESIGN_PROGRAM, 0);
|
||||
DrawString(20, y += 10, STR_00B9_ORIGINAL_GRAPHICS, 0);
|
||||
DrawString(20, y += 30, STR_SPECIAL_THANKS, 0);
|
||||
// will probably be dynamic when stringhandling is finally reworked.
|
||||
DrawString(20, y += 10, STR_SPECIAL_THANKS_SIGNALS, 0);
|
||||
DrawString(20, y += 10, STR_SPECIAL_THANKS_CANALS, 0);
|
||||
DrawString(20, y += 10, STR_SPECIAL_THANKS_FOUNDATIONS, 0);
|
||||
DrawStringMultiCenter(x, w->height - 15, STR_00BA_COPYRIGHT_OPENTTD, 0x18E);
|
||||
break;
|
||||
// Show original copyright and revision version
|
||||
DrawStringCentered(200, 17, STR_00B6_ORIGINAL_COPYRIGHT, 0);
|
||||
DrawStringCentered(200, 17 + 10, STR_00B7_VERSION, 0);
|
||||
|
||||
// Show all scrolling credits
|
||||
for (i = 0; i < lengthof(credits); i++) {
|
||||
if (y >= 50 && y < (w->height - 40)) {
|
||||
str = credits[i];
|
||||
/* Hack-Alert: Translated by is a dynamic string as it changes
|
||||
* with the language chosen. So the special value of NULL is used
|
||||
* to identify this for the moment */
|
||||
if (str == NULL) {
|
||||
GetString(buffer, STR_TRANSLATED_BY);
|
||||
str = buffer;
|
||||
}
|
||||
|
||||
DoDrawString(str, 10, y, 0x10);
|
||||
}
|
||||
y += 10;
|
||||
}
|
||||
|
||||
// If the last text has scrolled start anew from the start
|
||||
if (y < 50) WP(w, general_d).j = w->height - 40;
|
||||
|
||||
DrawStringMultiCenter(200, w->height - 15, STR_00BA_COPYRIGHT_OPENTTD, 398);
|
||||
} break;
|
||||
case WE_MOUSELOOP: /* Timer to scroll the text and adjust the new top */
|
||||
if (WP(w, general_d).i++ % 3 == 0) {
|
||||
WP(w, general_d).j--;
|
||||
SetWindowDirty(w);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -193,6 +256,7 @@ static const Widget _about_widgets[] = {
|
||||
{ WWT_CLOSEBOX, 14, 0, 10, 0, 13, STR_00C5, STR_NULL},
|
||||
{ WWT_CAPTION, 14, 11, 399, 0, 13, STR_015B_OPENTTD, STR_NULL},
|
||||
{ WWT_PANEL, 14, 0, 399, 14, 271, 0x0, STR_NULL},
|
||||
{ WWT_FRAME, 14, 5, 394, 40, 245, STR_EMPTY, STR_NULL},
|
||||
{ WIDGETS_END},
|
||||
};
|
||||
|
||||
|
Reference in New Issue
Block a user