mirror of
https://github.com/godotengine/godot.git
synced 2025-10-20 00:13:30 +00:00
Reworked signal connection system, added support for Callable and Signal objects and made them default.
This commit is contained in:
parent
1a4be2cd8f
commit
69c95f4b4c
275 changed files with 3831 additions and 2948 deletions
|
@ -1739,7 +1739,7 @@ GDScriptParser::Node *GDScriptParser::_reduce_expression(Node *p_node, bool p_to
|
|||
vptr = (const Variant **)&ptrs[0];
|
||||
}
|
||||
|
||||
Variant::CallError ce;
|
||||
Callable::CallError ce;
|
||||
Variant v;
|
||||
|
||||
if (op->arguments[0]->type == Node::TYPE_TYPE) {
|
||||
|
@ -1751,7 +1751,7 @@ GDScriptParser::Node *GDScriptParser::_reduce_expression(Node *p_node, bool p_to
|
|||
GDScriptFunctions::call(func, vptr, ptrs.size(), v, ce);
|
||||
}
|
||||
|
||||
if (ce.error != Variant::CallError::CALL_OK) {
|
||||
if (ce.error != Callable::CallError::CALL_OK) {
|
||||
|
||||
String errwhere;
|
||||
if (op->arguments[0]->type == Node::TYPE_TYPE) {
|
||||
|
@ -1765,16 +1765,16 @@ GDScriptParser::Node *GDScriptParser::_reduce_expression(Node *p_node, bool p_to
|
|||
|
||||
switch (ce.error) {
|
||||
|
||||
case Variant::CallError::CALL_ERROR_INVALID_ARGUMENT: {
|
||||
case Callable::CallError::CALL_ERROR_INVALID_ARGUMENT: {
|
||||
|
||||
_set_error("Invalid argument (#" + itos(ce.argument + 1) + ") for " + errwhere + ".");
|
||||
|
||||
} break;
|
||||
case Variant::CallError::CALL_ERROR_TOO_MANY_ARGUMENTS: {
|
||||
case Callable::CallError::CALL_ERROR_TOO_MANY_ARGUMENTS: {
|
||||
|
||||
_set_error("Too many arguments for " + errwhere + ".");
|
||||
} break;
|
||||
case Variant::CallError::CALL_ERROR_TOO_FEW_ARGUMENTS: {
|
||||
case Callable::CallError::CALL_ERROR_TOO_FEW_ARGUMENTS: {
|
||||
|
||||
_set_error("Too few arguments for " + errwhere + ".");
|
||||
} break;
|
||||
|
@ -4809,7 +4809,7 @@ void GDScriptParser::_parse_class(ClassNode *p_class) {
|
|||
}
|
||||
|
||||
#ifdef TOOLS_ENABLED
|
||||
Variant::CallError ce;
|
||||
Callable::CallError ce;
|
||||
member.default_value = Variant::construct(member._export.type, NULL, 0, ce);
|
||||
#endif
|
||||
|
||||
|
@ -4878,7 +4878,7 @@ void GDScriptParser::_parse_class(ClassNode *p_class) {
|
|||
if (cn->value.get_type() != Variant::NIL) {
|
||||
if (member._export.type != Variant::NIL && cn->value.get_type() != member._export.type) {
|
||||
if (Variant::can_convert(cn->value.get_type(), member._export.type)) {
|
||||
Variant::CallError err;
|
||||
Callable::CallError err;
|
||||
const Variant *args = &cn->value;
|
||||
cn->value = Variant::construct(member._export.type, &args, 1, err);
|
||||
} else {
|
||||
|
@ -5933,9 +5933,9 @@ GDScriptParser::DataType GDScriptParser::_get_operation_type(const Variant::Oper
|
|||
a_ref.instance();
|
||||
a = a_ref;
|
||||
} else {
|
||||
Variant::CallError err;
|
||||
Callable::CallError err;
|
||||
a = Variant::construct(a_type, NULL, 0, err);
|
||||
if (err.error != Variant::CallError::CALL_OK) {
|
||||
if (err.error != Callable::CallError::CALL_OK) {
|
||||
r_valid = false;
|
||||
return DataType();
|
||||
}
|
||||
|
@ -5946,9 +5946,9 @@ GDScriptParser::DataType GDScriptParser::_get_operation_type(const Variant::Oper
|
|||
b_ref.instance();
|
||||
b = b_ref;
|
||||
} else {
|
||||
Variant::CallError err;
|
||||
Callable::CallError err;
|
||||
b = Variant::construct(b_type, NULL, 0, err);
|
||||
if (err.error != Variant::CallError::CALL_OK) {
|
||||
if (err.error != Callable::CallError::CALL_OK) {
|
||||
r_valid = false;
|
||||
return DataType();
|
||||
}
|
||||
|
@ -6218,7 +6218,7 @@ GDScriptParser::Node *GDScriptParser::_get_default_value_for_type(const DataType
|
|||
result = alloc_node<DictionaryNode>();
|
||||
} else {
|
||||
ConstantNode *c = alloc_node<ConstantNode>();
|
||||
Variant::CallError err;
|
||||
Callable::CallError err;
|
||||
c->value = Variant::construct(p_type.builtin_type, NULL, 0, err);
|
||||
result = c;
|
||||
}
|
||||
|
@ -6531,7 +6531,7 @@ GDScriptParser::DataType GDScriptParser::_reduce_node_type(Node *p_node) {
|
|||
result.has_type = false;
|
||||
} break;
|
||||
default: {
|
||||
Variant::CallError err;
|
||||
Callable::CallError err;
|
||||
Variant temp = Variant::construct(base_type.builtin_type, NULL, 0, err);
|
||||
|
||||
bool valid = false;
|
||||
|
@ -6656,7 +6656,7 @@ GDScriptParser::DataType GDScriptParser::_reduce_node_type(Node *p_node) {
|
|||
break;
|
||||
}
|
||||
default: {
|
||||
Variant::CallError err;
|
||||
Callable::CallError err;
|
||||
Variant temp = Variant::construct(base_type.builtin_type, NULL, 0, err);
|
||||
|
||||
bool valid = false;
|
||||
|
@ -7095,7 +7095,7 @@ GDScriptParser::DataType GDScriptParser::_reduce_function_call_type(const Operat
|
|||
}
|
||||
|
||||
if (base_type.kind == DataType::BUILTIN) {
|
||||
Variant::CallError err;
|
||||
Callable::CallError err;
|
||||
Variant tmp = Variant::construct(base_type.builtin_type, NULL, 0, err);
|
||||
|
||||
if (check_types) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue