#include "common/block/BlockRegistry.h" BlockRegistry::BlockRegistry() { add("air", BlockBuilder().test()); add("stone", BlockBuilder().test()); add("dirt", BlockBuilder().test()); add("grass", BlockBuilder().test()); } void BlockRegistry::add(const char* registry, const BlockBuilder& builder) { u16 id = blocks.size(); blocks.emplace_back(id, registry, builder); registryToId[registry] = id; } const Block& BlockRegistry::getBlock(const HashedString& registry) const { auto iter = registryToId.find(registry); if(iter == registryToId.end()) { return blocks[0]; } return getBlock(iter->second); } const Block& BlockRegistry::getBlock(u16 id) const { if(id < blocks.size()) { return blocks[id]; } return blocks[0]; } size_t BlockRegistry::Hasher::operator()(const HashedString& key) const { return key.hashCode(); }