From e199300fffa41211e353dfc1d5b42e3ae9b87eda Mon Sep 17 00:00:00 2001 From: Relintai Date: Mon, 14 Oct 2019 21:50:35 +0200 Subject: [PATCH] Added map generation virtual methods. --- main/dungeon.cpp | 10 ++++++++++ main/dungeon.h | 2 ++ main/planet.cpp | 10 ++++++++++ main/planet.h | 2 ++ 4 files changed, 24 insertions(+) diff --git a/main/dungeon.cpp b/main/dungeon.cpp index c1741bb..00bc644 100644 --- a/main/dungeon.cpp +++ b/main/dungeon.cpp @@ -42,6 +42,12 @@ void Dungeon::generate_structure(Ref structure) { } } +Ref Dungeon::generate_map() { + ERR_FAIL_COND_V(!has_method("_generate_map"), Ref()); + + return call("_generate_map"); +} + Dungeon::Dungeon() { } @@ -67,4 +73,8 @@ void Dungeon::_bind_methods() { ClassDB::bind_method(D_METHOD("remove_dungeon_room", "index"), &Dungeon::remove_dungeon_room); ClassDB::bind_method(D_METHOD("get_dungeon_room_count"), &Dungeon::get_dungeon_room_count); + + BIND_VMETHOD(MethodInfo(PropertyInfo(Variant::OBJECT, "image", PROPERTY_HINT_RESOURCE_TYPE, "Image"), "_generate_map")); + + ClassDB::bind_method(D_METHOD("generate_map"), &Dungeon::generate_map); } diff --git a/main/dungeon.h b/main/dungeon.h index 9ab3f5f..20e41dc 100644 --- a/main/dungeon.h +++ b/main/dungeon.h @@ -27,6 +27,8 @@ public: void generate_chunk(Ref chunk); void generate_structure(Ref structure); + Ref generate_map(); + Dungeon(); ~Dungeon(); diff --git a/main/planet.cpp b/main/planet.cpp index f96fd14..0cff182 100644 --- a/main/planet.cpp +++ b/main/planet.cpp @@ -36,6 +36,12 @@ void Planet::generate_chunk(Ref chunk) { } } +Ref Planet::generate_map() { + ERR_FAIL_COND_V(!has_method("_generate_map"), Ref()); + + return call("_generate_map"); +} + Planet::Planet() { } @@ -59,4 +65,8 @@ void Planet::_bind_methods() { ClassDB::bind_method(D_METHOD("remove_biome", "index"), &Planet::remove_biome); ClassDB::bind_method(D_METHOD("get_biome_count"), &Planet::get_biome_count); + + BIND_VMETHOD(MethodInfo(PropertyInfo(Variant::OBJECT, "image", PROPERTY_HINT_RESOURCE_TYPE, "Image"), "_generate_map")); + + ClassDB::bind_method(D_METHOD("generate_map"), &Planet::generate_map); } diff --git a/main/planet.h b/main/planet.h index 4cef6ec..9022ebf 100644 --- a/main/planet.h +++ b/main/planet.h @@ -2,6 +2,7 @@ #define PLANET_H #include "core/reference.h" +#include "core/image.h" #include "../../voxelman/world/voxel_chunk.h" #include "biome.h" @@ -23,6 +24,7 @@ public: int get_biome_count() const; void generate_chunk(Ref chunk); + Ref generate_map(); Planet(); ~Planet();