Commit Graph

270 Commits (f98e2423784710ed820fb747bbc8bf77c18c9faa)

Author SHA1 Message Date
En Yi e1bef49d06 Fix tunneling for wooden tile
Just make the collision bbox to be tile_size.
The 'hitbox' of the tile is too thin.
2023-11-16 20:23:06 +08:00
En Yi bfab7df718 Play SFX on destroying wooden tile 2023-11-16 00:02:52 +08:00
En Yi 85e731392a Remove drawing of moveable grid 2023-11-15 23:35:38 +08:00
En Yi a9939200b7 Fix ladder not one-way on destruction 2023-11-15 23:32:10 +08:00
En Yi 7dd4c8413b Add action to toggle grid for sandbox 2023-11-15 23:30:13 +08:00
En Yi c64ef906e0 Reposition airtimer point check 2023-11-15 21:01:02 +08:00
En Yi 315d9849a7 Use water overlap for friction update
Also relocate the water overlap update
2023-11-15 20:53:41 +08:00
En Yi 0b5f34b9f3 Modify water upthrust behaviour
Changelog:
- Upthrust now depends on water area overlap with entity
- Fix complete overlap checks
2023-11-14 22:31:28 +08:00
En Yi 72c27ed92e Add more SFX
Also, revert crate ground state behaviour
2023-11-13 14:23:31 +08:00
En Yi c78dc50f50 Fix Boulder landing playing on spawning
Done by setting its ground state to 1. For consistency, this is
done to any entity that can 'land'. So far, this has no tangible
gameplay effects.
2023-11-13 11:34:39 +08:00
En Yi 8529a2c934 Use unsigned int for rres Id as per the struct 2023-11-11 13:04:24 +08:00
En Yi 816608029a Fix more sign int usage 2023-11-11 12:48:28 +08:00
En Yi 45d9e2a5f6 Use unsigned int for boulder checks 2023-11-11 12:44:57 +08:00
En Yi d947d95247 Fix signed int comparison 2023-11-11 12:44:37 +08:00
En Yi 97714eccf6 Use unsigned int for UI component count 2023-11-11 12:30:42 +08:00
En Yi ffc890240b Remove asset argument from entity creation 2023-11-11 12:18:45 +08:00
En Yi 2968172921 Use signed int for water runners 2023-11-11 12:06:19 +08:00
En Yi 15bb9c84ae Remove unused prev_pos in box edge checking 2023-11-11 11:56:08 +08:00
En Yi b150b3ad38 Change to manual init for entity tag map
The entity tag mapping is not that used often enough.

So, change it to manual init.
2023-11-11 11:14:22 +08:00
En Yi 029415e19f Add particles for arrow destruction 2023-11-10 23:15:12 +08:00
En Yi b17c521dfd Add emitter loading from RRES 2023-11-07 21:58:20 +08:00
En Yi d9b69aa09d Draw air meter in main game scene 2023-11-07 21:53:42 +08:00
En Yi d660b4e5a5 Add sound loading from rres file
Also, fixes mistake in raw data size when loading from RRES file
2023-11-07 21:49:15 +08:00
En Yi 26cc567b7f Add emitter config to asset file loading 2023-11-06 21:36:23 +08:00
En Yi e39e549cd0 Add sound in asset info 2023-11-06 20:49:30 +08:00
En Yi 0c540d5053 Move frame counter out of sprite component
This allows individual animation
2023-11-04 20:32:29 +08:00
En Yi 97f7afc401 Add more particle effects
Changelog:
- Add a dedicated tile destroy function
    Similar reason to destroy entity
- Add more sprites for particles
2023-11-04 17:05:54 +08:00
En Yi ebecc68941 Add better support for particle system
Changelog:
- Move sprite to emitter itself to allow better reusing emitter config
- Dedicate a function for destroying entity. This is helpful for dealing
  with events that only occurs during entity destruction
2023-11-04 14:36:59 +08:00
En Yi a8b62f5aec Integrate particle system into scenes
Changelog:
- Each scene will have its own particle system to maintain
- Crate destruction now emits particles
- Draw particles during screen renders
    - May want to make this configurable
    - Should be in general scene render
2023-11-02 22:44:52 +08:00
En Yi ad421d724a Add sprite rotation 2023-11-02 21:18:47 +08:00
En Yi b01edded42 Add chest sprite 2023-11-02 20:37:55 +08:00
En Yi 290dafdf86 Rework scene rendering function
Split off- and on-screen rendering. Off-screen rendering would be a
system now
2023-10-21 10:48:21 +08:00
En Yi b7a6c11b77 Improve scene drawing
Changelog:
- Add entity draw culling
- Tweak culling range
- Remove unnecessary draws for game scene, those are debug anyways
- Reorder draw in game scene for entity
2023-10-18 21:44:23 +08:00
En Yi 7dc66945da Add in engine configuration
All engine constants now sits in a single header file for easy tweaking
Also, SFX list fields is now an array rather than a pointer instead.
2023-10-13 21:55:30 +08:00
En Yi b9b0c11524 Separate out engine from scenes
This creates stronger separation the engine stuff from game
implementations.

way overdue tbh
2023-10-13 21:26:42 +08:00
En Yi b3de60b4bc Merge EC into engine directly
There is not much gained separating EC from engine. Merge it.
sc is still separated though.
2023-10-13 21:21:22 +08:00
En Yi 92555708d7 Put more boilerplate inits into engine init 2023-10-13 21:08:48 +08:00
En Yi e318c65135 Add some more sfx 2023-10-10 21:57:45 +08:00
En Yi 2b79b5e6bc implement simple sfx playback for jumping 2023-10-09 21:28:30 +08:00
En Yi 0a4c700bf6 Add camera lookahead when falling 2023-10-08 12:34:35 +08:00
En Yi ae730ce029 Finish initial camera behaviour
x follows a mass-spring-damper system
y is simple lerp. Doesnt follow player when jumping
2023-10-08 12:13:03 +08:00
En Yi b56e0e7f10 Clamp target position and revert to old behaviour
Need to figure out the y direction update. Should not be
the same way as x
2023-10-08 12:13:03 +08:00
En Yi d1d8033b77 Only apply new behaviour to x direction only 2023-10-08 12:13:03 +08:00
En Yi f8eab8acec Adjust parameters for camera 2023-10-08 12:13:03 +08:00
En Yi 835b88f1f4 Fix coyote jump issue
Changelog:
- Add check for coyote timer when jumping
- Set ladder state AFTER the jump check
2023-10-08 12:13:03 +08:00
En Yi 064341e2eb Initial implementation of camera system
Changelog:
- Implement effectively a PI controller
2023-10-08 12:13:03 +08:00
En Yi de29201a41 Fix uninitialised overlap value 2023-10-08 12:07:04 +08:00
En Yi 9f3061bae3 Implement coyote time 2023-09-29 21:18:08 +08:00
En Yi c2c00cfa51 Add quake-style jump buffering 2023-09-28 21:31:52 +08:00
En Yi 5398c08782 Integrate air timer in game scene 2023-09-28 20:47:10 +08:00
En Yi d4d3b317e2 Complete level data packing and loading 2023-09-28 16:10:20 +08:00
En Yi 359ac0a0ae Implement air meter
Changelog:
- Add air timer component
- Update movement component to keep track of x direction
    - This indicate the facing direction
- Implement air timer update system
- Add air timer component to player
- Render player's air timer
2023-09-27 22:08:16 +08:00
En Yi 26fa9af6b8 Allow null input for overlap for AABB check 2023-09-25 22:08:31 +08:00
En Yi ce8284ab39 Implement level ending
Internal Changelog:
- Activate on collected chest == all chest
- Add spawning level end entity
- Level ending in sandbox will just reset the scene
2023-09-25 22:04:13 +08:00
En Yi d54fee8935 Fix main game collision issue
Changelog:
- Add the refactored system to main game
- Reset coin counter to zero on (re-)start
2023-09-23 14:16:57 +08:00
En Yi e6784a4d71 Fix crates hitbox collision with player 2023-09-23 13:39:18 +08:00
En Yi e8ebe0f89c Improve player collision to chests vs crates
Internal Changelog:
- Delay zeroing velocity on edge check to after hitbox update
- Update player velocity on hitting a crate explicitly
    - This is due to the zeroing velocity changes above
    - This essentially allow 'phasing' through chest but not wooden
      crates
- Render crates using material instead of fragile flag
2023-09-23 00:28:03 +08:00
En Yi a8e0d99870 Implement collecting chests
Internal Changelog:
- Set chest limit to 65535
- Handle (de-)spawning chest on coin counter
- Add coin increment to chest collision with player
2023-09-21 22:08:02 +08:00
En Yi e1a0c6e4e0 Implement Chest Entity
Internal Changelog:
- chest entity: Basically crates, but high def, and fragile
- Add new spawn type for chest
- Add atk modifier for player->chest
- Make crate non-fragile
- Ignore chest for collision check and move with player
2023-09-21 21:48:32 +08:00
En Yi 51618cadc6 Reset ZSTD context before starting 2023-09-02 19:54:17 +08:00
En Yi 789d1b2577 Fix incorrect check for invalid assets 2023-09-02 19:51:36 +08:00
En Yi 5cfa0c0fc0 Add id check for each chunk load 2023-09-02 14:34:24 +08:00
En Yi 20d5bd4ac7 Integrate loading RRES data pack
Changelog:
- Add in rres
    - Split rres header only into two files. Easier to deal with. Sorry
      Raysan...
- Add function to load assets from rres chunk
- Add function to load player sprite info from rres chunk
- Test loading rres in scene test
2023-09-01 20:50:45 +08:00
En Yi 044a5831ff Integrate ZSTD decompression to load level 2023-08-26 22:17:53 +08:00
En Yi 62de96609b Fix (hopefully) one way collision 2023-08-20 16:40:51 +08:00
En Yi 5cbacf8516 Change keybinds to be more convenient
Also, remove asan compile flag for web build
2023-08-20 11:47:51 +08:00
En Yi e2bce62a9d Update editor scene to be larger
also prevent last row to be modified
2023-08-19 20:33:31 +08:00
En Yi 7dcc142a2d Correct CMakeLists for web build 2023-08-19 20:33:07 +08:00
En Yi 567b7ab173 Update instruction on metal toggling 2023-08-19 19:34:36 +08:00
En Yi e26f972600 Update crate colour when toggling metal 2023-08-19 19:30:39 +08:00
En Yi cf8e2ca1be Revert some changes for sandbox drawing
Changelog:
- Remove entity culling when drawing, not good right now
- Put back number of entity in each tile
2023-08-19 19:20:02 +08:00
En Yi fae37eeecd Test out compilation for the web 2023-08-19 18:21:27 +08:00
En Yi 99c34b4107 Reduce the number of line draws 2023-08-19 17:42:50 +08:00
En Yi 731a84273a Render the selection tiles only once
This is not pretty as this does not allow double (de-)init of the
sandbox scene, but should suffice for now
2023-08-19 17:38:13 +08:00
En Yi e6683dfec1 Draw only things within the game rectangle
Testing it out on sandbox for now
2023-08-19 16:40:12 +08:00
En Yi 963ba34164 Make water runner travel faster
Changelog:
- introduce travel speed: how many move can the water runner make
    - normal movement cost : 2
    - water movement cost : 1
2023-08-19 13:03:13 +08:00
En Yi d2a19c5405 Refactor out engine init, deinit, and key handling
To avoid repeated code
2023-08-19 12:20:16 +08:00
En Yi b30646103d Remove velocity check in moveable system
It's funner that way
2023-08-18 23:26:47 +08:00
En Yi 42e5caf695 Implement quit function in main menu
Will need to revise this in the future
2023-08-18 23:10:48 +08:00
En Yi 209f09e307 Add WASD control for sandbox scene 2023-08-18 00:29:02 +08:00
En Yi 4d12a02f91 Tweak player's movement
Changelog:
- Increase ground friction generally.
- Reduce friction when the player is moving on the ground. To compensate,
  reduce player acceleration as well. Now, the player stops faster
  without losing too much max speed.
2023-08-17 23:20:52 +08:00
En Yi 3a4671cecc Add hurtbox to player
Changelog:
- Update player bbox update
- Update hitbox update system to account for player
- Reduce explosion size to allow better chaining behaviour
- Reduce lifetime of destroyed crates
2023-08-17 22:19:01 +08:00
En Yi 8c889690e8 Add null checks when creating new entity
Also, fix player spawn to reuse the player
2023-08-17 21:51:11 +08:00
En Yi 93e3b24e40 Fix transition out of water collision check 2023-08-17 21:24:52 +08:00
En Yi 939fe7bc4e Allow boulder pushing when swimming 2023-08-17 21:10:11 +08:00
En Yi 216a0d9f0b Fix rotation not reset on sandbox restart 2023-08-17 21:03:47 +08:00
En Yi 62ecd3c0fa Create simple dead player respawn system
Changelog:
- Add player dead sprite
- Add function to create dead player entity
    - It is easier to create a new entity than to transform an existing
      one
- Update existing respawn system
2023-08-16 23:45:34 +08:00
En Yi cb68c6c6f4 Add toggle to activate crates on spawn 2023-08-16 22:29:17 +08:00
En Yi 27cb6b05c6 Display help text for selection in sandbox 2023-08-16 22:08:11 +08:00
En Yi 86a29ccba8 Add sprite info for explosion 2023-08-16 21:41:50 +08:00
En Yi d3029316b7 Add spikes sprite support
Add tile rotation. This is kind of a temp solution, since any sprite
could use rotation. So, may need to extend this for general sprite
2023-08-16 21:21:55 +08:00
En Yi bda335fd6a Fix mouse mode not activating buttons 2023-08-15 21:52:56 +08:00
En Yi e7c6f9929b Add sprite info for all crates 2023-08-15 21:08:46 +08:00
En Yi b980f16def Add sprite info for arrows and bombs 2023-08-15 20:43:04 +08:00
En Yi 6d97272420 Fix missing grid bound checking in game systems 2023-08-15 20:03:32 +08:00
En Yi cd8ec0c7ed Fix grid entities set update bug for OOB entities
When entities are marked for deletion, the tilecoord components
still exists, which can update the grid entities set, even if the
entity is not alive
2023-08-15 19:58:14 +08:00
En Yi bba12b9b39 Add Sandbox button in main program
Changelog:
- First button now loads the levelpack
2023-08-14 21:54:25 +08:00
En Yi e670af2519 Fix camera for levels smaller that viewport 2023-08-14 21:22:03 +08:00
En Yi 70d7fda22c Add game scene
This is slightly different from the sandbox
- No editting tiles and spawnning
- Can switch levels
2023-08-14 18:37:29 +08:00
En Yi e0ea01a4de Add level switching
Changelog:
- Water is now on a separate layer in LDtk
- Update water loading in assets functions
- Add actions to switch levels
2023-08-14 17:05:43 +08:00