From 813e47a25eaa27f89bfdc2e686526048f251e129 Mon Sep 17 00:00:00 2001 From: Martin Prokoph Date: Fri, 7 Feb 2025 15:54:33 +0100 Subject: [PATCH] docs: more comments --- COMPILE.txt | 3 +- adventura | Bin 0 -> 243112 bytes block.hpp | 51 +++++++++++++++++++++++++++++++ blockPos.hpp | 39 ++++++++++++++++++++++++ blockRegistry.hpp | 11 +++++-- color.hpp | 1 + fileutils.hpp => fileUtils.hpp | 0 identifier.hpp | 12 +++++++- player.hpp | 53 +++++++++++++++++++++++++++++++++ world.hpp | 2 +- 10 files changed, 166 insertions(+), 6 deletions(-) create mode 100755 adventura rename fileutils.hpp => fileUtils.hpp (100%) diff --git a/COMPILE.txt b/COMPILE.txt index f06506d..174c397 100644 --- a/COMPILE.txt +++ b/COMPILE.txt @@ -1,2 +1 @@ -mkdir build -g++ -std=c++23 -Wall ./main.cpp -o ./build/testCompiled && ./build/testCompiled \ No newline at end of file +g++ -std=c++23 -Wall ./main.cpp -o ./adventura && ./adventura \ No newline at end of file diff --git a/adventura b/adventura new file mode 100755 index 0000000000000000000000000000000000000000..edc148bf3c02a5cecea7541869154019359847a3 GIT binary patch literal 243112 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 literal 0 HcmV?d00001 diff --git a/block.hpp b/block.hpp index 991b6f8..5679c19 100644 --- a/block.hpp +++ b/block.hpp @@ -11,7 +11,22 @@ private: BlockSettings settings; public: + /** + * Constructs a block with the given identifier, encoding and settings. + * + * @param id The (unique) identifier of the block. + * @param encoding The encoding of the block, which is the character used to represent it in the game world. + * @param settings The settings of the block, which define how the block behaves in the game world. + */ Block(Identifier id, char encoding, BlockSettings settings) : Block(id, encoding, Color::RESET, settings) {}; + /** + * Constructs a block with the given identifier, encoding, color and settings. + * + * @param id The (unique) identifier of the block. + * @param encoding The encoding of the block, which is the character used to represent it in the game world. + * @param color The color of the block. + * @param settings The settings of the block, which define how the block behaves in the game world. + */ Block(Identifier id, char encoding, Color color, BlockSettings settings) { this->id = id; this->encoding = encoding; @@ -19,19 +34,55 @@ public: this->settings = settings; }; + /** + * Returns the settings associated with the block. + * + * @return The settings of the block, including solidity, pushability, and more. + */ BlockSettings getSettings() { return settings; } + /** + * Gets the identifier of the block. + * + * This identifier is used by the game to uniquely identify the block. + * + * @return The identifier of the block. + */ Identifier getId() { return id; } + + /** + * Returns the color of the block. + * + * The color is used when drawing the block in the world. + * + * @return The color of the block. + */ Color getColor() { return color; } + + /** + * Returns the character encoding of the block. + * + * This character is used in the text file as well as the terminal to represent the block. + * + * @return The character encoding of the block. + */ char getEncoding() { return encoding; } + + /** + * Sets the character encoding for the block. + * + * This encoding is used to represent the block in text files and the terminal. + * + * @param encoding The character encoding to set for the block. + */ void setEncoding(char encoding) { this->encoding = encoding; } diff --git a/blockPos.hpp b/blockPos.hpp index 2b48075..8356205 100644 --- a/blockPos.hpp +++ b/blockPos.hpp @@ -3,28 +3,67 @@ class BlockPos { int x; int y; public: + /** + * Define an in-world position. + * + * @param x The x-coordinate of the BlockPos. + * @param y The y-coordinate of the BlockPos. + */ BlockPos(int x, int y) { this->x = x; this->y = y; } + + /** + * @return The x-coordinate of the BlockPos. + */ int getX() { return x; } + + /** + * @return The y-coordinate of the BlockPos. + */ int getY() { return y; } + + /** + * @return The x-coordinate of the BlockPos as an unsigned integer. + * @pre x >= 0 + */ unsigned int getUnsignedX() { return static_cast(x); } + + /** + * @return The y-coordinate of the BlockPos as an unsigned integer. + * @pre y >= 0 + */ unsigned int getUnsignedY() { return static_cast(y); } + + /** + * @return True if the BlockPos is negative, false otherwise. + * + * A BlockPos is considered negative if either the x-coordinate or the y-coordinate is negative. + */ bool isNegative() { return x < 0 || y < 0; } + + /** + * Add the given coordinates to the BlockPos. + * + * @param x The x-coordinate to add. + * @param y The y-coordinate to add. + * @return The BlockPos with the given coordinates added. + */ BlockPos add(int x, int y) { return BlockPos(this->x + x, this->y + y); } + BlockPos operator+(BlockPos offset) { return BlockPos(this->getX() + offset.getX(), this->getY() + offset.getY()); } diff --git a/blockRegistry.hpp b/blockRegistry.hpp index 34e1aae..30934b2 100644 --- a/blockRegistry.hpp +++ b/blockRegistry.hpp @@ -19,6 +19,9 @@ public: Block BOX = Block(Identifier("adventura", "box"), 'x', Color::BRIGHT_CYAN, BlockSettingsBuilder().pushable().collidable().gravity().build()); Block SAND = Block(Identifier("adventura", "sand"), '*', Color::BRIGHT_YELLOW, BlockSettingsBuilder().brittle().gravity().build()); + /** + * Constructor for BlockRegistry. Registers all built-in blocks. + */ BlockRegistry() { registerBlock(AIR); registerBlock(WATER); @@ -48,9 +51,13 @@ public: } private: - Block registerBlock(Block& block) { + /** + * Registers a block in the registry. + * + * @param block The block to register. + */ + void registerBlock(Block& block) { registeredBlocks.push_back(block); - return block; } vector registeredBlocks; }; \ No newline at end of file diff --git a/color.hpp b/color.hpp index a38330c..7bf8a4c 100644 --- a/color.hpp +++ b/color.hpp @@ -12,6 +12,7 @@ enum class Color { BRIGHT_CYAN= 96, BRIGHT_WHITE= 97 }; + std::ostream& operator<<(std::ostream& os, Color color) { return os << "\033[" << static_cast(color) << "m"; } \ No newline at end of file diff --git a/fileutils.hpp b/fileUtils.hpp similarity index 100% rename from fileutils.hpp rename to fileUtils.hpp diff --git a/identifier.hpp b/identifier.hpp index e33bf1f..ec0e9c0 100644 --- a/identifier.hpp +++ b/identifier.hpp @@ -8,7 +8,17 @@ public: std::string nameSpace; std::string path; - Identifier(std::string nameSpace, std::string path) : nameSpace(nameSpace), path(path) {} + + /** + * Construct a new Identifier. + * Identifiers are used to uniquely identify blocks, regardless of their encoding. + * + * @param nameSpace The namespace of the Identifier. + * @param path The path of the Identifier. + */ + Identifier(std::string nameSpace, std::string path) : nameSpace(nameSpace), path(path) { + + } std::ostream& operator<<(std::ostream& out) { out << nameSpace << ":" << path; diff --git a/player.hpp b/player.hpp index cca03d3..e655fdd 100644 --- a/player.hpp +++ b/player.hpp @@ -8,21 +8,52 @@ class Player { public: + /** + * Initializes a new Player at the specified starting position in the provided world. + * + * @param pos The initial position of the player within the world. + * @param world A reference to the World object representing the game world. + */ Player(BlockPos pos, World& world) : world(world) { this->pos = pos; this->world = world; playerTexture = REGULAR_PLAYER_TEXTURE; } + /** + * Retrieves the current position of the player in the world. + * + * @return The current BlockPos representing the player's position. + */ BlockPos getPos() { return pos; } + + /** + * Move the player by the specified x and y offsets. + * + * @param x The x offset to move by. + * @param y The y offset to move by. + */ void move(int x, int y) { move(BlockPos(x, y)); } + + /** + * Move the player by the specified BlockPos offset. + * + * @param offset The BlockPos representing the offset to move the player by. + */ void move(BlockPos offset) { setPos(pos + offset); } + + + /** + * Updates the player's position and checks for any conditions that would update the state of the player. + * + * @param pos The position to move the player to. + */ void setPos(BlockPos pos) { if (!world.containsPos(pos)) { alive = false; @@ -50,17 +81,39 @@ public: if (world.getBlockAt(pos.add(0, 2)).getSettings().isLethal()) unalive(); } + + /** + * Handle the unfortunate case of a player dying :( + */ void unalive() { playerTexture = DEAD_PLAYER_TEXTURE; redraw(world, this->mapToWorldspace()); alive = false; } + + /** + * Checks if the player is still alive. + * + * @return true if the player is alive, false otherwise. + */ bool isAlive() { return alive; } + + /** + * Checks if the player has reached the goal in the current world. + * + * @return true if the player has reached the goal, false otherwise. + */ bool hasReachedGoal() { return reachedGoal; } + + /** + * Maps the player texture to the player's position in the current game world. + * + * @return A 2D vector of characters representing the player's position in the world. + */ vector> mapToWorldspace() { vector> map; for (unsigned int y = 0; y <= world.getMaxY(); y++) { diff --git a/world.hpp b/world.hpp index 33d03cf..084b2e4 100644 --- a/world.hpp +++ b/world.hpp @@ -1,7 +1,7 @@ #pragma once #include #include -#include "fileutils.hpp" +#include "fileUtils.hpp" #include "block.hpp" #include "blockRegistry.hpp" #include "blockPos.hpp"