1
0
mirror of https://github.com/TerryCavanagh/VVVVVV.git synced 2024-06-03 03:23:33 +02:00
This commit is contained in:
RMGRich 2020-01-18 00:30:37 -06:00
commit 042ceee6b4
11 changed files with 87 additions and 42 deletions

View File

@ -7,7 +7,8 @@ VVVVVV's source code is made available under a [custom license](LICENSE.md), whi
| Project | Creator | Description | Conditions | Link |
|---|---|---|---|---|
| VVVVVVwasm|kotborealis|Web Assembly port of VVVVVV| Must compile with the makeandplay define set, cannot distribute the original levels. | [github repo](https://github.com/kotborealis/VVVVVVwasm) |
| VVVVVV: Community Edition | https://github.com/v6cord/VVVVVV-CE/graphs/contributors | Community fork of VVVVVV focused on expanding the capibilities of player levels. | Must compile with the makeandplay define set, cannot distribute the original levels. | [github repo](https://github.com/v6cord/VVVVVV-CE) |
| cursed_vvvvvv.exe | MustardBucket | Modified version of VVVVVV where instead of flipping gravity you jump normally, can jump multiple times, and wall jump. | Make it impossible to revert to ordinary flipping behaviour. | [download](https://mustardbucket.itch.io/cursed-vvvvvv?secret=O0KvS02wD473pXBF9avreZsww), [twitter gif](https://twitter.com/mustard_bucket/status/1216272971779670016) |
| VVVVVV: Community Edition | https://github.com/v6cord/VVVVVV-CE/graphs/contributors | Community fork of VVVVVV focused on expanding the capabilities of player levels. | Must compile with the makeandplay define set, cannot distribute the original levels. | [github repo](https://github.com/v6cord/VVVVVV-CE) |
| cursed_vvvvvv.exe | [MustardBucket](https://twitter.com/mustard_bucket/) | Modified version of VVVVVV where instead of flipping gravity you jump normally, can jump multiple times, and wall jump. | Make it impossible to revert to ordinary flipping behaviour. | [download](https://mustardbucket.itch.io/cursed-vvvvvv?secret=O0KvS02wD473pXBF9avreZsww), [twitter gif](https://twitter.com/mustard_bucket/status/1216272971779670016) |
| Haiku Port | [Julius C. Enriquez](https://github.com/win8linux) | Port for the Haiku operating system. | Display the following text in the Haiku package to make it clear that this is an exception: "VVVVVV is a commercial game! The author has given special permission to make this Haiku version available for free. If you enjoy the game, please consider purchasing a copy at [thelettervsixtim.es](http://thelettervsixtim.es)." | (coming soon) |
In general, if you're interested in creating something that falls outside the license terms, [get in touch with Terry!](http://distractionware.com/email/)

View File

@ -98,6 +98,13 @@ int FILESYSTEM_init(char *argvZero)
);
return 0;
}
strcpy(output, PHYSFS_getBaseDir());
strcpy(output, "gamecontrollerdb.txt");
if (SDL_GameControllerAddMappingsFromFile(output) < 0)
{
printf("gamecontrollerdb.txt not found!\n");
}
return 1;
}

View File

@ -4438,6 +4438,11 @@ void Game::loadstats( mapclass& map, Graphics& dwgfx )
skipfakeload = atoi(pText);
}
if (pKey == "notextoutline")
{
dwgfx.notextoutline = atoi(pText);
}
if (pKey == "flipButton")
{
SDL_GameControllerButton newButton;
@ -4647,6 +4652,10 @@ void Game::savestats( mapclass& _map, Graphics& _dwgfx )
msg->LinkEndChild(new TiXmlText(tu.String((int) skipfakeload).c_str()));
dataNode->LinkEndChild(msg);
msg = new TiXmlElement("notextoutline");
msg->LinkEndChild(new TiXmlText(tu.String((int) _dwgfx.notextoutline).c_str()));
dataNode->LinkEndChild(msg);
for (size_t i = 0; i < controllerButton_flip.size(); i += 1)
{
msg = new TiXmlElement("flipButton");
@ -7025,17 +7034,19 @@ void Game::createmenu( std::string t )
menuoptionsactive[0] = true;
menuoptions[1] = "screen effects";
menuoptionsactive[1] = true;
menuoptions[2] = "invincibility";
menuoptions[2] = "text outline";
menuoptionsactive[2] = true;
menuoptions[3] = "slowdown";
menuoptions[3] = "invincibility";
menuoptionsactive[3] = true;
menuoptions[4] = "load screen";
menuoptions[4] = "slowdown";
menuoptionsactive[4] = true;
menuoptions[5] = "return";
menuoptions[5] = "load screen";
menuoptionsactive[5] = true;
nummenuoptions = 6;
menuxoff = -40;
menuyoff = 16;
menuoptions[6] = "return";
menuoptionsactive[6] = true;
nummenuoptions = 7;
menuxoff = -60;
menuyoff = 0;
}
else if(t == "controller")
{

View File

@ -32,6 +32,7 @@ Graphics::Graphics()
showcutscenebars = false;
cutscenebarspos = 0;
notextoutline = false;
flipmode = false;
setflipmode = false;
@ -398,19 +399,22 @@ void Graphics::bprint(int x, int y, std::string t, int r, int g, int b, bool cen
t = "beef";
#endif
//printmask(x, y, t, cen);
Print(x, y - 1, t, 0, 0, 0, cen);
if (cen)
if (!notextoutline)
{
//TODO find different
PrintOff(-1, y, t, 0, 0, 0, cen);
PrintOff(1, y, t, 0, 0, 0, cen);
Print(x, y - 1, t, 0, 0, 0, cen);
if (cen)
{
//TODO find different
PrintOff(-1, y, t, 0, 0, 0, cen);
PrintOff(1, y, t, 0, 0, 0, cen);
}
else
{
Print(x -1, y, t, 0, 0, 0, cen);
Print(x +1, y, t, 0, 0, 0, cen);
}
Print(x, y+1, t, 0, 0, 0, cen);
}
else
{
Print(x -1, y, t, 0, 0, 0, cen);
Print(x +1, y, t, 0, 0, 0, cen);
}
Print(x, y+1, t, 0, 0, 0, cen);
Print(x, y, t, r, g, b, cen);
}

View File

@ -218,6 +218,7 @@ public:
bool flipmode;
bool setflipmode;
bool notextoutline;
point tl;
//buffer objects. //TODO refactor buffer objects
SDL_Surface* backBuffer;

View File

@ -609,7 +609,7 @@ SDL_assert(0 && "Remove open level dir");
//back
music.playef(11, 10);
game.createmenu("accessibility");
game.currentmenuoption = 2;
game.currentmenuoption = 3;
map.nexttowercolour();
}
else
@ -620,7 +620,7 @@ SDL_assert(0 && "Remove open level dir");
game.savestats(map, dwgfx);
music.playef(11, 10);
game.createmenu("accessibility");
game.currentmenuoption = 2;
game.currentmenuoption = 3;
map.nexttowercolour();
}
}
@ -631,7 +631,7 @@ SDL_assert(0 && "Remove open level dir");
//back
music.playef(11, 10);
game.createmenu("accessibility");
game.currentmenuoption = 3;
game.currentmenuoption = 4;
map.nexttowercolour();
}
else
@ -654,7 +654,7 @@ SDL_assert(0 && "Remove open level dir");
game.savestats(map, dwgfx);
music.playef(11, 10);
game.createmenu("accessibility");
game.currentmenuoption = 3;
game.currentmenuoption = 4;
map.nexttowercolour();
}
else if (game.currentmenuoption == 1)
@ -664,7 +664,7 @@ SDL_assert(0 && "Remove open level dir");
game.savestats(map, dwgfx);
music.playef(11, 10);
game.createmenu("accessibility");
game.currentmenuoption = 3;
game.currentmenuoption = 4;
map.nexttowercolour();
}
else if (game.currentmenuoption == 2)
@ -674,7 +674,7 @@ SDL_assert(0 && "Remove open level dir");
game.savestats(map, dwgfx);
music.playef(11, 10);
game.createmenu("accessibility");
game.currentmenuoption = 3;
game.currentmenuoption = 4;
map.nexttowercolour();
}
else if (game.currentmenuoption == 3)
@ -684,7 +684,7 @@ SDL_assert(0 && "Remove open level dir");
game.savestats(map, dwgfx);
music.playef(11, 10);
game.createmenu("accessibility");
game.currentmenuoption = 3;
game.currentmenuoption = 4;
map.nexttowercolour();
}
}
@ -713,6 +713,13 @@ SDL_assert(0 && "Remove open level dir");
}
}
else if (game.currentmenuoption == 2)
{
//disable text outline
dwgfx.notextoutline = !dwgfx.notextoutline;
game.savestats(map, dwgfx);
music.playef(11, 10);
}
else if (game.currentmenuoption == 3)
{
//invincibility
if (!map.invincibility)
@ -726,14 +733,14 @@ SDL_assert(0 && "Remove open level dir");
}
music.playef(11, 10);
}
else if (game.currentmenuoption == 3)
else if (game.currentmenuoption == 4)
{
//change game speed
game.createmenu("setslowdown2");
map.nexttowercolour();
music.playef(11, 10);
}
else if (game.currentmenuoption == 4)
else if (game.currentmenuoption == 5)
{
// mute
if (music.muted) {
@ -748,7 +755,7 @@ SDL_assert(0 && "Remove open level dir");
}
music.playef(11, 10);
}
else if (game.currentmenuoption == 5)
else if (game.currentmenuoption == 6)
{
//back
music.playef(11, 10);

View File

@ -264,7 +264,7 @@ void towerlogic(Graphics& dwgfx, Game& game, entityclass& obj, musicclass& music
if (game.deathseq != -1)
{
map.colsuperstate = 1; //cause the palette to go spastic!
map.colsuperstate = 1;
map.cameramode = 2;
game.deathsequence(map, obj, music);
game.deathseq--;

View File

@ -492,9 +492,23 @@ void titlerender(Graphics& dwgfx, mapclass& map, Game& game, entityclass& obj, U
}
else if (game.currentmenuoption == 2)
{
dwgfx.bigprint(-1, 40, "Invincibility", tr, tg, tb, true);
dwgfx.Print(-1, 75, "Provided to help disabled gamers", tr, tg, tb, true);
dwgfx.Print(-1, 85, "explore the game. Can cause glitches.", tr, tg, tb, true);
dwgfx.bigprint( -1, 40, "Text Outline", tr, tg, tb, true);
dwgfx.Print( -1, 75, "Disables outline on game text", tr, tg, tb, true);
// FIXME: Maybe do an outlined print instead? -flibit
if (!dwgfx.notextoutline)
{
dwgfx.Print( -1, 85, "Text outlines are ON.", tr, tg, tb, true);
}
else
{
dwgfx.Print( -1, 85, "Text outlines are OFF.", tr/2, tg/2, tb/2, true);
}
}
else if (game.currentmenuoption == 3)
{
dwgfx.bigprint( -1, 40, "Invincibility", tr, tg, tb, true);
dwgfx.Print( -1, 75, "Provided to help disabled gamers", tr, tg, tb, true);
dwgfx.Print( -1, 85, "explore the game. Can cause glitches.", tr, tg, tb, true);
if (map.invincibility)
{
dwgfx.Print(-1, 105, "Invincibility is ON.", tr, tg, tb, true);
@ -504,7 +518,7 @@ void titlerender(Graphics& dwgfx, mapclass& map, Game& game, entityclass& obj, U
dwgfx.Print(-1, 105, "Invincibility is off.", tr / 2, tg / 2, tb / 2, true);
}
}
else if (game.currentmenuoption == 3)
else if (game.currentmenuoption == 4)
{
dwgfx.bigprint(-1, 40, "Game Speed", tr, tg, tb, true);
dwgfx.Print(-1, 75, "May be useful for disabled gamers", tr, tg, tb, true);
@ -526,7 +540,7 @@ void titlerender(Graphics& dwgfx, mapclass& map, Game& game, entityclass& obj, U
dwgfx.Print(-1, 105, "Game speed is at 40%", tr, tg, tb, true);
}
}
else if (game.currentmenuoption == 4)
else if (game.currentmenuoption == 5)
{
dwgfx.bigprint(-1, 40, "Music", tr, tg, tb, true);
dwgfx.Print(-1, 75, "Disables music.", tr, tg, tb, true);
@ -1601,7 +1615,7 @@ void gamerender(Graphics& dwgfx, mapclass& map, Game& game, entityclass& obj, Ut
}
}
if (map.custommode && !map.custommodeforreal) {
if(map.custommode && !map.custommodeforreal && !game.advancetext){
//Return to level editor
dwgfx.bprint(5, 5, "[Press ENTER to return to editor]", 220 - (help.glow), 220 - (help.glow), 255 - (help.glow / 2), false);
}

View File

@ -946,7 +946,7 @@ tmap.push("280,280,280,280,280,280,280,280,280,280,280,280,280,280,280,280,280,2
obj.createentity(game, -8, 180, 11, 224); // (horizontal gravity line)
rcol = 0;
roomname = "Exausted?";
roomname = "Exhausted?";
break;
@ -1861,4 +1861,4 @@ default:
public var coin:int;
public var rcol:int;
}
}
}

View File

@ -231,7 +231,7 @@ public function towerlogic(key:KeyPoll, dwgfx:dwgraphicsclass, game:gameclass, m
}
if (game.deathseq != -1) {
map.colsuperstate = 1; //cause the palette to go spastic!
map.colsuperstate = 1;
map.cameramode = 2;
game.deathsequence(map, obj, music);
game.deathseq--;

View File

@ -4710,7 +4710,7 @@
add("squeak(blue)");
add("text(blue,0,0,3)");
add("This lab is amazing! The scentists");
add("This lab is amazing! The scientists");
add("who worked here know a lot more");
add("about warp technology than we do!");
add("position(blue,below)");
@ -5819,4 +5819,4 @@
}
running = true;
}
}