Internal Changelog:
- Use string-int mapping for assets tracking
- static alloc assets (so there is a hard limit for now)
- Add simple assets test code
- Implement functions to load in assets
- Current assets:
- Texture + Sprites
- Sound
- Font
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:
- Add confirm and exit actions
- Exit action used in editor scene
- Confirm action for menu scene
- Hardcode scene switching in editor and menu scene
- Implement scene change function
- Scene is not resetted on switch
- Incorporate scene switchin into main function
Changelog:
- Rename scene.* to engine.* as the game engine is tied to the
base scene struct
- Combine *_impl.h into a single header
- Rename scene implementation source code file
- Add GameEngine struct and SceneState enum
Changelog:
- Add one more button for testing
- Add up and down actions
- Seperate out mouse mode and keyboard mode
- Enter mouse mode by moving mode
- Enter keyboard mode by keyboard input
- May need an action to detect mouse movement
- Add logic to cycle menu options
Changelog:
- Incorporate raygui
- raygui works but I would prefer to separate out detection logic
and rendering. So, adapt the original code for this
- ECS is not suitable for raygui (at least at this scale)
- It is more trouble than it is worth
- Implement simple menu test scene with two buttons
- They do nothing
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:
- Add components:
- selectable : indicate an entity is selectable
- selection : indicate an entity has a list of choices
- Add menu scene implementation and test
- Reduce repetition in CMakeLists in specifying libraries
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)
Changelog:
- Add map to collect collision events
- Resolve collision events after the solid entity resolving
- Bounce player on collision with crates and destroy crates
- Add fragile field under bbox component. This makes it such that an
entity can push others away (solid) but still apply gravity (fragile)
- Ground check requires solid and not fragile bbox
- This basically allow player to 'pass through' crates as crates
are fragile but solid
Changelog:
- Render entity after tile, display numbers after entity
- Add array to avoid re-checking collision against the same entity
- Increase maximum entity
Changelog:
- Fix crouch not holding when ceiling is too low for uncrouch
- This is due to a removal of the check for low ceiling. However,
the current state of the crouch action needs to be stored.
So, use second bit of the is_crouch for this in player state.
- Remove bit fields in player state. Optimise later if need be
- Draw entities over tiles, and gridlines over entities
- This is to prevent water covering the entities
- rework this in the future maybe
Changelog:
- Add solid field in bbox component
- Ground check now checks for solid entities
- Reset acceleration after movement update
- Crates are considered solid
- Print info on spawning entities and spawned entities
Changelog:
- Add new component: container
- Add function to spawn a crate
- Refactor player spawning into level scene init
- Modify tile collision to work on bbox components
- Add actions to switch entity to spawn
- Update spawn system to spawn a crate
Changelog:
- Refactor ground and water state as a separate component
- Refactor upthrust and gravity calc. as a separate system targetting
the new component
- General modification to use the new component
Changelog:
- Store entity idx for component map as key. This allows reference
to the entity for related components in a system
- Modify systems to iterate over components instead following the
above change. This follows closer to the intended ECS architecture
Changelog:
- Move ground and water states into CTransform
- Update state in movement update system
- Use 2 bits to check state transition for water and ground