66
66
dskCredits::dskCredits(void) : Desktop(LOADER.GetImageN("setup013", 0))
69
AddTextButton(0, 300, 550, 200, 22, TC_RED1, _("Back"),NormalFont);
71
// "Die Siedler II.5 RTTR"
72
AddText(1, 400, 10, _("Return To The Roots"), COLOR_YELLOW, glArchivItem_Font::DF_CENTER, LargeFont);
75
AddText(2, 400, 33, _("Credits"), COLOR_YELLOW, glArchivItem_Font::DF_CENTER, LargeFont);
77
CreditsEntry entry = CreditsEntry();
78
entry.title = "Florian Doersch (FloSoft):";
81
entry.lines.push_back(CreditsEntry::Line(_("Project management")));
82
entry.lines.push_back(CreditsEntry::Line(_("Server management")));
83
entry.lines.push_back(CreditsEntry::Line(_("Programming")));
84
entry.lines.push_back(CreditsEntry::Line(_("Website Administration")));
85
entry.lines.push_back(CreditsEntry::Line(_("Website Programming")));
86
entry.lines.push_back(CreditsEntry::Line(_("Quality Assurance")));
88
this->entries.push_back(entry);
91
entry.title = "Oliver Siebert (Oliverr):";
94
entry.lines.push_back(CreditsEntry::Line(_("Project management")));
95
entry.lines.push_back(CreditsEntry::Line(_("Programming")));
96
entry.lines.push_back(CreditsEntry::Line(_("Quality Assurance")));
98
this->entries.push_back(entry);
101
entry.title = "Stefan Schüchl (Z-Stef):";
104
entry.lines.push_back(CreditsEntry::Line(_("Website Administration")));
105
entry.lines.push_back(CreditsEntry::Line(_("Website Programming")));
107
this->entries.push_back(entry);
110
entry.title = "Patrick Haak (Demophobie):";
113
entry.lines.push_back(CreditsEntry::Line(_("Website Administration")));
114
entry.lines.push_back(CreditsEntry::Line(_("Quality Assurance")));
116
this->entries.push_back(entry);
119
entry.title = "Jonas Trampe (NastX):";
122
entry.lines.push_back(CreditsEntry::Line(_("Quality Assurance")));
123
entry.lines.push_back(CreditsEntry::Line(_("Mapping")));
125
this->entries.push_back(entry);
128
entry.title = "Jan-Henrik Kluth (jh):";
131
entry.lines.push_back(CreditsEntry::Line(_("Programming")));
132
entry.lines.push_back(CreditsEntry::Line(_("Artificial Intelligence (AI)")));
134
this->entries.push_back(entry);
137
entry.title = "Christopher Kuehnel (Spikeone):";
140
entry.lines.push_back(CreditsEntry::Line(_("Additional graphics")));
141
entry.lines.push_back(CreditsEntry::Line(_("Quality Assurance")));
142
entry.lines.push_back(CreditsEntry::Line(_("Mapping")));
144
this->entries.push_back(entry);
147
entry.title = "Marcus Ströbel (Maqs):";
150
entry.lines.push_back(CreditsEntry::Line(_("Programming")));
151
entry.lines.push_back(CreditsEntry::Line(_("Quality Assurance")));
153
this->entries.push_back(entry);
156
entry.title = _("Additional Programming:");
159
entry.lines.push_back(CreditsEntry::Line("Siegfried Oleg Pammer (siegi44)"));
160
entry.lines.push_back(CreditsEntry::Line("Lienhart Woitok (liwo)"));
161
entry.lines.push_back(CreditsEntry::Line("Christoph Erhardt (Airhardt)"));
162
entry.lines.push_back(CreditsEntry::Line("Divan"));
163
entry.lines.push_back(CreditsEntry::Line("Cat666"));
164
entry.lines.push_back(CreditsEntry::Line("Devil"));
165
entry.lines.push_back(CreditsEntry::Line("Ikhar Beq (PoC)"));
167
this->entries.push_back(entry);
170
entry.title = _("Additional Graphics:");
173
entry.lines.push_back(CreditsEntry::Line("Marcus Bullin (Parasit)"));
175
this->entries.push_back(entry);
178
entry.title = _("Other Support:");
181
entry.lines.push_back(CreditsEntry::Line("muhahahaha"));
182
entry.lines.push_back(CreditsEntry::Line("Sotham"));
183
entry.lines.push_back(CreditsEntry::Line("Fenan"));
184
entry.lines.push_back(CreditsEntry::Line("Phil Groenewold (Phil333)"));
185
entry.lines.push_back(CreditsEntry::Line("Marc Vester (xaser)"));
187
this->entries.push_back(entry);
190
entry.title = _("Donators");
192
entry.lines.push_back(CreditsEntry::Line(_("various anonymous donators")));
193
entry.lines.push_back(CreditsEntry::Line("Markus Becker"));
194
entry.lines.push_back(CreditsEntry::Line("Karsten Backhaus (K-Duke)"));
195
entry.lines.push_back(CreditsEntry::Line("Patrick Haak (Demophobie)"));
196
entry.lines.push_back(CreditsEntry::Line("Gilles Bordelais"));
197
entry.lines.push_back(CreditsEntry::Line("Dominic Jonas"));
198
entry.lines.push_back(CreditsEntry::Line("Rene Hopf"));
199
entry.lines.push_back(CreditsEntry::Line("Christopher Kuehnel (Spikeone)"));
200
entry.lines.push_back(CreditsEntry::Line("Philipp Strathausen"));
202
entry.lines.push_back(CreditsEntry::Line("Max Skuratov", 1));
203
entry.lines.push_back(CreditsEntry::Line("Marius Loewe", 1));
204
entry.lines.push_back(CreditsEntry::Line("Eric Lutter", 1));
205
entry.lines.push_back(CreditsEntry::Line("Bob Kromonos Achten", 1));
206
entry.lines.push_back(CreditsEntry::Line("morlock", 1));
207
entry.lines.push_back(CreditsEntry::Line("Hans Gabathuler", 1));
208
entry.lines.push_back(CreditsEntry::Line("Jan Montag", 1));
209
entry.lines.push_back(CreditsEntry::Line("Patrick Schefczyk", 1));
210
entry.lastLine = _("Thank you for your donations!");
212
this->entries.push_back(entry);
215
entry.title = _("We hope you enjoy playing Return To The Roots!");
217
entry.lines.push_back(CreditsEntry::Line(_("Thank you!")));
218
entry.lastLine = _("THE END");
220
this->entries.push_back(entry);
223
bool nations[NATION_COUNT] = { true, true, true, true, false };
225
LOADER.LoadFilesAtGame(0, nations);
227
this->it = entries.begin();
228
startTime = bobTime = bobSpawnTime = VideoDriverWrapper::inst().GetTickCount();
230
GetMusic(sng_lst, 8)->Play(0);
69
AddTextButton(0, 300, 550, 200, 22, TC_RED1, _("Back"), NormalFont);
71
// "Die Siedler II.5 RTTR"
72
AddText(1, 400, 10, _("Return To The Roots"), COLOR_YELLOW, glArchivItem_Font::DF_CENTER, LargeFont);
75
AddText(2, 400, 33, _("Credits"), COLOR_YELLOW, glArchivItem_Font::DF_CENTER, LargeFont);
77
CreditsEntry entry = CreditsEntry();
78
entry.title = "Florian Doersch (FloSoft):";
81
entry.lines.push_back(CreditsEntry::Line(_("Project management")));
82
entry.lines.push_back(CreditsEntry::Line(_("Server management")));
83
entry.lines.push_back(CreditsEntry::Line(_("Programming")));
84
entry.lines.push_back(CreditsEntry::Line(_("Website Administration")));
85
entry.lines.push_back(CreditsEntry::Line(_("Website Programming")));
86
entry.lines.push_back(CreditsEntry::Line(_("Quality Assurance")));
88
this->entries.push_back(entry);
91
entry.title = "Oliver Siebert (Oliverr):";
94
entry.lines.push_back(CreditsEntry::Line(_("Project management")));
95
entry.lines.push_back(CreditsEntry::Line(_("Programming")));
96
entry.lines.push_back(CreditsEntry::Line(_("Quality Assurance")));
98
this->entries.push_back(entry);
101
entry.title = "Stefan Schüchl (Z-Stef):";
104
entry.lines.push_back(CreditsEntry::Line(_("Website Administration")));
105
entry.lines.push_back(CreditsEntry::Line(_("Website Programming")));
107
this->entries.push_back(entry);
110
entry.title = "Patrick Haak (Demophobie):";
113
entry.lines.push_back(CreditsEntry::Line(_("Website Administration")));
114
entry.lines.push_back(CreditsEntry::Line(_("Quality Assurance")));
116
this->entries.push_back(entry);
119
entry.title = "Jonas Trampe (NastX):";
122
entry.lines.push_back(CreditsEntry::Line(_("Quality Assurance")));
123
entry.lines.push_back(CreditsEntry::Line(_("Mapping")));
125
this->entries.push_back(entry);
128
entry.title = "Jan-Henrik Kluth (jh):";
131
entry.lines.push_back(CreditsEntry::Line(_("Programming")));
132
entry.lines.push_back(CreditsEntry::Line(_("Artificial Intelligence (AI)")));
134
this->entries.push_back(entry);
137
entry.title = "Christopher Kuehnel (Spikeone):";
140
entry.lines.push_back(CreditsEntry::Line(_("Additional graphics")));
141
entry.lines.push_back(CreditsEntry::Line(_("Quality Assurance")));
142
entry.lines.push_back(CreditsEntry::Line(_("Mapping")));
144
this->entries.push_back(entry);
147
entry.title = "Marcus Ströbel (Maqs):";
150
entry.lines.push_back(CreditsEntry::Line(_("Programming")));
151
entry.lines.push_back(CreditsEntry::Line(_("Quality Assurance")));
153
this->entries.push_back(entry);
156
entry.title = _("Additional Programming:");
159
entry.lines.push_back(CreditsEntry::Line("Siegfried Oleg Pammer (siegi44)"));
160
entry.lines.push_back(CreditsEntry::Line("Lienhart Woitok (liwo)"));
161
entry.lines.push_back(CreditsEntry::Line("Christoph Erhardt (Airhardt)"));
162
entry.lines.push_back(CreditsEntry::Line("Divan"));
163
entry.lines.push_back(CreditsEntry::Line("Cat666"));
164
entry.lines.push_back(CreditsEntry::Line("Devil"));
165
entry.lines.push_back(CreditsEntry::Line("Ikhar Beq (PoC)"));
167
this->entries.push_back(entry);
170
entry.title = _("Additional Graphics:");
173
entry.lines.push_back(CreditsEntry::Line("Marcus Bullin (Parasit)"));
175
this->entries.push_back(entry);
178
entry.title = _("Other Support:");
181
entry.lines.push_back(CreditsEntry::Line("muhahahaha"));
182
entry.lines.push_back(CreditsEntry::Line("Sotham"));
183
entry.lines.push_back(CreditsEntry::Line("Fenan"));
184
entry.lines.push_back(CreditsEntry::Line("Phil Groenewold (Phil333)"));
185
entry.lines.push_back(CreditsEntry::Line("Marc Vester (xaser)"));
187
this->entries.push_back(entry);
190
entry.title = _("Donators");
192
entry.lines.push_back(CreditsEntry::Line(_("various anonymous donators")));
193
entry.lines.push_back(CreditsEntry::Line("Markus Becker"));
194
entry.lines.push_back(CreditsEntry::Line("Karsten Backhaus (K-Duke)"));
195
entry.lines.push_back(CreditsEntry::Line("Patrick Haak (Demophobie)"));
196
entry.lines.push_back(CreditsEntry::Line("Gilles Bordelais"));
197
entry.lines.push_back(CreditsEntry::Line("Dominic Jonas"));
198
entry.lines.push_back(CreditsEntry::Line("Rene Hopf"));
199
entry.lines.push_back(CreditsEntry::Line("Christopher Kuehnel (Spikeone)"));
200
entry.lines.push_back(CreditsEntry::Line("Philipp Strathausen"));
202
entry.lines.push_back(CreditsEntry::Line("Max Skuratov", 1));
203
entry.lines.push_back(CreditsEntry::Line("Marius Loewe", 1));
204
entry.lines.push_back(CreditsEntry::Line("Eric Lutter", 1));
205
entry.lines.push_back(CreditsEntry::Line("Bob Kromonos Achten", 1));
206
entry.lines.push_back(CreditsEntry::Line("morlock", 1));
207
entry.lines.push_back(CreditsEntry::Line("Hans Gabathuler", 1));
208
entry.lines.push_back(CreditsEntry::Line("Jan Montag", 1));
209
entry.lines.push_back(CreditsEntry::Line("Patrick Schefczyk", 1));
210
entry.lastLine = _("Thank you for your donations!");
212
this->entries.push_back(entry);
215
entry.title = _("We hope you enjoy playing Return To The Roots!");
217
entry.lines.push_back(CreditsEntry::Line(_("Thank you!")));
218
entry.lastLine = _("THE END");
220
this->entries.push_back(entry);
223
bool nations[NATION_COUNT] = { true, true, true, true, false };
225
LOADER.LoadFilesAtGame(0, nations);
227
this->it = entries.begin();
228
startTime = bobTime = bobSpawnTime = VideoDriverWrapper::inst().GetTickCount();
230
GetMusic(sng_lst, 8)->Play(0);
233
233
///////////////////////////////////////////////////////////////////////////////
237
237
* @author FloSoft
243
243
///////////////////////////////////////////////////////////////////////////////
247
247
* @author siegi44
249
249
void dskCredits::Msg_PaintAfter()
251
unsigned int time = VideoDriverWrapper::inst().GetTickCount() - startTime;
253
if (time > PAGE_TIME) {
255
if (this->it == entries.end())
256
this->it = entries.begin();
257
this->startTime = VideoDriverWrapper::inst().GetTickCount();
260
// Frameratebegrenzer
261
int bob_time = VideoDriverWrapper::inst().GetTickCount() - bobTime;
264
int bob_spawntime = VideoDriverWrapper::inst().GetTickCount() - bobSpawnTime;
265
int bob_spawnprosec = 5;
267
if(GAMEMANAGER.GetFPS() < 30)
269
else if(GAMEMANAGER.GetFPS() < 60)
271
else if(GAMEMANAGER.GetFPS() < 200)
275
if ( bob_spawnprosec > 0 && bob_spawntime > (1000/bob_spawnprosec) && (int)bobs.size() < (int)(50 + VideoDriverWrapper::inst().GetScreenWidth() / 2))
277
bobSpawnTime = VideoDriverWrapper::inst().GetTickCount();
281
b.speed = 1 + rand() % 4;
283
// links oder rechts spawnen
291
b.x = VideoDriverWrapper::inst().GetScreenWidth();
295
b.color = COLORS[rand() % PLAYER_COLORS_COUNT];
296
unsigned int job = rand() % 29;
298
// exclude "headless" bobs
299
if (job == 8 || job == 9 || job == 12 || job == 18) {
300
job = rand() % (WARE_TYPES_COUNT - 1);
304
job = 35+NATION_RTTR_TO_S2[rand() % 4]*6;
305
else if(job >= JOB_PRIVATE && job <= JOB_GENERAL)
306
job = 30+NATION_RTTR_TO_S2[rand() % 4]*6+job-JOB_PRIVATE;
308
job = JOB_CONSTS[job].jobs_bob_id;
313
b.y = GetCtrl<ctrlButton>(0)->GetY() - 20 - rand() % 150;
318
for (std::list<Bob>::iterator bob = bobs.begin(); bob != bobs.end(); ++bob) {
320
Loader::inst().GetBobN("jobs")->Draw(bob->id, bob->direction, bob->isFat, bob->animationStep, bob->x, bob->y, bob->color);
322
Loader::inst().GetBobN("carrier")->Draw(bob->id, bob->direction, bob->isFat, bob->animationStep, bob->x, bob->y, bob->color);
324
if( bob_time > (1000/bob_prosec) )
326
bobTime = VideoDriverWrapper::inst().GetTickCount();
328
bob->animationStep++;
329
if (bob->animationStep > 7)
330
bob->animationStep = 0;
331
if (bob->direction == 3) {
332
bob->x += bob->speed;
333
if (bob->x > VideoDriverWrapper::inst().GetScreenWidth())
335
} else if (bob->direction == 6) {
336
bob->x -= bob->speed;
343
// Frameratebegrenzer aktualisieren
344
if( bob_time > (1000/bob_prosec) )
345
bobTime = VideoDriverWrapper::inst().GetTickCount();
347
// calculate text transparency
348
unsigned transparency = 0xFF;
350
if(time < FADING_TIME)
351
transparency = 0xFF * time / FADING_TIME;
352
if (time > PAGE_TIME-FADING_TIME)
353
transparency = (0xFF - 0xFF*(time-(PAGE_TIME-FADING_TIME))/FADING_TIME);
355
if (time > PAGE_TIME)
358
transparency=transparency<<24;
361
LargeFont->Draw(40, 100, it->title, 0, (COLOR_RED & 0x00FFFFFF) | transparency);
363
unsigned int y[2] = {150, 150};
365
for(std::list<CreditsEntry::Line>::iterator line = this->it->lines.begin(); line != it->lines.end(); ++line)
367
LargeFont->Draw(60 + line->column * 350, y[line->column], line->line.c_str(), 0, (COLOR_YELLOW & 0x00FFFFFF) | transparency);
368
y[line->column] += LargeFont->getHeight() + 5;
371
LargeFont->Draw(40, y[0] + 20, it->lastLine, 0, (COLOR_RED & 0x00FFFFFF) | transparency);
374
glArchivItem_Bitmap *item = LOADER.GetImageN("credits", it->picId);
377
item->Draw(VideoDriverWrapper::inst().GetScreenWidth() - 300, 70, 0, 0, 0, 0, 0, 0, (COLOR_WHITE & 0x00FFFFFF) | transparency);
251
unsigned int time = VideoDriverWrapper::inst().GetTickCount() - startTime;
253
if (time > PAGE_TIME)
256
if (this->it == entries.end())
257
this->it = entries.begin();
258
this->startTime = VideoDriverWrapper::inst().GetTickCount();
261
// Frameratebegrenzer
262
int bob_time = VideoDriverWrapper::inst().GetTickCount() - bobTime;
265
int bob_spawntime = VideoDriverWrapper::inst().GetTickCount() - bobSpawnTime;
266
int bob_spawnprosec = 5;
268
if(GAMEMANAGER.GetFPS() < 30)
270
else if(GAMEMANAGER.GetFPS() < 60)
272
else if(GAMEMANAGER.GetFPS() < 200)
276
if ( bob_spawnprosec > 0 && bob_spawntime > (1000 / bob_spawnprosec) && (int)bobs.size() < (int)(50 + VideoDriverWrapper::inst().GetScreenWidth() / 2))
278
bobSpawnTime = VideoDriverWrapper::inst().GetTickCount();
282
b.speed = 1 + rand() % 4;
284
// links oder rechts spawnen
292
b.x = VideoDriverWrapper::inst().GetScreenWidth();
296
b.color = COLORS[rand() % PLAYER_COLORS_COUNT];
297
unsigned int job = rand() % 29;
299
// exclude "headless" bobs
300
if (job == 8 || job == 9 || job == 12 || job == 18)
302
job = rand() % (WARE_TYPES_COUNT - 1);
308
job = 35 + NATION_RTTR_TO_S2[rand() % 4] * 6;
309
else if(job >= JOB_PRIVATE && job <= JOB_GENERAL)
310
job = 30 + NATION_RTTR_TO_S2[rand() % 4] * 6 + job - JOB_PRIVATE;
312
job = JOB_CONSTS[job].jobs_bob_id;
317
b.y = GetCtrl<ctrlButton>(0)->GetY() - 20 - rand() % 150;
322
for (std::list<Bob>::iterator bob = bobs.begin(); bob != bobs.end(); ++bob)
325
Loader::inst().GetBobN("jobs")->Draw(bob->id, bob->direction, bob->isFat, bob->animationStep, bob->x, bob->y, bob->color);
327
Loader::inst().GetBobN("carrier")->Draw(bob->id, bob->direction, bob->isFat, bob->animationStep, bob->x, bob->y, bob->color);
329
if( bob_time > (1000 / bob_prosec) )
331
bobTime = VideoDriverWrapper::inst().GetTickCount();
333
bob->animationStep++;
334
if (bob->animationStep > 7)
335
bob->animationStep = 0;
336
if (bob->direction == 3)
338
bob->x += bob->speed;
339
if (bob->x > VideoDriverWrapper::inst().GetScreenWidth())
342
else if (bob->direction == 6)
344
bob->x -= bob->speed;
351
// Frameratebegrenzer aktualisieren
352
if( bob_time > (1000 / bob_prosec) )
353
bobTime = VideoDriverWrapper::inst().GetTickCount();
355
// calculate text transparency
356
unsigned transparency = 0xFF;
358
if(time < FADING_TIME)
359
transparency = 0xFF * time / FADING_TIME;
360
if (time > PAGE_TIME - FADING_TIME)
361
transparency = (0xFF - 0xFF * (time - (PAGE_TIME - FADING_TIME)) / FADING_TIME);
363
if (time > PAGE_TIME)
366
transparency = transparency << 24;
369
LargeFont->Draw(40, 100, it->title, 0, (COLOR_RED & 0x00FFFFFF) | transparency);
371
unsigned int y[2] = {150, 150};
373
for(std::list<CreditsEntry::Line>::iterator line = this->it->lines.begin(); line != it->lines.end(); ++line)
375
LargeFont->Draw(60 + line->column * 350, y[line->column], line->line.c_str(), 0, (COLOR_YELLOW & 0x00FFFFFF) | transparency);
376
y[line->column] += LargeFont->getHeight() + 5;
379
LargeFont->Draw(40, y[0] + 20, it->lastLine, 0, (COLOR_RED & 0x00FFFFFF) | transparency);
382
glArchivItem_Bitmap* item = LOADER.GetImageN("credits", it->picId);
385
item->Draw(VideoDriverWrapper::inst().GetScreenWidth() - 300, 70, 0, 0, 0, 0, 0, 0, (COLOR_WHITE & 0x00FFFFFF) | transparency);
380
388
///////////////////////////////////////////////////////////////////////////////
384
392
* @author siegi44
386
394
bool dskCredits::Close(void)
388
WindowManager::inst().Switch(new dskMainMenu());
396
WindowManager::inst().Switch(new dskMainMenu());
392
400
///////////////////////////////////////////////////////////////////////////////
396
404
* @author siegi44
398
406
bool dskCredits::Msg_KeyDown(const KeyEvent& ke)
404
412
void dskCredits::Msg_ButtonClick(const unsigned ctrl_id)
409
417
///////////////////////////////////////////////////////////////////////////////