diff options
-rw-r--r-- | core/variant_parser.cpp | 2 | ||||
-rw-r--r-- | doc/classes/@GDScript.xml | 13 | ||||
-rw-r--r-- | doc/classes/int.xml | 16 | ||||
-rw-r--r-- | editor/editor_properties.cpp | 14 |
4 files changed, 30 insertions, 15 deletions
diff --git a/core/variant_parser.cpp b/core/variant_parser.cpp index 716e5499e3..0056fc75b6 100644 --- a/core/variant_parser.cpp +++ b/core/variant_parser.cpp @@ -1597,7 +1597,7 @@ Error VariantWriter::write(const Variant &p_variant, StoreStringFunc p_store_str } break; case Variant::INT: { - p_store_string_func(p_store_string_ud, itos(p_variant.operator int())); + p_store_string_func(p_store_string_ud, itos(p_variant.operator int64_t())); } break; case Variant::REAL: { diff --git a/doc/classes/@GDScript.xml b/doc/classes/@GDScript.xml index a7b58352cc..7b4b3e43ba 100644 --- a/doc/classes/@GDScript.xml +++ b/doc/classes/@GDScript.xml @@ -811,7 +811,7 @@ <description> Random range, any floating point value between [code]from[/code] and [code]to[/code]. [codeblock] - prints(rand_range(0, 1), rand_range(0, 1)) # prints 0.135591 0.405263 + prints(rand_range(0, 1), rand_range(0, 1)) # prints e.g. 0.135591 0.405263 [/codeblock] </description> </method> @@ -830,7 +830,7 @@ <description> Returns a random floating point value on the interval [code][0, 1][/code]. [codeblock] - randf() # returns 0.375671 + randf() # returns e.g. 0.375671 [/codeblock] </description> </method> @@ -838,11 +838,12 @@ <return type="int"> </return> <description> - Returns a random 32 bit integer. Use remainder to obtain a random value in the interval [code][0, N][/code] (where N is smaller than 2^32 -1). + Returns a random unsigned 32 bit integer. Use remainder to obtain a random value in the interval [code][0, N][/code] (where N is smaller than 2^32 -1). [codeblock] - randi() % 20 # returns random number between 0 and 19 - randi() % 100 # returns random number between 0 and 99 - randi() % 100 + 1 # returns random number between 1 and 100 + randi() # returns random integer between 0 and 2^32 - 1 + randi() % 20 # returns random integer between 0 and 19 + randi() % 100 # returns random integer between 0 and 99 + randi() % 100 + 1 # returns random integer between 1 and 100 [/codeblock] </description> </method> diff --git a/doc/classes/int.xml b/doc/classes/int.xml index 4855fa2848..7175b9fd88 100644 --- a/doc/classes/int.xml +++ b/doc/classes/int.xml @@ -4,7 +4,21 @@ Integer built-in type. </brief_description> <description> - Integer built-in type. + Signed 64-bit integer type. + It can take values in the interval [code][-2^63, 2^63 - 1][/code], i.e. [code][-9223372036854775808, 9223372036854775807][/code]. Exceeding those bounds will wrap around. + [code]int[/code] is a [Variant] type, and will thus be used when assigning an integer value to a [Variant]. It can also be enforced with the [code]: int[/code] type hint. + [codeblock] + var my_variant = 0 # int, value 0 + my_variant += 4.2 # float, value 4.2 + var my_int: int = 1 # int, value 1 + my_int = 4.2 # int, value 4, the right value is implicitly cast to int + my_int = int("6.7") # int, value 6, the String is explicitly cast with [method int] + + var max_int = 9223372036854775807 + print(max_int) # 9223372036854775807, OK + max_int += 1 + print(max_int) # -9223372036854775808, we overflowed and wrapped around + [/codeblock] </description> <tutorials> </tutorials> diff --git a/editor/editor_properties.cpp b/editor/editor_properties.cpp index 98950023ce..08e4260deb 100644 --- a/editor/editor_properties.cpp +++ b/editor/editor_properties.cpp @@ -483,16 +483,16 @@ EditorPropertyCheck::EditorPropertyCheck() { void EditorPropertyEnum::_option_selected(int p_which) { - int val = options->get_item_metadata(p_which); + int64_t val = options->get_item_metadata(p_which); emit_changed(get_edited_property(), val); } void EditorPropertyEnum::update_property() { - int which = get_edited_object()->get(get_edited_property()); + int64_t which = get_edited_object()->get(get_edited_property()); for (int i = 0; i < options->get_item_count(); i++) { - if (which == (int)options->get_item_metadata(i)) { + if (which == (int64_t)options->get_item_metadata(i)) { options->select(i); return; } @@ -501,11 +501,11 @@ void EditorPropertyEnum::update_property() { void EditorPropertyEnum::setup(const Vector<String> &p_options) { - int current_val = 0; + int64_t current_val = 0; for (int i = 0; i < p_options.size(); i++) { Vector<String> text_split = p_options[i].split(":"); if (text_split.size() != 1) - current_val = text_split[1].to_int(); + current_val = text_split[1].to_int64(); options->add_item(text_split[0]); options->set_item_metadata(i, current_val); current_val += 1; @@ -801,11 +801,11 @@ EditorPropertyLayers::EditorPropertyLayers() { void EditorPropertyInteger::_value_changed(double val) { if (setting) return; - emit_changed(get_edited_property(), int(val)); + emit_changed(get_edited_property(), (int64_t)val); } void EditorPropertyInteger::update_property() { - int val = get_edited_object()->get(get_edited_property()); + int64_t val = get_edited_object()->get(get_edited_property()); setting = true; spin->set_value(val); setting = false; |