Implement main logic

This commit is contained in:
Martin Prokoph
2025-01-15 11:56:05 +01:00
parent ffdd3ca20f
commit 2959d06db4
13 changed files with 531 additions and 0 deletions

38
src/blockRegistry.hpp Normal file
View File

@@ -0,0 +1,38 @@
#pragma once
#include <vector>
#include <string>
#include "block.hpp"
using std::vector;
using std::string;
class BlockRegistry {
public:
Block AIR = Block(Identifier("adventura", "air"), ' ', BlockSettingsBuilder().nonSolid().build());
Block PLATFORM = Block(Identifier("adventura", "platform"), '-', BlockSettingsBuilder().build());
Block LADDER = Block(Identifier("adventura", "ladder"), 'H', BlockSettingsBuilder().climbableFromBottom().climbableFromTop().build());
Block START = Block(Identifier("adventura", "start"), 'S', BlockSettingsBuilder().build());
Block GOAL = Block(Identifier("adventura", "goal"), 'O', BlockSettingsBuilder().build());
BlockRegistry() {
registerBlock(AIR);
registerBlock(PLATFORM);
registerBlock(LADDER);
registerBlock(START);
registerBlock(GOAL);
}
const Block getByEncoding(char encoding) {
for (Block block : registeredBlocks) {
if (block.getEncoding() == encoding) return block;
}
return AIR;
}
private:
Block registerBlock(Block& block) {
registeredBlocks.push_back(block);
return block;
}
vector<Block> registeredBlocks;
};