Commit Graph

32 Commits (9eb46d0e571923cfc7a1003b1dd4c3c2035a37c4)

Author SHA1 Message Date
En Yi 9eb46d0e57 Implement ladder mechanics
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
2023-05-06 18:39:10 +08:00
En Yi c44696c1f8 Fix ladder spawning solid issue
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
2023-05-06 12:19:15 +08:00
En Yi b5e7d8846f Add collision handling for one-way tile
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
2023-05-04 12:48:32 +08:00
En Yi 36e84d1b75 Add one way tile
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
2023-05-02 21:54:29 +08:00
En Yi dc760bf8db Attempt to apply code style consitency
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
2023-04-15 22:52:38 +08:00
En Yi 82b8a3b988 Implement simple animation system
Changelog:
- Add sprite map for player
- Add an animation system
- Add a placeholder player sprite transition function
2023-03-18 13:55:55 +08:00
En Yi 92cb1855ba Increase player hitbox size 2023-03-06 20:42:30 +08:00
En Yi ddcb71ed50 Temp fix for 'crate super jump'
Changelog:
- Override jump height instead to adding to it
- This is pretty fun exploit though
2023-03-04 11:32:02 +08:00
En Yi 0a5eb36c34 Refactor bbox edge checking as a function 2023-03-04 10:46:22 +08:00
En Yi 8ae647994a Improve collision resolution for velocity
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
2023-03-04 10:24:25 +08:00
En Yi 45972d6416 Slow down player when crouching
Changelog:
- Add friction coefficient to transform component and its update system
2023-03-04 09:36:26 +08:00
En Yi 8d94943547 (Temporary) Fix corner collision issue
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.
2023-02-28 20:56:54 +08:00
En Yi c8ea03359c Prevent crate bashing at the corner
Changelog:
- Allow two hitboxes in hitbox component
- Create a cross-shaped hitboxes for player
2023-02-28 20:54:48 +08:00
En Yi 22b4190947 Refactor collision function signature 2023-02-25 11:54:43 +08:00
En Yi df66b7d9a3 Fix regression in lower velocity in water
Changelog:
- Revert jumped check for short hopping. Without it, the check will pass
  when player is in water
2023-02-23 20:53:12 +08:00
En Yi 95c4b98879 Remove some questionable code
Changelog:
- Don't shorten overlap, that is already done on position after
  movement update
- Don't extend tile when updating tile coord
2023-02-18 15:27:04 +08:00
En Yi a8567e2666 Implement hitbox and hurtbox system
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
2023-02-16 22:44:05 +08:00
En Yi b06d25f328 Implement metal crates
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
2023-02-15 22:35:11 +08:00
En Yi cf38949956 Fix jump spam and recovery
Changelog:
- Hold to jump is removed. Need to release jump action to recover jump
- Fix jump recovery issue when interacting with crates and ground
2023-02-14 23:05:31 +08:00
En Yi 68e8f7bf1c Allow jumping in one tile gaps
Changelog:
- With the change in bbox shifting, jumping in gaps is possible
2023-02-04 22:52:04 +08:00
En Yi e465b0c1d4 Zero out accel for contacts in y-direction 2023-02-04 17:37:07 +08:00
En Yi e4018f1ad6 Fix edge case in handling horizontal movement
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
2023-02-04 17:22:01 +08:00
En Yi 0165016a7c Refactor collision event to be LevelSceneData 2023-02-04 16:17:15 +08:00
En Yi c2bf930059 Fix player collision with crates
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
2023-02-04 16:00:37 +08:00
En Yi c5c9b84154 Fix bbox shifting when resizing
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
2023-02-04 12:24:50 +08:00
En Yi 2e9fadb79f Rework forcing crouch on ground
Changelog:
- Change to check the player 'head' for collision to force crouch
2023-02-02 23:11:19 +08:00
En Yi dc24f17925 Fix jumping issue when exitting 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
2023-02-01 21:02:43 +08:00
En Yi 896a23fb5c Improve crate bashing
Changelog:
- Use fragile property to destroy the crates
2023-01-30 20:51:53 +08:00
En Yi 5ddb9f00ca Fix bugs related to entity with water
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)
2023-01-21 15:38:24 +08:00
En Yi 0966c3ce29 Allow modular jump on crate bounce 2023-01-21 11:36:47 +08:00
En Yi 87b2db4ea4 Refactor AABB functions 2023-01-21 11:12:06 +08:00
En Yi 9223dcc0e9 Refactor out game systems for scene 2023-01-21 10:44:02 +08:00