From 6e4494df374470c6dc28a81540935a1fd1e01770 Mon Sep 17 00:00:00 2001 From: Hyomoto Date: Wed, 25 Nov 2020 16:20:31 -0500 Subject: [PATCH] 2.3.1 initial update --- FASTv33.yyp | 159 ++++++++++++- notes/Changelog/Changelog.txt | 2 +- objects/FASTRender/Create_0.gml | 3 +- objects/__FASTtool/Create_0.gml | 9 +- objects/oPointerWindow/Create_0.gml | 73 ++++++ objects/oPointerWindow/Draw_0.gml | 35 +++ objects/oPointerWindow/Step_0.gml | 7 + objects/oPointerWindow/oPointerWindow.yy | 38 +++ objects/oRenderStack/Create_0.gml | 4 +- objects/testObject/testObject.yy | 31 --- rooms/Room1/Room1.yy | 4 +- scripts/Array/Array.gml | 2 +- scripts/ArrayList/ArrayList.gml | 4 +- scripts/DsLinkedList/DsLinkedList.gml | 4 - scripts/DsList/DsList.gml | 2 + scripts/Gamepad/Gamepad.gml | 12 +- scripts/GarbageManager/GarbageManager.gml | 69 ++++++ .../GarbageManager.yy} | 6 +- scripts/InputCombo/InputCombo.gml | 6 +- scripts/InputCombo/InputCombo.yy | 4 +- scripts/InputDevice/InputDevice.gml | 96 +------- scripts/InputDevice/InputDevice.yy | 4 +- .../InputGeneric.gml} | 6 +- scripts/InputGeneric/InputGeneric.yy | 12 + scripts/InputManager/InputManager.gml | 53 +++++ scripts/InputMethod/InputMethod.gml | 2 +- scripts/InputMethod/InputMethod.yy | 4 +- scripts/KeyboardKey/KeyboardKey.gml | 2 +- scripts/MouseButton/MouseButton.gml | 2 +- scripts/MouseWheelDown/MouseWheelDown.gml | 2 +- scripts/MouseWheelUp/MouseWheelUp.gml | 2 +- scripts/PointerDevice/PointerDevice.gml | 28 --- scripts/PointerInterface/PointerInterface.gml | 219 +++--------------- scripts/PointerInterface/PointerInterface.yy | 4 +- scripts/PointerManager/PointerManager.gml | 50 +--- .../PointerSimpleMouse/PointerSimpleMouse.gml | 47 ++++ .../PointerSimpleMouse/PointerSimpleMouse.yy | 12 + scripts/PointerStack/PointerStack.gml | 114 +++++++++ scripts/PointerStack/PointerStack.yy | 12 + scripts/RenderList/RenderList.gml | 53 +++++ .../RenderList.yy} | 6 +- scripts/RenderManager/RenderManager.gml | 9 +- scripts/Shape/Shape.gml | 4 + scripts/Shape/Shape.yy | 2 +- scripts/ShapeCircle/ShapeCircle.yy | 2 +- scripts/ShapeEllipses/ShapeEllipses.yy | 2 +- scripts/ShapeGrid/ShapeGrid.yy | 2 +- scripts/ShapePolygon/ShapePolygon.yy | 2 +- scripts/ShapeRectangle/ShapeRectangle.yy | 2 +- scripts/blank/blank.gml | 0 .../testScript.yy => blank/blank.yy} | 2 +- scripts/gc_grid/gc_grid.gml | 14 ++ scripts/gc_grid/gc_grid.yy | 12 + scripts/gc_list/gc_list.gml | 12 + scripts/gc_list/gc_list.yy | 12 + scripts/gc_map/gc_list.yy | 12 + scripts/gc_map/gc_map.gml | 12 + scripts/gc_map/gc_map.yy | 12 + .../gc_priority_queue/gc_priority_queue.gml | 12 + .../gc_priority_queue/gc_priority_queue.yy | 12 + scripts/gc_queue/gc_grid.yy | 12 + scripts/gc_queue/gc_queue.gml | 12 + scripts/gc_queue/gc_queue.yy | 12 + scripts/gc_stack/gc_grid.yy | 12 + scripts/gc_stack/gc_stack.gml | 12 + scripts/gc_stack/gc_stack.yy | 12 + scripts/is_struct_of/is_struct_of.gml | 3 +- scripts/testScript/testScript.gml | 5 - .../2d9e9028-4884-4416-807f-4d256bc52bcd.png | Bin 0 -> 326 bytes .../4496626e-d9c0-4172-b11b-beaa4a3ed939.png | Bin 0 -> 305 bytes .../455cc62f-330c-4167-8930-65b87edb5dbc.png | Bin 0 -> 366 bytes .../4bed716d-214c-4535-9933-96c630218923.png | Bin 0 -> 357 bytes .../b0c01adc-9776-4506-9753-394685f97d8d.png | Bin 0 -> 248 bytes .../c86b7b92-37bf-4172-be8c-0b610cc2f123.png | Bin 0 -> 206 bytes .../f12ea975-efb7-4d74-89c6-0940289961b3.png | Bin 0 -> 232 bytes sprites/gfx_rect/gfx_rect.yy | 102 ++++++++ .../beb297d0-2f46-44b6-ba44-0512f20e40e2.png | Bin 0 -> 326 bytes .../beb297d0-2f46-44b6-ba44-0512f20e40e2.png | Bin 0 -> 305 bytes .../beb297d0-2f46-44b6-ba44-0512f20e40e2.png | Bin 0 -> 366 bytes .../beb297d0-2f46-44b6-ba44-0512f20e40e2.png | Bin 0 -> 357 bytes .../beb297d0-2f46-44b6-ba44-0512f20e40e2.png | Bin 0 -> 248 bytes .../beb297d0-2f46-44b6-ba44-0512f20e40e2.png | Bin 0 -> 206 bytes .../beb297d0-2f46-44b6-ba44-0512f20e40e2.png | Bin 0 -> 232 bytes 83 files changed, 1081 insertions(+), 442 deletions(-) create mode 100644 objects/oPointerWindow/Create_0.gml create mode 100644 objects/oPointerWindow/Draw_0.gml create mode 100644 objects/oPointerWindow/Step_0.gml create mode 100644 objects/oPointerWindow/oPointerWindow.yy delete mode 100644 objects/testObject/testObject.yy create mode 100644 scripts/GarbageManager/GarbageManager.gml rename scripts/{GenericInput/GenericInput.yy => GarbageManager/GarbageManager.yy} (57%) rename scripts/{GenericInput/GenericInput.gml => InputGeneric/InputGeneric.gml} (78%) create mode 100644 scripts/InputGeneric/InputGeneric.yy delete mode 100644 scripts/PointerDevice/PointerDevice.gml create mode 100644 scripts/PointerSimpleMouse/PointerSimpleMouse.gml create mode 100644 scripts/PointerSimpleMouse/PointerSimpleMouse.yy create mode 100644 scripts/PointerStack/PointerStack.gml create mode 100644 scripts/PointerStack/PointerStack.yy create mode 100644 scripts/RenderList/RenderList.gml rename scripts/{PointerDevice/PointerDevice.yy => RenderList/RenderList.yy} (60%) create mode 100644 scripts/blank/blank.gml rename scripts/{testScript/testScript.yy => blank/blank.yy} (88%) create mode 100644 scripts/gc_grid/gc_grid.gml create mode 100644 scripts/gc_grid/gc_grid.yy create mode 100644 scripts/gc_list/gc_list.gml create mode 100644 scripts/gc_list/gc_list.yy create mode 100644 scripts/gc_map/gc_list.yy create mode 100644 scripts/gc_map/gc_map.gml create mode 100644 scripts/gc_map/gc_map.yy create mode 100644 scripts/gc_priority_queue/gc_priority_queue.gml create mode 100644 scripts/gc_priority_queue/gc_priority_queue.yy create mode 100644 scripts/gc_queue/gc_grid.yy create mode 100644 scripts/gc_queue/gc_queue.gml create mode 100644 scripts/gc_queue/gc_queue.yy create mode 100644 scripts/gc_stack/gc_grid.yy create mode 100644 scripts/gc_stack/gc_stack.gml create mode 100644 scripts/gc_stack/gc_stack.yy delete mode 100644 scripts/testScript/testScript.gml create mode 100644 sprites/gfx_rect/2d9e9028-4884-4416-807f-4d256bc52bcd.png create mode 100644 sprites/gfx_rect/4496626e-d9c0-4172-b11b-beaa4a3ed939.png create mode 100644 sprites/gfx_rect/455cc62f-330c-4167-8930-65b87edb5dbc.png create mode 100644 sprites/gfx_rect/4bed716d-214c-4535-9933-96c630218923.png create mode 100644 sprites/gfx_rect/b0c01adc-9776-4506-9753-394685f97d8d.png create mode 100644 sprites/gfx_rect/c86b7b92-37bf-4172-be8c-0b610cc2f123.png create mode 100644 sprites/gfx_rect/f12ea975-efb7-4d74-89c6-0940289961b3.png create mode 100644 sprites/gfx_rect/gfx_rect.yy create mode 100644 sprites/gfx_rect/layers/2d9e9028-4884-4416-807f-4d256bc52bcd/beb297d0-2f46-44b6-ba44-0512f20e40e2.png create mode 100644 sprites/gfx_rect/layers/4496626e-d9c0-4172-b11b-beaa4a3ed939/beb297d0-2f46-44b6-ba44-0512f20e40e2.png create mode 100644 sprites/gfx_rect/layers/455cc62f-330c-4167-8930-65b87edb5dbc/beb297d0-2f46-44b6-ba44-0512f20e40e2.png create mode 100644 sprites/gfx_rect/layers/4bed716d-214c-4535-9933-96c630218923/beb297d0-2f46-44b6-ba44-0512f20e40e2.png create mode 100644 sprites/gfx_rect/layers/b0c01adc-9776-4506-9753-394685f97d8d/beb297d0-2f46-44b6-ba44-0512f20e40e2.png create mode 100644 sprites/gfx_rect/layers/c86b7b92-37bf-4172-be8c-0b610cc2f123/beb297d0-2f46-44b6-ba44-0512f20e40e2.png create mode 100644 sprites/gfx_rect/layers/f12ea975-efb7-4d74-89c6-0940289961b3/beb297d0-2f46-44b6-ba44-0512f20e40e2.png diff --git a/FASTv33.yyp b/FASTv33.yyp index 3071db0..973900d 100644 --- a/FASTv33.yyp +++ b/FASTv33.yyp @@ -9,6 +9,7 @@ {"id":{"name":"Room1","path":"rooms/Room1/Room1.yy",},"order":606,}, {"id":{"name":"Array","path":"scripts/Array/Array.yy",},"order":0,}, {"id":{"name":"ArrayList","path":"scripts/ArrayList/ArrayList.yy",},"order":1,}, + {"id":{"name":"gfx_rect","path":"sprites/gfx_rect/gfx_rect.yy",},"order":1,}, {"id":{"name":"ArrayNumber","path":"scripts/ArrayNumber/ArrayNumber.yy",},"order":2,}, {"id":{"name":"ArrayString","path":"scripts/ArrayString/ArrayString.yy",},"order":3,}, {"id":{"name":"array_concat","path":"scripts/array_concat/array_concat.yy",},"order":0,}, @@ -43,6 +44,7 @@ {"id":{"name":"ds_tree_dump","path":"scripts/ds_tree_dump/ds_tree_dump.yy",},"order":0,}, {"id":{"name":"InputManager","path":"scripts/InputManager/InputManager.yy",},"order":6,}, {"id":{"name":"FASTManager","path":"scripts/FASTManager/FASTManager.yy",},"order":4,}, + {"id":{"name":"oPointerWindow","path":"objects/oPointerWindow/oPointerWindow.yy",},"order":0,}, {"id":{"name":"FrameEvent","path":"scripts/FrameEvent/FrameEvent.yy",},"order":1,}, {"id":{"name":"FAST_features","path":"scripts/FAST_features/FAST_features.yy",},"order":609,}, {"id":{"name":"FAST_macros","path":"scripts/FAST_macros/FAST_macros.yy",},"order":6,}, @@ -50,7 +52,7 @@ {"id":{"name":"File","path":"scripts/File/File.yy",},"order":2,}, {"id":{"name":"FileBinary","path":"scripts/FileBinary/FileBinary.yy",},"order":0,}, {"id":{"name":"FileFAST","path":"scripts/FileFAST/FileFAST.yy",},"order":0,}, - {"id":{"name":"testObject","path":"objects/testObject/testObject.yy",},"order":611,}, + {"id":{"name":"gc_grid","path":"scripts/gc_grid/gc_grid.yy",},"order":2,}, {"id":{"name":"FileManager","path":"scripts/FileManager/FileManager.yy",},"order":2,}, {"id":{"name":"FileText","path":"scripts/FileText/FileText.yy",},"order":1,}, {"id":{"name":"file_get_directory","path":"scripts/file_get_directory/file_get_directory.yy",},"order":0,}, @@ -58,8 +60,10 @@ {"id":{"name":"GamepadManager","path":"scripts/GamepadManager/GamepadManager.yy",},"order":1,}, {"id":{"name":"GamepadPlaystation","path":"scripts/GamepadPlaystation/GamepadPlaystation.yy",},"order":1,}, {"id":{"name":"InputMethod","path":"scripts/InputMethod/InputMethod.yy",},"order":3,}, + {"id":{"name":"PointerStack","path":"scripts/PointerStack/PointerStack.yy",},"order":2,}, + {"id":{"name":"blank","path":"scripts/blank/blank.yy",},"order":613,}, {"id":{"name":"GamepadXbox","path":"scripts/GamepadXbox/GamepadXbox.yy",},"order":2,}, - {"id":{"name":"GenericInput","path":"scripts/GenericInput/GenericInput.yy",},"order":1,}, + {"id":{"name":"InputGeneric","path":"scripts/InputGeneric/InputGeneric.yy",},"order":1,}, {"id":{"name":"GenericOutput","path":"scripts/GenericOutput/GenericOutput.yy",},"order":1,}, {"id":{"name":"include","path":"scripts/include/include.yy",},"order":0,}, {"id":{"name":"InputDevice","path":"scripts/InputDevice/InputDevice.yy",},"order":2,}, @@ -76,9 +80,10 @@ {"id":{"name":"MouseWheelUp","path":"scripts/MouseWheelUp/MouseWheelUp.yy",},"order":1,}, {"id":{"name":"Pair","path":"scripts/Pair/Pair.yy",},"order":0,}, {"id":{"name":"Parser","path":"scripts/Parser/Parser.yy",},"order":0,}, - {"id":{"name":"PointerDevice","path":"scripts/PointerDevice/PointerDevice.yy",},"order":0,}, - {"id":{"name":"PointerInterface","path":"scripts/PointerInterface/PointerInterface.yy",},"order":1,}, - {"id":{"name":"PointerManager","path":"scripts/PointerManager/PointerManager.yy",},"order":2,}, + {"id":{"name":"PointerInterface","path":"scripts/PointerInterface/PointerInterface.yy",},"order":0,}, + {"id":{"name":"PointerManager","path":"scripts/PointerManager/PointerManager.yy",},"order":1,}, + {"id":{"name":"gc_list","path":"scripts/gc_list/gc_list.yy",},"order":0,}, + {"id":{"name":"PointerSimpleMouse","path":"scripts/PointerSimpleMouse/PointerSimpleMouse.yy",},"order":1,}, {"id":{"name":"Publisher","path":"scripts/Publisher/Publisher.yy",},"order":0,}, {"id":{"name":"PublisherChannel","path":"scripts/PublisherChannel/PublisherChannel.yy",},"order":1,}, {"id":{"name":"PublisherManager","path":"scripts/PublisherManager/PublisherManager.yy",},"order":1,}, @@ -93,9 +98,11 @@ {"id":{"name":"script_evaluate_expression","path":"scripts/script_evaluate_expression/script_evaluate_expression.yy",},"order":0,}, {"id":{"name":"script_evaluate_traverse","path":"scripts/script_evaluate_traverse/script_evaluate_traverse.yy",},"order":1,}, {"id":{"name":"script_evaluate_traverse_set","path":"scripts/script_evaluate_traverse_set/script_evaluate_traverse_set.yy",},"order":2,}, + {"id":{"name":"gc_priority_queue","path":"scripts/gc_priority_queue/gc_priority_queue.yy",},"order":5,}, {"id":{"name":"script_file_load","path":"scripts/script_file_load/script_file_load.yy",},"order":3,}, {"id":{"name":"Shape","path":"scripts/Shape/Shape.yy",},"order":0,}, {"id":{"name":"DeltaEvent","path":"scripts/DeltaEvent/DeltaEvent.yy",},"order":2,}, + {"id":{"name":"gc_stack","path":"scripts/gc_stack/gc_stack.yy",},"order":3,}, {"id":{"name":"ShapeCircle","path":"scripts/ShapeCircle/ShapeCircle.yy",},"order":1,}, {"id":{"name":"ShapeEllipses","path":"scripts/ShapeEllipses/ShapeEllipses.yy",},"order":2,}, {"id":{"name":"ShapeGrid","path":"scripts/ShapeGrid/ShapeGrid.yy",},"order":3,}, @@ -108,15 +115,18 @@ {"id":{"name":"StringTime","path":"scripts/StringTime/StringTime.yy",},"order":2,}, {"id":{"name":"string_con","path":"scripts/string_con/string_con.yy",},"order":0,}, {"id":{"name":"MouseWheelDown","path":"scripts/MouseWheelDown/MouseWheelDown.yy",},"order":2,}, + {"id":{"name":"gc_queue","path":"scripts/gc_queue/gc_queue.yy",},"order":4,}, {"id":{"name":"string_explode","path":"scripts/string_explode/string_explode.yy",},"order":1,}, {"id":{"name":"string_explode_reverse","path":"scripts/string_explode_reverse/string_explode_reverse.yy",},"order":2,}, {"id":{"name":"string_find_first","path":"scripts/string_find_first/string_find_first.yy",},"order":3,}, {"id":{"name":"string_justify","path":"scripts/string_justify/string_justify.yy",},"order":4,}, {"id":{"name":"string_to_real","path":"scripts/string_to_real/string_to_real.yy",},"order":5,}, + {"id":{"name":"gc_map","path":"scripts/gc_map/gc_map.yy",},"order":1,}, {"id":{"name":"string_trim","path":"scripts/string_trim/string_trim.yy",},"order":6,}, + {"id":{"name":"RenderList","path":"scripts/RenderList/RenderList.yy",},"order":0,}, {"id":{"name":"Surface","path":"scripts/Surface/Surface.yy",},"order":2,}, {"id":{"name":"SystemOutput","path":"scripts/SystemOutput/SystemOutput.yy",},"order":2,}, - {"id":{"name":"testScript","path":"scripts/testScript/testScript.yy",},"order":608,}, + {"id":{"name":"GarbageManager","path":"scripts/GarbageManager/GarbageManager.yy",},"order":1,}, {"id":{"name":"test_DsLinkedList","path":"scripts/test_DsLinkedList/test_DsLinkedList.yy",},"order":0,}, {"id":{"name":"test_DsWalkable","path":"scripts/test_DsWalkable/test_DsWalkable.yy",},"order":1,}, {"id":{"name":"test_Scripts","path":"scripts/test_Scripts/test_Scripts.yy",},"order":1,}, @@ -149,7 +159,9 @@ "name": "Default", "children": [], }, - "RoomOrderNodes": [], + "RoomOrderNodes": [ + {"roomId":{"name":"Room1","path":"rooms/Room1/Room1.yy",},}, + ], "Folders": [ {"folderPath":"folders/FAST.yy","order":0,"resourceVersion":"1.0","name":"FAST","tags":[],"resourceType":"GMFolder",}, {"folderPath":"folders/FAST/Core.yy","order":0,"resourceVersion":"1.0","name":"Core","tags":[],"resourceType":"GMFolder",}, @@ -168,7 +180,7 @@ {"folderPath":"folders/FAST/Core/Functions.yy","order":2,"resourceVersion":"1.0","name":"Functions","tags":[],"resourceType":"GMFolder",}, {"folderPath":"folders/FAST/Core/Functions/array.yy","order":0,"resourceVersion":"1.0","name":"array","tags":[],"resourceType":"GMFolder",}, {"folderPath":"folders/FAST/Input Handling.yy","order":4,"resourceVersion":"1.0","name":"Input Handling","tags":[],"resourceType":"GMFolder",}, - {"folderPath":"folders/FAST/Input Handling/Generic.yy","order":0,"resourceVersion":"1.0","name":"Generic","tags":[],"resourceType":"GMFolder",}, + {"folderPath":"folders/FAST/Input Handling/Input.yy","order":0,"resourceVersion":"1.0","name":"Input","tags":[],"resourceType":"GMFolder",}, {"folderPath":"folders/FAST/Database/Functions.yy","order":2,"resourceVersion":"1.0","name":"Functions","tags":[],"resourceType":"GMFolder",}, {"folderPath":"folders/OTHER.yy","order":607,"resourceVersion":"1.0","name":"OTHER","tags":[],"resourceType":"GMFolder",}, {"folderPath":"folders/OTHER/draw.yy","order":0,"resourceVersion":"1.0","name":"draw","tags":[],"resourceType":"GMFolder",}, @@ -196,7 +208,7 @@ {"folderPath":"folders/FAST/Scripting.yy","order":10,"resourceVersion":"1.0","name":"Scripting","tags":[],"resourceType":"GMFolder",}, {"folderPath":"folders/FAST/Scripting/Structs.yy","order":0,"resourceVersion":"1.0","name":"Structs","tags":[],"resourceType":"GMFolder",}, {"folderPath":"folders/FAST/Scripting/Functions.yy","order":2,"resourceVersion":"1.0","name":"Functions","tags":[],"resourceType":"GMFolder",}, - {"folderPath":"folders/FAST/Pointer/Shapes.yy","order":3,"resourceVersion":"1.0","name":"Shapes","tags":[],"resourceType":"GMFolder",}, + {"folderPath":"folders/FAST/Core/Shapes.yy","order":11,"resourceVersion":"1.0","name":"Shapes","tags":[],"resourceType":"GMFolder",}, {"folderPath":"folders/FAST/Core/Data Types/String.yy","order":1,"resourceVersion":"1.0","name":"String","tags":[],"resourceType":"GMFolder",}, {"folderPath":"folders/FAST/Core/Functions/string.yy","order":4,"resourceVersion":"1.0","name":"string","tags":[],"resourceType":"GMFolder",}, {"folderPath":"folders/TEST_CASES/Core.yy","order":1,"resourceVersion":"1.0","name":"Core","tags":[],"resourceType":"GMFolder",}, @@ -204,12 +216,17 @@ {"folderPath":"folders/FAST/Core/File Handling/Functions.yy","order":3,"resourceVersion":"1.0","name":"Functions","tags":[],"resourceType":"GMFolder",}, {"folderPath":"folders/FAST/Core/Functions/variable.yy","order":5,"resourceVersion":"1.0","name":"variable","tags":[],"resourceType":"GMFolder",}, {"folderPath":"folders/FAST/Core/Functions/is.yy","order":7,"resourceVersion":"1.0","name":"is","tags":[],"resourceType":"GMFolder",}, + {"folderPath":"folders/FAST/Core/Garbage/Functions.yy","order":0,"resourceVersion":"1.0","name":"Functions","tags":[],"resourceType":"GMFolder",}, + {"folderPath":"folders/FAST/Core/Garbage.yy","order":10,"resourceVersion":"1.0","name":"Garbage","tags":[],"resourceType":"GMFolder",}, + {"folderPath":"folders/FAST/Pointer/Structs.yy","order":4,"resourceVersion":"1.0","name":"Structs","tags":[],"resourceType":"GMFolder",}, + {"folderPath":"folders/TEST_CASES/Pointer.yy","order":3,"resourceVersion":"1.0","name":"Pointer","tags":[],"resourceType":"GMFolder",}, + {"folderPath":"folders/FAST/Render/Structs.yy","order":2,"resourceVersion":"1.0","name":"Structs","tags":[],"resourceType":"GMFolder",}, ], "AudioGroups": [ {"targets":461609314234257646,"resourceVersion":"1.0","name":"audiogroup_default","resourceType":"GMAudioGroup",}, ], "TextureGroups": [ - {"isScaled":true,"autocrop":true,"border":2,"mipsToGenerate":0,"targets":461609314234257646,"resourceVersion":"1.0","name":"Default","resourceType":"GMTextureGroup",}, + {"isScaled":true,"autocrop":true,"border":2,"mipsToGenerate":0,"groupParent":null,"targets":461609314234257646,"resourceVersion":"1.0","name":"Default","resourceType":"GMTextureGroup",}, ], "IncludedFiles": [ {"CopyToMask":-1,"filePath":"datafiles","resourceVersion":"1.0","name":"test2.txt","resourceType":"GMIncludedFile",}, @@ -960,9 +977,129 @@ {"CopyToMask":-1,"filePath":"datafiles/test","resourceVersion":"1.0","name":"testC","resourceType":"GMIncludedFile",}, {"CopyToMask":-1,"filePath":"datafiles/test/cases","resourceVersion":"1.0","name":"test_null.txt","resourceType":"GMIncludedFile",}, {"CopyToMask":-1,"filePath":"datafiles/test/cases","resourceVersion":"1.0","name":"test_arithmetic.txt","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/base","resourceVersion":"1.0","name":"battle.ffd","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/base","resourceVersion":"1.0","name":"animate.ffd","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/base","resourceVersion":"1.0","name":"enemies.ffd","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/base","resourceVersion":"1.0","name":"speech.ffd","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/base","resourceVersion":"1.0","name":"classes.ffd","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/base","resourceVersion":"1.0","name":"items.ffd","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/base","resourceVersion":"1.0","name":"shops.ffd","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/base","resourceVersion":"1.0","name":"effects.ffd","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/base","resourceVersion":"1.0","name":"spells.ffd","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/base","resourceVersion":"1.0","name":"treasure.ffd","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/patch","resourceVersion":"1.0","name":"patch.ffd","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/test/cases","resourceVersion":"1.0","name":"test_if.txt","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/test/cases","resourceVersion":"1.0","name":"test_args.txt","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/test/cases","resourceVersion":"1.0","name":"test_cast.txt","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/test/cases","resourceVersion":"1.0","name":"test_traversal.txt","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/test","resourceVersion":"1.0","name":"testB.txt","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/test/cases","resourceVersion":"1.0","name":"test_return.txt","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/test/cases","resourceVersion":"1.0","name":"test_func.txt","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/test","resourceVersion":"1.0","name":"testC","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/test/cases","resourceVersion":"1.0","name":"test_wait.txt","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/test/cases","resourceVersion":"1.0","name":"test_arithmetic.txt","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/test","resourceVersion":"1.0","name":"testD","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/test/cases","resourceVersion":"1.0","name":"test_null.txt","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/test","resourceVersion":"1.0","name":"testA.txt","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/base","resourceVersion":"1.0","name":"speech.ffd","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/base","resourceVersion":"1.0","name":"enemies.ffd","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/base","resourceVersion":"1.0","name":"battle.ffd","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/base","resourceVersion":"1.0","name":"items.ffd","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/base","resourceVersion":"1.0","name":"effects.ffd","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/base","resourceVersion":"1.0","name":"spells.ffd","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/base","resourceVersion":"1.0","name":"treasure.ffd","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/base","resourceVersion":"1.0","name":"shops.ffd","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/base","resourceVersion":"1.0","name":"classes.ffd","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/base","resourceVersion":"1.0","name":"animate.ffd","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/patch","resourceVersion":"1.0","name":"patch.ffd","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/test/cases","resourceVersion":"1.0","name":"test_cast.txt","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/test/cases","resourceVersion":"1.0","name":"test_if.txt","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/test/cases","resourceVersion":"1.0","name":"test_traversal.txt","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/test/cases","resourceVersion":"1.0","name":"test_func.txt","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/test/cases","resourceVersion":"1.0","name":"test_null.txt","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/test/cases","resourceVersion":"1.0","name":"test_return.txt","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/test/cases","resourceVersion":"1.0","name":"test_arithmetic.txt","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/test/cases","resourceVersion":"1.0","name":"test_wait.txt","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/test","resourceVersion":"1.0","name":"testA.txt","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/test","resourceVersion":"1.0","name":"testD","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/test","resourceVersion":"1.0","name":"testC","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/test","resourceVersion":"1.0","name":"testB.txt","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/test/cases","resourceVersion":"1.0","name":"test_args.txt","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/base","resourceVersion":"1.0","name":"effects.ffd","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/base","resourceVersion":"1.0","name":"animate.ffd","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/base","resourceVersion":"1.0","name":"items.ffd","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/base","resourceVersion":"1.0","name":"speech.ffd","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/base","resourceVersion":"1.0","name":"shops.ffd","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/base","resourceVersion":"1.0","name":"enemies.ffd","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/base","resourceVersion":"1.0","name":"treasure.ffd","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/base","resourceVersion":"1.0","name":"battle.ffd","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/base","resourceVersion":"1.0","name":"classes.ffd","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/base","resourceVersion":"1.0","name":"spells.ffd","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/patch","resourceVersion":"1.0","name":"patch.ffd","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/test/cases","resourceVersion":"1.0","name":"test_func.txt","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/test/cases","resourceVersion":"1.0","name":"test_if.txt","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/test/cases","resourceVersion":"1.0","name":"test_null.txt","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/test/cases","resourceVersion":"1.0","name":"test_cast.txt","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/test/cases","resourceVersion":"1.0","name":"test_traversal.txt","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/test/cases","resourceVersion":"1.0","name":"test_wait.txt","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/test/cases","resourceVersion":"1.0","name":"test_arithmetic.txt","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/test/cases","resourceVersion":"1.0","name":"test_return.txt","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/test","resourceVersion":"1.0","name":"testD","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/test","resourceVersion":"1.0","name":"testA.txt","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/test/cases","resourceVersion":"1.0","name":"test_args.txt","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/test","resourceVersion":"1.0","name":"testB.txt","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/test","resourceVersion":"1.0","name":"testC","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/base","resourceVersion":"1.0","name":"battle.ffd","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/base","resourceVersion":"1.0","name":"enemies.ffd","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/base","resourceVersion":"1.0","name":"speech.ffd","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/base","resourceVersion":"1.0","name":"animate.ffd","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/base","resourceVersion":"1.0","name":"effects.ffd","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/base","resourceVersion":"1.0","name":"spells.ffd","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/base","resourceVersion":"1.0","name":"items.ffd","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/base","resourceVersion":"1.0","name":"shops.ffd","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/base","resourceVersion":"1.0","name":"classes.ffd","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/base","resourceVersion":"1.0","name":"treasure.ffd","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/patch","resourceVersion":"1.0","name":"patch.ffd","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/test/cases","resourceVersion":"1.0","name":"test_args.txt","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/test/cases","resourceVersion":"1.0","name":"test_return.txt","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/test/cases","resourceVersion":"1.0","name":"test_cast.txt","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/test","resourceVersion":"1.0","name":"testB.txt","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/test","resourceVersion":"1.0","name":"testA.txt","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/test/cases","resourceVersion":"1.0","name":"test_null.txt","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/test/cases","resourceVersion":"1.0","name":"test_func.txt","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/test/cases","resourceVersion":"1.0","name":"test_if.txt","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/test/cases","resourceVersion":"1.0","name":"test_arithmetic.txt","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/test/cases","resourceVersion":"1.0","name":"test_traversal.txt","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/test","resourceVersion":"1.0","name":"testC","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/test/cases","resourceVersion":"1.0","name":"test_wait.txt","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/test","resourceVersion":"1.0","name":"testD","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/base","resourceVersion":"1.0","name":"classes.ffd","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/base","resourceVersion":"1.0","name":"spells.ffd","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/base","resourceVersion":"1.0","name":"shops.ffd","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/base","resourceVersion":"1.0","name":"effects.ffd","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/base","resourceVersion":"1.0","name":"battle.ffd","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/base","resourceVersion":"1.0","name":"animate.ffd","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/base","resourceVersion":"1.0","name":"treasure.ffd","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/patch","resourceVersion":"1.0","name":"patch.ffd","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/base","resourceVersion":"1.0","name":"speech.ffd","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/base","resourceVersion":"1.0","name":"items.ffd","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/base","resourceVersion":"1.0","name":"enemies.ffd","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/test/cases","resourceVersion":"1.0","name":"test_args.txt","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/test/cases","resourceVersion":"1.0","name":"test_func.txt","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/test/cases","resourceVersion":"1.0","name":"test_arithmetic.txt","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/test/cases","resourceVersion":"1.0","name":"test_return.txt","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/test/cases","resourceVersion":"1.0","name":"test_null.txt","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/test/cases","resourceVersion":"1.0","name":"test_cast.txt","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/test/cases","resourceVersion":"1.0","name":"test_if.txt","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/test/cases","resourceVersion":"1.0","name":"test_wait.txt","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/test/cases","resourceVersion":"1.0","name":"test_traversal.txt","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/test","resourceVersion":"1.0","name":"testD","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/test","resourceVersion":"1.0","name":"testB.txt","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/test","resourceVersion":"1.0","name":"testA.txt","resourceType":"GMIncludedFile",}, + {"CopyToMask":-1,"filePath":"datafiles/test","resourceVersion":"1.0","name":"testC","resourceType":"GMIncludedFile",}, ], "MetaData": { - "IDEVersion": "23.1.1.193", + "IDEVersion": "2.3.1.536", }, "resourceVersion": "1.4", "name": "FASTv33", diff --git a/notes/Changelog/Changelog.txt b/notes/Changelog/Changelog.txt index 3f7e7d7..e8f386b 100644 --- a/notes/Changelog/Changelog.txt +++ b/notes/Changelog/Changelog.txt @@ -33,7 +33,7 @@ exists, or try to work it out from the parent constructor if able. Allows checki function rather than a string. #### Input Handling -GenericInput +InputGeneric * Removed constant. This is only relevant to inputs that have a constant. * Added missing is() method. diff --git a/objects/FASTRender/Create_0.gml b/objects/FASTRender/Create_0.gml index 54871b1..62e6a54 100644 --- a/objects/FASTRender/Create_0.gml +++ b/objects/FASTRender/Create_0.gml @@ -4,6 +4,7 @@ if ( RenderManager().instance != noone ) { exit; } +/// @ignore RenderManager().instance = id; application_surface_draw_enable( false ); @@ -24,4 +25,4 @@ if ( RenderManager().bUseViews ) { }); -} \ No newline at end of file +} diff --git a/objects/__FASTtool/Create_0.gml b/objects/__FASTtool/Create_0.gml index 0ad9871..418d16d 100644 --- a/objects/__FASTtool/Create_0.gml +++ b/objects/__FASTtool/Create_0.gml @@ -1,6 +1,13 @@ - fast = FASTManager(); +if ( fast.start ) { + syslog( "dupe found, death for me." ); + + instance_destroy(); + + exit; + +} System.write( string_repeat( "~", 40 ) ); System.write( fast ); System.write( string_repeat( "~", 40 ) ); diff --git a/objects/oPointerWindow/Create_0.gml b/objects/oPointerWindow/Create_0.gml new file mode 100644 index 0000000..3069395 --- /dev/null +++ b/objects/oPointerWindow/Create_0.gml @@ -0,0 +1,73 @@ +resize = function( _w, _h ) { + surface.resize( _w, _h ); + interior.resize( _w - 2, _h - 16 ); + + interface.width = _w + 2; + interface.height= _h + 2; + + interfaceGrab.shape.w = _w; + interfaceGrab.shape.h = 30; + + interfaceResize.shape.x = interface.width - 4; + interfaceResize.shape.y = interface.height - 4; + + interfaceClose.shape.x = _w - 32; + interfaceClose.shape.y = 4; + + interfaceMinimize.shape.x = _w - 64; + interfaceMinimize.shape.y = 4; + +} +render = new RenderStack(); +surface = new Surface( 1, 1 ); +interface = new PointerStack( 0, 0, 1, 1 ); +interior = new Surface( 1, 1 ); + +dragOffset = undefined; + +interfaceGrab = interface.add( new PointerSimpleMouse( new ShapeRectangle( 0, 0, 0, 0 ) ) ); +interfaceGrab.onEnter = function() { + window_set_cursor( cr_drag ); + +} +interfaceGrab.onLeave = function() { + window_set_cursor( cr_default ); + +} +interfaceGrab.onDown = function( _x, _y ) { + interface.hold = interfaceGrab; + dragOffset = { x : x - mouse_x, y : y - mouse_y } + +} +interfaceGrab.onUp = function( _x, _y ) { + interface.hold = undefined; + +} + +interfaceClose = interface.add( new PointerSimpleMouse( new ShapeRectangle( 0, 0, 24, 24 ) ) ); +interfaceMinimize = interface.add( new PointerSimpleMouse( new ShapeRectangle( 0, 0, 24, 24 ) ) ); + +interfaceResize = interface.add( new PointerSimpleMouse( new ShapeRectangle( 0, 0, 5, 5 ) ) ); +interfaceResize.onEnter = function() { + window_set_cursor( cr_size_nwse ); + +} +interfaceResize.onLeave = function() { + window_set_cursor( cr_default ); + +} +interfaceResize.onDown = function( _x, _y ) { + interface.hold = interfaceResize; + +} +interfaceResize.onUp = function( _x, _y ) { + interface.hold = undefined; + + resize( max( POINTER_WINDOW_MINIMUM_WIDTH, mouse_x - x + 1 ), max( POINTER_WINDOW_MINIMUM_HEIGHT, mouse_y - y + 1 ) ); + +} + +resize( bbox_right - bbox_left + 1, bbox_bottom - bbox_top + 1 ); + +#macro POINTER_WINDOW_MINIMUM_WIDTH 80 +#macro POINTER_WINDOW_MINIMUM_HEIGHT 80 diff --git a/objects/oPointerWindow/Draw_0.gml b/objects/oPointerWindow/Draw_0.gml new file mode 100644 index 0000000..3acdcfa --- /dev/null +++ b/objects/oPointerWindow/Draw_0.gml @@ -0,0 +1,35 @@ +if ( surface.update() ) { + surface.set(); + draw_clear( c_gray ); + + draw_set_color( c_white ); + + draw_rectangle( 1, 1, surface.width - 2, 30, false ); + draw_rectangle( 1, 32, surface.width - 2, surface.height - 2, false ); + + draw_set_color( c_ltgray ); + + draw_line( 0, 30, surface.width - 2, 30 ); + draw_line( 0, surface.height - 32, surface.width - 2, surface.height - 32 ); + draw_line( 0, surface.height - 2, surface.width - 2, surface.height - 2 ); + + surface.reset(); + +} +surface.draw( x, y ); + +draw_sprite( gfx_rect, interfaceMinimize.state == interfaceMinimize.INPUT_NONE ? 3 : 4, x + interfaceMinimize.shape.x, y + interfaceMinimize.shape.y ); +draw_sprite( gfx_rect, interfaceClose.state == interfaceClose.INPUT_NONE ? 1 : 2, x + interfaceClose.shape.x, y + interfaceClose.shape.y ); + +if ( interface.hold == interfaceResize ) { + draw_set_color( c_ltgray ); + draw_set_alpha( 0.5 ); + + draw_rectangle( x, y, max( x + 80, mouse_x ), max( y + 80, mouse_y ), false ); + + draw_set_alpha( 1.0 ); + +} +//interface.draw( x, y, interface.active ? c_green : c_white ); + +//draw_text( 16, 32, interface.last ); \ No newline at end of file diff --git a/objects/oPointerWindow/Step_0.gml b/objects/oPointerWindow/Step_0.gml new file mode 100644 index 0000000..6427cf9 --- /dev/null +++ b/objects/oPointerWindow/Step_0.gml @@ -0,0 +1,7 @@ +interface.update( mouse_x - x, mouse_y - y ); + +if ( interface.hold == interfaceGrab ) { + x = clamp( mouse_x + dragOffset.x, 0, room_width - surface.width ); + y = clamp( mouse_y + dragOffset.y, 0, room_height- surface.height); + +} diff --git a/objects/oPointerWindow/oPointerWindow.yy b/objects/oPointerWindow/oPointerWindow.yy new file mode 100644 index 0000000..14978b6 --- /dev/null +++ b/objects/oPointerWindow/oPointerWindow.yy @@ -0,0 +1,38 @@ +{ + "spriteId": { + "name": "gfx_rect", + "path": "sprites/gfx_rect/gfx_rect.yy", + }, + "solid": false, + "visible": true, + "spriteMaskId": null, + "persistent": false, + "parentObjectId": null, + "physicsObject": false, + "physicsSensor": false, + "physicsShape": 1, + "physicsGroup": 1, + "physicsDensity": 0.5, + "physicsRestitution": 0.1, + "physicsLinearDamping": 0.1, + "physicsAngularDamping": 0.1, + "physicsFriction": 0.2, + "physicsStartAwake": true, + "physicsKinematic": false, + "physicsShapePoints": [], + "eventList": [ + {"isDnD":false,"eventNum":0,"eventType":0,"collisionObjectId":null,"parent":{"name":"oPointerWindow","path":"objects/oPointerWindow/oPointerWindow.yy",},"resourceVersion":"1.0","name":"","tags":[],"resourceType":"GMEvent",}, + {"isDnD":false,"eventNum":0,"eventType":8,"collisionObjectId":null,"parent":{"name":"oPointerWindow","path":"objects/oPointerWindow/oPointerWindow.yy",},"resourceVersion":"1.0","name":"","tags":[],"resourceType":"GMEvent",}, + {"isDnD":false,"eventNum":0,"eventType":3,"collisionObjectId":null,"parent":{"name":"oPointerWindow","path":"objects/oPointerWindow/oPointerWindow.yy",},"resourceVersion":"1.0","name":"","tags":[],"resourceType":"GMEvent",}, + ], + "properties": [], + "overriddenProperties": [], + "parent": { + "name": "Pointer", + "path": "folders/TEST_CASES/Pointer.yy", + }, + "resourceVersion": "1.0", + "name": "oPointerWindow", + "tags": [], + "resourceType": "GMObject", +} \ No newline at end of file diff --git a/objects/oRenderStack/Create_0.gml b/objects/oRenderStack/Create_0.gml index d399f42..b3513fa 100644 --- a/objects/oRenderStack/Create_0.gml +++ b/objects/oRenderStack/Create_0.gml @@ -1,14 +1,16 @@ // # oRenderStack v2.1b by Hyomoto // provides basic draw-order handling -// return the width of the provided surface +/// @desc returns the width of the render surface width = function() { return surface.width; } +/// @desc returns the height of the render surface height = function() { return surface.height; } +/// @params {int} ids... Adds the instance ids to this render. attach = function( _id ) { ds_list_add( objects, _id ); diff --git a/objects/testObject/testObject.yy b/objects/testObject/testObject.yy deleted file mode 100644 index 939f7a0..0000000 --- a/objects/testObject/testObject.yy +++ /dev/null @@ -1,31 +0,0 @@ -{ - "spriteId": null, - "solid": false, - "visible": true, - "spriteMaskId": null, - "persistent": false, - "parentObjectId": null, - "physicsObject": false, - "physicsSensor": false, - "physicsShape": 1, - "physicsGroup": 1, - "physicsDensity": 0.5, - "physicsRestitution": 0.1, - "physicsLinearDamping": 0.1, - "physicsAngularDamping": 0.1, - "physicsFriction": 0.2, - "physicsStartAwake": true, - "physicsKinematic": false, - "physicsShapePoints": [], - "eventList": [], - "properties": [], - "overriddenProperties": [], - "parent": { - "name": "FASTv33", - "path": "FASTv33.yyp", - }, - "resourceVersion": "1.0", - "name": "testObject", - "tags": [], - "resourceType": "GMObject", -} \ No newline at end of file diff --git a/rooms/Room1/Room1.yy b/rooms/Room1/Room1.yy index ffaea94..7ec2249 100644 --- a/rooms/Room1/Room1.yy +++ b/rooms/Room1/Room1.yy @@ -15,7 +15,7 @@ "layers": [ {"instances":[ {"properties":[],"isDnd":false,"objectId":{"name":"oTest_Scripts","path":"objects/oTest_Scripts/oTest_Scripts.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":0.0,"y":0.0,"resourceVersion":"1.0","name":"inst_14656DAE","tags":[],"resourceType":"GMRInstance",}, - {"properties":[],"isDnd":false,"objectId":{"name":"testObject","path":"objects/testObject/testObject.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":128.0,"y":64.0,"resourceVersion":"1.0","name":"inst_7BBEAEFF","tags":[],"resourceType":"GMRInstance",}, + {"properties":[],"isDnd":false,"objectId":{"name":"oPointerWindow","path":"objects/oPointerWindow/oPointerWindow.yy",},"inheritCode":false,"hasCreationCode":false,"colour":4294967295,"rotation":0.0,"scaleX":6.0,"scaleY":4.0,"imageIndex":0,"imageSpeed":1.0,"inheritedItemId":null,"frozen":false,"ignore":false,"inheritItemSettings":false,"x":64.0,"y":64.0,"resourceVersion":"1.0","name":"inst_8A65768","tags":[],"resourceType":"GMRInstance",}, ],"visible":true,"depth":0,"userdefinedDepth":false,"inheritLayerDepth":false,"inheritLayerSettings":false,"gridX":32,"gridY":32,"layers":[],"hierarchyFrozen":false,"resourceVersion":"1.0","name":"Instances","tags":[],"resourceType":"GMRInstanceLayer",}, {"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,"resourceVersion":"1.0","name":"Background","tags":[],"resourceType":"GMRBackgroundLayer",}, ], @@ -24,7 +24,7 @@ "inheritCode": false, "instanceCreationOrder": [ {"name":"inst_14656DAE","path":"rooms/Room1/Room1.yy",}, - {"name":"inst_7BBEAEFF","path":"rooms/Room1/Room1.yy",}, + {"name":"inst_8A65768","path":"rooms/Room1/Room1.yy",}, ], "inheritCreationOrder": false, "sequenceId": null, diff --git a/scripts/Array/Array.gml b/scripts/Array/Array.gml index 5e94b92..ba24d75 100644 --- a/scripts/Array/Array.gml +++ b/scripts/Array/Array.gml @@ -58,7 +58,7 @@ function Array( _size ) constructor { static contains = function( _value ) { var _i = 0; repeat( size() ) { if ( content[ _i++ ] == _value ) { - return _i; + return _i - 1; } diff --git a/scripts/ArrayList/ArrayList.gml b/scripts/ArrayList/ArrayList.gml index a0c632d..cf1102c 100644 --- a/scripts/ArrayList/ArrayList.gml +++ b/scripts/ArrayList/ArrayList.gml @@ -124,8 +124,8 @@ function ArrayList( _size ) : Array( _size ) constructor { } else { var _default = ( argument_count > 1 ? argument[ 1 ] : undefined ); - length = ceil( _size == 0 ? 10 : _size * aggression ); - content = array_create( length, _default ); + length = ceil( _size ); + content = array_create( _size == 0 ? 10 : _size * aggression, _default ); } diff --git a/scripts/DsLinkedList/DsLinkedList.gml b/scripts/DsLinkedList/DsLinkedList.gml index 72c0d45..f74c39d 100644 --- a/scripts/DsLinkedList/DsLinkedList.gml +++ b/scripts/DsLinkedList/DsLinkedList.gml @@ -33,10 +33,6 @@ function DsLinkedList() : DsChain() constructor { while ( _seek != undefined ) { if ( _seek == _link ) { - if ( _link == step ) { - next(); - - } if ( _last != undefined ) { _last.chain = _link.chain; diff --git a/scripts/DsList/DsList.gml b/scripts/DsList/DsList.gml index 0fc54ff..826a148 100644 --- a/scripts/DsList/DsList.gml +++ b/scripts/DsList/DsList.gml @@ -93,6 +93,8 @@ function DsList() constructor { } pointer = ds_list_create(); + //ref = gc_list() + //pointer = ref.pointer; var _i = 0; repeat( argument_count ) { add( argument[ _i++ ] ); diff --git a/scripts/Gamepad/Gamepad.gml b/scripts/Gamepad/Gamepad.gml index 597fe30..2cb3b9c 100644 --- a/scripts/Gamepad/Gamepad.gml +++ b/scripts/Gamepad/Gamepad.gml @@ -1,6 +1,9 @@ /// @func Gamepad /// @wiki Input-Handling-Index function Gamepad() constructor { + /// @param {int} contant The gamepad button constant to bind. + /// @param {Gamepad} gamepad This should generally be `self`, as the inputs much reach back to Gamepad to find the pad index. + /// @desc A wrapper GML's gamepad button inputs. static input = function( _constant, _gamepad ) constructor { static pressed = function() { return gamepad_button_check_pressed( gamepad.padIndex, constant ); @@ -10,8 +13,6 @@ function Gamepad() constructor { return gamepad_button_check( gamepad.padIndex, constant ); } - // this is for compatibility with InputDevice - static down = held; static released = function() { return gamepad_button_check_released( gamepad.padIndex, constant ); @@ -20,6 +21,8 @@ function Gamepad() constructor { return gamepad_button_value( gamepad.padIndex, constant ); } + // this is for compatibility with InputDevice + static down = held; static toString = function() { return string( constant ) + "(" + string( pressed() ) + ", " + string( magnitude() ) + ")"; @@ -30,6 +33,9 @@ function Gamepad() constructor { last = false; } + /// @param {int} contant The gamepad axis constant to bind. + /// @param {Gamepad} gamepad This should generally be `self`, as the inputs much reach back to Gamepad to find the pad index. + /// @desc A wrapper GML's gamepad axis inputs. static inputAxis = function( _axish, _axisv, _gamepad ) constructor { static degree = function() { return point_direction( 0, 0, gamepad_axis_value( gamepad.padIndex, axish ), gamepad_axis_value( gamepad.padIndex, axisv ) ); @@ -84,7 +90,9 @@ function Gamepad() constructor { gamepad_set_axis_deadzone( padIndex, _amount ); } + /// @desc The port this gamepad is plugged into. You can get the port number via port.portId if this gamepad is plugged into a port. port = GamepadManager().get_port( self ); + /// @desc The pad index this Gamepad is used. padIndex = -1; if ( port == undefined ) { diff --git a/scripts/GarbageManager/GarbageManager.gml b/scripts/GarbageManager/GarbageManager.gml new file mode 100644 index 0000000..c23613b --- /dev/null +++ b/scripts/GarbageManager/GarbageManager.gml @@ -0,0 +1,69 @@ +/// @func GarbageManager +/// @desc Tracks reported data types and destroys them when they no longer exist. +function GarbageManager() { + static manager = function( _rate ) constructor { + static log = function() { + static logger = new Logger( "garbage", FAST_LOGGER_DEFAULT_LENGTH, System ); + + var _string = ""; + + var _i = 0; repeat( argument_count ) { + _string += string( argument[ _i++ ] ); + + } + logger.write( _string ); + + } + static destroy = function( _gen, _index ) { + _gen[ _index ].destroy(); + + array_delete( gen1, _index, 1 ); + + } + static promote = function( _index ) { + array_push( gen1, gen0[ _index ] ); + array_delete( gen0, _index, 1 ); + + } + static add = function( _ref ) { + array_push( gen0, _ref ); + + } + static toString = function() { + return string_con( "Garbage :: Gen0( ", array_length( gen0 ), " ), Gen1( ", array_length( gen1 ), " )" ); + + } + gen0 = []; + gen1 = []; + cycle = 0; + + event = new FrameEvent( FAST.STEP, _rate, undefined, function() { + if ( array_length( gen1 ) > 0 ) { + if ( weak_ref_alive( gen1[ cycle ].ref ) ) { + ++cycle + + } else { + destroy( gen1, cycle ); + + } + if ( cycle >= array_length( gen1 ) ) { cycle = 0; } + + } + repeat( array_length( gen0 ) ) { + if ( weak_ref_alive( gen0[ 0 ].ref ) ) { + promote( 0 ); + + } else { + destroy( gen0, 0 ); + + } + + } + + }); + + } + static instance = new Feature( "FAST Garbage", "1.0", "10/20/2020", new manager( argument_count == 0 ? 1 : argument[ 0 ] ) ); + return instance.struct; + +} diff --git a/scripts/GenericInput/GenericInput.yy b/scripts/GarbageManager/GarbageManager.yy similarity index 57% rename from scripts/GenericInput/GenericInput.yy rename to scripts/GarbageManager/GarbageManager.yy index 1424ee9..4b38ba8 100644 --- a/scripts/GenericInput/GenericInput.yy +++ b/scripts/GarbageManager/GarbageManager.yy @@ -2,11 +2,11 @@ "isDnD": false, "isCompatibility": false, "parent": { - "name": "Generic", - "path": "folders/FAST/Input Handling/Generic.yy", + "name": "Garbage", + "path": "folders/FAST/Core/Garbage.yy", }, "resourceVersion": "1.0", - "name": "GenericInput", + "name": "GarbageManager", "tags": [], "resourceType": "GMScript", } \ No newline at end of file diff --git a/scripts/InputCombo/InputCombo.gml b/scripts/InputCombo/InputCombo.gml index 8fc53f0..d685f1a 100644 --- a/scripts/InputCombo/InputCombo.gml +++ b/scripts/InputCombo/InputCombo.gml @@ -1,8 +1,8 @@ /// @func InputCombo -/// @param {GenericInput} GenericInput... A list of inputs to use in combination. +/// @param {InputGeneric} InputGeneric... A list of inputs to use in combination. /// @desc Returns true when /// @wiki Input-Handling-Index -function InputCombo() : GenericInput() constructor { +function InputCombo() : InputGeneric() constructor { /// @desc Returns `true` if the combination of these inputs are being "pressed". static down = function() { var _i = 0; repeat( size ) { @@ -17,7 +17,7 @@ function InputCombo() : GenericInput() constructor { try { var _i = 0; repeat( argument_count ) { - if ( is_struct_of( argument[ _i ], GenericInput ) == false ) { throw( instanceof( argument[ _i ] ) + " must be a GenericInput!" ); } + if ( is_struct_of( argument[ _i ], InputGeneric ) == false ) { throw( instanceof( argument[ _i ] ) + " must be a InputGeneric!" ); } inputs[ _i ] = argument[ _i ]; diff --git a/scripts/InputCombo/InputCombo.yy b/scripts/InputCombo/InputCombo.yy index 8dde7f1..f43b597 100644 --- a/scripts/InputCombo/InputCombo.yy +++ b/scripts/InputCombo/InputCombo.yy @@ -2,8 +2,8 @@ "isDnD": false, "isCompatibility": false, "parent": { - "name": "Generic", - "path": "folders/FAST/Input Handling/Generic.yy", + "name": "Input", + "path": "folders/FAST/Input Handling/Input.yy", }, "resourceVersion": "1.0", "name": "InputCombo", diff --git a/scripts/InputDevice/InputDevice.gml b/scripts/InputDevice/InputDevice.gml index ec4302a..2cd1d82 100644 --- a/scripts/InputDevice/InputDevice.gml +++ b/scripts/InputDevice/InputDevice.gml @@ -1,105 +1,29 @@ /// @func InputDevice -/// @param inputs... +/// @param {string} inputs... The names of the inputs to create on this InputDevice. +/// @desc Creates a new input device with the given input characteristics. While most names are +// not reserved, because of how the internal variables must be assigned. /// @wiki Input-Handling-Index function InputDevice() constructor { - static input = function( _name ) constructor { - //static raw = function() { - // var _i = 0; repeat( size ) { - // if ( inputs[ _i++ ].down() ){ - // if ( event == undefined ) { - // event = new FrameEvent( FAST.STEP, 0, undefined, function() { - // if ( down() == false ) { - // last = false; - // event.once = true; - // event = undefined; - - // } - - // }); - // last = true; - - // } - // return true; - - // } - - // } - // return false; - - //} - static state = function() { - var _i = 0; repeat( array_length( inputs ) ) { - if ( inputs[ _i++ ].down() == false ) { return false; } - - } - if ( event == undefined ) { - last = true; - event = new FrameEvent( FAST.STEP_END, 0, undefined, function() { - if ( state() == false ) { - event.discard(); - - last = false; - event = undefined; - - } - - }); - - } - return true; - - } - static bind = function( _input ) { - inputs[ size++ ] = _input; - - } - static pressed = function() { - return last == false && state(); - - } - static held = function() { - return ( state() && last == true ); - - } - static released = function() { - return ( state() == false && last == true ); - - } - static toString = function() { - return name + "(" + string( state() ) + ")"; - - } - name = _name; - inputs = []; - event = undefined; - last = false; - size = 0; - - } - static add_input = function( _input, _index ) { - _index = ( is_undefined( _index ) ? array_length( inputs ) : _index ); - + /// @oaram {string} input The name of the input to add. + /// @param {int} index optional: The internal index to bind this input to. Using this argument could cause unexpected crashes. + /// @desc While the normal way of declaring inputs is to do so when the InputDevice is created, + // calling add_input() after creation will create the specified input. + static __add_input = function( _input, _index ) { if ( variable_struct_exists( self, _input ) ) { log_nonfatal( undefined, "InputDevice.add_input", "Input \"", _input, "\" already defined!" ); return; } - inputs[ _index ] = new input( _input ); - - variable_struct_set( self, _input, inputs[ _index ] ); + variable_struct_set( self, _input, new ( InputManager() ).input( _input ) ); } static is = function( _data_type ) { return _data_type == InputDevice; } - inputs = array_create( argument_count ); - var _i = 0; repeat( argument_count ) { - add_input( argument[ _i ], _i ); - - ++_i; + __add_input( argument[ _i++ ] ); } diff --git a/scripts/InputDevice/InputDevice.yy b/scripts/InputDevice/InputDevice.yy index 2f52214..7a649e7 100644 --- a/scripts/InputDevice/InputDevice.yy +++ b/scripts/InputDevice/InputDevice.yy @@ -2,8 +2,8 @@ "isDnD": false, "isCompatibility": false, "parent": { - "name": "Generic", - "path": "folders/FAST/Input Handling/Generic.yy", + "name": "Input", + "path": "folders/FAST/Input Handling/Input.yy", }, "resourceVersion": "1.0", "name": "InputDevice", diff --git a/scripts/GenericInput/GenericInput.gml b/scripts/InputGeneric/InputGeneric.gml similarity index 78% rename from scripts/GenericInput/GenericInput.gml rename to scripts/InputGeneric/InputGeneric.gml index 750abf3..0487ab2 100644 --- a/scripts/GenericInput/GenericInput.gml +++ b/scripts/InputGeneric/InputGeneric.gml @@ -1,15 +1,15 @@ -/// @func GenericInput +/// @func InputGeneric /// @desc An interface for creating new input sources. Contains a single method that is simply used to // determine if the control is being activated or not. /// @wiki Input-Handling-Index -function GenericInput() constructor { +function InputGeneric() constructor { /// @desc Returns `true` if this input is being "pressed". static down = function() { return false; } static is = function( _data_type ) { - return _data_type == GenericInput; + return _data_type == InputGeneric; } diff --git a/scripts/InputGeneric/InputGeneric.yy b/scripts/InputGeneric/InputGeneric.yy new file mode 100644 index 0000000..a31bba5 --- /dev/null +++ b/scripts/InputGeneric/InputGeneric.yy @@ -0,0 +1,12 @@ +{ + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "Input", + "path": "folders/FAST/Input Handling/Input.yy", + }, + "resourceVersion": "1.0", + "name": "InputGeneric", + "tags": [], + "resourceType": "GMScript", +} \ No newline at end of file diff --git a/scripts/InputManager/InputManager.gml b/scripts/InputManager/InputManager.gml index 284f743..dc1fe70 100644 --- a/scripts/InputManager/InputManager.gml +++ b/scripts/InputManager/InputManager.gml @@ -17,6 +17,59 @@ function InputManager() { logger.write( _string ); } + /// @param {string} name The name of this input. + /// @desc Inputs are an internal structure that is used to wrap inputs. They contain the state + // information, as well as the methods to bind and check that state. + static input = function( _name ) constructor { + static state = function() { + var _i = 0; repeat( array_length( inputs ) ) { + if ( inputs[ _i++ ].down() == false ) { return false; } + + } + if ( event == undefined ) { + last = true; + event = new FrameEvent( FAST.STEP_END, 0, undefined, function() { + if ( state() == false ) { + event.discard(); + + last = false; + event = undefined; + + } + + }); + + } + return true; + + } + static bind = function( _input ) { + inputs[ size++ ] = _input; + + } + static pressed = function() { + return last == false && state(); + + } + static held = function() { + return ( state() && last == true ); + + } + static released = function() { + return ( state() == false && last == true ); + + } + static toString = function() { + return name + "(" + string( state() ) + ")"; + + } + name = _name; + inputs = []; + event = undefined; + last = false; + size = 0; + + } } static instance = new Feature( "FAST Input Handling", "1.0a", "10/18/2020", new manager() ); diff --git a/scripts/InputMethod/InputMethod.gml b/scripts/InputMethod/InputMethod.gml index 8657805..f3a5931 100644 --- a/scripts/InputMethod/InputMethod.gml +++ b/scripts/InputMethod/InputMethod.gml @@ -1,7 +1,7 @@ /// @func InputMethod /// @params {func} method The method to bind to this input. /// @desc Used to bind unconventional input sources to an InputDevice. -function InputMethod( _method ) : GenericInput() constructor { +function InputMethod( _method ) : InputGeneric() constructor { /// @desc Returns `true` if this input is being "pressed". static down = function() { return func(); diff --git a/scripts/InputMethod/InputMethod.yy b/scripts/InputMethod/InputMethod.yy index 65a0182..f3f8b45 100644 --- a/scripts/InputMethod/InputMethod.yy +++ b/scripts/InputMethod/InputMethod.yy @@ -2,8 +2,8 @@ "isDnD": false, "isCompatibility": false, "parent": { - "name": "Generic", - "path": "folders/FAST/Input Handling/Generic.yy", + "name": "Input", + "path": "folders/FAST/Input Handling/Input.yy", }, "resourceVersion": "1.0", "name": "InputMethod", diff --git a/scripts/KeyboardKey/KeyboardKey.gml b/scripts/KeyboardKey/KeyboardKey.gml index e27ba3a..78acd77 100644 --- a/scripts/KeyboardKey/KeyboardKey.gml +++ b/scripts/KeyboardKey/KeyboardKey.gml @@ -3,7 +3,7 @@ /// @desc Converts keyboard inputs into a format used by (#InputDevice). KeyboardKey will also // interpret the -=[]\;',./ characters if provided. /// @wiki Input-Handling-Index Keyboard -function KeyboardKey( _constant ) : GenericInput( _constant ) constructor { +function KeyboardKey( _constant ) : InputGeneric( _constant ) constructor { static down = function() { return keyboard_check( constant ); diff --git a/scripts/MouseButton/MouseButton.gml b/scripts/MouseButton/MouseButton.gml index e6832f8..1926328 100644 --- a/scripts/MouseButton/MouseButton.gml +++ b/scripts/MouseButton/MouseButton.gml @@ -2,7 +2,7 @@ /// @param {int} constant One of the `mb_` constants to check for. /// @desc Converts mouse inputs into a format used by (#InputDevice). /// @wiki Input-Handling-Index Mouse -function MouseButton( _constant ) : GenericInput( _constant ) constructor { +function MouseButton( _constant ) : InputGeneric( _constant ) constructor { static down = function() { return mouse_check_button( constant ); diff --git a/scripts/MouseWheelDown/MouseWheelDown.gml b/scripts/MouseWheelDown/MouseWheelDown.gml index ab94547..1da9869 100644 --- a/scripts/MouseWheelDown/MouseWheelDown.gml +++ b/scripts/MouseWheelDown/MouseWheelDown.gml @@ -1,7 +1,7 @@ /// @func MouseWheelDown /// @desc Converts scrolling the mouse wheel down into a format used by (#InputDevice). /// @wiki Input-Handling-Index Mouse -function MouseWheelDown() : GenericInput() constructor { +function MouseWheelDown() : InputGeneric() constructor { static down = function() { return mouse_wheel_down(); diff --git a/scripts/MouseWheelUp/MouseWheelUp.gml b/scripts/MouseWheelUp/MouseWheelUp.gml index f08fa64..67a2cb3 100644 --- a/scripts/MouseWheelUp/MouseWheelUp.gml +++ b/scripts/MouseWheelUp/MouseWheelUp.gml @@ -1,7 +1,7 @@ /// @func MouseWheelUp /// @desc Converts scrolling the mouse wheel up into a format used by (#InputDevice). /// @wiki Input-Handling-Index Mouse -function MouseWheelUp() : GenericInput() constructor { +function MouseWheelUp() : InputGeneric() constructor { static down = function() { return mouse_wheel_up(); diff --git a/scripts/PointerDevice/PointerDevice.gml b/scripts/PointerDevice/PointerDevice.gml deleted file mode 100644 index 52b50c1..0000000 --- a/scripts/PointerDevice/PointerDevice.gml +++ /dev/null @@ -1,28 +0,0 @@ -/// @func PointerDevice -/// @desc behaves as a mouse by default, but can be inherited or overriden to use other -/// input sources. -function PointerDevice() : InputDevice() constructor { - static get_x = function() { - return mouse_x; - - } - static get_y = function() { - return mouse_y; - - } - static toString = function() { - return string( get_x() ) + ", " + string( get_y() ); - - } - inputs = array_create( argument_count ); - target = noone; - event = undefined; - - var _i = 0; repeat( argument_count ) { - add_input( argument[ _i ], _i ); - - ++_i; - - } - -} diff --git a/scripts/PointerInterface/PointerInterface.gml b/scripts/PointerInterface/PointerInterface.gml index 5f67884..0f4f0bd 100644 --- a/scripts/PointerInterface/PointerInterface.gml +++ b/scripts/PointerInterface/PointerInterface.gml @@ -1,214 +1,51 @@ /// @func PointerInterface -/// @param input -/// @param *shape +/// @param {(#InputShape)} shape The shape of this input interface +/// @desc An abstract interface for building pointers, see (#PointerSimpleMouse) for an example of how +// to extend it into a concrete implementation. function PointerInterface( _shape ) constructor { - static Element = function( _target, _depth, _interface ) constructor { - static toString = function() { - return string( depth ); + static change_state = function( _state, _event, _x, _y ) { + if ( state != _state ) { + state = _state; - } - static enter = function() {} - static leave = function() {} - static step = function() {} - - target = _target; - depth = _depth; - interface = _interface; - - } - static disable = function() { - disabled = true; - - leave(); - - } - static enable = function() { - disabled = false; - - } - static inside = function( _x, _y ) { - return shape.inside( _x, _y ); - - } - static enter = function() { - active = true; - - } - static leave = function() { - active = false; - target = noone; - - if ( last == undefined ) { return; } - - last.leave(); - - last = undefined; - - } - static seek = function( _id ) { - var _i = size - 1; repeat( size ) { - if ( objects[ _i ].target == _id ) { - return objects[ _i ]; + if ( _event != undefined ) { + _event( _x, _y ); } - --_i; - - } - return undefined; - - } - static set_enter = function( _id, _enter ) { - var _index = seek( _id ); - - if ( _index != undefined ) { - _index.enter = method( _index.target, _enter ); - - } - - } - static set_leave = function( _id, _leave ) { - var _index = seek( _id ); - - if ( _index != undefined ) { - _index.leave = method( _index.target, _leave ); - - } - - } - static set_step = function( _id, _step ) { - var _index = seek( _id ); - - if ( _index != undefined ) { - _index.step = method( _index.target, _step ); - - } - - } - static set_depth = function( _id, _depth ) { - var _index = seek( _id ); - - if ( _index != undefined ) { - _index.depth = _depth; - - set_dirty(); } } - static sort = function() { - array_quicksort( objects, 0, size - 1, false, - function( _value ) { return _value.depth }, - function( _value, _pivot, _ascending ) { - return ( _ascending ? _value.depth <= _pivot : _value.depth >= _pivot ); - - } - ); - if ( dirty != undefined ) { - dirty = dirty.discard(); + static update = function( _x, _y, _force ) { + if ( _force != undefined ) { return _force == true; } + if ( shape.inside( _x, _y ) ) { + return true; - } - - } - static remove = function( _id ) { - var _i = 0; repeat( size ) { - if ( objects[ _i ].target == _id ) { - var _hold = objects; - - objects = array_create( array_length( _hold ), noone ); - - if ( _i > 0 ) { - array_copy( objects, 0, _hold, 0, _i ); - - } - if ( _i + 1 < size ) { - array_copy( objects, _i, _hold, _i + 1, size - _i ); - - } - --size; - - break; - - } - ++_i; + } else { + return false; } } - static add = function( _id, _depth, _interface ) { - if ( size == array_length( objects ) ) { - var _hold = objects; - - objects = array_create( ceil( array_length( _hold ) * 2 ), noone ); - - array_copy( objects, 0, _hold, 0, size ); - - } - objects[ size++ ] = new Element( _id, _depth, _interface ); - - set_dirty(); + static draw = function( _x, _y ) { + shape.draw( _x, _y, true ) } - static set_dirty = function() { - if ( dirty =! undefined || size <= 1 ) { return; } - - dirty = new FrameEvent( FAST.NEXT_STEP, 0, undefined, function() { - sort(); - }).once(); + static is = function( _data_type ) { + return _data_type == PointerInterface; } - static update = function( _x, _y ) { - var _rx = _x - shape.x; - var _ry = _y - shape.y; - - // if this interface is disabled, or position is not within, no selection - if ( disabled || inside( _x, _y ) == false ) { return noone; } - if ( last != undefined && last.target.inside( _rx, _ry ) == false ) { - last.leave(); - last = undefined; - target = noone; - - } - // search objects - var _object, _i = 0; repeat( size ) { - // get next target - _object = objects[ _i++ ]; - // if position is inside of target - if ( _object.target.inside( _rx, _ry ) ) { - // if previous target is no longer valid - if ( last != _object ) { - _object.enter(); - - target = _object.target; - last = _object; - - } else { - last.step(); - - } - // if target is an interface, seek nested target - if ( _object.interface ) { - target = _object.target.update( _x, _y ); - - } - break; - - } - - } - return target; + /// @desc The internal Shape. + shape = undefined; + /// @desc The state of the interface. + state = undefined; + + if ( is_struct_of( _shape, Shape ) ) { + shape = _shape; - } - static toString = function() { - return "Shape : " + instanceof( shape ) + ", Active : " + string( active ) + ", Target : " + string( target ); + } else { + PointerManager().log( instanceof( self ), ": Invalid type provided, must be a Shape." ); + shape = new Shape(); } - shape = ( _shape == undefined ? new Shape() : _shape ); - dirty = undefined; - disabled= false; - objects = array_create( 5, noone ); - size = 0; - target = noone; - last = undefined; - active = false; } diff --git a/scripts/PointerInterface/PointerInterface.yy b/scripts/PointerInterface/PointerInterface.yy index 83cfc42..d9a42e5 100644 --- a/scripts/PointerInterface/PointerInterface.yy +++ b/scripts/PointerInterface/PointerInterface.yy @@ -2,8 +2,8 @@ "isDnD": false, "isCompatibility": false, "parent": { - "name": "Pointer", - "path": "folders/FAST/Pointer.yy", + "name": "Structs", + "path": "folders/FAST/Pointer/Structs.yy", }, "resourceVersion": "1.0", "name": "PointerInterface", diff --git a/scripts/PointerManager/PointerManager.gml b/scripts/PointerManager/PointerManager.gml index c6534a1..1923bd8 100644 --- a/scripts/PointerManager/PointerManager.gml +++ b/scripts/PointerManager/PointerManager.gml @@ -1,55 +1,23 @@ /// @desc PointerManager function PointerManager() { static manager = function() constructor { - static set_input = function( _input ) { - if ( is_struct( _input ) == false || variable_struct_exists( _input, "inputs" ) == false ) { - log_nonfatal( undefined, "GUIManager", "Provided input was not recognized as an InputDevice." ); - - } - device = _input; + static log = function() { + if ( FAST_DEBUGGER_ENABLE == false ) { return; } - } - static set_shape = function( _shape ) { - if ( is_struct( _shape ) == false || variable_struct_exists( _shape, "inside" ) == false ) { - var _type = ( is_struct( _shape ) == false ? typeof( _shape ) : instanceof( _shape ) ); - - log_critical( undefined, "GUIManager", "Provided shape was not recognized! Was ", _type, ". Exception thrown." ); - throw( "See output log." ); - } - interface.shape = _shape; + static logger = new Logger( "pointer", FAST_LOGGER_DEFAULT_LENGTH, System ); - } - static disable = function() { interface.disable(); } - static enable = function() { interface.enable(); } - static set_enter = function( _id, _enter ) { interface.set_enter( _id, _enter ) } - static set_leave = function( _id, _leave ) { interface.set_leave( _id, _leave ) } - static set_step = function( _id, _step ) { interface.set_step( _id, _step ) } - static set_depth = function( _id, _depth ) { interface.change( _id, _depth, _sort ); } - static remove = function( _id ) { interface.remove( _id ); } - static add = function( _id, _depth, _interface ) { interface.add( _id, _depth, _interface ); } - static toString = function() { return interface.toString(); } - interface = new PointerInterface(); - event = new FrameEvent( FAST.STEP_BEGIN, 0, undefined, function() { - if ( device == undefined ) { return; } + var _string = ""; - if ( interface.inside( device.get_x(), device.get_y() ) ) { - if ( interface.active = false ) { - interface.enter(); - - } - target = interface.update( device.get_x(), device.get_y() ); - - } else if ( interface.active ) { - interface.leave(); + var _i = 0; repeat( argument_count ) { + _string += string( argument[ _i++ ] ); } + logger.write( _string ); - }); - device = undefined; - target = noone; + } } - static instance = new Feature( "FAST Pointer", "1.0", "08/03/2020", new manager() ); + static instance = new Feature( "FAST Pointer", "1.0.0", "10/23/2020", new manager() ); return instance.struct; } diff --git a/scripts/PointerSimpleMouse/PointerSimpleMouse.gml b/scripts/PointerSimpleMouse/PointerSimpleMouse.gml new file mode 100644 index 0000000..883a5b3 --- /dev/null +++ b/scripts/PointerSimpleMouse/PointerSimpleMouse.gml @@ -0,0 +1,47 @@ +/// @func PointerSimpleMouse +function PointerSimpleMouse( _shape ) : PointerInterface( _shape ) constructor { + // # constants + // # constants + static INPUT_NONE = 0; + static INPUT_HOVER = 1; + static INPUT_DOWN = 2; + static INPUT_HELD = 3; + + static update_PointerInterface = update; + static update = function( _x, _y, _force ) { + if ( update_PointerInterface( _x, _y, _force ) ) { + if ( state == INPUT_NONE ) { + change_state( INPUT_HOVER, onEnter, _x, _y ); + + } + if ( mouse_check_button( mb_left ) ) { + change_state( INPUT_DOWN, onDown, _x, _y ); + + } else { + change_state( INPUT_HOVER, onUp, _x, _y ); + + } + return true; + + } else { + change_state( INPUT_NONE, onLeave, _x, _y ); + + return false; + + } + + } + /// @ignore + state = INPUT_NONE; + /// @desc The function to perform when the mouse enters this interface + onEnter = undefined; + /// @desc The function to perform when the mouse leaves this interface + onLeave = undefined; + /// @desc The function to perform while the mouse button is held + onHeld = undefined; + /// @desc The function to perform when the mouse is pressed + onDown = undefined; + /// @desc The function to perform when the mouse is released + onUp = undefined; + +} diff --git a/scripts/PointerSimpleMouse/PointerSimpleMouse.yy b/scripts/PointerSimpleMouse/PointerSimpleMouse.yy new file mode 100644 index 0000000..61de1f8 --- /dev/null +++ b/scripts/PointerSimpleMouse/PointerSimpleMouse.yy @@ -0,0 +1,12 @@ +{ + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "Structs", + "path": "folders/FAST/Pointer/Structs.yy", + }, + "resourceVersion": "1.0", + "name": "PointerSimpleMouse", + "tags": [], + "resourceType": "GMScript", +} \ No newline at end of file diff --git a/scripts/PointerStack/PointerStack.gml b/scripts/PointerStack/PointerStack.gml new file mode 100644 index 0000000..14a02e0 --- /dev/null +++ b/scripts/PointerStack/PointerStack.gml @@ -0,0 +1,114 @@ +/// @func PointerStack +/// @param {int} x +/// @param {int} y +/// @param {int} width +/// @param {int} height +/// @desc The PointerStack is used to create a list of (#PointerInterface)s that will be traversed in +// descending order to ensure only the top-most element is called. Thus, interfaces that are added +// later will be "above" those that were added earlier. In the given example, the second simple +// mouse pointer would be called rather than the first where the two overlap. +/// @example +//pointer = new PointerStack( 0, 0, room_width, room_height ) +// +//pointer.add( new PointerSimpleMouse( new ShapeRectangle( 10, 10, 20, 20 ) ); +//pointer.add( new PointerSimpleMouse( new ShapeRectangle( 20, 20, 20, 20 ) ); +function PointerStack( _x, _y, _w, _h ) constructor { + /// @desc Calls for this PointerInterface to be updated, will check all instances and update the + // top-most interface that it finds. Any previous interactions will have their exit code + // called as well. + static update = function( _x, _y ) { + if ( hold != undefined ) { + hold.update( _x, _y, true ); + + return true; + + } + if ( point_in_rectangle( _x, _y, x, y, x + width - 1, y + height - 1 ) ) { + var _i = array_length( content ); repeat( array_length( content ) ) { + if ( content[ --_i ].update( _x, _y ) ) { + if ( last != undefined && last != content[ _i ] ) { + last.update( _x, _y, false ); + + } + last = content[ _i ]; + + break; + + } + + } + active = true; + + return true; + + } else if ( last != undefined ) { + last.update( _x, _y, false ); + last = undefined; + + } + active = false; + + return false; + + } + /// @param {mixed} interface A (#PointerInterface) or (#PointerStack). + /// @desc Removes the specified interface from the stack. + static remove = function( _value ) { + var _i = 0; repeat( array_length( content ) ) { + if ( content[ _i++ ] == _value ) { + array_delete( content, _i - 1, 1 ); + + return; + + } + + } + PointerManager().log( "PointerStack.remove() : The provided value was not found." ); + + } + /// @param {mixed} interface A (#PointerInterface) or (#PointerStack). + /// @desc Adds the specified interface to the stack. + static add = function( _value ) { + if ( is_struct_of( _value, PointerInterface ) || is_struct_of( _value, PointerStack ) ) { + array_push( content, _value ); + + } else { + PointerManager().log( "PointerStack.add() : Invalid type provided, must be a PointerInterface or PointerStack." ); + + } + return _value; + + } + static draw = function( _x, _y, _color ) { + draw_set_color( _color ); + + draw_rectangle( x + _x, y + _y, x + _x + width - 1, y + _y + height - 1, true ); + + var _i = 0; repeat( array_length( content ) ) { + content[ _i++ ].draw( _x, _y ); + + } + + } + static is = function( _data_type ) { + return _data_type == PointerStack; + + } + /// @desc The last interface to be interacted with. + last = undefined; + /// @desc The internal array of Interfaces being used. + content = []; + /// @desc The x position of the PointerStack. + x = _x; + /// @desc The y position of the PointerStack. + y = _y; + /// @desc The width of the PointerStack. + width = _w; + /// @desc The height of the PointerStack. + height = _h; + /// @desc Whether or not this stack is currently active + active = false; + /// @desc When set to an interface element, it will not be released. + hold = undefined; + +} diff --git a/scripts/PointerStack/PointerStack.yy b/scripts/PointerStack/PointerStack.yy new file mode 100644 index 0000000..3ae167f --- /dev/null +++ b/scripts/PointerStack/PointerStack.yy @@ -0,0 +1,12 @@ +{ + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "Structs", + "path": "folders/FAST/Pointer/Structs.yy", + }, + "resourceVersion": "1.0", + "name": "PointerStack", + "tags": [], + "resourceType": "GMScript", +} \ No newline at end of file diff --git a/scripts/RenderList/RenderList.gml b/scripts/RenderList/RenderList.gml new file mode 100644 index 0000000..0e3b487 --- /dev/null +++ b/scripts/RenderList/RenderList.gml @@ -0,0 +1,53 @@ +/// @func RenderList +/// @params {int} ids... The instances to add to this list. +/// @desc Used to control the draw order of objects. Objects will be drawn in the order +// they are added to the list. +/// @example +//render = new RenderList( instance_id ); +// +//render.draw(); +/// @wiki Render-Index +function RenderList() constructor { + /// @param {int} ids... The instances to add to this list. + /// @desc Adds the provided instance ids to the render list. + add = function( _id ) { + var _i = 0; repeat( argument_count ) { + array_push( argument[ _i++ ] ); + + } + + } + /// @param {int} ids... The instances to remove from this list. + /// @desc Removes the given ids from the list, if they exist. + remove = function( _id ) { + var _i = 0; repeat( array_length( content ) ) { + var _find = array_contains( content, argument[ _i++ ] ); + + if ( _find > -1 ) { + array_delete( content, _id, 1 ); + + } + + } + + } + /// @desc Calls the draw event on each object in the list, in the order they were added. + draw = function() { + if ( event_type != ev_draw ) { return; } + + var _i = 0; repeat( array_length( content ) ) { + with( content[ _i++ ] ) { event_perform( ev_draw, event_number ); } + + } + + } + /// @desc An array. Contains the list of objects which have been added to this list. + content = array_create( argument_count ); + + var _i = 0; repeat( argument_count ) { + content[ _i ] = argument[ _i ]; + ++_i; + + } + +} diff --git a/scripts/PointerDevice/PointerDevice.yy b/scripts/RenderList/RenderList.yy similarity index 60% rename from scripts/PointerDevice/PointerDevice.yy rename to scripts/RenderList/RenderList.yy index 39e2976..3475547 100644 --- a/scripts/PointerDevice/PointerDevice.yy +++ b/scripts/RenderList/RenderList.yy @@ -2,11 +2,11 @@ "isDnD": false, "isCompatibility": false, "parent": { - "name": "Pointer", - "path": "folders/FAST/Pointer.yy", + "name": "Structs", + "path": "folders/FAST/Render/Structs.yy", }, "resourceVersion": "1.0", - "name": "PointerDevice", + "name": "RenderList", "tags": [], "resourceType": "GMScript", } \ No newline at end of file diff --git a/scripts/RenderManager/RenderManager.gml b/scripts/RenderManager/RenderManager.gml index 447c957..081d4db 100644 --- a/scripts/RenderManager/RenderManager.gml +++ b/scripts/RenderManager/RenderManager.gml @@ -1,5 +1,12 @@ /// @func RenderManager /// @param *render_object +/// @desc Provides an interface for setting up and calling functions as part of the FAST render. You are +// able to override the default FASTRender object by providing it as an argument to this function, as +// well as set up internal resolution and scaling parameters. These functions can be called after the +// program starts, but it is generally best to call them as part of an initialization script. +/// @example +//RenderManager().set_resolution( 1280, 720 ) +//RenderManager().set_precision( 0.5 ) /// @wiki Render-Index function RenderManager() { static render = function( _render ) constructor { @@ -51,7 +58,7 @@ function RenderManager() { window_set_rectangle( _x, _y, window_width, window_height ); } - static use_view = function( _true ) { + static use_views = function( _true ) { bUseViews = _true; } diff --git a/scripts/Shape/Shape.gml b/scripts/Shape/Shape.gml index 349d98a..7dc2763 100644 --- a/scripts/Shape/Shape.gml +++ b/scripts/Shape/Shape.gml @@ -6,6 +6,10 @@ function Shape() constructor { x = _x; y = _y; + } + static is = function( _data_type ) { + return _data_type == Shape; + } x = 0; y = 0; diff --git a/scripts/Shape/Shape.yy b/scripts/Shape/Shape.yy index 5cae456..c187b74 100644 --- a/scripts/Shape/Shape.yy +++ b/scripts/Shape/Shape.yy @@ -3,7 +3,7 @@ "isCompatibility": false, "parent": { "name": "Shapes", - "path": "folders/FAST/Pointer/Shapes.yy", + "path": "folders/FAST/Core/Shapes.yy", }, "resourceVersion": "1.0", "name": "Shape", diff --git a/scripts/ShapeCircle/ShapeCircle.yy b/scripts/ShapeCircle/ShapeCircle.yy index 32c1b78..823828b 100644 --- a/scripts/ShapeCircle/ShapeCircle.yy +++ b/scripts/ShapeCircle/ShapeCircle.yy @@ -3,7 +3,7 @@ "isCompatibility": false, "parent": { "name": "Shapes", - "path": "folders/FAST/Pointer/Shapes.yy", + "path": "folders/FAST/Core/Shapes.yy", }, "resourceVersion": "1.0", "name": "ShapeCircle", diff --git a/scripts/ShapeEllipses/ShapeEllipses.yy b/scripts/ShapeEllipses/ShapeEllipses.yy index 53ab7a4..8cd6a01 100644 --- a/scripts/ShapeEllipses/ShapeEllipses.yy +++ b/scripts/ShapeEllipses/ShapeEllipses.yy @@ -3,7 +3,7 @@ "isCompatibility": false, "parent": { "name": "Shapes", - "path": "folders/FAST/Pointer/Shapes.yy", + "path": "folders/FAST/Core/Shapes.yy", }, "resourceVersion": "1.0", "name": "ShapeEllipses", diff --git a/scripts/ShapeGrid/ShapeGrid.yy b/scripts/ShapeGrid/ShapeGrid.yy index ba8e10b..6747e2c 100644 --- a/scripts/ShapeGrid/ShapeGrid.yy +++ b/scripts/ShapeGrid/ShapeGrid.yy @@ -3,7 +3,7 @@ "isCompatibility": false, "parent": { "name": "Shapes", - "path": "folders/FAST/Pointer/Shapes.yy", + "path": "folders/FAST/Core/Shapes.yy", }, "resourceVersion": "1.0", "name": "ShapeGrid", diff --git a/scripts/ShapePolygon/ShapePolygon.yy b/scripts/ShapePolygon/ShapePolygon.yy index 9565362..da2b83e 100644 --- a/scripts/ShapePolygon/ShapePolygon.yy +++ b/scripts/ShapePolygon/ShapePolygon.yy @@ -3,7 +3,7 @@ "isCompatibility": false, "parent": { "name": "Shapes", - "path": "folders/FAST/Pointer/Shapes.yy", + "path": "folders/FAST/Core/Shapes.yy", }, "resourceVersion": "1.0", "name": "ShapePolygon", diff --git a/scripts/ShapeRectangle/ShapeRectangle.yy b/scripts/ShapeRectangle/ShapeRectangle.yy index 2b0582d..f9e62a1 100644 --- a/scripts/ShapeRectangle/ShapeRectangle.yy +++ b/scripts/ShapeRectangle/ShapeRectangle.yy @@ -3,7 +3,7 @@ "isCompatibility": false, "parent": { "name": "Shapes", - "path": "folders/FAST/Pointer/Shapes.yy", + "path": "folders/FAST/Core/Shapes.yy", }, "resourceVersion": "1.0", "name": "ShapeRectangle", diff --git a/scripts/blank/blank.gml b/scripts/blank/blank.gml new file mode 100644 index 0000000..e69de29 diff --git a/scripts/testScript/testScript.yy b/scripts/blank/blank.yy similarity index 88% rename from scripts/testScript/testScript.yy rename to scripts/blank/blank.yy index 0999960..61c2d2b 100644 --- a/scripts/testScript/testScript.yy +++ b/scripts/blank/blank.yy @@ -6,7 +6,7 @@ "path": "FASTv33.yyp", }, "resourceVersion": "1.0", - "name": "testScript", + "name": "blank", "tags": [], "resourceType": "GMScript", } \ No newline at end of file diff --git a/scripts/gc_grid/gc_grid.gml b/scripts/gc_grid/gc_grid.gml new file mode 100644 index 0000000..e7fbc00 --- /dev/null +++ b/scripts/gc_grid/gc_grid.gml @@ -0,0 +1,14 @@ +/// @func gc_grid +/// @param {int} width The width of the grid. +/// @param {int} height The height of the grid. +function gc_grid( _width, _height ) { + var _list = { pointer : ds_grid_create( _width, _height ) }; + + GarbageManager().add( { + ref : weak_ref_create( _list ), + pointer : _list.pointer, + destroy : function() { ds_grid_destroy( pointer ); } + }); + return _list; + +} diff --git a/scripts/gc_grid/gc_grid.yy b/scripts/gc_grid/gc_grid.yy new file mode 100644 index 0000000..7d6f145 --- /dev/null +++ b/scripts/gc_grid/gc_grid.yy @@ -0,0 +1,12 @@ +{ + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "Functions", + "path": "folders/FAST/Core/Garbage/Functions.yy", + }, + "resourceVersion": "1.0", + "name": "gc_grid", + "tags": [], + "resourceType": "GMScript", +} \ No newline at end of file diff --git a/scripts/gc_list/gc_list.gml b/scripts/gc_list/gc_list.gml new file mode 100644 index 0000000..696d8bd --- /dev/null +++ b/scripts/gc_list/gc_list.gml @@ -0,0 +1,12 @@ +/// @func gc_list +function gc_list() { + var _list = { pointer : ds_list_create() }; + + GarbageManager().add( { + ref : weak_ref_create( _list ), + pointer : _list.pointer, + destroy : function() { ds_list_destroy( pointer ); } + }); + return _list; + +} diff --git a/scripts/gc_list/gc_list.yy b/scripts/gc_list/gc_list.yy new file mode 100644 index 0000000..3538827 --- /dev/null +++ b/scripts/gc_list/gc_list.yy @@ -0,0 +1,12 @@ +{ + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "Functions", + "path": "folders/FAST/Core/Garbage/Functions.yy", + }, + "resourceVersion": "1.0", + "name": "gc_list", + "tags": [], + "resourceType": "GMScript", +} \ No newline at end of file diff --git a/scripts/gc_map/gc_list.yy b/scripts/gc_map/gc_list.yy new file mode 100644 index 0000000..3538827 --- /dev/null +++ b/scripts/gc_map/gc_list.yy @@ -0,0 +1,12 @@ +{ + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "Functions", + "path": "folders/FAST/Core/Garbage/Functions.yy", + }, + "resourceVersion": "1.0", + "name": "gc_list", + "tags": [], + "resourceType": "GMScript", +} \ No newline at end of file diff --git a/scripts/gc_map/gc_map.gml b/scripts/gc_map/gc_map.gml new file mode 100644 index 0000000..8b68e33 --- /dev/null +++ b/scripts/gc_map/gc_map.gml @@ -0,0 +1,12 @@ +/// @func gc_map +function gc_map() { + var _list = { pointer : ds_map_create() }; + + GarbageManager().add( { + ref : weak_ref_create( _list ), + pointer : _list.pointer, + destroy : function() { ds_map_destroy( pointer ); } + }); + return _list; + +} diff --git a/scripts/gc_map/gc_map.yy b/scripts/gc_map/gc_map.yy new file mode 100644 index 0000000..c9f2d97 --- /dev/null +++ b/scripts/gc_map/gc_map.yy @@ -0,0 +1,12 @@ +{ + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "Functions", + "path": "folders/FAST/Core/Garbage/Functions.yy", + }, + "resourceVersion": "1.0", + "name": "gc_map", + "tags": [], + "resourceType": "GMScript", +} \ No newline at end of file diff --git a/scripts/gc_priority_queue/gc_priority_queue.gml b/scripts/gc_priority_queue/gc_priority_queue.gml new file mode 100644 index 0000000..e3f1912 --- /dev/null +++ b/scripts/gc_priority_queue/gc_priority_queue.gml @@ -0,0 +1,12 @@ +/// @func gc_priority_queue +function gc_priority_queue() { + var _list = { pointer : ds_priority_create() }; + + GarbageManager().add( { + ref : weak_ref_create( _list ), + pointer : _list.pointer, + destroy : function() { ds_priority_destroy( pointer ); } + }); + return _list; + +} diff --git a/scripts/gc_priority_queue/gc_priority_queue.yy b/scripts/gc_priority_queue/gc_priority_queue.yy new file mode 100644 index 0000000..52df331 --- /dev/null +++ b/scripts/gc_priority_queue/gc_priority_queue.yy @@ -0,0 +1,12 @@ +{ + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "Functions", + "path": "folders/FAST/Core/Garbage/Functions.yy", + }, + "resourceVersion": "1.0", + "name": "gc_priority_queue", + "tags": [], + "resourceType": "GMScript", +} \ No newline at end of file diff --git a/scripts/gc_queue/gc_grid.yy b/scripts/gc_queue/gc_grid.yy new file mode 100644 index 0000000..7d6f145 --- /dev/null +++ b/scripts/gc_queue/gc_grid.yy @@ -0,0 +1,12 @@ +{ + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "Functions", + "path": "folders/FAST/Core/Garbage/Functions.yy", + }, + "resourceVersion": "1.0", + "name": "gc_grid", + "tags": [], + "resourceType": "GMScript", +} \ No newline at end of file diff --git a/scripts/gc_queue/gc_queue.gml b/scripts/gc_queue/gc_queue.gml new file mode 100644 index 0000000..3d79c48 --- /dev/null +++ b/scripts/gc_queue/gc_queue.gml @@ -0,0 +1,12 @@ +/// @func gc_queue +function gc_queue() { + var _list = { pointer : ds_queue_create() }; + + GarbageManager().add( { + ref : weak_ref_create( _list ), + pointer : _list.pointer, + destroy : function() { ds_queue_destroy( pointer ); } + }); + return _list; + +} diff --git a/scripts/gc_queue/gc_queue.yy b/scripts/gc_queue/gc_queue.yy new file mode 100644 index 0000000..1dbd206 --- /dev/null +++ b/scripts/gc_queue/gc_queue.yy @@ -0,0 +1,12 @@ +{ + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "Functions", + "path": "folders/FAST/Core/Garbage/Functions.yy", + }, + "resourceVersion": "1.0", + "name": "gc_queue", + "tags": [], + "resourceType": "GMScript", +} \ No newline at end of file diff --git a/scripts/gc_stack/gc_grid.yy b/scripts/gc_stack/gc_grid.yy new file mode 100644 index 0000000..7d6f145 --- /dev/null +++ b/scripts/gc_stack/gc_grid.yy @@ -0,0 +1,12 @@ +{ + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "Functions", + "path": "folders/FAST/Core/Garbage/Functions.yy", + }, + "resourceVersion": "1.0", + "name": "gc_grid", + "tags": [], + "resourceType": "GMScript", +} \ No newline at end of file diff --git a/scripts/gc_stack/gc_stack.gml b/scripts/gc_stack/gc_stack.gml new file mode 100644 index 0000000..d51ad18 --- /dev/null +++ b/scripts/gc_stack/gc_stack.gml @@ -0,0 +1,12 @@ +/// @func gc_stack +function gc_stack() { + var _list = { pointer : ds_stack_create() }; + + GarbageManager().add( { + ref : weak_ref_create( _list ), + pointer : _list.pointer, + destroy : function() { ds_stack_destroy( pointer ); } + }); + return _list; + +} diff --git a/scripts/gc_stack/gc_stack.yy b/scripts/gc_stack/gc_stack.yy new file mode 100644 index 0000000..47e221e --- /dev/null +++ b/scripts/gc_stack/gc_stack.yy @@ -0,0 +1,12 @@ +{ + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "Functions", + "path": "folders/FAST/Core/Garbage/Functions.yy", + }, + "resourceVersion": "1.0", + "name": "gc_stack", + "tags": [], + "resourceType": "GMScript", +} \ No newline at end of file diff --git a/scripts/is_struct_of/is_struct_of.gml b/scripts/is_struct_of/is_struct_of.gml index 39be5a2..4ecad3e 100644 --- a/scripts/is_struct_of/is_struct_of.gml +++ b/scripts/is_struct_of/is_struct_of.gml @@ -7,7 +7,8 @@ function is_struct_of( _struct, _const ) { if ( _struct.is( _const ) ) { return true; } if ( typeof( _const ) == "number" && instanceof( _struct ) == script_get_name( _const ) ) { return true; } - } + } catch( _ex ) {} + return false } diff --git a/scripts/testScript/testScript.gml b/scripts/testScript/testScript.gml deleted file mode 100644 index 255fe94..0000000 --- a/scripts/testScript/testScript.gml +++ /dev/null @@ -1,5 +0,0 @@ -#macro Critical:ERROR_LEVEL 1 -#macro Nonfatal:ERROR_LEVEL 2 -#macro Notify:ERROR_LEVEL 3 - -gamepad = new Gamepad(); diff --git a/sprites/gfx_rect/2d9e9028-4884-4416-807f-4d256bc52bcd.png b/sprites/gfx_rect/2d9e9028-4884-4416-807f-4d256bc52bcd.png new file mode 100644 index 0000000000000000000000000000000000000000..c56e92c1a0b4dc3c61951b00bfa5d1231833ba64 GIT binary patch literal 326 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEVC405aSW-L^L9owSF?c#YjnZc zlTweC>DIA0d7j)oxjTJdmcYy&!;t>#hb=Q0rC2rQ3OMbE(towL{`<>6^H+&Jn6rA< zjmmi+@0|8(QSEP7%5nM|gSOzbye2UvAO3>(%+qE_DQu5?C$~iN!1t7QoX0nQDYx0? z5ZrKQ$t6SW$$l^67(ezse^>LVKB2lT%)#cLXOV literal 0 HcmV?d00001 diff --git a/sprites/gfx_rect/4496626e-d9c0-4172-b11b-beaa4a3ed939.png b/sprites/gfx_rect/4496626e-d9c0-4172-b11b-beaa4a3ed939.png new file mode 100644 index 0000000000000000000000000000000000000000..37071de9b6aaf5420d2a66a09fde1c8eaa071b8a GIT binary patch literal 305 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=KRjI=Ln`LHy>7^L$bi8uv31?N z1D7o-`1_yP%GmU(7l=;b(aVi;T^YaPzqBxyzCNew-B;&dZfQ_s1mR_B{kzZZwJ)=X zzyA5P=TsWqO0Y^!VJeqVlS_A~Kq)t*I1Gp^>!-Ts@O z`SHmU{RONhoY?RMd5!g3{pam^f8mz*h5%be-L7-4>l(x^s89+2scm4NcUWEO4EGit QU>GoXy85}Sb4q9e03cg0=u71gB@P4sp@~unZ!fox=@hvQO=7wdI&XikUdaL<&>Ak1Lb971=q&OEaU+{2v z`J`&M&*#s!C5PkJsjfKJFj1+@*QASS&5o%bJv^Q&_wEav%P7Ygcv|{wdqRK9iKo41 zw>x+{efi{eJ$r-7L!PI-?@Ar?6z#=juRCdYdK^zbpsFDMH-meg)Lo{1?)P^4S!l&F zd0nnc*;wLY#=2$S=ky5|L@s_7H?TKu|Y_am-=-EY&y zyvv^$IJ~$1-@nFyb;&IJX_a$(V&WpVjD5W4=IC5{Ao*9>1?WTu oU5CXCTNrwoEboFyt=akR{06bEPrT_o{ literal 0 HcmV?d00001 diff --git a/sprites/gfx_rect/b0c01adc-9776-4506-9753-394685f97d8d.png b/sprites/gfx_rect/b0c01adc-9776-4506-9753-394685f97d8d.png new file mode 100644 index 0000000000000000000000000000000000000000..b95f6d5d077eb77934a368c6e6516926624dfc0e GIT binary patch literal 248 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=`#oJ8Ln`LHy=lmI$Ux*kz=W!2 zPk7!gJpT2X(0=>fE>FVdQ&MBb@02&NckN^Mx literal 0 HcmV?d00001 diff --git a/sprites/gfx_rect/c86b7b92-37bf-4172-be8c-0b610cc2f123.png b/sprites/gfx_rect/c86b7b92-37bf-4172-be8c-0b610cc2f123.png new file mode 100644 index 0000000000000000000000000000000000000000..72a70e7ec36a5e479de3166296b6abeec85c2ca8 GIT binary patch literal 206 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=Q$1ZALn`LHz2GRwpuls$K<;z? z%!f++QmlK=)t)=<#-71@fia4?q~RKa>;h8pfi@Ln`LHy==(U;2>}`fc5>J z^c%t1>))Po_Bo|#r)Y5eTQQ&R0?h`o3nC8O8C(lkO;|55&0@-6^kv-Au#6$fA(#Ow z{h)3}@jUIe;}XBS=5DWK`O)=5tBR30tprSlO7G_{U_8yvmfpL4>1&|V89ZJ6T-G@y GGywppqf4Lw literal 0 HcmV?d00001 diff --git a/sprites/gfx_rect/gfx_rect.yy b/sprites/gfx_rect/gfx_rect.yy new file mode 100644 index 0000000..23e224a --- /dev/null +++ b/sprites/gfx_rect/gfx_rect.yy @@ -0,0 +1,102 @@ +{ + "bboxMode": 0, + "collisionKind": 1, + "type": 0, + "origin": 0, + "preMultiplyAlpha": false, + "edgeFiltering": false, + "collisionTolerance": 0, + "swfPrecision": 2.525, + "bbox_left": 0, + "bbox_right": 63, + "bbox_top": 0, + "bbox_bottom": 63, + "HTile": false, + "VTile": false, + "For3D": false, + "width": 64, + "height": 64, + "textureGroupId": { + "name": "Default", + "path": "texturegroups/Default", + }, + "swatchColours": null, + "gridX": 32, + "gridY": 32, + "frames": [ + {"compositeImage":{"FrameId":{"name":"c86b7b92-37bf-4172-be8c-0b610cc2f123","path":"sprites/gfx_rect/gfx_rect.yy",},"LayerId":null,"resourceVersion":"1.0","name":"","tags":[],"resourceType":"GMSpriteBitmap",},"images":[ + {"FrameId":{"name":"c86b7b92-37bf-4172-be8c-0b610cc2f123","path":"sprites/gfx_rect/gfx_rect.yy",},"LayerId":{"name":"beb297d0-2f46-44b6-ba44-0512f20e40e2","path":"sprites/gfx_rect/gfx_rect.yy",},"resourceVersion":"1.0","name":"","tags":[],"resourceType":"GMSpriteBitmap",}, + ],"parent":{"name":"gfx_rect","path":"sprites/gfx_rect/gfx_rect.yy",},"resourceVersion":"1.0","name":"c86b7b92-37bf-4172-be8c-0b610cc2f123","tags":[],"resourceType":"GMSpriteFrame",}, + {"compositeImage":{"FrameId":{"name":"4bed716d-214c-4535-9933-96c630218923","path":"sprites/gfx_rect/gfx_rect.yy",},"LayerId":null,"resourceVersion":"1.0","name":"","tags":[],"resourceType":"GMSpriteBitmap",},"images":[ + {"FrameId":{"name":"4bed716d-214c-4535-9933-96c630218923","path":"sprites/gfx_rect/gfx_rect.yy",},"LayerId":{"name":"beb297d0-2f46-44b6-ba44-0512f20e40e2","path":"sprites/gfx_rect/gfx_rect.yy",},"resourceVersion":"1.0","name":"","tags":[],"resourceType":"GMSpriteBitmap",}, + ],"parent":{"name":"gfx_rect","path":"sprites/gfx_rect/gfx_rect.yy",},"resourceVersion":"1.0","name":"4bed716d-214c-4535-9933-96c630218923","tags":[],"resourceType":"GMSpriteFrame",}, + {"compositeImage":{"FrameId":{"name":"455cc62f-330c-4167-8930-65b87edb5dbc","path":"sprites/gfx_rect/gfx_rect.yy",},"LayerId":null,"resourceVersion":"1.0","name":"","tags":[],"resourceType":"GMSpriteBitmap",},"images":[ + {"FrameId":{"name":"455cc62f-330c-4167-8930-65b87edb5dbc","path":"sprites/gfx_rect/gfx_rect.yy",},"LayerId":{"name":"beb297d0-2f46-44b6-ba44-0512f20e40e2","path":"sprites/gfx_rect/gfx_rect.yy",},"resourceVersion":"1.0","name":"","tags":[],"resourceType":"GMSpriteBitmap",}, + ],"parent":{"name":"gfx_rect","path":"sprites/gfx_rect/gfx_rect.yy",},"resourceVersion":"1.0","name":"455cc62f-330c-4167-8930-65b87edb5dbc","tags":[],"resourceType":"GMSpriteFrame",}, + {"compositeImage":{"FrameId":{"name":"f12ea975-efb7-4d74-89c6-0940289961b3","path":"sprites/gfx_rect/gfx_rect.yy",},"LayerId":null,"resourceVersion":"1.0","name":"","tags":[],"resourceType":"GMSpriteBitmap",},"images":[ + {"FrameId":{"name":"f12ea975-efb7-4d74-89c6-0940289961b3","path":"sprites/gfx_rect/gfx_rect.yy",},"LayerId":{"name":"beb297d0-2f46-44b6-ba44-0512f20e40e2","path":"sprites/gfx_rect/gfx_rect.yy",},"resourceVersion":"1.0","name":"","tags":[],"resourceType":"GMSpriteBitmap",}, + ],"parent":{"name":"gfx_rect","path":"sprites/gfx_rect/gfx_rect.yy",},"resourceVersion":"1.0","name":"f12ea975-efb7-4d74-89c6-0940289961b3","tags":[],"resourceType":"GMSpriteFrame",}, + {"compositeImage":{"FrameId":{"name":"b0c01adc-9776-4506-9753-394685f97d8d","path":"sprites/gfx_rect/gfx_rect.yy",},"LayerId":null,"resourceVersion":"1.0","name":"","tags":[],"resourceType":"GMSpriteBitmap",},"images":[ + {"FrameId":{"name":"b0c01adc-9776-4506-9753-394685f97d8d","path":"sprites/gfx_rect/gfx_rect.yy",},"LayerId":{"name":"beb297d0-2f46-44b6-ba44-0512f20e40e2","path":"sprites/gfx_rect/gfx_rect.yy",},"resourceVersion":"1.0","name":"","tags":[],"resourceType":"GMSpriteBitmap",}, + ],"parent":{"name":"gfx_rect","path":"sprites/gfx_rect/gfx_rect.yy",},"resourceVersion":"1.0","name":"b0c01adc-9776-4506-9753-394685f97d8d","tags":[],"resourceType":"GMSpriteFrame",}, + {"compositeImage":{"FrameId":{"name":"2d9e9028-4884-4416-807f-4d256bc52bcd","path":"sprites/gfx_rect/gfx_rect.yy",},"LayerId":null,"resourceVersion":"1.0","name":"","tags":[],"resourceType":"GMSpriteBitmap",},"images":[ + {"FrameId":{"name":"2d9e9028-4884-4416-807f-4d256bc52bcd","path":"sprites/gfx_rect/gfx_rect.yy",},"LayerId":{"name":"beb297d0-2f46-44b6-ba44-0512f20e40e2","path":"sprites/gfx_rect/gfx_rect.yy",},"resourceVersion":"1.0","name":"","tags":[],"resourceType":"GMSpriteBitmap",}, + ],"parent":{"name":"gfx_rect","path":"sprites/gfx_rect/gfx_rect.yy",},"resourceVersion":"1.0","name":"2d9e9028-4884-4416-807f-4d256bc52bcd","tags":[],"resourceType":"GMSpriteFrame",}, + {"compositeImage":{"FrameId":{"name":"4496626e-d9c0-4172-b11b-beaa4a3ed939","path":"sprites/gfx_rect/gfx_rect.yy",},"LayerId":null,"resourceVersion":"1.0","name":"","tags":[],"resourceType":"GMSpriteBitmap",},"images":[ + {"FrameId":{"name":"4496626e-d9c0-4172-b11b-beaa4a3ed939","path":"sprites/gfx_rect/gfx_rect.yy",},"LayerId":{"name":"beb297d0-2f46-44b6-ba44-0512f20e40e2","path":"sprites/gfx_rect/gfx_rect.yy",},"resourceVersion":"1.0","name":"","tags":[],"resourceType":"GMSpriteBitmap",}, + ],"parent":{"name":"gfx_rect","path":"sprites/gfx_rect/gfx_rect.yy",},"resourceVersion":"1.0","name":"4496626e-d9c0-4172-b11b-beaa4a3ed939","tags":[],"resourceType":"GMSpriteFrame",}, + ], + "sequence": { + "spriteId": {"name":"gfx_rect","path":"sprites/gfx_rect/gfx_rect.yy",}, + "timeUnits": 1, + "playback": 1, + "playbackSpeed": 30.0, + "playbackSpeedType": 0, + "autoRecord": true, + "volume": 1.0, + "length": 7.0, + "events": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore",}, + "moments": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore",}, + "tracks": [ + {"name":"frames","spriteId":null,"keyframes":{"Keyframes":[ + {"id":"905802d5-7e8a-4c46-ab44-0a1d452b0c4e","Key":0.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"c86b7b92-37bf-4172-be8c-0b610cc2f123","path":"sprites/gfx_rect/gfx_rect.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe",}, + {"id":"16d52685-c6ab-44c8-954e-d5a3ab798cc9","Key":1.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"4bed716d-214c-4535-9933-96c630218923","path":"sprites/gfx_rect/gfx_rect.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe",}, + {"id":"5d7a33de-cbbd-4a25-bcd6-46deaf7ad8d4","Key":2.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"455cc62f-330c-4167-8930-65b87edb5dbc","path":"sprites/gfx_rect/gfx_rect.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe",}, + {"id":"d13a8678-a8c5-4c1f-a2e5-0ff587f7d447","Key":3.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"f12ea975-efb7-4d74-89c6-0940289961b3","path":"sprites/gfx_rect/gfx_rect.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe",}, + {"id":"07091843-082d-47d2-a25d-f30a7095c2e8","Key":4.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"b0c01adc-9776-4506-9753-394685f97d8d","path":"sprites/gfx_rect/gfx_rect.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe",}, + {"id":"f858b86a-7e72-4c46-ab6d-d97e0fb03bca","Key":5.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"2d9e9028-4884-4416-807f-4d256bc52bcd","path":"sprites/gfx_rect/gfx_rect.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe",}, + {"id":"5c521405-8754-419d-9b62-f81d4b2dbae3","Key":6.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"4496626e-d9c0-4172-b11b-beaa4a3ed939","path":"sprites/gfx_rect/gfx_rect.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe",}, + ],"resourceVersion":"1.0","resourceType":"KeyframeStore",},"trackColour":0,"inheritsTrackColour":true,"builtinName":0,"traits":0,"interpolation":1,"tracks":[],"events":[],"modifiers":[],"isCreationTrack":false,"resourceVersion":"1.0","tags":[],"resourceType":"GMSpriteFramesTrack",}, + ], + "visibleRange": null, + "lockOrigin": false, + "showBackdrop": true, + "showBackdropImage": false, + "backdropImagePath": "", + "backdropImageOpacity": 0.5, + "backdropWidth": 1366, + "backdropHeight": 768, + "backdropXOffset": 0.0, + "backdropYOffset": 0.0, + "xorigin": 0, + "yorigin": 0, + "eventToFunction": {}, + "eventStubScript": null, + "parent": {"name":"gfx_rect","path":"sprites/gfx_rect/gfx_rect.yy",}, + "resourceVersion": "1.3", + "name": "gfx_rect", + "tags": [], + "resourceType": "GMSequence", + }, + "layers": [ + {"visible":true,"isLocked":false,"blendMode":0,"opacity":100.0,"displayName":"default","resourceVersion":"1.0","name":"beb297d0-2f46-44b6-ba44-0512f20e40e2","tags":[],"resourceType":"GMImageLayer",}, + ], + "parent": { + "name": "Pointer", + "path": "folders/TEST_CASES/Pointer.yy", + }, + "resourceVersion": "1.0", + "name": "gfx_rect", + "tags": [], + "resourceType": "GMSprite", +} \ No newline at end of file diff --git a/sprites/gfx_rect/layers/2d9e9028-4884-4416-807f-4d256bc52bcd/beb297d0-2f46-44b6-ba44-0512f20e40e2.png b/sprites/gfx_rect/layers/2d9e9028-4884-4416-807f-4d256bc52bcd/beb297d0-2f46-44b6-ba44-0512f20e40e2.png new file mode 100644 index 0000000000000000000000000000000000000000..c56e92c1a0b4dc3c61951b00bfa5d1231833ba64 GIT binary patch literal 326 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEVC405aSW-L^L9owSF?c#YjnZc zlTweC>DIA0d7j)oxjTJdmcYy&!;t>#hb=Q0rC2rQ3OMbE(towL{`<>6^H+&Jn6rA< zjmmi+@0|8(QSEP7%5nM|gSOzbye2UvAO3>(%+qE_DQu5?C$~iN!1t7QoX0nQDYx0? z5ZrKQ$t6SW$$l^67(ezse^>LVKB2lT%)#cLXOV literal 0 HcmV?d00001 diff --git a/sprites/gfx_rect/layers/4496626e-d9c0-4172-b11b-beaa4a3ed939/beb297d0-2f46-44b6-ba44-0512f20e40e2.png b/sprites/gfx_rect/layers/4496626e-d9c0-4172-b11b-beaa4a3ed939/beb297d0-2f46-44b6-ba44-0512f20e40e2.png new file mode 100644 index 0000000000000000000000000000000000000000..37071de9b6aaf5420d2a66a09fde1c8eaa071b8a GIT binary patch literal 305 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=KRjI=Ln`LHy>7^L$bi8uv31?N z1D7o-`1_yP%GmU(7l=;b(aVi;T^YaPzqBxyzCNew-B;&dZfQ_s1mR_B{kzZZwJ)=X zzyA5P=TsWqO0Y^!VJeqVlS_A~Kq)t*I1Gp^>!-Ts@O z`SHmU{RONhoY?RMd5!g3{pam^f8mz*h5%be-L7-4>l(x^s89+2scm4NcUWEO4EGit QU>GoXy85}Sb4q9e03cg0=u71gB@P4sp@~unZ!fox=@hvQO=7wdI&XikUdaL<&>Ak1Lb971=q&OEaU+{2v z`J`&M&*#s!C5PkJsjfKJFj1+@*QASS&5o%bJv^Q&_wEav%P7Ygcv|{wdqRK9iKo41 zw>x+{efi{eJ$r-7L!PI-?@Ar?6z#=juRCdYdK^zbpsFDMH-meg)Lo{1?)P^4S!l&F zd0nnc*;wLY#=2$S=ky5|L@s_7H?TKu|Y_am-=-EY&y zyvv^$IJ~$1-@nFyb;&IJX_a$(V&WpVjD5W4=IC5{Ao*9>1?WTu oU5CXCTNrwoEboFyt=akR{06bEPrT_o{ literal 0 HcmV?d00001 diff --git a/sprites/gfx_rect/layers/b0c01adc-9776-4506-9753-394685f97d8d/beb297d0-2f46-44b6-ba44-0512f20e40e2.png b/sprites/gfx_rect/layers/b0c01adc-9776-4506-9753-394685f97d8d/beb297d0-2f46-44b6-ba44-0512f20e40e2.png new file mode 100644 index 0000000000000000000000000000000000000000..b95f6d5d077eb77934a368c6e6516926624dfc0e GIT binary patch literal 248 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=`#oJ8Ln`LHy=lmI$Ux*kz=W!2 zPk7!gJpT2X(0=>fE>FVdQ&MBb@02&NckN^Mx literal 0 HcmV?d00001 diff --git a/sprites/gfx_rect/layers/c86b7b92-37bf-4172-be8c-0b610cc2f123/beb297d0-2f46-44b6-ba44-0512f20e40e2.png b/sprites/gfx_rect/layers/c86b7b92-37bf-4172-be8c-0b610cc2f123/beb297d0-2f46-44b6-ba44-0512f20e40e2.png new file mode 100644 index 0000000000000000000000000000000000000000..72a70e7ec36a5e479de3166296b6abeec85c2ca8 GIT binary patch literal 206 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=Q$1ZALn`LHz2GRwpuls$K<;z? z%!f++QmlK=)t)=<#-71@fia4?q~RKa>;h8pfi@Ln`LHy==(U;2>}`fc5>J z^c%t1>))Po_Bo|#r)Y5eTQQ&R0?h`o3nC8O8C(lkO;|55&0@-6^kv-Au#6$fA(#Ow z{h)3}@jUIe;}XBS=5DWK`O)=5tBR30tprSlO7G_{U_8yvmfpL4>1&|V89ZJ6T-G@y GGywppqf4Lw literal 0 HcmV?d00001