1
0
Fork 0
mirror of https://github.com/TerryCavanagh/VVVVVV.git synced 2024-12-29 13:09:44 +01:00
Commit graph

1395 commits

Author SHA1 Message Date
TerryCavanagh
b0ffdf0153 Removed a dumb word I used in a comment
Yikes. Somebody brought this to my attention, I didn't even remember that I'd written it. "Spa" or "Spastic" is kind of a south park esque slang term that used to be pretty common in Ireland, which I used without even thinking about it. It's definitely not something I would say anymore, 10 years on, and it's something I shouldn't have said at the time either. I'm sorry :(

(somebody on twitter was asking me about how much cleaning up of the source code I did before launching this. I think this commit kinda answers that)
2020-01-16 14:31:01 +01:00
Info Teddy
3247d3be41 Correct capitalization of song names
This corrects things like "Passion for exploring" and "Passion For
Exploring" to be "Passion for Exploring".
2020-01-15 22:05:37 -08:00
Info Teddy
4e952450d5 Prevent the game from thinking horizontal warp lines are cyan crewmates (#87)
* Add entity type attribute checks to getcrewman()

This means that the game is no longer able to target other non-crewmate
entities when it looks for a crewmate.

This has actually happened in practice. A command like
position(cyan,above) could position the text box above a horizontal warp
line instead of the intended crewmate.

This is because getcrewman() previously only checked the rule attributes
of entities, and if their rule happened to be 6 or 7. Usually this
corresponds with crewmates being unflipped or flipped, respectively.

But warp lines' rules overlap with rules 6 and 7. If a warp line is
vertical, its rule is 5, and if it is horizontal, its rule is 7.

Now, usually, this wouldn't be an issue, but getcrewman() does a color
check as well. And for cyan, that is color 0. However, if an entity
doesn't use a color, it just defaults to color 0. So, getcrewman() found
an entity with a rule of 7 and a color of 0. This must mean it's a cyan
crewmate! But, well, it's actually just a horizontal warp line.

This commit prevents the above from happening.
2020-01-15 23:55:53 -05:00
Info Teddy
37a1482bb3 Fix warpdir() doing wrong BG with warp dir 0 in current room
If you're in the room being targeted when a `warpdir()` command is run,
and it sets the warp direction to none (warp dir 0), and if you're in a
Lab or Warp Zone room, the background will be set to the wrong one,
because it will always set the background to the stars-going-left
background, instead of setting it to the Lab background or the
stars-going-up background.

However, this is only a visual glitch, and is a temporary one, because
if you manage to trigger a `gotoroom()` on the room, it will get set to
its proper background.

This commit makes it so if you're in a Lab room, the background gets set
to the Lab background, and if you're in a Warp Zone room, the background
gets set to the stars-going-up background.
2020-01-15 21:57:41 -05:00
Info Teddy
5b2962fde0 Properly reset roomdeaths and roomdeathsfinal in hardreset
There are three map-related vectors that need to be reset in hardreset:
`map.roomdeaths`, `map.roomdeathsfinal`, and `map.explored`. All three
of these vectors use the concatenated rows system, whereby each room is
given a room number, calculated by doing X + Y*20, and this becomes
their index in each vector.

There's a double-nested for-loop to handle resetting all of these, where
the outer for-loop iterates over the Y-axis and the inner for-loop
iterates over the X-axis, but only `map.explored` is properly reset.
That's because it's the only vector that properly indexes using X +
Y*20. The other vectors reset using X, so previously, only the first row
of `map.roomdeaths` and `map.roomdeathsfinal` got reset, corresponding
with only the first row of rooms in both Dimension VVVVVV and Outside
Dimension VVVVVV getting reset.

This commit makes sure that both get reset properly.
2020-01-15 20:48:04 -05:00
Info Teddy
921e288ebe Correct Warp Zone's area name from "Warpzone" to "Warp Zone"
This is the name that gets displayed in your save file.
2020-01-15 20:29:30 -05:00
Info Teddy
52470eecbf Fix "Exausted?" typo in roomname
This name is the roomname of (7,17) (0-indexed) in the Lab.
2020-01-15 04:23:17 -08:00
Ethan Lee
8826f57cc2 macOS builds also require self-built Vorbisfile 2020-01-14 10:16:15 -05:00
Info Teddy
10ed0058fd Fix the flipgravity() internal command (#78)
There are two main problems with flipgravity():
 1. It doesn't work for an already-flipped crewmate.
 2. It doesn't work on the player.

This commit addresses both of those issues.
2020-01-14 08:51:33 -05:00
Ethan Lee
6a0ee21082 Untested Haiku port? 2020-01-13 23:31:14 -05:00
Info Teddy
17585c4602 Fix mute button not working at all
Whoops, looks like I forgot to test that I didn't break the mute button
completely in my previous pull request.
2020-01-13 23:15:24 -05:00
Info Teddy
fa075010c8 Fix being able to set lower custom level score
For reference, here is the list of scores for a custom level:
 0 - not played
 1 - finished
 2 - all trinkets
 3 - finished, all trinkets

Previously, you could've played a level and finished it and set a score
of 3. Then you could re-play the entire level, but manage to only get a
score of 1, i.e. only finished but not with all trinkets. Then your
score for that level would get set back to 1, which basically nullifies
the time you spent playing that level and getting all of the trinkets.

This commit makes it so your new score will get set only if it is higher
than the previous one.
2020-01-13 21:02:40 -05:00
Info Teddy
01ad6cf1a1 Disable muting in the script editor
This disables being able to press M to mute while editing a script in
the script editor. It also disables it in the script list, too, but I'm
hoping no one thinks that's an issue, because I personally don't think
it is.
2020-01-13 20:19:09 -05:00
Info Teddy
e0b80cf0b5 Don't deactive tele prompt when dying
This fixes a bug where if you died after activating a teleporter prompt
and then respawned in the same room as the teleporter, the teleporter
prompt would go away. Which would be very annoying if you wanted to, you
know, teleport.

You don't even have to R-press to make this happen. "Level Complete!"
and Energize are two teleporter rooms in the main game that have hazards
in them.

I see no reason to set game.activetele to false when dying. For one, it
gets set to false during a gotorom anyway. For another, I couldn't get
the game to activate the teleport prompt in a room without a teleporter
in my testing, mostly because when you touch a teleporter, your
checkpoint is set to that teleporter, so you can't R-press to go to
another room and carry over the teleport prompt.
2020-01-13 20:00:10 -05:00
Info Teddy
406e1b70d6 Re-add the font outline from the Flash/mobile versions
This uncomments the code for the font outline. Now, you will see the
font outline on text that had it in the Flash version, most notably "-
Press ENTER to Teleport -" and the time trial overlay text.

This also fixes a problem with the commented code, where un-centered
text didn't outline properly.
2020-01-13 16:22:26 -08:00
Info Teddy
b8e611a3bf Destroy duplicate player entities during gotoroom
The game makes sure that the player entity is never destroyed, but in
doing so, it doesn't destroy any duplicate player entities that might
have been created via strange means e.g. a custom level doing a
createentity with t=0.

Duplicate player entities are, in a sense, not the "real" player entity.
For one, they can take damage and die, but when they do they'll still be
stuck inside the hazard, which can result in a softlock. For another,
their position isn't updated when going between rooms. It's better to
just destroy them when we can.
2020-01-13 18:18:44 -05:00
Terry Cavanagh
5b4de5b065
Updated link to make and play edition 2020-01-13 19:38:16 +01:00
Ethan Lee
0c27ec8e58 int32_t > int 2020-01-13 11:27:16 -05:00
Ethan Lee
4b24206294 This is a wild guess but I think I assigned init at some point 2020-01-13 11:25:54 -05:00
Ethan Lee
c1fb67707d Loose typedef 2020-01-13 11:18:25 -05:00
Ethan Lee
9758290cf3 Add support for multiple Network backends, stub in GOGNetwork 2020-01-13 11:15:22 -05:00
Allison Fleischer
b5cb6cd5f4 Add self to CONTRIBUTORS 2020-01-13 00:59:12 -08:00
Allison Fleischer
0de8a9bdc7 Fix a stray "seperate"
tbh this word is very easy to misspell
2020-01-13 00:54:38 -08:00
Ethan Lee
6a7e848426 Add note about Windows .lib weirdness 2020-01-12 22:36:57 -05:00
Ethan Lee
a2824cfddc Ignore .gch files 2020-01-12 22:34:50 -05:00
Info Teddy
5419e822d8 Stop the game from freezing if we play a song during a fadeout (#61) 2020-01-12 22:33:58 -05:00
Info Teddy
c2ac1dc7d2 Add an accessibility option to toggle the fake loading screen (#63) 2020-01-12 20:45:44 -05:00
Ethan Lee
cc2b01d7c3 Adjust gitignore for new executable names 2020-01-12 12:57:30 -05:00
Ethan Lee
894675c512 Create third_party folder, note it in the license text 2020-01-12 12:54:34 -05:00
Marvin Scholz
f1f5acc552 Simplify initializations
This is similar to what was reverted in 3011911 but this time should use
syntax available even before C++11, tested on Clang with
`-std=c++98 -Wall -pedantic`.
2020-01-12 12:34:41 -05:00
Ethan Lee
ec23e4a540 Make sure all PhysFS calls are after init! 2020-01-12 10:52:42 -05:00
Info Teddy
3e9bd3aaac Fix scaling editor mouse coords properly in stretch mode
Now your cursor will properly align with the editor's cursor if you're
in stretch mode.

Closes #27.
2020-01-12 10:52:14 -05:00
Dav999-v
165882182b Add myself to CONTRIBUTORS
I've never given out my real name online, so I'll sort my username as a
last name. My personal preference would have been to sort the list by
first name instead of last name, since that'd be clearer, plus you
often recognize people by their first name rather than their last name.
2020-01-12 10:44:11 -05:00
Dav999-v
facc34d86c Replace 2 remaining TinyXml LoadFile()s by FILESYSTEM_loadTiXmlDocument 2020-01-12 10:44:11 -05:00
Dav999-v
b884b7e4e9 Replace TiXmlDocument load and save functions by PHYSFS
The TinyXml functions to load and save files don't properly support
unicode file paths on Windows, so in order to support that properly, I
saw no other option than to do the actual loading and saving via PHYSFS
(or to use the Windows API on Windows and retain doc.LoadFile and
doc.SaveFile on other OSes, but that'd be more complicated and
unnecessary, we already have PHYSFS, right?).

There are two new functions in FileSystemUtils:
bool FILESYSTEM_saveTiXmlDocument(const char *name, TiXmlDocument *doc)
bool FILESYSTEM_loadTiXmlDocument(const char *name, TiXmlDocument *doc)

Any instances of doc.SaveFile(<FULL_PATH>) have been replaced by
FILESYSTEM_saveTiXmlDocument(<VVVVVV_FOLDER_PATH>, &doc), where
<FULL_PATH> included the full path to the saves or levels directory,
and <VVVVVV_FOLDER_PATH> only includes the path relative to the VVVVVV
directory.
When loading a document, a TiXmlDocument used to be created with a full
path in its constructor and doc.LoadFile() would then be called, now a
TiXmlDocument is constructed with no path name and
FILESYSTEM_loadTiXmlDocument(<VVVVVV_FOLDER_PATH>, &doc) is called.
2020-01-12 10:44:11 -05:00
Dav999-v
ddaa5e13c8 Use wide-char Windows API functions on Windows
There's now a thin layer of UTF-16 around the WinAPI functions to get
the path to the Documents folder and to create a new directory, so that
account usernames with non-ASCII characters do not result in no VVVVVV
folder being created or used.
2020-01-12 10:44:11 -05:00
Marvin Scholz
64fd50be6f Simplify std::vector initializations
Resizing the vector does the same thing that the loops did, it changes
the size for the vector and initializes it with default-constructed
elements (or 0 or its equivalent for POD types).

Where a specific value is needed, it is set with the second
parameter of resize().
2020-01-12 10:29:17 -05:00
Marvin Scholz
882da7de28 Use SDL_HasIntersection for UtilityClass::intersects 2020-01-12 10:25:22 -05:00
Ethan Lee
f85622b7e9 Fix warning emitted by GCC 4.8 2020-01-12 03:56:39 -05:00
Ethan Lee
57edcf8e27 Sneaky tabbing fix 2020-01-11 22:54:12 -05:00
leo60228
c928cf838e Add to CONTRIBUTORS.txt 2020-01-11 21:33:11 -05:00
leo60228
acfc8c2861 Support symbolic links 2020-01-11 21:33:11 -05:00
Keith Stellyes
018ecff8ee Add self to CONTRIBUTORS 2020-01-11 20:17:15 -05:00
Keith Stellyes
9af73a27f7 UtilityClass::number impl a bit cleaner 2020-01-11 20:17:15 -05:00
Wouter
84320d241e Add myself to the contributor list 2020-01-11 19:39:40 -05:00
Wouter
833b2fbf1d Fix Werror always being enabled 2020-01-11 19:39:40 -05:00
Ethan Lee
901de4166e Linux can use -devel, unless their distro is super old 2020-01-11 11:43:36 -05:00
Ethan Lee
ec070a1156 Use NULL instead of nullptr 2020-01-11 11:33:36 -05:00
Ethan Lee
4ef74e837a Invert the ifdef mess for getOSDirectory 2020-01-11 11:29:07 -05:00
Ethan Lee
a977f49725 Use RPATH for lib folder, use PHYSFS_getBaseDir on all platforms.
The next official VVVVVV build removes 32-bit Linux (like all my other games),
and I need to get rid of the shell script on macOS at some point, so this
basically brings it up to what my other games are doing. Plus, this probably
fixes a bug where someone tries to run their executable away from the root...
2020-01-11 11:23:49 -05:00
Marvin Scholz
1312c10d11 Do not hardcode default macOS SDK path
Doing this is not necessary as CMake already looks up the default one
correctly and in fact breaks whenever you have multiple Xcode versions
installed so Xcode is not called Xcode.app.
(And it does not respect the default Xcode set using xcode-select)

The behavior now is to respect CMAKE_OSX_SYSROOT if set by the
user on the command line. If it's not set, try to use the hardcoded
path to the 10.9 SDK if it's present. If not, warn about the fact
that a different SDK is used.
2020-01-11 09:02:27 -05:00
Rémi Verschelde
a83e83ca1b Fix warnings raised by GCC 8 2020-01-11 08:53:32 -05:00
Rémi Verschelde
d4ee5dec1a CMake: Add ENABLE_WARNINGS and ENABLE_WERROR build options
ENABLE_WARNINGS is enabled by default, with `-Wall` on GCC/Clang and
`/W4` on MSVC.

ENABLE_WERROR is disabled by default, treats warnings as errors.
2020-01-11 08:53:32 -05:00
Info Teddy
441955de5f Fix hardreset() not resetting all 100 slots in (custom)collect (#36) 2020-01-11 02:14:39 -05:00
Charlie
f0b931e02a
Merge branch 'master' into quick-fixes 2020-01-11 05:31:47 +00:00
Brian Callahan
8aebead754 Add OpenBSD support 2020-01-11 00:25:31 -05:00
Charlie Bruce
8595626eb1 Add myself to CONTRIBUTORS 2020-01-11 05:19:05 +00:00
Charlie Bruce
d6392ccbe3 Move PROJECT line after CMAKE_OSX_DEPLOYMENT_TARGET line
This is suggested by the documentation: https://cmake.org/cmake/help/latest/variable/CMAKE_OSX_DEPLOYMENT_TARGET.html
2020-01-11 05:18:29 +00:00
Charlie Bruce
1a6ce2617a On macOS, use default SDK if version 10.9 is not installed. 2020-01-11 05:18:29 +00:00
Charlie Bruce
3011911f80 Revert C++11 code to older standard for improved compatibility 2020-01-11 05:18:29 +00:00
Daniel Lee
66716fef37 small indentation correction to match surrounding code 2020-01-10 22:41:15 -05:00
Daniel Lee
98fe133228 CONTRIBUTORS: Add myself 2020-01-10 22:41:15 -05:00
Daniel Lee
4ebf7926f2 fix Victoria typo "scentists" in the Secret Lab 2020-01-10 22:41:15 -05:00
Daniel Lee
03205987f7 some small menu fixes
- Return in Unlock Play Modes goes to Game Options instead of the main menu
- changing some Graphics Options settings no longer plays two menu select sounds, which was really loud :(
- Return in Game Pad Options plays the menu select sound
- turning off Screen Effects plays the menu select sound
2020-01-10 22:41:15 -05:00
viri
669072f9bf add viri to CONTRIBUTORS.txt 2020-01-10 21:06:59 -05:00
viri
5829007bed fix uninitialized member vars everywhere
also fix a spelling error of 'forground' in the graphics class buffer
2020-01-10 21:06:59 -05:00
Elliott Saltar
fb41d93835 Add my name to the CONTRIBUTORS file (might want to change my GitHub username eventually...) 2020-01-10 20:46:25 -05:00
Elliott Saltar
525e868399 Correct "seperately" to "separately" 2020-01-10 20:46:25 -05:00
Ethan Lee
d83bd1e0eb
Wait, people other than me used this folder for real? 2020-01-10 20:02:02 -05:00
Marvin Scholz
eb7920ec47 Add workaround for missing macOS 10.9 SDK 2020-01-10 19:53:11 -05:00
Marvin Scholz
51b2420181 Add partial-availability error on macOS
When building on macOS targeting an older version than the version of
the SDK currently used, this prevents accidentally using APIs that are
too new (introduced in macOS versions newer than the deployment target).
2020-01-10 19:53:11 -05:00
Ethan Lee
eb6604aa74 CMake might get fussy about relative paths, just use C:\ for the example 2020-01-10 19:51:41 -05:00
Rémi Verschelde
7d95e3298b Add .gitignore with build artifacts and data.zip 2020-01-10 19:39:45 -05:00
Rémi Verschelde
a9b1ff737c FS: Use PHYSFS_getPrefDir on Linux/FreeBSD too
Follow-up to #19 which did the change for macOS.
It appears to work as expected on Linux too.

Tested on a distro where XDG_DATA_HOME is undefined by default,
and `PHYSFS_getPrefDir` also resolves to `~/.local/share/VVVVVV/`.
The first organization parameter is unused on Linux and macOS.
2020-01-10 18:57:11 -05:00
Marvin Scholz
2cfed68fcc CONTRIBUTORS: Add myself 2020-01-10 18:41:22 -05:00
Marvin Scholz
06c6de9433 Use PHYSFS_readBytes instead of deprecated PHYSFS_read 2020-01-10 18:41:22 -05:00
Marvin Scholz
5c9c7297ed Do not use deprecated PHYSFS_getUserDir on macOS
Instead use PHYSFS_getPrefDir which does the same than the manual
concatenation done before. The organization name argument is required
but is not used on macOS.
2020-01-10 18:41:22 -05:00
Moonchild
146cdde217 Hide mouse cursor in game window 2020-01-10 17:27:08 -05:00
Ethan Lee
cb3640e505 Merge for CONTRIBUTORS.txt 2020-01-10 17:11:00 -05:00
Emmanuel Vadot
0e1e4e0252 Add myself to the CONTRIBUTORS.txt file.
Signed-off-by: Emmanuel Vadot <manu@freebsd.org>
2020-01-10 17:08:38 -05:00
Emmanuel Vadot
90decede25 FreeBSD: Add workaround for libsteam
Steam isn't supported on FreeBSD so add a workaround.

Signed-off-by: Emmanuel Vadot <manu@freebsd.org>
2020-01-10 17:08:38 -05:00
Emmanuel Vadot
699d8c4590 FreeBSD: Use the same path as Linux
Since FreeBSD is unix based we also use the concept of $HOME.
Use the same include and code as Linux.

Signed-off-by: Emmanuel Vadot <manu@freebsd.org>
2020-01-10 17:08:38 -05:00
Moonchild
f012f7c8b5 add myself to the contributors file, fix formatting 2020-01-10 15:07:29 -07:00
Moonchild
19339af706 avoid segfault with bad, missing, or corrupted audio 2020-01-10 14:56:21 -07:00
Christoph Böhmwalder
3f3ea6eac7 CONTRIBUTORS: add myself 2020-01-10 16:21:32 -05:00
Christoph Böhmwalder
3a961310ca actually return an error when data.zip is missing
We should return an error code when we can't find data.zip, just letting
the program crash is a little crude.
2020-01-10 16:21:32 -05:00
Ethan Lee
3b66877287 Extra newline in data.zip message 2020-01-10 14:00:45 -05:00
Ethan Lee
ec51ee7016 Messagebox on missing data.zip 2020-01-10 13:59:34 -05:00
Ethan Lee
40716742e1 Note location of data.zip 2020-01-10 13:39:18 -05:00
Terry Cavanagh
c90b7316d6
Update README.md 2020-01-10 19:28:58 +01:00
Terry Cavanagh
07542ef91b
Update README.md 2020-01-10 19:28:27 +01:00
Ethan Lee
3e48661473 Clarify dev libs line 2020-01-10 12:14:37 -05:00
Ethan Lee
8529869801 This used to be true! 2020-01-10 12:13:07 -05:00
Ethan Lee
ac0692f989 Link to SDL2/SDL2_mixer 2020-01-10 12:12:00 -05:00
Ethan Lee
f7c0321b71 Hello WWWWWWorld! 2020-01-08 10:37:50 -05:00