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.

main.cc 1.9KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. #include <swan/swan.h>
  2. #include "DefaultWorldGen.h"
  3. #include "entities/PlayerEntity.h"
  4. #include "entities/ItemStackEntity.h"
  5. static Swan::EventListener break_listener;
  6. extern "C" void mod_init(Swan::Mod &mod, Swan::World &world) {
  7. mod.init("core");
  8. break_listener = world.evt_tile_break_.subscribe([](
  9. const Swan::Context &ctx, Swan::TilePos pos, Swan::Tile &tile) {
  10. if (tile.dropped_item_) {
  11. ctx.plane.spawnEntity(std::make_unique<ItemStackEntity>(
  12. ctx, pos, *tile.dropped_item_));
  13. }
  14. });
  15. mod.registerImage("tile/air");
  16. mod.registerImage("tile/stone");
  17. mod.registerImage("tile/dirt");
  18. mod.registerImage("tile/grass");
  19. mod.registerImage("tile/tree-trunk");
  20. mod.registerImage("tile/leaves");
  21. mod.registerImage("entity/player-running");
  22. mod.registerImage("entity/player-still");
  23. mod.registerImage("misc/background-cave");
  24. mod.registerTile({
  25. .name = "air",
  26. .image = "core/tile/air",
  27. .is_solid = false,
  28. });
  29. mod.registerTile({
  30. .name = "stone",
  31. .image = "core/tile/stone",
  32. .dropped_item = "core::stone",
  33. });
  34. mod.registerTile({
  35. .name = "dirt",
  36. .image = "core/tile/dirt",
  37. .dropped_item = "core::dirt",
  38. });
  39. mod.registerTile({
  40. .name = "grass",
  41. .image = "core/tile/grass",
  42. .dropped_item = "core::dirt",
  43. });
  44. mod.registerTile({
  45. .name = "tree-trunk",
  46. .image = "core/tile/tree-trunk",
  47. .dropped_item = "core::tree-trunk",
  48. });
  49. mod.registerTile({
  50. .name = "leaves",
  51. .image = "core/tile/leaves",
  52. });
  53. mod.registerItem({
  54. .name = "stone",
  55. .image = "core/tile/stone",
  56. });
  57. mod.registerItem({
  58. .name = "dirt",
  59. .image = "core/tile/dirt",
  60. });
  61. mod.registerItem({
  62. .name = "grass",
  63. .image = "core/tile/grass",
  64. });
  65. mod.registerItem({
  66. .name = "tree-trunk",
  67. .image = "core/tile/tree-trunk",
  68. });
  69. mod.registerWorldGen<DefaultWorldGen>("default");
  70. mod.registerEntity<PlayerEntity>("player");
  71. mod.registerEntity<ItemStackEntity>("item-stack");
  72. }