diff --git a/desktop_version/src/Game.cpp b/desktop_version/src/Game.cpp index e3cd9085..c2881233 100644 --- a/desktop_version/src/Game.cpp +++ b/desktop_version/src/Game.cpp @@ -395,6 +395,101 @@ Game::Game(void): //updatestate(dwgfx, map, obj, help, music); skipfakeload = false; + + /* Terry's Patrons... */ + superpatrons.push_back("Anders Ekermo"); + superpatrons.push_back("Andreas K|mper"); + superpatrons.push_back("Anthony Burch"); + superpatrons.push_back("Bennett Foddy"); + superpatrons.push_back("Brendan O'Sullivan"); + superpatrons.push_back("Christopher Armstrong"); + superpatrons.push_back("Daniel Benmergui"); + superpatrons.push_back("David Pittman"); + superpatrons.push_back("Ian Bogost"); + superpatrons.push_back("Jaz McDougall"); + superpatrons.push_back("John Faulkenbury"); + superpatrons.push_back("Jonathan Whiting"); + superpatrons.push_back("Kyle Pulver"); + superpatrons.push_back("Markus Persson"); + superpatrons.push_back("Nathan Ostgard"); + superpatrons.push_back("Nick Easler"); + superpatrons.push_back("Stephen Lavelle"); + patrons.push_back("Adam Wendt"); + patrons.push_back("Andreas J{rgensen"); + patrons.push_back("}ngel Louzao Penalva"); + patrons.push_back("Ashley Burton"); + patrons.push_back("Aubrey Hesselgren"); + patrons.push_back("Bradley Rose"); + patrons.push_back("Brendan Urquhart"); + patrons.push_back("Chris Ayotte"); + patrons.push_back("Christopher Zamanillo"); + patrons.push_back("Daniel Schuller"); + patrons.push_back("Hybrid Mind Studios"); + patrons.push_back("Emilie McGinley"); + patrons.push_back("Francisco Solares"); + patrons.push_back("Hal Helms"); + patrons.push_back("Hayden Scott-Baron"); + patrons.push_back("Hermit Games"); + patrons.push_back("Ido Yehieli"); + patrons.push_back("Jade Vault Games"); + patrons.push_back("James Andrews"); + patrons.push_back("James Riley"); + patrons.push_back("James Hsieh"); + patrons.push_back("Jasper Byrne"); + patrons.push_back("Jedediah Baker"); + patrons.push_back("Jens Bergensten"); + patrons.push_back("Jeremy J. Penner"); + patrons.push_back("Jeremy Peterson"); + patrons.push_back("Jim McGinley"); + patrons.push_back("Jonathan Cartwright"); + patrons.push_back("John Nesky"); + patrons.push_back("Jos Yule"); + patrons.push_back("Jose Flores"); + patrons.push_back("Josh Bizeau"); + patrons.push_back("Joshua Buergel"); + patrons.push_back("Joshua Hochner"); + patrons.push_back("Kurt Ostfeld"); + patrons.push_back("Magnus P~lsson"); + patrons.push_back("Mark Neschadimenko"); + patrons.push_back("Matt Antonellis"); + patrons.push_back("Matthew Reppert"); + patrons.push_back("Michael Falkensteiner"); + patrons.push_back("Michael Vendittelli"); + patrons.push_back("Mike Kasprzak"); + patrons.push_back("Mitchel Stein"); + patrons.push_back("Sean Murray"); + patrons.push_back("Simon Michael"); + patrons.push_back("Simon Schmid"); + patrons.push_back("Stephen Maxwell"); + patrons.push_back("Swing Swing Submarine"); + patrons.push_back("Tam Toucan"); + patrons.push_back("Terry Dooher"); + patrons.push_back("Tim W."); + patrons.push_back("Timothy Bragan"); + + /* CONTRIBUTORS.txt, again listed alphabetically (according to `sort`) by last name */ + githubfriends.push_back("Christoph B{hmwalder"); + githubfriends.push_back("Charlie Bruce"); + githubfriends.push_back("Brian Callahan"); + githubfriends.push_back("Dav999"); + githubfriends.push_back("Allison Fleischer"); + githubfriends.push_back("Daniel Lee"); + githubfriends.push_back("Elliott Saltar"); + githubfriends.push_back("Marvin Scholz"); + githubfriends.push_back("Keith Stellyes"); + githubfriends.push_back("Elijah Stone"); + githubfriends.push_back("Thomas S|nger"); + githubfriends.push_back("Info Teddy"); + githubfriends.push_back("leo60228"); + githubfriends.push_back("Emmanuel Vadot"); + githubfriends.push_back("Remi Verschelde"); // TODO: Change to "RĂ©mi" if/when UTF-8 support is added + githubfriends.push_back("viri"); + githubfriends.push_back("Wouter"); + + /* Calculate credits length, finally. */ + creditmaxposition = 1050 + (10 * ( + superpatrons.size() + patrons.size() + githubfriends.size() + )); } Game::~Game(void) diff --git a/desktop_version/src/Game.h b/desktop_version/src/Game.h index 708fa149..c52f4deb 100644 --- a/desktop_version/src/Game.h +++ b/desktop_version/src/Game.h @@ -220,6 +220,10 @@ public: int timetrialpar, timetrialresulttime, timetrialrank; int creditposition; + int creditmaxposition; + std::vector superpatrons; + std::vector patrons; + std::vector githubfriends; bool insecretlab; bool inintermission; diff --git a/desktop_version/src/Input.cpp b/desktop_version/src/Input.cpp index a97e614d..847c2600 100644 --- a/desktop_version/src/Input.cpp +++ b/desktop_version/src/Input.cpp @@ -2478,13 +2478,13 @@ void gamecompleteinput(KeyPoll& key, Graphics& dwgfx, Game& game, mapclass& map, if (key.isDown(KEYBOARD_z) || key.isDown(KEYBOARD_SPACE) || key.isDown(KEYBOARD_v) || key.isDown(game.controllerButton_flip)) { game.creditposition -= 6; - if (game.creditposition <= -1650) + if (game.creditposition <= -game.creditmaxposition) { if(dwgfx.fademode==0) { dwgfx.fademode = 2; } - game.creditposition = -1650; + game.creditposition = -game.creditmaxposition; } else { diff --git a/desktop_version/src/Logic.cpp b/desktop_version/src/Logic.cpp index 7849612a..2efd28d1 100644 --- a/desktop_version/src/Logic.cpp +++ b/desktop_version/src/Logic.cpp @@ -53,9 +53,9 @@ void gamecompletelogic(Graphics& dwgfx, Game& game, entityclass& obj, musicclas map.tdrawback = true; game.creditposition--; - if (game.creditposition <= -1650) + if (game.creditposition <= -game.creditmaxposition) { - game.creditposition = -1650; + game.creditposition = -game.creditmaxposition; map.bscroll = 0; } else diff --git a/desktop_version/src/titlerender.cpp b/desktop_version/src/titlerender.cpp index 2320d95b..dc5d3c4b 100644 --- a/desktop_version/src/titlerender.cpp +++ b/desktop_version/src/titlerender.cpp @@ -1337,98 +1337,64 @@ void gamecompleterender(Graphics& dwgfx, Game& game, entityclass& obj, UtilityCl { dwgfx.Print(40, 680 + game.creditposition, "C++ Port by", tr, tg, tb); dwgfx.bigprint(60, 690 + game.creditposition, "Simon Roth", tr, tg, tb); + dwgfx.bigprint(60, 710 + game.creditposition, "Ethan Lee", tr, tg, tb); } - if (dwgfx.onscreen(720 + game.creditposition)) + if (dwgfx.onscreen(740 + game.creditposition)) { - dwgfx.Print(40, 720 + game.creditposition, "Beta Testing by", tr, tg, tb); - dwgfx.bigprint(60, 730 + game.creditposition, "Sam Kaplan", tr, tg, tb); - dwgfx.bigprint(60, 750 + game.creditposition, "Pauli Kohberger", tr, tg, tb); + dwgfx.Print(40, 740 + game.creditposition, "Beta Testing by", tr, tg, tb); + dwgfx.bigprint(60, 750 + game.creditposition, "Sam Kaplan", tr, tg, tb); + dwgfx.bigprint(60, 770 + game.creditposition, "Pauli Kohberger", tr, tg, tb); } - if (dwgfx.onscreen(780 + game.creditposition)) + if (dwgfx.onscreen(800 + game.creditposition)) { - dwgfx.Print(40, 780 + game.creditposition, "Ending Picture by", tr, tg, tb); - dwgfx.bigprint(60, 790 + game.creditposition, "Pauli Kohberger", tr, tg, tb); + dwgfx.Print(40, 800 + game.creditposition, "Ending Picture by", tr, tg, tb); + dwgfx.bigprint(60, 810 + game.creditposition, "Pauli Kohberger", tr, tg, tb); } - if (dwgfx.onscreen(870 + game.creditposition)) dwgfx.bigprint( -1, 870 + game.creditposition, "Patrons", tr, tg, tb, true, 3); + if (dwgfx.onscreen(890 + game.creditposition)) dwgfx.bigprint( -1, 870 + game.creditposition, "Patrons", tr, tg, tb, true, 3); - if (dwgfx.onscreen(910 + game.creditposition)) dwgfx.Print(-1, 910 + game.creditposition,"Anders Ekermo", tr, tg, tb, true); - if (dwgfx.onscreen(920 + game.creditposition)) dwgfx.Print(-1, 920 + game.creditposition,"Andreas K|mper", tr, tg, tb, true); - if (dwgfx.onscreen(930 + game.creditposition)) dwgfx.Print(-1, 930 + game.creditposition,"Anthony Burch", tr, tg, tb, true); - if (dwgfx.onscreen(940 + game.creditposition)) dwgfx.Print(-1, 940 + game.creditposition,"Bennett Foddy", tr, tg, tb, true); - if (dwgfx.onscreen(950 + game.creditposition)) dwgfx.Print(-1, 950 + game.creditposition,"Brendan O'Sullivan", tr, tg, tb, true); - if (dwgfx.onscreen(960 + game.creditposition)) dwgfx.Print(-1, 960 + game.creditposition,"Christopher Armstrong", tr, tg, tb, true); - if (dwgfx.onscreen(970 + game.creditposition)) dwgfx.Print(-1, 970 + game.creditposition,"Daniel Benmergui", tr, tg, tb, true); - if (dwgfx.onscreen(980 + game.creditposition)) dwgfx.Print(-1, 980 + game.creditposition,"David Pittman", tr, tg, tb, true); - if (dwgfx.onscreen(990 + game.creditposition)) dwgfx.Print(-1, 990 + game.creditposition,"Ian Bogost", tr, tg, tb, true); - if (dwgfx.onscreen(1000 + game.creditposition)) dwgfx.Print(-1, 1000 + game.creditposition,"Jaz McDougall", tr, tg, tb, true); - if (dwgfx.onscreen(1010 + game.creditposition)) dwgfx.Print(-1, 1010 + game.creditposition,"John Faulkenbury", tr, tg, tb, true); - if (dwgfx.onscreen(1020 + game.creditposition)) dwgfx.Print(-1, 1020 + game.creditposition,"Jonathan Whiting", tr, tg, tb, true); - if (dwgfx.onscreen(1030 + game.creditposition)) dwgfx.Print(-1, 1030 + game.creditposition,"Kyle Pulver", tr, tg, tb, true); - if (dwgfx.onscreen(1040 + game.creditposition)) dwgfx.Print(-1, 1040 + game.creditposition,"Markus Persson", tr, tg, tb, true); - if (dwgfx.onscreen(1050 + game.creditposition)) dwgfx.Print(-1, 1050 + game.creditposition,"Nathan Ostgard", tr, tg, tb, true); - if (dwgfx.onscreen(1060 + game.creditposition)) dwgfx.Print(-1, 1060 + game.creditposition,"Nick Easler", tr, tg, tb, true); - if (dwgfx.onscreen(1070 + game.creditposition)) dwgfx.Print(-1, 1070 + game.creditposition,"Stephen Lavelle", tr, tg, tb, true); + int creditOffset = 930; - if (dwgfx.onscreen(1090 + game.creditposition)) dwgfx.Print( -1, 1090 + game.creditposition, "and", tr, tg, tb, true); + for (size_t i = 0; i < game.superpatrons.size(); i += 1) + { + if (dwgfx.onscreen(creditOffset + game.creditposition)) + { + dwgfx.Print(-1, creditOffset + game.creditposition, game.superpatrons[i], tr, tg, tb, true); + } + creditOffset += 10; + } - if (dwgfx.onscreen(1110 + game.creditposition)) dwgfx.Print(-1, 1110 + game.creditposition,"Adam Wendt", tr, tg, tb, true); - if (dwgfx.onscreen(1110 + game.creditposition)) dwgfx.Print(-1, 1120 + game.creditposition,"Andreas J{rgensen", tr, tg, tb, true); - if (dwgfx.onscreen(1120 + game.creditposition)) dwgfx.Print(-1, 1130 + game.creditposition,"}ngel Louzao Penalva", tr, tg, tb, true); - if (dwgfx.onscreen(1130 + game.creditposition)) dwgfx.Print(-1, 1140 + game.creditposition,"Ashley Burton", tr, tg, tb, true); - if (dwgfx.onscreen(1140 + game.creditposition)) dwgfx.Print(-1, 1150 + game.creditposition,"Aubrey Hesselgren", tr, tg, tb, true); - if (dwgfx.onscreen(1150 + game.creditposition)) dwgfx.Print(-1, 1160 + game.creditposition,"Bradley Rose", tr, tg, tb, true); - if (dwgfx.onscreen(1160 + game.creditposition)) dwgfx.Print(-1, 1170 + game.creditposition,"Brendan Urquhart", tr, tg, tb, true); - if (dwgfx.onscreen(1170 + game.creditposition)) dwgfx.Print(-1, 1180 + game.creditposition,"Chris Ayotte", tr, tg, tb, true); - if (dwgfx.onscreen(1180 + game.creditposition)) dwgfx.Print(-1, 1190 + game.creditposition,"Christopher Zamanillo", tr, tg, tb, true); - if (dwgfx.onscreen(1190 + game.creditposition)) dwgfx.Print(-1, 1200 + game.creditposition,"Daniel Schuller", tr, tg, tb, true); - if (dwgfx.onscreen(1200 + game.creditposition)) dwgfx.Print(-1, 1210 + game.creditposition,"Hybrid Mind Studios", tr, tg, tb, true); - if (dwgfx.onscreen(1210 + game.creditposition)) dwgfx.Print(-1, 1220 + game.creditposition,"Emilie McGinley", tr, tg, tb, true); - if (dwgfx.onscreen(1220 + game.creditposition)) dwgfx.Print(-1, 1230 + game.creditposition,"Francisco Solares", tr, tg, tb, true); - if (dwgfx.onscreen(1230 + game.creditposition)) dwgfx.Print(-1, 1240 + game.creditposition,"Hal Helms", tr, tg, tb, true); - if (dwgfx.onscreen(1240 + game.creditposition)) dwgfx.Print(-1, 1250 + game.creditposition,"Hayden Scott-Baron", tr, tg, tb, true); - if (dwgfx.onscreen(1250 + game.creditposition)) dwgfx.Print(-1, 1260 + game.creditposition,"Hermit Games", tr, tg, tb, true); - if (dwgfx.onscreen(1260 + game.creditposition)) dwgfx.Print(-1, 1270 + game.creditposition,"Ido Yehieli", tr, tg, tb, true); - if (dwgfx.onscreen(1270 + game.creditposition)) dwgfx.Print(-1, 1280 + game.creditposition,"Jade Vault Games", tr, tg, tb, true); - if (dwgfx.onscreen(1280 + game.creditposition)) dwgfx.Print(-1, 1290 + game.creditposition,"James Andrews", tr, tg, tb, true); - if (dwgfx.onscreen(1290 + game.creditposition)) dwgfx.Print(-1, 1300 + game.creditposition,"James Riley", tr, tg, tb, true); - if (dwgfx.onscreen(1300 + game.creditposition)) dwgfx.Print(-1, 1310 + game.creditposition,"James Hsieh", tr, tg, tb, true); - if (dwgfx.onscreen(1310 + game.creditposition)) dwgfx.Print(-1, 1320 + game.creditposition,"Jasper Byrne", tr, tg, tb, true); - if (dwgfx.onscreen(1320 + game.creditposition)) dwgfx.Print(-1, 1330 + game.creditposition,"Jedediah Baker", tr, tg, tb, true); - if (dwgfx.onscreen(1330 + game.creditposition)) dwgfx.Print(-1, 1340 + game.creditposition,"Jens Bergensten", tr, tg, tb, true); - if (dwgfx.onscreen(1340 + game.creditposition)) dwgfx.Print(-1, 1350 + game.creditposition,"Jeremy J. Penner", tr, tg, tb, true); - if (dwgfx.onscreen(1350 + game.creditposition)) dwgfx.Print(-1, 1360 + game.creditposition,"Jeremy Peterson", tr, tg, tb, true); - if (dwgfx.onscreen(1360 + game.creditposition)) dwgfx.Print(-1, 1370 + game.creditposition,"Jim McGinley", tr, tg, tb, true); - if (dwgfx.onscreen(1370 + game.creditposition)) dwgfx.Print(-1, 1380 + game.creditposition,"Jonathan Cartwright", tr, tg, tb, true); - if (dwgfx.onscreen(1380 + game.creditposition)) dwgfx.Print(-1, 1390 + game.creditposition,"John Nesky", tr, tg, tb, true); - if (dwgfx.onscreen(1390 + game.creditposition)) dwgfx.Print(-1, 1400 + game.creditposition,"Jos Yule", tr, tg, tb, true); - if (dwgfx.onscreen(1400 + game.creditposition)) dwgfx.Print(-1, 1410 + game.creditposition,"Jose Flores", tr, tg, tb, true); - if (dwgfx.onscreen(1410 + game.creditposition)) dwgfx.Print(-1, 1420 + game.creditposition,"Josh Bizeau", tr, tg, tb, true); - if (dwgfx.onscreen(1420 + game.creditposition)) dwgfx.Print(-1, 1430 + game.creditposition,"Joshua Buergel", tr, tg, tb, true); - if (dwgfx.onscreen(1430 + game.creditposition)) dwgfx.Print(-1, 1440 + game.creditposition,"Joshua Hochner", tr, tg, tb, true); - if (dwgfx.onscreen(1440 + game.creditposition)) dwgfx.Print(-1, 1450 + game.creditposition,"Kurt Ostfeld", tr, tg, tb, true); - if (dwgfx.onscreen(1450 + game.creditposition)) dwgfx.Print(-1, 1460 + game.creditposition, "Magnus P~lsson", tr, tg, tb, true); - if (dwgfx.onscreen(1460 + game.creditposition)) dwgfx.Print(-1, 1470 + game.creditposition,"Mark Neschadimenko", tr, tg, tb, true); - if (dwgfx.onscreen(1470 + game.creditposition)) dwgfx.Print(-1, 1480 + game.creditposition,"Matt Antonellis", tr, tg, tb, true); - if (dwgfx.onscreen(1480 + game.creditposition)) dwgfx.Print(-1, 1490 + game.creditposition,"Matthew Reppert", tr, tg, tb, true); - if (dwgfx.onscreen(1490 + game.creditposition)) dwgfx.Print(-1, 1500 + game.creditposition,"Michael Falkensteiner", tr, tg, tb, true); - if (dwgfx.onscreen(1500 + game.creditposition)) dwgfx.Print(-1, 1510 + game.creditposition,"Michael Vendittelli", tr, tg, tb, true); - if (dwgfx.onscreen(1510 + game.creditposition)) dwgfx.Print(-1, 1520 + game.creditposition,"Mike Kasprzak", tr, tg, tb, true); - if (dwgfx.onscreen(1520 + game.creditposition)) dwgfx.Print(-1, 1530 + game.creditposition,"Mitchel Stein", tr, tg, tb, true); - if (dwgfx.onscreen(1530 + game.creditposition)) dwgfx.Print(-1, 1540 + game.creditposition,"Sean Murray", tr, tg, tb, true); - if (dwgfx.onscreen(1540 + game.creditposition)) dwgfx.Print(-1, 1550 + game.creditposition,"Simon Michael", tr, tg, tb, true); - if (dwgfx.onscreen(1550 + game.creditposition)) dwgfx.Print(-1, 1560 + game.creditposition,"Simon Schmid", tr, tg, tb, true); - if (dwgfx.onscreen(1560 + game.creditposition)) dwgfx.Print(-1, 1570 + game.creditposition,"Stephen Maxwell", tr, tg, tb, true); - if (dwgfx.onscreen(1570 + game.creditposition)) dwgfx.Print(-1, 1580 + game.creditposition,"Swing Swing Submarine", tr, tg, tb, true); - if (dwgfx.onscreen(1580 + game.creditposition)) dwgfx.Print(-1, 1590 + game.creditposition,"Tam Toucan", tr, tg, tb, true); - if (dwgfx.onscreen(1590 + game.creditposition)) dwgfx.Print(-1, 1600 + game.creditposition,"Terry Dooher", tr, tg, tb, true); - if (dwgfx.onscreen(1600 + game.creditposition)) dwgfx.Print(-1, 1610 + game.creditposition,"Tim W.", tr, tg, tb, true); - if (dwgfx.onscreen(1610 + game.creditposition)) dwgfx.Print( -1, 1620 + game.creditposition, "Timothy Bragan", tr, tg, tb, true); + creditOffset += 10; + if (dwgfx.onscreen(creditOffset + game.creditposition)) dwgfx.Print( -1, creditOffset + game.creditposition, "and", tr, tg, tb, true); + creditOffset += 20; - if (dwgfx.onscreen(1760 + game.creditposition)) dwgfx.bigprint( -1, 1760 + game.creditposition, "Thanks for playing!", tr, tg, tb, true, 2); + for (size_t i = 0; i < game.patrons.size(); i += 1) + { + if (dwgfx.onscreen(creditOffset + game.creditposition)) + { + dwgfx.Print(-1, creditOffset + game.creditposition, game.patrons[i], tr, tg, tb, true); + } + creditOffset += 10; + } + + creditOffset += 20; + if (dwgfx.onscreen(creditOffset + game.creditposition)) dwgfx.bigprint(40, creditOffset + game.creditposition, "GitHub Contributors", tr, tg, tb, true); + creditOffset += 30; + + for (size_t i = 0; i < game.githubfriends.size(); i += 1) + { + if (dwgfx.onscreen(creditOffset + game.creditposition)) + { + dwgfx.Print(-1, creditOffset + game.creditposition, game.githubfriends[i], tr, tg, tb, true); + } + creditOffset += 10; + } + + creditOffset += 140; + if (dwgfx.onscreen(creditOffset + game.creditposition)) dwgfx.bigprint( -1, creditOffset + game.creditposition, "Thanks for playing!", tr, tg, tb, true, 2); if (game.test) {