summaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
authoralf9310 <alf9310@rit.edu>2025-10-17 14:34:19 -0400
committeralf9310 <alf9310@rit.edu>2025-10-17 14:34:19 -0400
commita4538b90420f159b4449c80739fb208ec1c01d70 (patch)
tree65275ee11f2cf109c73647dd8e57c8d15a4b9e1c /docs
parentGame name (diff)
downloadDungeonCrawl-a4538b90420f159b4449c80739fb208ec1c01d70.tar.gz
DungeonCrawl-a4538b90420f159b4449c80739fb208ec1c01d70.tar.bz2
DungeonCrawl-a4538b90420f159b4449c80739fb208ec1c01d70.zip
Added render documentation
Diffstat (limited to 'docs')
-rw-r--r--docs/Proposal.md39
1 files changed, 29 insertions, 10 deletions
diff --git a/docs/Proposal.md b/docs/Proposal.md
index 9dc71a0..76e8bd6 100644
--- a/docs/Proposal.md
+++ b/docs/Proposal.md
@@ -15,16 +15,14 @@ Collapse algorithm. Battle through waves of enemies with real-time combat,
collect powerful items, and push your limits to see how deep you can delve
into the ever-changing depths.
-## Additional Details
+## Use Cases
-### Use Cases
-
-#### Player Input
+### Player Input
- Directional Movement: The player can move up, down, left, or right across a tile-based dungeon map using WASD or arrow keys.
- Combat Actions: On encountering an enemy, the player can choose to attack or use an item.
- Item Interaction: The player can pick up items, manage inventory, and use consumables like potions.
-#### Gameplay Loop
+### Gameplay Loop
- The player spawns on floor 1 of the dungeon.
- The map is procedurally generated using the Wave Function Collapse algorithm.
- Enemies and items are randomly spawned on valid tiles based on probabilities.
@@ -38,14 +36,33 @@ One or more typical “use cases”. These might include “storyboards” expla
how a user would interact with the program or some interesting “input/output”
examples.
-### Components
+## Components
+
+### **Game Binary Crate**
+- **[main](game\src\main.rs)** - Initializes the game state and handles the Model-View-Controller loop.
+
+### **Dungeon Library Crate**
+Core functionality for interacting with a `Dungeon` data structure and its components.
+ - `Dungeon` - The game state of the dungeon crawler.
+- **[Map Module](dungeon\src\map.rs)** - Structures for the dungeon game map including the current `Floor`, map `Tile`, and `Entity`.
+ - `Floor` - Current playing grid of the dungeon. It contains the tiles of the grid, and the starting position of the player.
+ - `Tile` - Enum that represents what is (or is not) at any given spot in the dungeon grid.
+ - `Entity` - The main player, or any other ai autonomous character that can move freely across the dungeon.
+- **[Position Module](dungeon\src\pos.rs)** - Structures for representation an entity or objects position and facing direction inside the dungeon grid.
+ - `Direction` - Enum that representa the direction an entity or any position object is facing inside the dungeon map. Since the dungeon lives on a grid, there are only four possible directions.
+ - `Pos` - 2D position inside the dungeon grid.
+
+### **Graphics Library Crate**
+Core functionality for rendering using the `raylib` library. Independent from game logic.
+- **[Render Module](graphics\src\render.rs)** - The `render` module contains the structures for displaying the game, with each frame represented by a `Renderer` and frame specific information in `FrameInfo`.
+ -
-**Dungeon**
-- A sketch of intended components (key functions, key data structures, separate
- modules).
-### Testing
+
+- A sketch of intended components (key functions, key data structures, separate modules).
+
+## Testing
- Thoughts on testing. These might include critical functions or data structures
that will be given `#[test]` functions. Also consider using the
[`insta`](https://crates.io/crates/insta) crate,
@@ -54,6 +71,8 @@ One or more typical “use cases”. These might include “storyboards” expla
[`quickcheck`](https://crates.io/crates/quickcheck) crate,
[`test_case`](https://crates.io/crates/test-case) crate, or [`cargo
fuzz`](https://rust-fuzz.github.io/book/cargo-fuzz.html) tool.
+
+
- Thoughts on a “minimal viable product” and “stretch goals”. Be sure to review
the final project grading rubric and consider organizing the project around a
core deliverable that will almost certainly be achieved and then a number of