Griffin Smith
f03ad6bbd6
Add cellular-automata cave generator
...
Add a cellular-automata-based cave level generator, plus an
optparse-applicative-based CLI for invoking level generators in general.
2019-09-07 14:52:37 -04:00
Griffin Smith
73a52e531d
Put a test gormlak on the screen
...
Implement a concrete "Creature" entity, and place one on the screen at
the game startup for testing.
This revealed a bug with drawing when getting the maximum entity
position, but that appears to be fixed now (yay)
2019-09-02 14:45:36 -04:00
Griffin Smith
4d270712ae
Add raws, loaded statically from a folder
...
Add raw types with support for both creatures and items, loaded
statically from a "raws" folder just like in the Rust version.
2019-09-02 13:59:28 -04:00
Griffin Smith
243104c410
Add commands for diagonal movement
...
That Was Easy (tm)!
2019-09-02 10:54:52 -04:00
Griffin Smith
18551cdf30
Add a previous message command
...
Add a "previous message" command, triggered via ctrl+p.
I attempted here to get the message area to still take up a row of space
post-hiding the message, but failed - should revisit that at some point
2019-09-02 10:52:03 -04:00
Griffin Smith
adb3b74c0c
Link up messages to the overall game
...
Add a "say" function for saying messages within an app monad to the
user, and link everything up to display them and track their history
2019-09-02 10:52:01 -04:00
Griffin Smith
2fd3e4c9ad
Implement messages
...
Implement messages almost the same as in the Rust version, only with
YAML instead of TOML this time, and a regular old mustache template
instead of something handrolled. Besides that, pretty much everything
here is the same.
2019-09-01 13:54:27 -04:00
Griffin Smith
4ef19aa35a
Add entities, and allow walking around
...
Add support for entities via a port of the EntityMap type, and implement
command support starting at basic hjkl.
2019-08-31 13:18:51 -04:00
Griffin Smith
6eba471e24
Use haskellSrc2nix over explicit cabal2nix
...
Use the (undocumented!) helper function haskellSrc2nix over having to
explicitly run cabal2nix all the time when rebuilding
2019-08-31 13:15:17 -04:00
Griffin Smith
d3f3890dc5
An @-sign in a box, in haskell
...
Initial commit of a Haskell version of Xanthous, written using Brick and
built with Nix.
This is so much nicer and so much easier
2019-08-25 13:28:10 -04:00
Griffin Smith
fb0d1b3e66
Wipe Rust project
...
Sorry rust, but you're just not fun to write
2019-08-25 13:25:13 -04:00
Griffin Smith
e2d2f011c6
Add method for writing option menus to viewport
...
Add a method for writing single-choice menus to the viewport, within a
box. Unused for now.
2019-08-03 20:31:42 -04:00
Griffin Smith
48fb3f6624
Add inventory, and the ability to pick up items
...
Add inventory as a basic vector of items attached to the character, and
the ability to pick up a single item where the character stands
2019-08-03 20:31:42 -04:00
Griffin Smith
82cefedab9
Fix a bunch more Clippy lints, but disable in Circle
...
The unused error is causing more trouble than it's worth at this
point
2019-08-03 20:31:42 -04:00
Griffin Smith
929dac06d0
Clear messages every turn
...
Clear messgaes every turn, preserving the ability to ^P to get the
previous message
2019-08-03 12:48:38 -04:00
Griffin Smith
7138d9a0b6
Add clippy to circleCI and fix all lints
2019-08-03 12:41:40 -04:00
Griffin Smith
9db5fad2f9
Describe what you see when you walk over it
...
If the character walks over any number of entities, describe those
entities to the character.
2019-07-29 11:22:39 -04:00
Griffin Smith
34b20b7786
Add functions for making sentences from lists
...
This seems like something I keep having to write
2019-07-28 22:31:07 -04:00
Griffin Smith
ba7bec9a3e
Re-draw entities when you walk over them
...
This also required making the noodles character not actually the emoji,
since the emoji being double-width means it still gets overwritten when
you walk to the right of it (D:)
2019-07-28 21:32:24 -04:00
Griffin Smith
10fb09eca2
Turns out, collect is the answer
2019-07-28 21:16:20 -04:00
Griffin Smith
8f3c83311f
Check rustfmt and run tests in Circle
2019-07-28 21:08:57 -04:00
Griffin Smith
300e14b5fe
Add CircleCI config
2019-07-28 20:44:09 -04:00
Griffin Smith
24d38cb589
Make EntityMap::append not overwrite entities
...
Rather than overwriting entities with the same ID when appending, make
EntityMap::append actually respect the internal invariants of the map
and preserve entities from both sides, with no regard for their id.
2019-07-28 20:38:39 -04:00
Griffin Smith
ea648cfcdd
Add some more name prompts
...
for character! and also characters.
2019-07-28 17:48:25 -04:00
Griffin Smith
6c1eba6762
Allow converting generated levels to entities
...
Add a new Wall entity, and allow converting generated levels to entity
maps containing them, then finally displaying them using some of
the (now expanded) box drawing machinery.
2019-07-28 17:45:43 -04:00
Griffin Smith
f22bcad817
Add a generic text-prompt system
...
Add a generic text-prompt system to the Game, and use it to prompt the
character for their name on startup. There's also a Promise type in
util, which is used for the result of the prompt.
2019-07-27 22:16:23 -04:00
Griffin Smith
68e8ad8a0e
Add more command-line options for generating caves
...
Add all the necessary params to the CLI options for generating caves
2019-07-22 20:20:18 -04:00
Griffin Smith
d001b0a017
Cellular-automata based cave level generator
2019-07-20 01:40:09 -04:00
Griffin Smith
29c80ac8ba
Add the beginning of item entities
...
Add a new Item raw type and entity type, with preliminary, basic support
for food. There's a really frustrating toml-rs bug that prevents writing
these nicely as toml right now, so I also added support for mixing JSON
and TOML in a single config dir
2019-07-19 21:55:09 -04:00
Griffin Smith
4e9138aa6f
add a test ensuring messages work
2019-07-19 12:07:27 -04:00
Griffin Smith
e2d13bd76b
Add templates for messages
...
Implement a template syntax with a nom parser, and a formatter to render
templates to strings.
2019-07-19 11:54:31 -04:00
Griffin Smith
bc93999cf3
Always reset the cursor back to the character
...
much nicer!
2019-07-14 16:31:36 -04:00
Griffin Smith
575a051e6e
Implement extremely basic combat
...
There's a gormlak, you can kill it.
That's it.
2019-07-14 16:20:22 -04:00
Griffin Smith
e7ad87c730
Add (statically-included) entity raws
...
Add a system for statically-included entity raws (which necessitated
making a deserializable existential Color struct) and test it out by
initializing the game (for now) with a single on-screen gormlak.
2019-07-14 14:29:55 -04:00
Griffin Smith
081146da30
Allow static_cfg to include entire directories
...
Via new "toml_dir" and "json_dir" directives in the macro
2019-07-14 14:29:39 -04:00
Griffin Smith
67d18b486c
Factor out static_cfg from static init of messages
...
Factor out a macro for static references to data parsed from config
files at compile-time.
2019-07-14 12:12:43 -04:00
Griffin Smith
405dbffe37
Add commands for diagonal movement
...
Cribbed directly from Nethack
This was really, really easy.
2019-07-14 11:00:44 -04:00
Griffin Smith
bf03ebc549
Add placeholder for game ticks
...
When the character moves, the game ticks forward equal to the
character's speed
2019-07-13 09:07:39 -04:00
Griffin Smith
5af2429ecb
Implement a global map of entities
...
Implement a global map of entities, which allows referencing by either
position or ID and updating the positions of existent entities, and put
the character in there.
2019-07-08 20:58:51 -04:00
Griffin Smith
20f1ccb460
add "Previous message" command
...
ctrl+p, like nethack. Cycles through messages, also like nethack.
May want to add some sort of indicator of how many messages there have
been.
2019-07-07 13:02:50 -04:00
Griffin Smith
c643ee1dfc
Add messages, with global lookup map
...
Add support for messages, along with a global lookup map and random
choice of messages.
2019-07-07 12:41:15 -04:00
Griffin Smith
78a52142d1
Make all drawing happen to a viewport
...
We now have an inner and outer viewport, and entity positions are
relative to the inner one while drawing happens to the outer one.
2019-07-06 15:32:38 -04:00
Griffin Smith
de081d7b1d
an @-sign in a box
2019-07-05 22:45:57 -04:00