Changelog:
- Change ladder to be in player state component
- Add ladder state transition
- Hold up or down to enter ladder when overlap with ladder
- On ground, ladder has to be on foot
- Either jump or exit a ladder to exit ladder state
- Ignore external forces during ladder state
- Ladder uses velocity instead of acceleration to move player
- Reduce jump speed if not on ground (such as on ladder)
- Make water transparent, finally
Changelog:
- Add checks for ladder's solidity when spawning/despawning ladders
- Move crouch state check into player movement system
- Add ladder state for later implementation
Internal Changelog:
- Add ONEWAY handling in check_collision
- All collision check now requires a prev_position check due to the
one-way tile check. Update relevant function signature
- On ground check now does an edge check instead of using the offset
check
Changelog:
- Add new enums for tile and solidity
- Modify check_collsion_and_move function to account for one way
collision
- Also remove the collision value as it is not used
- Add spawning for oneway tile
Squashed commit of the following:
commit 249fb96c63f68913ef632b8d1006e8a2d1c1b6d3
Author: En Yi <en.yi@tutanota.com>
Date: Sat Apr 15 22:51:08 2023 +0800
Ensure 120 column width limit
Changelog:
- this is just to avoid overly long line of code
commit 4b1ffa8fc89f17418de15f5fc3f0e73040f1d40c
Author: En Yi <en.yi@tutanota.com>
Date: Sat Apr 15 20:05:07 2023 +0800
Ensure style consistency in For loop
commit dcb41960407224592f78278313e97c2cc4bf66a5
Author: En Yi <en.yi@tutanota.com>
Date: Sat Apr 15 17:26:20 2023 +0800
Ensure consistency in code style
Internal Changelog:
- Use char* var instead of char *var. Preference
Changelog:
- Dont zero velocity on detected collision
- Velocity is zerod post-movement by checking the edges. This is in
contrast with zeroing acceleration pre-movement
Changelog:
- When player move diagonally into a corner, collision is missing.
This is because collision is resolved one-by-one and will not
move the player if the new position still causes collision. In this
literal corner case, player will not be moved as the player collide
with both solids and resolving in either direction would still result
in collision in the new position, unless both is resolved at the same
time.
Temporary 'fix' this by not checking the new position. No real idea
on how to solve this for now.
Changelog:
- Add new components: hitbox and hurtbox
- Update player and crates with hitbox and hurtbox
- Add printing of mempool stats
- FIX CRITICAL BUG: use entity idx when removing from component map
- Previously, it incorrectly uses the component idx
- Check for entity aliveness before removal and collision checks
- KWOWN ISSUE: Player can get stopped by metal crates when walking on
them
Changelog:
- Collision functions now accepts the entity idx to exclude
- Fix tile update system to enter ent idx as both key and value to
tile's entities set
- Re-Introduce regression:
- Player can walk across crates without them
- This is re-introduce by ground check only checking for solid bbox
- Without this, metal crates will sink into crates as they are not
considered on ground
- To properly solve this, need a hitbox on the player, which
requires a new component
Changelog:
- Zero out acceleration when colliding with solid tile or strong entities
- This is to prevent continuous overlap after a single collision
horizontally, similar to the gravity handling
Changelog:
- Check for collision before moving
- Refactor out collision check and move function
- Remove anchor check when shifting bbox as it is unneccesary
- Collision checking will check for tiles and entities
Changelog:
- Check for collision before shifting bbox
- This fix the odd bbox shifting when exiting water
- Hack a way to force crouch when exiting water
Changelog:
- Jump is not recovered when exiting water on ground. Fix by doing a
ground check to recover a jump when exiting water
- Disable crouching when not on ground
- Slightly refactor crouch handling
Changelog:
- Fix edge case where jumps are not recovered consistently when
exitting out of water and immediately landing
- Fix friction not applied to crates (and other entities)