Internal Changelog:
- Add a new field to store frames per row for a sprite
- Update sprite drawing function to bound check
- Update assets loader to look for the new field
- Refactor adding a sprite function to reduce repetition
- Update all main programs
Internal Changelog:
- A scene now has a maximum amount of render texture. It is to be
rendered in order of the array by the engine.
- A scene now needs an explicit render system to draw onto the render
textures. The scene will also init the number of render layers
needed.
- The change is to allow more separate of concerns when it comes to
rendering. A scene can also now compartmentalise the rendered items,
which hopefully make understanding the code easier.
- Update all exisiting code to use the new render system.
Internal Changelog:
- Major change: all engine that does counting uses delta time instead of
frame counting
- Animation runs at 24 FPS
- Water fill is at a constant rate as well
- Particle update will need to be given delta time as well.
- Particle system is not updated to use float, so no delta time handling
for the system in this commit
Change the function to check for collision at the specified point.
This is much straightforward to use.
The offset point to check must be computed before passing into the
function.
Remove redundant position argument for the straightforward collision
functions, as the entity would have it alread.
The collision offset check function is not as trivial and requires
some review
Position is so commonly used that placing it into Entity from the
CTransform components reduces the reference to CTransform.
Void Particle proved that it made development much easier.
Internal Changelog:
- Remove speed requirment for platform destruction
- Platform check is now 1 px lower
- Allow sliding if platform is on the lower tile on the sides
Changelog:
- Air timer decays on point check instead of water state
- Bubbling is also starts with this point check
- This is so that it is consistent that bubbles == air going down
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
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
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
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
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
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
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
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.
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
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
By this project convention, the line extend will start from p1 and
end at p2, but not including p2 [p1, p2). Thus, existing tests are
testing a zero-length line, which should assert no collision.
Add test to properly test AABB edge collision with a line
Also update existing collision function to account for this
Changelog:
- Fill only a range of reachable tiles instead
- Tweak fill complete check
- Count tiles filled, if zero: complete
- Allow multiple runner to fill without breaking the game
Changelog:
- Add in scanline filling process
- Use signed integer for calculation
- Generalise BFS to only depend on the current cell
- During the search for the lowest reachable tile, allow a single
tile equal or higher to the starting tile
This is to allow moving upwards when no valid lower tile exists
Changelog:
- Add new state for when runner reaches target position
- Skip movement if already on target position
- Add extra handling for spawning on solid tile
- Fix tile toggling bug on the same tile
Changelog:
- water runner needs ctransform + ctilecoord at least to be in the tile
update system
- Update the tilemap update system as well
- Update rendering function for water runner
- Update water runner creation to handle failure to create
- Add a tag for water runner (pending proper tag)
Changelog:
- Clear to_update queue correctly
- Move entity deletion after adding
- This is to allow deletion immediately after adding
- Should be okay
- Fix incorrect null checking when adding entity
- Queue deletion when removing entity even if not found at removal time
- The update function should handle such case
Changelog:
- Add new component: water runner component
- specific for such an entity. Not general, but i dont really care
- Implement adding and freeing the water filler entity
- Component involves dynamic memory allocation, so need custom
function to add and free
- May look into custom allocation for this part in the future.
Changelog:
- Move tilemap update to be at the start
- This is to account for new entities being created
- The post tile collision is not used for now
- Change auto-crouch collision check to check for entities as well
Changelog:
- Add Lifetimer and remove hurtbox on hit
- Still insta-remove on player hit
- Fix adding a component to an entity that already has that component
- Reorder lifetimer update system
Changelog:
- Defer component updates as iterator invalidation can occur
- Add new struct for this + queue on entity manager
- Add new component: CLifeTimer
- Basically a timer to live for entity
Changelog:
- Refactor function to change a tile type
- Destroy entities without bbox when OOB
- Add hitbox collision checking with tiles
- Add defense point on tiles
Changelog:
- Add function spawn arrow
- Update game system to handle null components
- enough for the arrow to work
- Render arrow, sort of
- Initial implementation, definitely need more work
Changelog:
- Add row below game scene to select spawning entity
- Add mouse release logic to select spawning entity
- Update render order for tile
- order: 'moveable' -> tile -> water level