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.1KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. #include <swan/Mod.h>
  2. class DefaultWorldGen: public Swan::WorldGen {
  3. public:
  4. class Factory: public Swan::WorldGen::Factory {
  5. public:
  6. Factory(): Swan::WorldGen::Factory("Default") {}
  7. WorldGen *create(Swan::TileMap &tmap) { return new DefaultWorldGen(tmap); }
  8. };
  9. Swan::Tile::ID tGrass_, tAir_;
  10. DefaultWorldGen(Swan::TileMap &tmap):
  11. tGrass_(tmap.getID("core::grass")), tAir_(tmap.getID("core::air")) {}
  12. void genChunk(Swan::Chunk &chunk, int x, int y) {
  13. fprintf(stderr, "genChunk at %i, %i\n", x, y);
  14. for (int x = 0; x < Swan::CHUNK_WIDTH; ++x) {
  15. for (int y = 0; y < Swan::CHUNK_HEIGHT; ++y) {
  16. chunk.tiles_[x][y] = y == 3 ? tGrass_ : tAir_;
  17. }
  18. }
  19. }
  20. };
  21. extern "C" void mod_init(Swan::Mod &mod) {
  22. mod.init("core");
  23. mod.registerTile("air", "assets/tiles/air.png", Swan::Tile::Opts()
  24. .solid(false));
  25. mod.registerTile("stone", "assets/tiles/stone.png", Swan::Tile::Opts());
  26. mod.registerTile("dirt", "assets/tiles/dirt.png", Swan::Tile::Opts());
  27. mod.registerTile("grass", "assets/tiles/grass.png", Swan::Tile::Opts());
  28. mod.registerWorldGen(new DefaultWorldGen::Factory());
  29. }
  30. int main() {
  31. Swan::Mod mod;
  32. mod.init("core");
  33. }