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.

DefaultWorldGen.h 983B

1234567891011121314151617181920212223242526272829
  1. #pragma once
  2. #include <swan/swan.h>
  3. #include <PerlinNoise.hpp>
  4. class DefaultWorldGen: public Swan::WorldGen {
  5. public:
  6. DefaultWorldGen(Swan::World &world):
  7. tGrass_(world.getTileID("core::grass")),
  8. tDirt_(world.getTileID("core::dirt")),
  9. tStone_(world.getTileID("core::stone")),
  10. tAir_(world.getTileID("@::air")),
  11. tTreeTrunk_(world.getTileID("core::tree-trunk")),
  12. tLeaves_(world.getTileID("core::leaves")),
  13. bgCave_(world.getSprite("core::misc/background-cave")) {}
  14. void drawBackground(
  15. const Swan::Context &ctx, Cygnet::Renderer &rnd, Swan::Vec2 pos) override;
  16. Cygnet::Color backgroundColor(Swan::Vec2 pos) override;
  17. void genChunk(Swan::WorldPlane &plane, Swan::Chunk &chunk) override;
  18. Swan::EntityRef spawnPlayer(const Swan::Context &ctx) override;
  19. private:
  20. Swan::Tile::ID genTile(Swan::TilePos pos);
  21. Swan::Tile::ID tGrass_, tDirt_, tStone_, tAir_, tTreeTrunk_, tLeaves_;
  22. Cygnet::RenderSprite bgCave_;
  23. siv::PerlinNoise perlin_ = siv::PerlinNoise(100);
  24. };