Commit Graph

267 Commits

Author SHA1 Message Date
Eevee (Evelyn Woods)
468a1d44ba Get wire rendering correctly, at least for floors 2020-09-14 19:34:48 -06:00
Eevee (Evelyn Woods)
13b4180ab8 Make teleporting undoable 2020-09-14 18:09:13 -06:00
Eevee (Evelyn Woods)
b88d42582c Stub out enough stuff to get CC2 Lesson 5 loading
- Wire is...  well, ignored
- Pink and black buttons load but don't do anything
- Railroad is loaded but doesn't do anything
- Bowling ball, purple toggle wall/floor, rover...  you get the idea
- Railroad sign would work if railroad did, though
2020-09-14 17:25:30 -06:00
Eevee (Evelyn Woods)
ec41139960 Stub out enough to get CC2 Lesson 4 loading
- Gender signs: implemented
- Transmogrifier: basically implemented
- Yellow tank: basically implemented
- Directional blocks: load but don't draw or behave correctly
- Floor mimic: moves at hyperspeed
- Secret eye: no effect
2020-09-14 16:03:35 -06:00
Eevee (Evelyn Woods)
54aaed73a0 Green bombs also count towards the required chip count 2020-09-14 14:15:54 -06:00
Eevee (Evelyn Woods)
c913df5e53 Players can't escape creatures exactly behind them 2020-09-12 21:16:48 -06:00
Eevee (Evelyn Woods)
090ba24062 Allow players to turn in traps 2020-09-12 21:06:06 -06:00
Eevee (Evelyn Woods)
f511e2ecb9 Make cloning undoable 2020-09-12 21:00:50 -06:00
Eevee (Evelyn Woods)
b26820d99b Fix revealing the void under a block hiding an item in CC1 2020-09-12 20:58:28 -06:00
Eevee (Evelyn Woods)
d3dfcba63b Don't remove the player when stepping on a bomb; it breaks things 2020-09-12 20:45:34 -06:00
Eevee (Evelyn Woods)
afa132bd4c Undo GCing the actor list 2020-09-12 20:36:11 -06:00
Eevee (Evelyn Woods)
5ccaad4666 Remember the player's secondary direction earlier 2020-09-12 20:11:14 -06:00
Eevee (Evelyn Woods)
5d39e37ad2 Implement CC2 input handling, bumping, and block slapping 2020-09-12 20:07:26 -06:00
Eevee (Evelyn Woods)
64bd6c49d9 Implement Melinda basics: ignores ice, can't walk on dirt/gravel 2020-09-12 19:03:38 -06:00
Eevee (Evelyn Woods)
ee333ddb7d Always update the previous cell when drawing force floors 2020-09-11 17:42:46 -06:00
Andrew Ekstedt
f0f2259aa1 Improve support for High DPI displays
On high DPI displays, a logical pixel does not necessarily equal a
device pixel. Images and such are scaled up to the logical pixel size;
unfortunately this introduces ugly aliasing. Web pages can take
advantage of high DPI screens by intentionally scaling stuff down to be
displayed at a higher resolution. By carefully canceling out the
automatic scaling of the game canvas we get nice crisp pixels even on
high DPI screens.

See the pull request for before/after screenshots.
2020-09-11 16:17:36 -07:00
Eevee (Evelyn Woods)
d3e60b88fa Stub out enough for CC2's Lesson 3 to load 2020-09-10 21:21:30 -06:00
Eevee (Evelyn Woods)
e8d3adfe8e Fix rotating actors in the editor 2020-09-10 21:06:58 -06:00
Eevee (Evelyn Woods)
6e7790efa6 Fix drawing with the mouse (button and buttons use different ordering) 2020-09-10 20:51:38 -06:00
Eevee (Evelyn Woods)
0c2295dc1d Make the editor grid a bit more rigid; add a few more basic tiles 2020-09-10 20:44:34 -06:00
Eevee (Evelyn Woods)
6bfb5f7896 Add mouse3 panning to the editor 2020-09-10 20:31:01 -06:00
Eevee (Evelyn Woods)
7c9bc92627 Start on editor UI; introduce some tools; implement adjust and force floors 2020-09-10 20:24:20 -06:00
Eevee (Evelyn Woods)
5da3a0f473 Load random force floors from c2m; read the initial direction from replays 2020-09-10 18:22:50 -06:00
Eevee (Evelyn Woods)
55214fad75 Add some visual feedback to the chip, time, and score counters 2020-09-10 18:07:49 -06:00
Eevee (Evelyn Woods)
16bfe22593 Implement score flags and the stopwatches 2020-09-10 17:45:14 -06:00
Eevee (Evelyn Woods)
9b9536d586 Sliding actors don't get to make a decision 2020-09-10 17:13:57 -06:00
Eevee (Evelyn Woods)
dd287284ef Boots block monsters 2020-09-10 17:13:57 -06:00
Andrew Ekstedt
71008d5a20 Avoid lookbehind assertion
The game fails to load under Firefox 77.0 with the very helpful error
message,

    SyntaxError: invalid regexp group   format-c2m.js:1:1

Turns out that it doesn't like the `(?<=^|\n)` lookbehind group in
the CLUE regexp. It seems lookbehind support wasn't added until FF 78,
according to the big table[1]. Switch it to a multiline regexp instead.

[1]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#Browser_compatibility
2020-09-10 15:01:06 -07:00
Eevee (Evelyn Woods)
6fd5759de3 Fix chip sockets 2020-09-10 12:55:15 -06:00
Eevee (Evelyn Woods)
1453f68de5 Split up the actor loop, so actors make decisions in a separate pass
This fixes a lot of subtle issues: creatures hitting you when you push a
block past them, blocks moving jerkily while you push them (not even
sure why on that one), probably implementation of "the stupid glitch"...
2020-09-10 12:39:18 -06:00
Eevee (Evelyn Woods)
549b34ad30 Split out the game proper 2020-09-10 11:05:38 -06:00
Eevee (Evelyn Woods)
1a9c3f619d Fix trying to draw out of bounds 2020-09-10 11:05:24 -06:00
Eevee (Evelyn Woods)
6b5b8b06aa Spruce up the options dialog, though it still doesn't work 2020-09-09 21:39:24 -06:00
Eevee (Evelyn Woods)
57ee13425e Draw actors as they cross the viewport boundary too 2020-09-09 20:54:19 -06:00
Eevee (Evelyn Woods)
e85a896f5c Add CCLP3 2020-09-09 20:45:16 -06:00
Eevee (Evelyn Woods)
51a554286a Fix teeth not moving on levels without a time limit 2020-09-09 20:08:51 -06:00
Eevee (Evelyn Woods)
4d44441983 After a clone, mark the new clone as stuck too 2020-09-09 20:02:15 -06:00
Eevee (Evelyn Woods)
ac053d6c1f Restart the level when switching back from the editor 2020-09-09 18:47:18 -06:00
Eevee (Evelyn Woods)
274fa7c3c5 Only the player can step on thieves 2020-09-09 17:28:19 -06:00
Eevee (Evelyn Woods)
420b497cf2 Only the player can step on hints 2020-09-09 17:18:08 -06:00
Eevee (Evelyn Woods)
a3928b2865 Implement splashes and explosions, at least partially 2020-09-08 15:16:35 -06:00
Eevee (Evelyn Woods)
321641d8d8 Make fire block monsters; cleanup in prep for more CC2 nonsense 2020-09-08 14:52:23 -06:00
Eevee (Evelyn Woods)
8097339886 Implement green bombs/chips, ice blocks, and custom walls/floors 2020-09-08 14:42:38 -06:00
Eevee (Evelyn Woods)
88ec9f89e7 Fix turtles and implement swivels; CC2 LESSON 1 now replays correctly! 2020-09-08 14:23:55 -06:00
Eevee (Evelyn Woods)
214a430e52 Load the CC2 thin walls (and canopy) 2020-09-08 14:11:20 -06:00
Eevee (Evelyn Woods)
d38cbc9294 Add more items to the editor, fix its buttons, do smart drawing 2020-09-08 12:39:06 -06:00
Eevee (Evelyn Woods)
bd25fb02b1 Oops, fix re-trapping actors 2020-09-07 14:48:29 -06:00
Eevee (Evelyn Woods)
646fafc153 Make traps, doors, and the chip socket undoable 2020-09-07 14:43:34 -06:00
Eevee (Evelyn Woods)
bb50189644 Actors who start on traps should start the level trapped 2020-09-07 14:38:31 -06:00
Eevee (Evelyn Woods)
de98ba1a60 Creatures also block blocks 2020-09-07 13:21:28 -06:00
Eevee (Evelyn Woods)
bdf0caf4e7 Force a move on anything released from a trap 2020-09-07 13:14:43 -06:00
Eevee (Evelyn Woods)
2b07254d70 Fix undoing of slide moves 2020-09-05 19:50:09 -06:00
Eevee (Evelyn Woods)
9197061096 Don't stop when hitting a wall on a force floor 2020-09-05 19:41:36 -06:00
Eevee (Evelyn Woods)
136fa432e3 Prevent pushing a block off a cloner 2020-09-05 19:19:08 -06:00
Eevee (Evelyn Woods)
2096c42dbf Add clone blocks to the Tile World layout 2020-09-05 18:43:59 -06:00
Eevee (Evelyn Woods)
5361cff70a Give blocks a speed so they behave correctly when moving on their own (via ice, clone, etc) 2020-09-05 18:20:26 -06:00
Eevee (Evelyn Woods)
3d6dca2440 Fix blocks sliding on ice and also squishing the player 2020-09-05 17:57:48 -06:00
Eevee (Evelyn Woods)
4ccf17120b Fix turning around when hitting a wall on an ice corner 2020-09-05 17:47:33 -06:00
Eevee (Evelyn Woods)
a43b7e1d37 Wire up the "change pack" button 2020-09-05 17:37:11 -06:00
Eevee (Evelyn Woods)
06c4733e3f Make suction boots apply to all-way force floors 2020-09-05 17:31:11 -06:00
Eevee (Evelyn Woods)
077999de57 Fix restart 2020-09-05 17:30:41 -06:00
Eevee (Evelyn Woods)
b01601fab6 Correctly identify DAT files; don't render editor when not in use 2020-09-05 17:17:59 -06:00
Eevee (Evelyn Woods)
bd526059f7 Unbreak opening CCLP1 (oops) 2020-09-05 17:11:34 -06:00
Eevee (Evelyn Woods)
6f6f0fab48 Finally support "uploading" your own levels 2020-09-05 17:10:52 -06:00
Eevee (Evelyn Woods)
dea7a7b754 Add a splash screen and the beginning of an editor 2020-09-05 16:21:31 -06:00
Eevee (Evelyn Woods)
25989fc75b Limit the undo stack to 200 tics 2020-09-03 13:55:19 -06:00
Eevee (Evelyn Woods)
8384b8d268 Auto-pause when losing focus 2020-09-03 13:53:22 -06:00
Eevee (Evelyn Woods)
ea31abe7a6 Change the viewport default size back to 9x9 2020-09-03 13:50:59 -06:00
Eevee (Evelyn Woods)
caf695acfe Put thin walls on the terrain layer for now 2020-09-03 10:44:19 -06:00
Eevee (Evelyn Woods)
8309b80342 Fix draw order of tiles in a cell once and for all 2020-09-03 10:39:19 -06:00
Eevee (Evelyn Woods)
15d3d43b76 Let's just guarantee that tic_offset is never 1 2020-09-03 10:31:46 -06:00
Eevee (Evelyn Woods)
bd57f686c7 Fix walk animation speed; fix occasional camera hiccups 2020-09-03 10:28:34 -06:00
Eevee (Evelyn Woods)
041d0223c7 Make ignoring work on sliding tiles again 2020-09-03 10:28:17 -06:00
Eevee (Evelyn Woods)
4972b0bc82 Fix teeth behavior to match CC2 2020-09-03 10:11:26 -06:00
Eevee (Evelyn Woods)
2df8607243 Fixed several issues with animation and movement; quick stab at replay UI
- Animation now has its own timer and isn't linked to movement cooldown,
  which is good for blocks since they don't have movement cooldown

- Destroyed actors don't crash the game again (oops)

- Slide and cooldown handling was reshuffled to better support the CC2
  approach of landing on tiles with a delay; in particular, you move at
  double speed on sliding tiles again!

- Demo playback got some rough UI so I don't have to keep editing the
  source code to decide whether to play a demo
2020-09-03 09:46:37 -06:00
Eevee (Evelyn Woods)
bee6ba4c80 Fix CC2 encoding of S/E thin walls 2020-09-03 09:46:06 -06:00
Eevee (Evelyn Woods)
a36ca20b26 End replays at 0xFF; ignore P2's input; delete old comments 2020-09-03 09:45:51 -06:00
Eevee (Evelyn Woods)
44978490ed Round to the pixel grid when drawing 2020-09-03 09:44:49 -06:00
Eevee (Evelyn Woods)
13dc5f73b1 Start to split out the renderer and add support for smooth scrolling 2020-09-03 07:36:05 -06:00
Eevee (Evelyn Woods)
8d89f7d9dd Finish removing 'doomed'; remove Cell.each 2020-09-02 05:26:59 -06:00
Eevee (Evelyn Woods)
0ba5ecc7e3 Implement (PARTIAL) undo; remove 'doomed'; fix a few small tile bugs 2020-09-02 05:20:23 -06:00
Eevee (Evelyn Woods)
1cc631c27e Load custom trap/cloner connections from CC1 .DAT levels 2020-09-01 09:48:17 -06:00
Eevee (Evelyn Woods)
5416167192 Disallow cloning when the target tile is blocked 2020-09-01 07:40:52 -06:00
Eevee (Evelyn Woods)
060895c5ba Fix rendering of thin walls using a CC2 tileset 2020-09-01 07:36:14 -06:00
Eevee (Evelyn Woods)
4d6d835895 Implement walkers, blobs, and teeth 2020-09-01 07:01:02 -06:00
Eevee (Evelyn Woods)
aa7952a3dd Improve dialog styling; add about text; stub out options 2020-09-01 06:46:29 -06:00
Eevee (Evelyn Woods)
c8bdf121d0 Auto-size the game to fit the browser window 2020-09-01 05:51:26 -06:00
Eevee (Evelyn Woods)
9dccb310e0 Implement random force floors 2020-09-01 05:26:25 -06:00
Eevee (Evelyn Woods)
7a9bc725d4 Implement blue teleporters 2020-09-01 05:15:50 -06:00
Eevee (Evelyn Woods)
cd7a328963 Delete the demo scrubber; complex and not very useful 2020-09-01 05:01:48 -06:00
Eevee (Evelyn Woods)
ab377f6593 Fix demo playback (!): bumping doesn't cause cooldown, thieves were backwards 2020-09-01 05:00:57 -06:00
Eevee (Evelyn Woods)
2ae053d87a Implement traps! 2020-09-01 01:36:47 -06:00
Eevee (Evelyn Woods)
eb2dd7a4a4 Implement clone machine! 2020-09-01 01:31:42 -06:00
Eevee (Evelyn Woods)
2b4450fc8c Prevent spacebar from scrolling 2020-08-31 12:24:07 -06:00
Eevee (Evelyn Woods)
af65e3d5b3 Whoops, fix syntax error 2020-08-31 12:18:39 -06:00
Eevee (Evelyn Woods)
8309ff37a8 Add an incredibly crappy restart button 2020-08-31 12:18:09 -06:00
Eevee (Evelyn Woods)
051730750b Always put the player first in actor order 2020-08-31 12:07:11 -06:00
Eevee (Evelyn Woods)
730824e697 Define clone blocks and teeth in the CC2 tile layout 2020-08-31 12:06:58 -06:00
Eevee (Evelyn Woods)
6076b3c9a1 Add an incredibly bad level select 2020-08-31 11:33:01 -06:00
Eevee (Evelyn Woods)
a76a44e1b8 Fuck it, I guess let anyone use the secret query args 2020-08-31 11:06:27 -06:00
Eevee (Evelyn Woods)
070d276e8a Implement green/blue buttons, tanks, monster death; stub out remaining CC1 objects; easy restart on death 2020-08-31 11:03:14 -06:00
Eevee (Evelyn Woods)
0390d54909 Styled the whole page; reimplemented pausing; implemented success, score, and time 2020-08-31 10:27:29 -06:00
Eevee (Evelyn Woods)
b871181bf4 Add support for demos, terrible UI for it, and a clumsy pause button 2020-08-31 08:40:44 -06:00
Eevee (Evelyn Woods)
101b68c017 Map out most of the parts of the CC2 tile layout that I can actually draw 2020-08-30 04:52:47 -06:00
Eevee (Evelyn Woods)
731d3c15a8 Rewrite movement loop and timing to better match Lynx rules 2020-08-30 01:50:34 -06:00
Eevee (Evelyn Woods)
413c511fe1 Implement specialized blocking for dirt, gravel, chips, etc. 2020-08-29 02:22:55 -06:00
Eevee (Evelyn Woods)
b3a0ff963c Begrudgingly support letter tiles 2020-08-29 02:10:27 -06:00
Eevee (Evelyn Woods)
a2e1a4fd9a Stop parsing a C2M at END; fix CC2 force floor tiles 2020-08-29 01:31:05 -06:00
Eevee (Evelyn Woods)
ec872d93d2 Implement implicit terrain for C2M; implement thin walls 2020-08-29 01:14:59 -06:00
Eevee (Evelyn Woods)
a9b1af8e62 Support CC2's multiple hints 2020-08-29 00:58:04 -06:00
Eevee (Evelyn Woods)
a50de91195 Implement appearing walls and popwalls 2020-08-29 00:30:01 -06:00
Eevee (Evelyn Woods)
576a7b0c26 Finish specifying the Tile World tileset layout 2020-08-29 00:25:28 -06:00
Eevee (Evelyn Woods)
050c4e0322 Fix missing floor tiles in DAT levels 2020-08-29 00:25:17 -06:00
Eevee (Evelyn Woods)
bbfa0a6e8f Split out CC2 tile bytes; stub out enough for Lesson 1 to load; show inventory; implement misc bits 2020-08-28 07:01:28 -06:00
Eevee (Evelyn Woods)
15d9101ebf Allow me to play commercial levels locally 2020-08-28 05:38:23 -06:00
Eevee (Evelyn Woods)
0dd190fc5a Finish CC1 parser; show hints; improve ice 2020-08-28 05:24:25 -06:00
Eevee (Evelyn Woods)
3084ca7b49 Initial commit: a game that plays through some of CCLP1 2020-08-28 04:02:03 -06:00