#pragma once #include #include #include #include #include #include "Tile.h" #include "Item.h" #include "WorldGen.h" #include "Entity.h" #include "Asset.h" namespace Swan { class Mod { public: using ModID = uint32_t; void init(const std::string &name); void registerTile(const std::string &name, Tile *tile); void registerItem(const std::string &name, Item *item); void registerWorldGen(const std::string &name, WorldGen::Factory *gen); void registerEntity(const std::string &name, Entity::Factory *ent); void registerAsset(const std::string &name, Asset *asset); std::unique_ptr loadImage(const std::string &path); std::string name_; std::string path_; std::vector> tiles_; std::vector> items_; std::vector> worldgens_; std::vector> entities_; std::vector> assets_; bool inited_ = false; }; }