A 2D tile-based sandbox game.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

Mod.cc 1.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. #include "Mod.h"
  2. #include <stdio.h>
  3. #include <algorithm>
  4. #include "util.h"
  5. #include "log.h"
  6. namespace Swan {
  7. void Mod::registerImage(const std::string &id) {
  8. images_.push_back(name_ + "/" + id);
  9. info << " Adding image: " << images_.back();
  10. }
  11. void Mod::registerTile(Tile::Builder tile) {
  12. tile.name = name_ + "::" + tile.name;
  13. tiles_.push_back(tile);
  14. info << " Adding tile: " << tile.name;
  15. }
  16. void Mod::registerItem(Item::Builder item) {
  17. item.name = name_ + "::" + item.name;
  18. items_.push_back(item);
  19. info << " Adding item: " << item.name;
  20. }
  21. Iter<std::unique_ptr<ImageResource>> ModWrapper::buildImages(SDL_Renderer *renderer) {
  22. return map(begin(mod_->images_), end(mod_->images_),
  23. [renderer, this](const std::string &id) {
  24. return std::make_unique<ImageResource>(renderer, path_, id);
  25. });
  26. }
  27. Iter<std::unique_ptr<Tile>> ModWrapper::buildTiles(const ResourceManager &resources) {
  28. return map(begin(mod_->tiles_), end(mod_->tiles_),
  29. [&](const Tile::Builder &builder) {
  30. return std::make_unique<Tile>(resources, builder);
  31. });
  32. }
  33. Iter<std::unique_ptr<Item>> ModWrapper::buildItems(const ResourceManager &resources) {
  34. return map(begin(mod_->items_), end(mod_->items_),
  35. [&](const Item::Builder &builder) {
  36. return std::make_unique<Item>(resources, builder);
  37. });
  38. }
  39. Iter<WorldGen::Factory> ModWrapper::getWorldGens() {
  40. return map(begin(mod_->worldgens_), end(mod_->worldgens_),
  41. [](WorldGen::Factory &fact) {
  42. return fact;
  43. });
  44. }
  45. Iter<EntityCollection::Factory> ModWrapper::getEntities() {
  46. return map(begin(mod_->entities_), end(mod_->entities_),
  47. [](EntityCollection::Factory &fact){
  48. return fact;
  49. });
  50. }
  51. }