Update capture script

- Make it possible to free roam before capturing
- Show coordinates (Also while capturing)
- Disable grid updates and some other magic number adjustments
This commit is contained in:
David Vogel 2019-10-25 17:29:52 +02:00
parent 91efa7b4ba
commit b923ee6f51
4 changed files with 54 additions and 28 deletions

View File

@ -26,7 +26,8 @@ local function resetPlayer()
end
function startCapturing()
local ox, oy = getPlayerPos()
local ox, oy = GameGetCameraPos()
--getPlayerPos()
ox, oy = math.floor(ox / CAPTURE_GRID_SIZE) * CAPTURE_GRID_SIZE, math.floor(oy / CAPTURE_GRID_SIZE) * CAPTURE_GRID_SIZE
local x, y = ox, oy
@ -43,8 +44,11 @@ function startCapturing()
local rx, ry = x * CAPTURE_PIXEL_SIZE, y * CAPTURE_PIXEL_SIZE
if not fileExists(string.format("mods/noita-mapcap/output/%d,%d.png", rx, ry)) then
GameSetCameraPos(x, y)
wait(CAPTURE_DELAY)
wait(CAPTURE_DELAY - 1)
UiHide = true -- Hide UI while capturing the screenshot
wait(1)
TriggerCapture(rx, ry)
UiHide = false
end
x, y = x + CAPTURE_GRID_SIZE, y
end
@ -53,8 +57,11 @@ function startCapturing()
local rx, ry = x * CAPTURE_PIXEL_SIZE, y * CAPTURE_PIXEL_SIZE
if not fileExists(string.format("mods/noita-mapcap/output/%d,%d.png", rx, ry)) then
GameSetCameraPos(x, y)
wait(CAPTURE_DELAY)
wait(CAPTURE_DELAY - 1)
UiHide = true
wait(1)
TriggerCapture(rx, ry)
UiHide = false
end
x, y = x, y + CAPTURE_GRID_SIZE
end
@ -64,8 +71,11 @@ function startCapturing()
local rx, ry = x * CAPTURE_PIXEL_SIZE, y * CAPTURE_PIXEL_SIZE
if not fileExists(string.format("mods/noita-mapcap/output/%d,%d.png", rx, ry)) then
GameSetCameraPos(x, y)
wait(CAPTURE_DELAY)
wait(CAPTURE_DELAY - 1)
UiHide = true
wait(1)
TriggerCapture(rx, ry)
UiHide = false
end
x, y = x - CAPTURE_GRID_SIZE, y
end
@ -74,8 +84,11 @@ function startCapturing()
local rx, ry = x * CAPTURE_PIXEL_SIZE, y * CAPTURE_PIXEL_SIZE
if not fileExists(string.format("mods/noita-mapcap/output/%d,%d.png", rx, ry)) then
GameSetCameraPos(x, y)
wait(CAPTURE_DELAY)
wait(CAPTURE_DELAY - 1)
UiHide = true
wait(1)
TriggerCapture(rx, ry)
UiHide = false
end
x, y = x, y - CAPTURE_GRID_SIZE
end

View File

@ -3,5 +3,10 @@
CAMERA_NO_MOVE_BUFFER_NEAR_VIEWPORT_EDGE="0.0"
CAMERA_MOUSE_INTERPOLATION_SPEED="0.0"
CAMERA_POSITION_INTERPOLATION_SPEED="50.0"
DRAW_PARALLAX_BACKGROUND="0">
DRAW_PARALLAX_BACKGROUND="0"
DEBUG_FREE_CAMERA_SPEED="10"
DEBUG_NO_LOGO_SPLASHES="1"
DEBUG_PAUSE_GRID_UPDATE="1"
DEBUG_PAUSE_BOX2D="1"
DEBUG_DISABLE_POSTFX_DITHERING="1">
</MagicNumbers>

View File

@ -3,31 +3,41 @@
-- This software is released under the MIT License.
-- https://opensource.org/licenses/MIT
UiHide = false
local UiReduce = false
async_loop(
function()
if modGUI ~= nil then
GuiStartFrame(modGUI)
GuiLayoutBeginVertical(modGUI, 50, 20)
if GuiButton(modGUI, 0, 0, "Start capturing map", 1) then
startCapturing()
GuiDestroy(modGUI)
modGUI = nil
GuiLayoutBeginVertical(modGUI, 50, 50)
if not UiReduce then
GuiTextCentered(modGUI, 0, 0, "You can freely look around and search a place to start capturing.")
GuiTextCentered(modGUI, 0, 0, "The mod will then take images in a spiral around your current view.")
GuiTextCentered(modGUI, 0, 0, "Use ESC and close the game to stop the process.")
GuiTextCentered(
modGUI,
0,
0,
'You can resume capturing just by restarting noita and pressing "Start capturing map" again,'
)
GuiTextCentered(modGUI, 0, 0, "the mod will skip already captured files.")
GuiTextCentered(
modGUI,
0,
0,
'If you want to start a new map, you have to delete all images from the "output" folder!'
)
if GuiButton(modGUI, 0, 0, ">> Start capturing map <<", 1) then
startCapturing()
UiReduce = true
end
end
if not UiHide then
local x, y = GameGetCameraPos()
GuiTextCentered(modGUI, 0, 0, string.format("Coordinates: %d, %d", x, y))
end
GuiTextCentered(modGUI, 0, 0, "Use ESC and close the game to stop the process.")
GuiTextCentered(
modGUI,
0,
0,
'You can resume capturing just by restarting noita and pressing "Start capturing map" again,'
)
GuiTextCentered(modGUI, 0, 0, "the mod will skip already captured files.")
GuiTextCentered(
modGUI,
0,
0,
'If you want to start a new map, you have to delete all images from the "output" folder!'
)
GuiLayoutEnd(modGUI)
end

View File

@ -3,6 +3,7 @@ dofile("mods/noita-mapcap/files/init.lua")
function OnPlayerSpawned(player_entity)
--EntityLoad("mods/noita-mapcap/files/luacomponent.xml") -- ffi isn't accessible from inside lua components, scrap that idea
modGUI = GuiCreate()
GameSetCameraFree(true)
end
function OnWorldPostUpdate() -- this is called every time the game has finished updating the world
@ -10,6 +11,3 @@ function OnWorldPostUpdate() -- this is called every time the game has finished
end
ModMagicNumbersFileAdd("mods/noita-mapcap/files/magic_numbers.xml") -- override some game constants
-- Only works up to the 16-10-2019 version of noita. And even then, ffi and other nice stuff is only accessible here.
--ModLuaFileAppend("data/scripts/director_init.lua", "mods/noita-mapcap/files/init.lua")