mirror of
https://github.com/godotengine/godot.git
synced 2025-10-28 04:04:24 +00:00
Merge pull request #19021 from Faless/rpc_sync_fix
RPCMode refactor, more sync modes
This commit is contained in:
commit
d0b62ce155
30 changed files with 319 additions and 333 deletions
|
|
@ -3373,7 +3373,7 @@ void GDScriptParser::_parse_class(ClassNode *p_class) {
|
|||
function->line = fnline;
|
||||
|
||||
function->rpc_mode = rpc_mode;
|
||||
rpc_mode = ScriptInstance::RPC_MODE_DISABLED;
|
||||
rpc_mode = MultiplayerAPI::RPC_MODE_DISABLED;
|
||||
|
||||
if (_static)
|
||||
p_class->static_functions.push_back(function);
|
||||
|
|
@ -3931,10 +3931,10 @@ void GDScriptParser::_parse_class(ClassNode *p_class) {
|
|||
tokenizer->advance();
|
||||
}
|
||||
|
||||
if (tokenizer->get_token() != GDScriptTokenizer::TK_PR_VAR && tokenizer->get_token() != GDScriptTokenizer::TK_PR_ONREADY && tokenizer->get_token() != GDScriptTokenizer::TK_PR_REMOTE && tokenizer->get_token() != GDScriptTokenizer::TK_PR_MASTER && tokenizer->get_token() != GDScriptTokenizer::TK_PR_SLAVE && tokenizer->get_token() != GDScriptTokenizer::TK_PR_SYNC) {
|
||||
if (tokenizer->get_token() != GDScriptTokenizer::TK_PR_VAR && tokenizer->get_token() != GDScriptTokenizer::TK_PR_ONREADY && tokenizer->get_token() != GDScriptTokenizer::TK_PR_REMOTE && tokenizer->get_token() != GDScriptTokenizer::TK_PR_MASTER && tokenizer->get_token() != GDScriptTokenizer::TK_PR_SLAVE && tokenizer->get_token() != GDScriptTokenizer::TK_PR_SYNC && tokenizer->get_token() != GDScriptTokenizer::TK_PR_REMOTESYNC && tokenizer->get_token() != GDScriptTokenizer::TK_PR_MASTERSYNC && tokenizer->get_token() != GDScriptTokenizer::TK_PR_SLAVESYNC) {
|
||||
|
||||
current_export = PropertyInfo();
|
||||
_set_error("Expected 'var', 'onready', 'remote', 'master', 'slave' or 'sync'.");
|
||||
_set_error("Expected 'var', 'onready', 'remote', 'master', 'slave', 'sync', 'remotesync', 'mastersync', 'slavesync'.");
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -3967,7 +3967,7 @@ void GDScriptParser::_parse_class(ClassNode *p_class) {
|
|||
return;
|
||||
}
|
||||
}
|
||||
rpc_mode = ScriptInstance::RPC_MODE_REMOTE;
|
||||
rpc_mode = MultiplayerAPI::RPC_MODE_REMOTE;
|
||||
|
||||
continue;
|
||||
} break;
|
||||
|
|
@ -3988,7 +3988,7 @@ void GDScriptParser::_parse_class(ClassNode *p_class) {
|
|||
}
|
||||
}
|
||||
|
||||
rpc_mode = ScriptInstance::RPC_MODE_MASTER;
|
||||
rpc_mode = MultiplayerAPI::RPC_MODE_MASTER;
|
||||
continue;
|
||||
} break;
|
||||
case GDScriptTokenizer::TK_PR_SLAVE: {
|
||||
|
|
@ -4008,9 +4008,10 @@ void GDScriptParser::_parse_class(ClassNode *p_class) {
|
|||
}
|
||||
}
|
||||
|
||||
rpc_mode = ScriptInstance::RPC_MODE_SLAVE;
|
||||
rpc_mode = MultiplayerAPI::RPC_MODE_SLAVE;
|
||||
continue;
|
||||
} break;
|
||||
case GDScriptTokenizer::TK_PR_REMOTESYNC:
|
||||
case GDScriptTokenizer::TK_PR_SYNC: {
|
||||
|
||||
//may be fallthrough from export, ignore if so
|
||||
|
|
@ -4023,7 +4024,37 @@ void GDScriptParser::_parse_class(ClassNode *p_class) {
|
|||
return;
|
||||
}
|
||||
|
||||
rpc_mode = ScriptInstance::RPC_MODE_SYNC;
|
||||
rpc_mode = MultiplayerAPI::RPC_MODE_SYNC;
|
||||
continue;
|
||||
} break;
|
||||
case GDScriptTokenizer::TK_PR_MASTERSYNC: {
|
||||
|
||||
//may be fallthrough from export, ignore if so
|
||||
tokenizer->advance();
|
||||
if (tokenizer->get_token() != GDScriptTokenizer::TK_PR_VAR && tokenizer->get_token() != GDScriptTokenizer::TK_PR_FUNCTION) {
|
||||
if (current_export.type)
|
||||
_set_error("Expected 'var'.");
|
||||
else
|
||||
_set_error("Expected 'var' or 'func'.");
|
||||
return;
|
||||
}
|
||||
|
||||
rpc_mode = MultiplayerAPI::RPC_MODE_MASTERSYNC;
|
||||
continue;
|
||||
} break;
|
||||
case GDScriptTokenizer::TK_PR_SLAVESYNC: {
|
||||
|
||||
//may be fallthrough from export, ignore if so
|
||||
tokenizer->advance();
|
||||
if (tokenizer->get_token() != GDScriptTokenizer::TK_PR_VAR && tokenizer->get_token() != GDScriptTokenizer::TK_PR_FUNCTION) {
|
||||
if (current_export.type)
|
||||
_set_error("Expected 'var'.");
|
||||
else
|
||||
_set_error("Expected 'var' or 'func'.");
|
||||
return;
|
||||
}
|
||||
|
||||
rpc_mode = MultiplayerAPI::RPC_MODE_SLAVESYNC;
|
||||
continue;
|
||||
} break;
|
||||
case GDScriptTokenizer::TK_PR_VAR: {
|
||||
|
|
@ -4053,7 +4084,7 @@ void GDScriptParser::_parse_class(ClassNode *p_class) {
|
|||
|
||||
tokenizer->advance();
|
||||
|
||||
rpc_mode = ScriptInstance::RPC_MODE_DISABLED;
|
||||
rpc_mode = MultiplayerAPI::RPC_MODE_DISABLED;
|
||||
|
||||
if (tokenizer->get_token() == GDScriptTokenizer::TK_OP_ASSIGN) {
|
||||
|
||||
|
|
@ -4478,7 +4509,7 @@ void GDScriptParser::clear() {
|
|||
current_class = NULL;
|
||||
|
||||
completion_found = false;
|
||||
rpc_mode = ScriptInstance::RPC_MODE_DISABLED;
|
||||
rpc_mode = MultiplayerAPI::RPC_MODE_DISABLED;
|
||||
|
||||
current_function = NULL;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue