From 2650fafad8ac8c9526b6bdc5d171d80ee1a661ff Mon Sep 17 00:00:00 2001 From: Juju Adams Date: Sun, 30 Apr 2023 15:14:38 +0100 Subject: [PATCH] GML parser can now read asset names as tokens --- .../SnapBufferReadGML/SnapBufferReadGML.gml | 43 +++++++++++++++++-- 1 file changed, 40 insertions(+), 3 deletions(-) diff --git a/scripts/SnapBufferReadGML/SnapBufferReadGML.gml b/scripts/SnapBufferReadGML/SnapBufferReadGML.gml index 71f0a7b..986dae2 100644 --- a/scripts/SnapBufferReadGML/SnapBufferReadGML.gml +++ b/scripts/SnapBufferReadGML/SnapBufferReadGML.gml @@ -126,7 +126,15 @@ function __SnapBufferReadGMLParser(_buffer, _buffer_size) constructor } else { - show_error("SNAP:\n\nLine " + string(line) + ", unexpected token " + string(token) + "\nis_string = " + string(token_is_string) + "\nis_real = " + string(token_is_real) + "\nis_symbol = " + string(token_is_symbol) + "\n ", true); + var _asset_index = try_to_find_asset_index(token); + if (_asset_index >= 0) + { + token = _asset_index; + } + else + { + show_error("SNAP:\n\nLine " + string(line) + ", unexpected token " + string(token) + "\nis_string = " + string(token_is_string) + "\nis_real = " + string(token_is_real) + "\nis_symbol = " + string(token_is_symbol) + "\n ", true); + } } } @@ -216,7 +224,15 @@ function __SnapBufferReadGMLParser(_buffer, _buffer_size) constructor } else { - show_error("SNAP:\n\nLine " + string(line) + ", unexpected token " + string(token) + "\nis_string = " + string(token_is_string) + "\nis_real = " + string(token_is_real) + "\nis_symbol = " + string(token_is_symbol) + "\n ", true); + var _asset_index = try_to_find_asset_index(token); + if (_asset_index >= 0) + { + token = _asset_index; + } + else + { + show_error("SNAP:\n\nLine " + string(line) + ", unexpected token " + string(token) + "\nis_string = " + string(token_is_string) + "\nis_real = " + string(token_is_real) + "\nis_symbol = " + string(token_is_symbol) + "\n ", true); + } } } @@ -355,7 +371,15 @@ function __SnapBufferReadGMLParser(_buffer, _buffer_size) constructor } else { - show_error("SNAP:\n\nLine " + string(line) + ", unexpected token " + string(token) + "\nis_string = " + string(token_is_string) + "\nis_real = " + string(token_is_real) + "\nis_symbol = " + string(token_is_symbol) + "\n ", true); + var _asset_index = try_to_find_asset_index(token); + if (_asset_index >= 0) + { + token = _asset_index; + } + else + { + show_error("SNAP:\n\nLine " + string(line) + ", unexpected token " + string(token) + "\nis_string = " + string(token_is_string) + "\nis_real = " + string(token_is_real) + "\nis_symbol = " + string(token_is_symbol) + "\n ", true); + } } } @@ -469,5 +493,18 @@ function __SnapBufferReadGMLParser(_buffer, _buffer_size) constructor } } + static try_to_find_asset_index = function(_asset) + { + static _constantStruct = __DynamoGMLConstants(); + + if (!is_string(_asset)) return _asset; + + var _index = asset_get_index(_asset); + if (_index >= 0) return _index; + + if (!variable_struct_exists(_constantStruct, _asset)) return -1; + return _constantStruct[$ _asset]; + } + read_root(); } \ No newline at end of file