1
0
mirror of https://github.com/TerryCavanagh/VVVVVV.git synced 2024-06-25 22:18:30 +02:00
VVVVVV/desktop_version/src
Misa ab26985fde Re-fix crewmate directions (without copy-pasting)
This once again fixes the facing directions of crewmates upon room load,
except now it covers more cases.

So, here is the saga so far:

- 2.0 (presumably) to 2.2: crewmate direction fix is special-cased at
  the end of mapclass::loadlevel(). Only covers crewmates created during
  the room load, does not cover crewmates created from scripts, only
  covers state 18 of crewmates.

- 2.3 currently (after #220): crewmate direction fix is moved to
  entityclass::createentity(), which covers every avenue of crewmate
  creation (including from scripts), but still only covers state 18.

- This commit: crewmate direction fix now covers every possible state of
  the crewmate, also does not copy-paste any code.

What I've done instead is to make it so createentity() will immediately
call updateentities() on the pushed-back entity. This is kludge-y, but
is completely okay to do, because unlike other entities, crewmate
entities never change their state or have any side-effects from
double-evaluation, meaning calling updateentities() on them is
idempotent and it's okay to call their updateentities() more than once.

This does have the slight danger that if the states of crewmates were to
change in the future to no longer be idempotent, this would end up
resulting in a somewhat hard-to-track-down double-evaluation bug, but
it's worth taking that risk.

This fix is not applied to entity 14 (the supercrewmate) because it is
possible that calling updateentities() on it will immediately remove the
entity, which is not idempotent (it's changing the state of something
outside the object). Supercrewmates are a bit difficult to work with
outside of the main game anyways, and if you spawn them you could
probably just use the changedir() script command to fix their direction,
so I'm not inclined to fix this for them anyway.
2021-03-21 02:55:42 -04:00
..
BinaryBlob.cpp Explicitly declare void for all void parameter functions (#628) 2021-02-25 17:23:59 -05:00
BinaryBlob.h Explicitly declare void for all void parameter functions (#628) 2021-02-25 17:23:59 -05:00
BlockV.cpp Remove unused x and y attributes of blockclass 2021-02-27 18:27:28 -05:00
BlockV.h Remove unused x and y attributes of blockclass 2021-02-27 18:27:28 -05:00
Credits.h Fix entities in the Warp Zone's gray tileset not being gray in the editor (#480) 2020-09-25 13:35:03 -04:00
DeferCallbacks.c Add deferred callbacks to game loop 2021-03-21 02:55:42 -04:00
DeferCallbacks.h Add deferred callbacks to game loop 2021-03-21 02:55:42 -04:00
editor.cpp Fix 1-frame glitch when going to in-game options from edsettings 2021-03-21 02:55:42 -04:00
editor.h Explicitly declare void for all void parameter functions (#628) 2021-02-25 17:23:59 -05:00
Ent.cpp Explicitly declare void for all void parameter functions (#628) 2021-02-25 17:23:59 -05:00
Ent.h Explicitly declare void for all void parameter functions (#628) 2021-02-25 17:23:59 -05:00
Entity.cpp Re-fix crewmate directions (without copy-pasting) 2021-03-21 02:55:42 -04:00
Entity.h Explicitly declare void for all void parameter functions (#628) 2021-02-25 17:23:59 -05:00
Enums.h Hello WWWWWWorld! 2020-01-08 10:37:50 -05:00
Exit.h Add VVV_exit() 2021-02-15 23:07:35 -05:00
FileSystemUtils.cpp Make one-way recolors check for specific files 2021-03-06 16:00:57 -05:00
FileSystemUtils.h Make one-way recolors check for specific files 2021-03-06 16:00:57 -05:00
Finalclass.cpp Separate includes into sections and alphabetize them 2020-07-19 21:37:40 -04:00
Finalclass.h Remove unnecessary includes from header files 2020-07-19 21:37:40 -04:00
Game.cpp Fix 1-frame background glitch when returning from in-game options 2021-03-21 02:55:42 -04:00
Game.h Remove game.shouldreturntoeditor in favor of using defer callback 2021-03-21 02:55:42 -04:00
GOGNetwork.c Explicitly declare void for all void parameter functions (#628) 2021-02-25 17:23:59 -05:00
Graphics.cpp Remove gravity line kludge from Graphics::drawgravityline() 2021-03-21 02:55:42 -04:00
Graphics.h Add createtextboxreal() and createtextboxflipme() 2021-03-21 02:53:25 -04:00
GraphicsResources.cpp Free data upon failure in LoadImage() 2021-01-18 13:06:43 -05:00
GraphicsResources.h Consistently use angle brackets for SDL.h includes 2020-07-19 21:37:40 -04:00
GraphicsUtil.cpp Use SDL_floor() instead of libc floor() 2021-03-06 16:01:29 -05:00
GraphicsUtil.h Add ClearSurface() 2021-02-25 19:38:25 -05:00
Input.cpp Fix 1-frame background glitch when returning from in-game options 2021-03-21 02:55:42 -04:00
Input.h Explicitly declare void for all void parameter functions (#628) 2021-02-25 17:23:59 -05:00
KeyPoll.cpp Directly toggle fullscreen if keybind pressed in key.Poll() 2021-03-17 03:01:19 -04:00
KeyPoll.h Directly toggle fullscreen if keybind pressed in key.Poll() 2021-03-17 03:01:19 -04:00
Labclass.cpp Separate includes into sections and alphabetize them 2020-07-19 21:37:40 -04:00
Labclass.h Remove unnecessary includes from header files 2020-07-19 21:37:40 -04:00
Logic.cpp Remove game.shouldreturntoeditor in favor of using defer callback 2021-03-21 02:55:42 -04:00
Logic.h Explicitly declare void for all void parameter functions (#628) 2021-02-25 17:23:59 -05:00
main.cpp Add deferred callbacks to game loop 2021-03-21 02:55:42 -04:00
MakeAndPlay.h Re-comment out #define MAKEANDPLAY 2020-02-09 10:42:03 -05:00
Map.cpp Remove script.dontrunnextframe kludge 2021-03-21 02:55:42 -04:00
Map.h Explicitly declare void for all void parameter functions (#628) 2021-02-25 17:23:59 -05:00
Maths.h Explicitly declare void for all void parameter functions (#628) 2021-02-25 17:23:59 -05:00
Music.cpp Move resumesong assignment to songend() 2021-03-10 09:45:20 -05:00
Music.h Explicitly declare void for all void parameter functions (#628) 2021-02-25 17:23:59 -05:00
Network.c Explicitly declare void for all void parameter functions (#628) 2021-02-25 17:23:59 -05:00
Network.h Explicitly declare void for all void parameter functions (#628) 2021-02-25 17:23:59 -05:00
Otherlevel.cpp Bounds check all entity getters that can return 0 2020-09-25 13:51:47 -04:00
Otherlevel.h Remove unnecessary includes from header files 2020-07-19 21:37:40 -04:00
preloader.cpp Change all surface-clearing FillRect()s to use ClearSurface() 2021-02-25 19:38:25 -05:00
preloader.h Explicitly declare void for all void parameter functions (#628) 2021-02-25 17:23:59 -05:00
Render.cpp De-duplicate Gravitron initial message 2021-03-21 02:06:39 -04:00
Render.h Explicitly declare void for all void parameter functions (#628) 2021-02-25 17:23:59 -05:00
RenderFixed.cpp Remove now-unneeded deltaframe fix when going to in-game settings 2021-03-21 02:55:42 -04:00
RenderFixed.h Remove now-unneeded deltaframe fix when going to in-game settings 2021-03-21 02:55:42 -04:00
Screen.cpp Fix transitive includes in Screen.cpp 2021-02-27 14:26:08 -05:00
Screen.h Explicitly declare void for all void parameter functions (#628) 2021-02-25 17:23:59 -05:00
ScreenSettings.h Explicitly declare void for all void parameter functions (#628) 2021-02-25 17:23:59 -05:00
Script.cpp Update player lerpoldxp/yp in moveplayer() 2021-03-21 02:55:42 -04:00
Script.h Remove script.dontrunnextframe kludge 2021-03-21 02:55:42 -04:00
Scripts.cpp Make 'custom_' check more readable 2020-09-27 16:31:40 -04:00
SoundSystem.cpp Replace all SDL_RWFromMem() with SDL_RWFromConstMem() 2021-02-25 19:39:48 -05:00
SoundSystem.h Explicitly declare void for all void parameter functions (#628) 2021-02-25 17:23:59 -05:00
Spacestation2.cpp Separate includes into sections and alphabetize them 2020-07-19 21:37:40 -04:00
Spacestation2.h Remove unnecessary includes from header files 2020-07-19 21:37:40 -04:00
SteamNetwork.c Explicitly declare void for all void parameter functions (#628) 2021-02-25 17:23:59 -05:00
TerminalScripts.cpp Separate includes into sections and alphabetize them 2020-07-19 21:37:40 -04:00
Textbox.cpp Add flipme attribute to textboxclass 2021-03-21 02:53:25 -04:00
Textbox.h Add flipme attribute to textboxclass 2021-03-21 02:53:25 -04:00
ThirdPartyDeps.c Reduce dependency on libc functions 2021-01-12 14:02:31 -05:00
Tower.cpp Explicitly declare void for all void parameter functions (#628) 2021-02-25 17:23:59 -05:00
Tower.h Explicitly declare void for all void parameter functions (#628) 2021-02-25 17:23:59 -05:00
TowerBG.h Move mapclass r/g/b variables off onto TowerBG 2021-01-07 21:15:34 -05:00
UtilityClass.cpp Refactor endsWith() to not use the STL 2021-02-27 01:40:05 -05:00
UtilityClass.h Refactor endsWith() to not use the STL 2021-02-27 01:40:05 -05:00
Version.h Don't recompile all files when the commit hash is changed 2020-12-25 20:17:01 -05:00
Version.h.in Don't recompile all files when the commit hash is changed 2020-12-25 20:17:01 -05:00
WarpClass.cpp Separate includes into sections and alphabetize them 2020-07-19 21:37:40 -04:00
WarpClass.h Remove unnecessary includes from header files 2020-07-19 21:37:40 -04:00
XMLUtils.cpp Move all settings to settings.vvv 2020-11-04 12:06:57 -05:00
XMLUtils.h Move all settings to settings.vvv 2020-11-04 12:06:57 -05:00