Add GlobalConstants entry to the dlscript's api.json generator

This commit is contained in:
Emmanuel Leblond 2017-04-09 11:47:53 +02:00
parent 68ae50ecc2
commit d48aabcec1
No known key found for this signature in database
GPG Key ID: C360860E645EFFC0
2 changed files with 20 additions and 2 deletions

View File

@ -4,6 +4,7 @@
#include "class_db.h"
#include "core/global_config.h"
#include "core/global_constants.h"
#include "os/file_access.h"
// helper stuff
@ -92,6 +93,23 @@ List<ClassAPI> generate_c_api_classes() {
List<StringName> classes;
ClassDB::get_class_list(&classes);
// Register global constants as a fake GlobalConstants singleton class
{
ClassAPI global_constants_api;
global_constants_api.class_name = L"GlobalConstants";
global_constants_api.api_type = ClassDB::API_CORE;
global_constants_api.is_singleton = true;
global_constants_api.is_instanciable = false;
const int constants_count = GlobalConstants::get_global_constant_count();
for (int i = 0; i < constants_count; ++i) {
ConstantAPI constant_api;
constant_api.constant_name = GlobalConstants::get_global_constant_name(i);
constant_api.constant_value = GlobalConstants::get_global_constant_value(i);
global_constants_api.constants.push_back(constant_api);
}
api.push_back(global_constants_api);
}
for (List<StringName>::Element *e = classes.front(); e != NULL; e = e->next()) {
StringName class_name = e->get();

View File

@ -183,8 +183,8 @@ void GDAPI *godot_dlinstance_get_userdata(godot_object *p_instance) {
void GDAPI godot_get_global_constants(godot_dictionary *p_constants) {
Dictionary *constants = (Dictionary *)p_constants;
const int constants_cont = GlobalConstants::get_global_constant_count();
for (int i = 0; i < constants_cont; ++i) {
const int constants_count = GlobalConstants::get_global_constant_count();
for (int i = 0; i < constants_count; ++i) {
const char *name = GlobalConstants::get_global_constant_name(i);
int value = GlobalConstants::get_global_constant_value(i);
(*constants)[name] = value;