From 513c0265c4760a7d04caa764a2f367d070e873e3 Mon Sep 17 00:00:00 2001 From: Bojidar Marinov Date: Mon, 3 Oct 2016 19:17:54 +0300 Subject: [PATCH] Add `String char(int ascii)` function to GDScript and Visual Script Just hope it doesn't crashes with that much pointer math... :smile: --- modules/gdscript/gd_functions.cpp | 15 +++++++++++++++ modules/gdscript/gd_functions.h | 1 + .../visual_script_builtin_funcs.cpp | 17 +++++++++++++++++ .../visual_script/visual_script_builtin_funcs.h | 1 + 4 files changed, 34 insertions(+) diff --git a/modules/gdscript/gd_functions.cpp b/modules/gdscript/gd_functions.cpp index a565e866d03..5d67f3cac0a 100644 --- a/modules/gdscript/gd_functions.cpp +++ b/modules/gdscript/gd_functions.cpp @@ -88,6 +88,7 @@ const char *GDFunctions::get_func_name(Function p_func) { "convert", "typeof", "type_exists", + "char", "str", "print", "printt", @@ -538,6 +539,12 @@ void GDFunctions::call(Function p_func,const Variant **p_args,int p_arg_count,Va r_ret = ObjectTypeDB::type_exists(*p_args[0]); } break; + case TEXT_CHAR: { + VALIDATE_ARG_COUNT(1); + VALIDATE_ARG_NUM(0); + CharType result[2] = {*p_args[0], 0}; + r_ret=String(result); + } break; case TEXT_STR: { String str; @@ -1133,6 +1140,7 @@ bool GDFunctions::is_deterministic(Function p_func) { case TYPE_CONVERT: case TYPE_OF: case TYPE_EXISTS: + case TEXT_CHAR: case TEXT_STR: case COLOR8: // enable for debug only, otherwise not desirable - case GEN_RANGE: @@ -1402,6 +1410,13 @@ MethodInfo GDFunctions::get_info(Function p_func) { mi.return_val.type=Variant::BOOL; return mi; + } break; + case TEXT_CHAR: { + + MethodInfo mi("char",PropertyInfo(Variant::INT,"ascii")); + mi.return_val.type=Variant::STRING; + return mi; + } break; case TEXT_STR: { diff --git a/modules/gdscript/gd_functions.h b/modules/gdscript/gd_functions.h index c78956fe20a..f444bb3b5b6 100644 --- a/modules/gdscript/gd_functions.h +++ b/modules/gdscript/gd_functions.h @@ -82,6 +82,7 @@ public: TYPE_CONVERT, TYPE_OF, TYPE_EXISTS, + TEXT_CHAR, TEXT_STR, TEXT_PRINT, TEXT_PRINT_TABBED, diff --git a/modules/visual_script/visual_script_builtin_funcs.cpp b/modules/visual_script/visual_script_builtin_funcs.cpp index 24a44d3506d..2bfb6bc9eab 100644 --- a/modules/visual_script/visual_script_builtin_funcs.cpp +++ b/modules/visual_script/visual_script_builtin_funcs.cpp @@ -55,6 +55,7 @@ const char* VisualScriptBuiltinFunc::func_name[VisualScriptBuiltinFunc::FUNC_MAX "convert", "typeof", "type_exists", + "char", "str", "print", "printerr", @@ -141,6 +142,7 @@ int VisualScriptBuiltinFunc::get_func_argument_count(BuiltinFunc p_func) { case LOGIC_NEAREST_PO2: case OBJ_WEAKREF: case TYPE_OF: + case TEXT_CHAR: case TEXT_STR: case TEXT_PRINT: case TEXT_PRINTERR: @@ -361,6 +363,12 @@ PropertyInfo VisualScriptBuiltinFunc::get_input_value_port_info(int p_idx) const return PropertyInfo(Variant::STRING,"type"); + } break; + case TEXT_CHAR: { + + return PropertyInfo(Variant::INT,"ascii"); + + } break; case TEXT_STR: { @@ -517,6 +525,7 @@ PropertyInfo VisualScriptBuiltinFunc::get_output_value_port_info(int p_idx) cons t=Variant::BOOL; } break; + case TEXT_CHAR: case TEXT_STR: { t=Variant::STRING; @@ -974,6 +983,13 @@ void VisualScriptBuiltinFunc::exec_func(BuiltinFunc p_func,const Variant** p_inp *r_return = ObjectTypeDB::type_exists(*p_inputs[0]); + } break; + case VisualScriptBuiltinFunc::TEXT_CHAR: { + + CharType result[2] = {*p_inputs[0], 0}; + + *r_return=String(result); + } break; case VisualScriptBuiltinFunc::TEXT_STR: { @@ -1213,6 +1229,7 @@ void register_visual_script_builtin_func_node() { VisualScriptLanguage::singleton->add_register_func("functions/built_in/convert",create_builtin_func_node); VisualScriptLanguage::singleton->add_register_func("functions/built_in/typeof",create_builtin_func_node); VisualScriptLanguage::singleton->add_register_func("functions/built_in/type_exists",create_builtin_func_node); + VisualScriptLanguage::singleton->add_register_func("functions/built_in/char",create_builtin_func_node); VisualScriptLanguage::singleton->add_register_func("functions/built_in/str",create_builtin_func_node); VisualScriptLanguage::singleton->add_register_func("functions/built_in/print",create_builtin_func_node); VisualScriptLanguage::singleton->add_register_func("functions/built_in/printerr",create_builtin_func_node); diff --git a/modules/visual_script/visual_script_builtin_funcs.h b/modules/visual_script/visual_script_builtin_funcs.h index 000230d84f1..8b0d70c1ead 100644 --- a/modules/visual_script/visual_script_builtin_funcs.h +++ b/modules/visual_script/visual_script_builtin_funcs.h @@ -57,6 +57,7 @@ public: TYPE_CONVERT, TYPE_OF, TYPE_EXISTS, + TEXT_CHAR, TEXT_STR, TEXT_PRINT, TEXT_PRINTERR,