openquell/TODO.md

53 lines
1.9 KiB
Markdown
Raw Normal View History

2024-02-06 15:26:20 +01:00
## Levels:
- ignore comments in lvl files
2024-02-26 14:43:03 +01:00
- Start the game end timer and add a score FIXME: put the actual max
reachable score into the level definition along with the minimum
steps required to reach it, also add a step counter
2024-02-09 20:20:13 +01:00
- Grid Observer:
https://github.com/mlange-42/arche/issues/374
2024-02-18 18:19:34 +01:00
2024-02-26 14:43:03 +01:00
- Add some final message when the player reaches the last level, start
from scratch or a message to buy me some beer, whatever
2024-02-18 18:19:34 +01:00
2024-02-26 14:43:03 +01:00
- Add shaders for animation (player destruction etc)
2024-02-28 13:15:45 +01:00
- Add Score system, see game_observer.go bottom.
- add MinMoves to each level (one line) [min moves to win]
- count moves in player_scene.Update (put to observer as well?)
- reset counters when new level starts
- display level score in level select
- 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)
2024-02-26 14:43:03 +01:00
## Collider Rework
- do not use the map anymore for collision detection
2024-02-26 14:43:03 +01:00
- 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!