2.7 KiB
Levels:
-
ignore comments in lvl files
-
Grid Observer: https://github.com/mlange-42/arche/issues/374
-
Add shaders for animation (player destruction etc)
-
Start New game starts with last played level, better add a Resume Game menu item for this and use Start New always for level 1.
-
for finding caller: pc := make([]uintptr, 10) n := runtime.Callers(0, pc) pc = pc[:n] fs := runtime.CallersFrames(pc) source, _ := fs.Next() source, _ = fs.Next() source, _ = fs.Next()
slog.Debug("get observer", "minmoves", observer.LevelScore, "file", source.File, "line", source.Line)
-
Turn menu button in hud_system (events in level_scene!) into ebitenui button
-
Obstacle don't stop at collectibles
-
Player can collect collectible hidden under obstacle (should be fixed when above is fixed)
-
Get rid of particle system, rather add an animation component, which determines if an animation must be played according to LDTK entity settings. Say, something like a boolean value "DetonateAfterHit", if true, we load the sprites specified in the string value "AnimationSpritesPattern", where we could have something like "collectible-detonating*.png" or we could use an animation map and specify a list of coordinates, etcpp.
-
Part I of the above: DONE.
-
Part II:
- grid/grid.go:
- add Animation component to mappers
- check if the tile has tile.AnimateOnDestruct (or any other triggers) set and configure animation compontent accordingly
- check if the tile has tile.AnimationSpriteSheet, assign to Animation.Tiles[]
- do it for any entity not just collectible so that any entity can have an animation
- rename Animation.Tiles to Sprites
- change animation_system to use this stuff instead of any hardcoded values.
- grid/grid.go:
Collider Rework [abandoned: see branch collider-system, fails]
- do not use the map anymore for collision detection
- central collision_system
- add Collider component with callback funcs to call on certain events
- callback types:
- rect intersect (== future collision)
- collision resolve (set new position)
- pass over foreign rect (to e.g. change sprite while flying over sprite)
- pass over done (switch sprite)
- check for all moving objects against non-moving ones like moving obstacle, player, bullet, laser
- check if executing callbacks within query loop is allowed
- callback function needs to be able to modify other components, so possibly use observers for them, e.g.: Collider.IntersectResolve => func(newpos) {player.pos = newpos; player.vel = stop}
- in the end it must be possible to add new entities without the need to write a collision check for them, but have collision detection anyway!