BlockRegistry.cpp 896 B

123456789101112131415161718192021222324252627282930313233
  1. #include "common/block/BlockRegistry.h"
  2. BlockRegistry::BlockRegistry() {
  3. add("air", BlockBuilder().test());
  4. add("stone", BlockBuilder().test());
  5. add("dirt", BlockBuilder().test());
  6. add("grass", BlockBuilder().test());
  7. }
  8. void BlockRegistry::add(const char* registry, const BlockBuilder& builder) {
  9. u16 id = blocks.size();
  10. blocks.emplace_back(id, registry, builder);
  11. registryToId[registry] = id;
  12. }
  13. const Block& BlockRegistry::getBlock(const HashedString& registry) const {
  14. auto iter = registryToId.find(registry);
  15. if(iter == registryToId.end()) {
  16. return blocks[0];
  17. }
  18. return getBlock(iter->second);
  19. }
  20. const Block& BlockRegistry::getBlock(u16 id) const {
  21. if(id < blocks.size()) {
  22. return blocks[id];
  23. }
  24. return blocks[0];
  25. }
  26. size_t BlockRegistry::Hasher::operator()(const HashedString& key) const {
  27. return key.hashCode();
  28. }