From 73b773f9d3f8efcf822e64715877d0ac80a9cce1 Mon Sep 17 00:00:00 2001 From: Juju Adams Date: Thu, 27 Apr 2023 15:55:25 +0100 Subject: [PATCH] Adds size parameter to SnapBufferReadVDF() --- rooms/rMain/rMain.yy | 4 ++-- .../SnapBufferReadVDF/SnapBufferReadVDF.gml | 18 +++++++++--------- scripts/SnapFromVDF/SnapFromVDF.gml | 2 +- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/rooms/rMain/rMain.yy b/rooms/rMain/rMain.yy index 53f8a72..624a977 100644 --- a/rooms/rMain/rMain.yy +++ b/rooms/rMain/rMain.yy @@ -17,7 +17,7 @@ ], "layers": [ {"resourceType":"GMRInstanceLayer","resourceVersion":"1.0","name":"Instances","instances":[ - {"resourceType":"GMRInstance","resourceVersion":"1.0","name":"inst_76616C","properties":[],"isDnd":false,"objectId":{"name":"oTestConfigJSON","path":"objects/oTestConfigJSON/oTestConfigJSON.yy",},"inheritCode":false,"hasCreationCode":false,"colour":4294967295,"rotation":0.0,"scaleX":1.0,"scaleY":1.0,"imageIndex":0,"imageSpeed":1.0,"inheritedItemId":null,"frozen":false,"ignore":false,"inheritItemSettings":false,"x":32.0,"y":32.0,}, + {"resourceType":"GMRInstance","resourceVersion":"1.0","name":"inst_53BCBEF","properties":[],"isDnd":false,"objectId":{"name":"oTestVDF","path":"objects/oTestVDF/oTestVDF.yy",},"inheritCode":false,"hasCreationCode":false,"colour":4294967295,"rotation":0.0,"scaleX":1.0,"scaleY":1.0,"imageIndex":0,"imageSpeed":1.0,"inheritedItemId":null,"frozen":false,"ignore":false,"inheritItemSettings":false,"x":32.0,"y":32.0,}, ],"visible":true,"depth":0,"userdefinedDepth":false,"inheritLayerDepth":false,"inheritLayerSettings":false,"gridX":32,"gridY":32,"layers":[],"hierarchyFrozen":false,"effectEnabled":true,"effectType":null,"properties":[],}, {"resourceType":"GMRBackgroundLayer","resourceVersion":"1.0","name":"Background","spriteId":null,"colour":4278190080,"x":0,"y":0,"htiled":false,"vtiled":false,"hspeed":0.0,"vspeed":0.0,"stretch":false,"animationFPS":15.0,"animationSpeedType":0,"userdefinedAnimFPS":false,"visible":true,"depth":100,"userdefinedDepth":false,"inheritLayerDepth":false,"inheritLayerSettings":false,"gridX":32,"gridY":32,"layers":[],"hierarchyFrozen":false,"effectEnabled":true,"effectType":null,"properties":[],}, ], @@ -25,7 +25,7 @@ "creationCodeFile": "", "inheritCode": false, "instanceCreationOrder": [ - {"name":"inst_76616C","path":"rooms/rMain/rMain.yy",}, + {"name":"inst_53BCBEF","path":"rooms/rMain/rMain.yy",}, ], "inheritCreationOrder": false, "sequenceId": null, diff --git a/scripts/SnapBufferReadVDF/SnapBufferReadVDF.gml b/scripts/SnapBufferReadVDF/SnapBufferReadVDF.gml index 26ff3f3..f2d563a 100644 --- a/scripts/SnapBufferReadVDF/SnapBufferReadVDF.gml +++ b/scripts/SnapBufferReadVDF/SnapBufferReadVDF.gml @@ -1,11 +1,12 @@ /// @return Nested struct data that represents the contents of the VDF string /// -/// @param buffer Buffer to read data from -/// @param offset Offset in the buffer to read data from +/// @param buffer Buffer to read data from +/// @param [offset=0] Offset in the buffer to read data from +/// @param [size=all] Number of bytes to read from the buffer. If not specified, the whole buffer is read /// /// @jujuadams 2023-03-25 -function SnapBufferReadVDF(_buffer, _inOffset = undefined) +function SnapBufferReadVDF(_buffer, _inOffset = undefined, _inSize = undefined) { if (_inOffset != undefined) { @@ -13,6 +14,8 @@ function SnapBufferReadVDF(_buffer, _inOffset = undefined) buffer_seek(_buffer, buffer_seek_start, _inOffset); } + var _size = _inSize ?? buffer_get_size(_buffer) - buffer_tell(_buffer); + var _cacheBuffer = undefined; var _readStart = undefined; @@ -23,17 +26,14 @@ function SnapBufferReadVDF(_buffer, _inOffset = undefined) var _structKey = undefined; var _inStructValue = false; - var _inComment = false; - var _inMultilineComment = false; - var _newComment = false; - var _newMultilineComment = false; + var _inComment = false; + var _inMultilineComment = false; var _root = {}; var _stackTop = _root; var _stack = [_stackTop]; - var _bufferSize = buffer_get_size(_buffer); - while(buffer_tell(_buffer) < _bufferSize) + while(buffer_tell(_buffer) < _size) { var _byte = buffer_read(_buffer, buffer_u8); if (_byte == 0x00) break; diff --git a/scripts/SnapFromVDF/SnapFromVDF.gml b/scripts/SnapFromVDF/SnapFromVDF.gml index a914c96..a7a336e 100644 --- a/scripts/SnapFromVDF/SnapFromVDF.gml +++ b/scripts/SnapFromVDF/SnapFromVDF.gml @@ -8,7 +8,7 @@ function SnapFromVDF(_string) { var _buffer = buffer_create(string_byte_length(_string), buffer_fixed, 1); buffer_write(_buffer, buffer_text, _string); - var _data = SnapBufferReadVDF(_buffer, 0); + var _data = SnapBufferReadVDF(_buffer, 0, buffer_get_size(_buffer)); buffer_delete(_buffer); return _data; } \ No newline at end of file