Commit Graph

44 Commits

Author SHA1 Message Date
Eevee (Evelyn Woods)
54823f62bf Add some more actor inspection to debug mode 2021-01-22 08:37:14 -07:00
Eevee (Evelyn Woods)
cf72daacbe Checkpoint some minor editor bits 2021-01-14 00:53:54 -07:00
Eevee (Evelyn Woods)
b6ed3b6502 Change the Lexy loop to be more Lynx-like
This simplifies the renderer by having movement cooldowns only work one
way, and thus removes the jank from Steam rendering.

This commit also applies cooldowns for animations at decision time, as
Lynx does, which eliminates a weird special case from their spawning.

Also, Lexy mode now explicitly does not allow an actor to get cooled
twice in one tic.  However, this change does make clone machines no
longer be aligned with the thing that pressed the button to clone them,
which is unfortunate.
2021-01-13 01:34:08 -07:00
Eevee (Evelyn Woods)
246ef468de Fix rendering of tiles above the actor layer 2021-01-08 17:57:04 -07:00
Eevee (Evelyn Woods)
8f40f575bf Introduce a DrawPacket to consolidate draw arguments; fix blurriness of double-size monsters 2021-01-08 16:28:08 -07:00
Eevee (Evelyn Woods)
7ceab97472 Fix the editor's partial redrawing; place popup editors by bbox, not mouse position 2021-01-07 17:55:11 -07:00
Eevee (Evelyn Woods)
f35da9cc2b Finally populate the options dialog, with volume controls and tileset selection 2021-01-06 19:04:28 -07:00
Eevee (Evelyn Woods)
aed96c8e41 Add a bunch of minor rendering stuff
- Added the active player background

- Added bomb fuses (though LL doesn't use them)

- Added CC2-style double-size blob and walker (though LL doesn't use them)

- Added the rover's directional overlay

- Added custom push animations

- Added custom bouncing heart animations

- Added a puff when opening a door or socket, or revealing a fake floor

- Fixed the rover's animations being a bit mixed up

- Fixed player walk animations occasionally being glitchy

- Touched up the fake floor x-ray tile

- Touched up the canopy x-ray tile

- Touched up the purple ball's shadows

- Touched up the transmogrifier and transmogrify flash
2021-01-05 17:10:21 -07:00
Eevee (Evelyn Woods)
31a1049655 Fix x-ray glasses breaking the renderer 2021-01-04 17:59:24 -07:00
Eevee (Evelyn Woods)
683ab6a2c9 Fix some fallout from all that editor rendering stuff 2021-01-03 18:43:24 -07:00
Eevee (Evelyn Woods)
90fa352a50 Split out editor drawing and slightly speed up normal drawing 2021-01-03 18:03:58 -07:00
Eevee (Evelyn Woods)
323ed3ee18 Refactor to using cells with fixed slots
This better matches CC2 behavior and also makes some very common
operations, like grabbing a cell's actor or terrain, way faster.

It also allows me to efficiently implement CC2's layer order when
checking for collisions; thin walls are checked before terrain, and
actors only afterwards.  The upshot is that bowling balls no longer
destroy stuff on the other side of a thin wall!

I also did some minor optimizing, mostly by turning loops over an entire
cell's contents into checks for a single layer; Chromium now performs a
bulk test about 30% faster.

Downsides of this change:
- All kinds of stuff may have broken!
- It'll be a little difficult to ever emulate MSCC's curious behavior
  when stacking terrain on top of items or other terrain.  But not
  impossible.
- It'll be far more difficult to emulate buggy Lynx (or maybe it's just
  Tile World?) behavior where some combination of cloners and teleports
  allow a ton of monsters to accumulate in a few cells.  I guess I
  wasn't planning on doing that anyway.
2021-01-03 17:19:27 -07:00
Eevee (Evelyn Woods)
de53582d47 Fix perception and use it to implement the xray eye 2020-12-29 20:42:53 -07:00
Eevee (Evelyn Woods)
48f085d0df Remove Level.cells in favor of linear_cells 2020-12-17 15:51:57 -07:00
Eevee (Evelyn Woods)
f521bd6d2d New debug options: disable interpolation, show actor bboxes 2020-12-08 16:40:35 -07:00
Eevee (Evelyn Woods)
700d3898ab Add a half-baked notion of perception level to tile rendering 2020-12-03 21:18:46 -07:00
Eevee (Evelyn Woods)
ec5d9f7b12 Editor: Add selected tile, tool help, and hint editing; clean up toolbar style 2020-12-02 11:34:46 -07:00
Eevee (Evelyn Woods)
14061dec0e Fix the editor's viewport size to match the level 2020-11-28 12:36:35 -07:00
Eevee (Evelyn Woods)
ac6e33bb6c Simplify blitting; fix arrow blitting; impl light switch; load more items 2020-11-25 01:14:15 -07:00
Eevee (Evelyn Woods)
84840d2b02 Consider turn-based mode to be aid; switch back to realtime correctly 2020-11-03 10:32:25 -07:00
Eevee (Evelyn Woods)
e7e02281a2 Clean up turn-based code
Mostly style nits, but also:

- Renamed some stuff in anticipation of removing GameEnded.

- Actor decisions are independent, so there's no need to do most of them
  in the first part of a tic and the player in the second part; they can
  all happen together in the second part.

- waiting_for_input was merged into turn_based, which I think makes it
  easier to follow what's going on between tics.  Although I just
  realized it introduces a bug, so, better fix that next.

- The canvas didn't need to know if we were waiting or not if we just
  force the tic offset to 1 while waiting.  This also fixed some slight
  jitter with force floors.
2020-11-03 09:50:37 -07:00
Timothy Stiles
509b3ca3b7 Merge remote-tracking branch 'upstream/master' 2020-10-25 14:31:32 +11:00
Eevee (Evelyn Woods)
2820c067c5 Implement the CC2 "no sign" 2020-10-23 17:37:50 -06:00
Timothy Stiles
4388402850 Merge remote-tracking branch 'upstream/master' 2020-10-14 22:43:35 +11:00
Timothy Stiles
be5cc7f97f spaceify 2020-10-14 22:23:13 +11:00
Timothy Stiles
a8ce3bca11 fix bugs
we're back at parity now, it looks like
2020-10-14 21:42:51 +11:00
Eevee (Evelyn Woods)
7f8efaa4e0 Fix flicker when moving in sync with a N/W actor at the edge of the viewport 2020-10-04 09:40:52 -06:00
Eevee (Evelyn Woods)
432bb881e6 Split out mouse operations; add camera regions, our first custom feature 2020-09-28 02:58:11 -06:00
Timothy Stiles
ccfd5c30ce fix animation ugliness in turn-based mode
Uguhughugh it looks SO SMOOTH NOW. I can go to bed happy.
2020-09-26 23:45:53 +10:00
Eevee (Evelyn Woods)
16f87bf6e0 Fix hot blocks appearing to move backwards on death 2020-09-19 22:47:04 -06:00
Eevee (Evelyn Woods)
171c52acb5 Fix rewind effect to go up, not down 2020-09-16 19:57:17 -06:00
Eevee (Evelyn Woods)
063d9f9ef9 Implement rewind, add a key for it, and suggest keys in general 2020-09-16 19:40:38 -06:00
Eevee (Evelyn Woods)
fe12c599bc Abort the tic and draw a final frame after the game ends; fix dead player appearance 2020-09-16 18:14:06 -06:00
Eevee (Evelyn Woods)
e70e92b931 Move responsibility for drawing out of Tileset and into the renderer 2020-09-16 14:10:10 -06:00
Eevee (Evelyn Woods)
2e0519f802 Get rid of the Level.tic_offset hack and stop passing level to Tileset.draw 2020-09-16 13:29:57 -06:00
Eevee (Evelyn Woods)
cce28c2d7e Rearrange C2M tile definitions to make saving easier
Also, tile templates no longer use name or carry format-specific
modifiers; they have the same properties as real tiles.
2020-09-15 22:45:15 -06:00
Eevee (Evelyn Woods)
e8d3adfe8e Fix rotating actors in the editor 2020-09-10 21:06:58 -06:00
Eevee (Evelyn Woods)
1a9c3f619d Fix trying to draw out of bounds 2020-09-10 11:05: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)
dea7a7b754 Add a splash screen and the beginning of an editor 2020-09-05 16:21:31 -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)
8309b80342 Fix draw order of tiles in a cell once and for all 2020-09-03 10:39:19 -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