#include "common/block/BlockRegistry.h" BlockRegistry::BlockRegistry() { add("air", BlockBuilder()); add("stone", BlockBuilder()); add("dirt", BlockBuilder()); add("grass", BlockBuilder()); } void BlockRegistry::forEach(void(*f)(const Block&)) const { for(const Block& b : blocks) { f(b); } } void BlockRegistry::add(const char* registry, const BlockBuilder& builder) { BlockId id = blocks.getLength(); blocks.add(Block(id, registry, builder)); registryToId.add(registry, id); } const Block& BlockRegistry::getBlock(const BlockName& registry) const { return blocks[registryToId.search(registry, 0)]; } const Block& BlockRegistry::getBlock(BlockId id) const { if(id < blocks.getLength()) { return blocks[id]; } return blocks[0]; }