From 03c9274b27173e3f96629e5e4e49e7e70d70ddf5 Mon Sep 17 00:00:00 2001 From: Merith-TK Date: Thu, 22 Apr 2021 11:23:31 -0700 Subject: [PATCH] More examples Yay! --- patchwork.md | 3 + .../computercraft/lua/rom/apis/paintutils.lua | 7 ++ .../computercraft/lua/rom/apis/parallel.lua | 83 +++++++++++++------ .../lua/rom/programs/fun/advanced/paint.lua | 4 +- 4 files changed, 70 insertions(+), 27 deletions(-) diff --git a/patchwork.md b/patchwork.md index 66aa64b76..3cd4cdf86 100644 --- a/patchwork.md +++ b/patchwork.md @@ -341,3 +341,6 @@ b0651082f472baee8f0fa8ec7ba95f433e2637bb Cleanup examples for the various modules ``` + +Ignored Documentation Changes, these are locate +``` diff --git a/src/main/resources/data/computercraft/lua/rom/apis/paintutils.lua b/src/main/resources/data/computercraft/lua/rom/apis/paintutils.lua index 7ae1006b8..b920341c3 100644 --- a/src/main/resources/data/computercraft/lua/rom/apis/paintutils.lua +++ b/src/main/resources/data/computercraft/lua/rom/apis/paintutils.lua @@ -64,6 +64,10 @@ end -- -- @treturn table|nil The parsed image data, suitable for use with -- @{paintutils.drawImage}, or `nil` if the file does not exist. +-- @usage Load an image and draw it. +-- +-- local image = paintutils.loadImage("test-image.nfp") +-- paintutils.drawImage(image, term.getCursorPos()) function loadImage(path) expect(1, path, "string") @@ -107,6 +111,7 @@ end -- @tparam number endY The end y position of the line. -- @tparam[opt] number colour The @{colors|color} of this pixel. This will be -- the current background colour if not specified. +-- @usage paintutils.drawLine(2, 3, 30, 7, colors.red) function drawLine(startX, startY, endX, endY, colour) expect(1, startX, "number") expect(2, startY, "number") @@ -170,6 +175,7 @@ end -- @tparam number endY The end y position of the line. -- @tparam[opt] number colour The @{colors|color} of this pixel. This will be -- the current background colour if not specified. +-- @usage paintutils.drawBox(2, 3, 30, 7, colors.red) function drawBox(startX, startY, endX, endY, nColour) expect(1, startX, "number") expect(2, startY, "number") @@ -222,6 +228,7 @@ end -- @tparam number endY The end y position of the line. -- @tparam[opt] number colour The @{colors|color} of this pixel. This will be -- the current background colour if not specified. +-- @usage paintutils.drawFilledBox(2, 3, 30, 7, colors.red) function drawFilledBox(startX, startY, endX, endY, nColour) expect(1, startX, "number") expect(2, startY, "number") diff --git a/src/main/resources/data/computercraft/lua/rom/apis/parallel.lua b/src/main/resources/data/computercraft/lua/rom/apis/parallel.lua index c787eff41..e826ed28e 100644 --- a/src/main/resources/data/computercraft/lua/rom/apis/parallel.lua +++ b/src/main/resources/data/computercraft/lua/rom/apis/parallel.lua @@ -1,18 +1,19 @@ ---- Provides a simple implementation of multitasking. --- --- Functions are not actually executed simultaniously, but rather this API will --- automatically switch between them whenever they yield (eg whenever they call --- @{coroutine.yield}, or functions that call that - eg `os.pullEvent` - or --- functions that call that, etc - basically, anything that causes the function --- to "pause"). --- --- Each function executed in "parallel" gets its own copy of the event queue, --- and so "event consuming" functions (again, mostly anything that causes the --- script to pause - eg `sleep`, `rednet.receive`, most of the `turtle` API, --- etc) can safely be used in one without affecting the event queue accessed by --- the other. --- --- @module parallel +--[[- Provides a simple implementation of multitasking. + +Functions are not actually executed simultaniously, but rather this API will +automatically switch between them whenever they yield (eg whenever they call +@{coroutine.yield}, or functions that call that - eg `os.pullEvent` - or +functions that call that, etc - basically, anything that causes the function +to "pause"). + +Each function executed in "parallel" gets its own copy of the event queue, +and so "event consuming" functions (again, mostly anything that causes the +script to pause - eg `sleep`, `rednet.receive`, most of the `turtle` API, +etc) can safely be used in one without affecting the event queue accessed by +the other. + +@module parallel +]] local function create(...) local tFns = table.pack(...) @@ -70,21 +71,53 @@ local function runUntilLimit(_routines, _limit) end end ---- Switches between execution of the functions, until any of them --- finishes. If any of the functions errors, the message is propagated upwards --- from the @{parallel.waitForAny} call. --- --- @tparam function ... The functions this task will run +--[[- Switches between execution of the functions, until any of them +finishes. If any of the functions errors, the message is propagated upwards +from the @{parallel.waitForAny} call. + +@tparam function ... The functions this task will run +@usage Print a message every second until the `q` key is pressed. + + local function tick() + while true do + os.sleep(1) + print("Tick") + end + end + local function wait_for_q() + repeat + local _, key = os.pullEvent("key") + until key == keys.q + print("Q was pressed!") + end + + parallel.waitForAny(tick, wait_for_q) + print("Everything done!") +]] function waitForAny(...) local routines = create(...) return runUntilLimit(routines, #routines - 1) end ---- Switches between execution of the functions, until all of them are --- finished. If any of the functions errors, the message is propagated upwards --- from the @{parallel.waitForAll} call. --- --- @tparam function ... The functions this task will run +--[[- Switches between execution of the functions, until all of them are +finished. If any of the functions errors, the message is propagated upwards +from the @{parallel.waitForAll} call. + +@tparam function ... The functions this task will run +@usage Start off two timers and wait for them both to run. + + local function a() + os.sleep(1) + print("A is done") + end + local function b() + os.sleep(3) + print("B is done") + end + + parallel.waitForAll(a, b) + print("Everything done!") +]] function waitForAll(...) local routines = create(...) return runUntilLimit(routines, 0) diff --git a/src/main/resources/data/computercraft/lua/rom/programs/fun/advanced/paint.lua b/src/main/resources/data/computercraft/lua/rom/programs/fun/advanced/paint.lua index 21934e3c5..9839d1077 100644 --- a/src/main/resources/data/computercraft/lua/rom/programs/fun/advanced/paint.lua +++ b/src/main/resources/data/computercraft/lua/rom/programs/fun/advanced/paint.lua @@ -252,8 +252,8 @@ local function drawCanvasLine(y) bg = bg .. color_hex_lookup[pixel or canvasColour] else text = text .. "\127" - fg = fg .. color_hex_lookup[canvasColour] - bg = bg .. color_hex_lookup[colours.grey] + fg = fg .. color_hex_lookup[colours.grey] + bg = bg .. color_hex_lookup[canvasColour] end end term.setCursorPos(1, y)