mirror of
https://github.com/swarm-game/swarm.git
synced 2025-01-05 23:34:35 +03:00
a9ded587eb
Closes #353 Also adds a new top-level command to render a scenario map to the console. Most of the work for this feature entailed identifying the subset of `GameState` that is actually needed for rendering the world, so that the required information can be retrieved from just the `Scenario` rather than having to instantiate an entire `GameState`. # Potential follow-ups - [ ] There is some noticeable lag when using the up/down arrow to navigate to any of the largely "procedurally generated" scenarios, e.g. `classic` or `creative`. May want to do caching of some kind. The other "challenge scenarios" render without perceptible delay. - [ ] The heuristic for choosing the view center could be improved, possibly by defining new "hints" as part of the scenario schema. - [ ] Rendering to the console could be augmented with color. - [ ] Could render to other image formats like PNG or SVG - [ ] account for a user-selected seed in the scenario launch parameters dialog # Demos ## Scenario selection preview ![image](https://github.com/swarm-game/swarm/assets/261693/7c54c6bb-fb02-461f-98a1-06eccbbfc450) ## Command-line map rendering ``` ~/github/swarm$ scripts/play.sh map data/scenarios/Challenges/ice-cream.yaml OO ▒▒▒ ▒▒▒▒ OOOO ┌─┐▒┌──┐ MMMM │B V6│ \ZZ/ └──────┘ \/ ``` and ``` stack run -- map data/scenarios/Challenges/hackman.yaml ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ▒••••••••••▒••••••••••▒ ▒o▒▒▒•▒▒▒▒•▒•▒▒▒▒•▒▒▒o▒ ▒•▒▒▒•▒▒▒▒•▒•▒▒▒▒•▒▒▒•▒ ▒•••••••••••••••••••••▒ ▒•▒▒▒•▒•▒▒▒▒▒▒▒•▒•▒▒▒•▒ ▒•••••▒••••▒••••▒•••••▒ ▒▒▒▒▒•▒▒▒▒ ▒ ▒▒▒▒•▒▒▒▒▒ ▒•▒ ▒•▒ ▒▒▒▒▒•▒ ┌──=──┐ ▒•▒▒▒▒▒ • │ │ • ▒▒▒▒▒•▒ └─────┘ ▒•▒▒▒▒▒ ▒•▒ ▒•▒ ▒▒▒▒▒•▒ ▒▒▒▒▒▒▒ ▒•▒▒▒▒▒ ▒••••••••••▒••••••••••▒ ▒•▒▒▒•▒▒▒▒•▒•▒▒▒▒•▒▒▒•▒ ▒o••▒•••••••••••••▒••o▒ ▒▒▒•▒•▒•▒▒▒▒▒▒▒•▒•▒•▒▒▒ ▒•••••▒••••▒••••▒•••••▒ ▒•▒▒▒▒▒▒▒▒•▒•▒▒▒▒▒▒▒▒•▒ ▒•••••••••••••••••••••▒ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ``` |
||
---|---|---|
.. | ||
Main.hs |