Commit Graph

939 Commits

Author SHA1 Message Date
Eevee (Evelyn Woods)
626d146375 Add explicit support in the level for sokoban buttons
Gets a lot of junk out of the sokoban buttons' implementations.

Also, undo closures are gone now!
2024-05-06 14:07:35 -06:00
Eevee (Evelyn Woods)
3c7b8948ae Remove the undo closure for failing the level 2024-05-06 13:41:29 -06:00
Eevee (Evelyn Woods)
d1f0ac4956 Simplify wire phase undo
Turns out we don't really need to store these changes to tile power at
all; they can be rederived from circuit power.

One more undo closure gone.
2024-05-06 13:37:34 -06:00
Eevee (Evelyn Woods)
b891d6f38c Undo inventory changes with tile props
This removes almost all of the remaining undo closures.
2024-05-06 12:57:58 -06:00
Eevee (Evelyn Woods)
20b19c53ff Cut down on some undo closures
If I can get rid of all of these, I can combine multiple undo entries,
and allow undoing backwards in time further (but more coarsely) with the
same memory usage.

This also introduces some actor pooling, which...  reduces memory usage
very slightly on clone-heavy levels, but may not be worth it overall.
2024-05-06 12:40:38 -06:00
Eevee (Evelyn Woods)
c900ec80db Reduce undo memory usage by a third
- Changes to tiles are now stored in a plain object rather than a Map,
  which it turns out takes up a decent bit more space.

- Changes to a tile's type or cell no longer need additional closures to
  perform the cell movement.

- Less impactful, but changes to level properties are now stored as a
  diff, not as a full set every tic.
2024-05-06 11:21:27 -06:00
Eevee (Evelyn Woods)
63da1ff38c Implement the toll gate 2024-05-05 16:20:21 -06:00
Eevee (Evelyn Woods)
3f6278f281 Fix rendering of the moment of death
Finally!  With the help of several mildly unpleasant hacks, the game now
draws as if a monster killing the player were walking onto her.
2024-05-05 15:32:56 -06:00
Eevee (Evelyn Woods)
4527eb972e Add a little noise to the rewind effect 2024-05-05 14:55:24 -06:00
Eevee (Evelyn Woods)
d54ba0a191 Increase rewinding speed 2024-05-05 13:28:05 -06:00
Eevee (Evelyn Woods)
45a8e0055d Untangle doppelganger movement from the visual is_blocked flag
Also, doppelgangers copy even failed force floor overrides.
2024-05-04 13:05:19 -06:00
Eevee (Evelyn Woods)
f6ee09b6c7 Added a new auto-fix for actors atop bombs in CCL levels
This fixes CCLP5 level 25 (and I think one or two others) by introducing
a new item, the dormant bomb, which turns into a regular bomb when
something moves off of it.

Other accumulated tileset touchups that snuck in:

- Recolored the canopy to hopefully look more like a tent
- Lightened slime by one shade
- Made the custom green floor colors clash less, and lightened the
  yellow floor grout
- Removed the shadow from the pause stopwatch, and lightened the other
  two, to better distinguish their different behavior
- Added little rivets to steel walls
- Made the symbols on the sokoban blocks easier to see
- Lightened the blue and red keys to match the shade of the other two,
  and also hopefully make them easier to see atop water and thieves
- Shrank the railroad crossing sign slightly
- Added laces to the hiking boots
- Added shading to the bowling ball
- Removed the shadows from the actor versions of the bowling ball and
  dynamite
- Darkened the dynamite item to better distinguish it from active
  dynamite
- Lightened the blue teleporter exit so it doesn't look too much like an
  inactive red teleporter
- Improved the gradient on the beetle
- Made the hint tile look recessed like CC2, to better convey that it
  blocks some actors
- Added art for some possible tiles: rainbow teleporter, toll gate, nega
  heart, phantom ring, feather
2024-05-04 12:09:48 -06:00
Eevee (Evelyn Woods)
e33c35bbe0 Fix (or unfix) the search radius for orange buttons 2024-05-04 11:35:20 -06:00
Eevee (Evelyn Woods)
1481047b94 Adjust the bug/paramecium and frame blocks in the editor palette to be more consistent 2024-04-28 09:24:13 -06:00
Eevee (Evelyn Woods)
037d9d86fb Fix a couple missed spots with actors_move_instantly 2024-04-25 05:24:34 -06:00
Eevee (Evelyn Woods)
9763ceaa1c Revamp tileset options; refactor drawing a bit; work on tileset conversion
Tileset options now identify the tilesets by their appearance, rather
than the fairly useless "custom 1" or whatever.

At last you can draw a tile without creating a renderer.  Truly this is
the future.

Tileset conversion is still incredibly jank, but it does a fairly decent
job (at least at LL -> CC2) without too much custom fiddling yet.
2024-04-25 05:22:18 -06:00
Eevee (Evelyn Woods)
5a17b9022d Arrange the compat flags into categories & show compat icon in main UI 2024-04-24 12:30:59 -06:00
Eevee (Evelyn Woods)
0efbefb999 Politely decline to emulate a bug in TW Lynx 2024-04-24 07:52:11 -06:00
Eevee (Evelyn Woods)
55c4c574ec New MS compat flag: Block splashes don't block the player 2024-04-24 03:32:35 -06:00
Eevee (Evelyn Woods)
df0ab43e70 Add partial support for the mouse move format in TWS files 2024-04-24 03:21:14 -06:00
Eevee (Evelyn Woods)
097a4b04d8 Move Lynx trap ejection to its own mini-step 2024-04-23 02:58:23 -06:00
Eevee (Evelyn Woods)
7e210de5e7 New compat flag for making popwalls actually pop on arrival 2024-04-23 02:56:10 -06:00
Eevee (Evelyn Woods)
991704ee19 Erase animations at decision time, apparently 2024-04-23 02:52:47 -06:00
Eevee (Evelyn Woods)
c5f2728ad0 Fix the Lynx fake-wall flicking behavior 2024-04-23 00:31:56 -06:00
Eevee (Evelyn Woods)
6c3cf8b4b4 Fix DAT files to not insert implicit button connections 2024-04-22 13:57:31 -06:00
Eevee (Evelyn Woods)
1cb92a454d Show the correct replay input when rewinding 2024-04-22 12:49:46 -06:00
Eevee (Evelyn Woods)
430fa5c354 Length connection arrows for adjacent cells 2024-04-22 10:23:22 -06:00
Eevee (Evelyn Woods)
5da2cf14db Give the adjust tool a live preview (still rough) 2024-04-22 10:22:31 -06:00
Eevee (Evelyn Woods)
e7903d5895 Fix mirroring/flipping on ice corners and similar, oops 2024-04-22 10:21:58 -06:00
Eevee (Evelyn Woods)
6a92641d57 Add get_terrain() and get_actor() to StoredCell 2024-04-22 10:21:31 -06:00
Eevee (Evelyn Woods)
13918a579f Fix the center point for keyboard zoom 2024-04-22 10:09:25 -06:00
Eevee (Evelyn Woods)
20e2b64390 Update connections after a full-level transform 2024-04-22 10:09:04 -06:00
Eevee (Evelyn Woods)
0a5e5c66c2 Add a rough circuit preview to the wire tool 2024-04-22 09:44:50 -06:00
Eevee (Evelyn Woods)
5f80e880c2 Add shortcuts to zoom in/out and reset the zoom 2024-04-22 09:07:55 -06:00
Eevee (Evelyn Woods)
3a9e7c1cd8 Split the adjust tool into rotate/adjust
It was trying to do too many things.  Also, the adjust tool is now free
to operate on actors, and can toggle the form of a number of them.

- Rearranged the palette to put colored tiles in canonical key order,
  finally

- Expanded the size of the SVG overlay slightly so hover effects don't
  get cut off at the level border

- Fixed some MouseOperation nonsense by simply using the same object
  when the same operation is bound to both mouse buttons

- Added a verb and preview to the adjust tool, in the hopes of making it
  slightly more clear what it might do

- Enhanced the adjust tool to place individual thin walls and frame
  arrows
2024-04-22 00:24:07 -06:00
Eevee (Evelyn Woods)
abbda898c7 Add support for gray buttons to the adjust tool 2024-04-21 03:53:57 -06:00
Eevee (Evelyn Woods)
1170c5970e Fix blank circuit blocks? Although they seemed to work already? 2024-04-21 03:51:44 -06:00
Eevee (Evelyn Woods)
39f0f20dc6 Update implicit button connections when editing, I hope 2024-04-21 02:30:34 -06:00
Eevee (Evelyn Woods)
04d6b3dddb Refactor circuit-tracing to be more in algorithms
This should make it more usable in the editor.
2024-04-21 00:39:23 -06:00
Eevee (Evelyn Woods)
c45ebe60e1 Run replays in reverse order, in the hopes of a teeny speedup 2024-04-21 00:38:34 -06:00
Eevee (Evelyn Woods)
b360fa3998 Change sand slowdown from 100% to 50%, and give it the gravel sound 2024-04-20 03:34:14 -06:00
Eevee (Evelyn Woods)
29fbb56c88 Update grass description 2024-04-20 03:29:29 -06:00
Eevee (Evelyn Woods)
3dfa9bd361 Continue to fuck around with the color scheme a bit at a time 2024-04-20 03:27:11 -06:00
Eevee (Evelyn Woods)
43d5d65366 Fix loading of c2g zips, oops 2024-04-20 02:56:47 -06:00
Eevee (Evelyn Woods)
0098660d7b Change editor export to use fragments 2024-04-20 02:13:05 -06:00
Eevee (Evelyn Woods)
cd2d28dedd Switch to using fragment; support direct linking to packs and levels
That includes direct loading from GliderBot, though there is no UI for
this at the moment, and the URL is also not updated live.
2024-04-20 01:46:01 -06:00
Eevee (Evelyn Woods)
b6f38f835d Enable zlib compression of exported levels 2024-04-20 01:45:25 -06:00
Eevee (Evelyn Woods)
b44da28020 Try fruitlessly to make c2g parsing more tolerant of mistakes 2024-04-20 01:44:32 -06:00
Eevee (Evelyn Woods)
06ceb827f3 Don't let the player get stuck in an inactive red teleporter 2024-04-19 21:51:34 -06:00
Eevee (Evelyn Woods)
17f4e77054 Fix force-proof players to still bonk on force floors
Fixes the replay of Chaos to Metastable, my white whale!
2024-04-19 21:41:57 -06:00