mirror of
https://github.com/Dadido3/noita-mapcap.git
synced 2024-11-18 17:17:31 +00:00
Add LuaNXML library
- Change VSCode lua addon to not ignore submodules - Add function to read resolutions from Noita config file
This commit is contained in:
parent
afaedf9159
commit
f2e582622e
3
.gitmodules
vendored
Normal file
3
.gitmodules
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
[submodule "files/libraries/luanxml"]
|
||||
path = files/libraries/luanxml
|
||||
url = https://github.com/zatherz/luanxml
|
3
.vscode/settings.json
vendored
3
.vscode/settings.json
vendored
@ -35,5 +35,6 @@
|
||||
"Lua.runtime.version": "LuaJIT",
|
||||
"Lua.format.defaultConfig": {
|
||||
"max_line_length": "512"
|
||||
}
|
||||
},
|
||||
"Lua.workspace.ignoreSubmodules": false
|
||||
}
|
@ -112,6 +112,10 @@ The rectangles for the different capture modes are defined in `.../Noita/mods/no
|
||||
|
||||
As the resulting stitched image is really big, you can read [this comment](https://github.com/Dadido3/noita-mapcap/issues/7#issuecomment-723591552) that addresses how you can view, convert or even self-host your images.
|
||||
|
||||
## Acknowledgements
|
||||
|
||||
This addon uses the [LuaNXML](https://github.com/zatherz/luanxml) library by [Zatherz](https://github.com/zatherz).
|
||||
|
||||
## License
|
||||
|
||||
[MIT](LICENSE)
|
||||
|
@ -10,6 +10,8 @@
|
||||
--------------------------
|
||||
|
||||
local CameraAPI = require("noita-api.camera")
|
||||
local NXML = require("luanxml.nxml")
|
||||
local Utils = require("noita-api.utils")
|
||||
local Vec2 = require("noita-api.vec2")
|
||||
|
||||
----------
|
||||
@ -26,6 +28,24 @@ local Coords = {
|
||||
VirtualResolution = Vec2(0, 0),
|
||||
}
|
||||
|
||||
---Reads and updates the internal, window and virtual resolutions from Noita's config files and API.
|
||||
---@return any error
|
||||
function Coords:ReadResolutions()
|
||||
local filename = Utils.GetSpecialDirectory("save-shared") .. "config.xml"
|
||||
|
||||
local f, err = io.open(filename, "r")
|
||||
if not f then return err end
|
||||
|
||||
local xml = NXML.parse(f:read("*a"))
|
||||
|
||||
self.WindowResolution = Vec2(tonumber(xml.attr["window_w"]), tonumber(xml.attr["window_h"]))
|
||||
self.InternalResolution = Vec2(tonumber(xml.attr["internal_size_w"]), tonumber(xml.attr["internal_size_h"]))
|
||||
self.VirtualResolution = Vec2(tonumber(MagicNumbersGetValue("VIRTUAL_RESOLUTION_X")), tonumber(MagicNumbersGetValue("VIRTUAL_RESOLUTION_Y")))
|
||||
|
||||
f:close()
|
||||
return nil
|
||||
end
|
||||
|
||||
---Returns the size of the internal rectangle in window/screen coordinates.
|
||||
---The internal rect is always uniformly scaled to fit inside the window rectangle.
|
||||
---@return Vec2
|
||||
|
1
files/libraries/luanxml
Submodule
1
files/libraries/luanxml
Submodule
@ -0,0 +1 @@
|
||||
Subproject commit 03d28907ccced296e5b2f8b16303a312ab4eaa3b
|
10
init.lua
10
init.lua
@ -16,6 +16,12 @@ if not async then
|
||||
require("coroutines") -- Loads Noita's coroutines library from `data/scripts/lib/coroutines.lua`.
|
||||
end
|
||||
|
||||
--------------------------
|
||||
-- Load library modules --
|
||||
--------------------------
|
||||
|
||||
local Coords = require("coordinates")
|
||||
|
||||
-------------------------------
|
||||
-- Load and run script files --
|
||||
-------------------------------
|
||||
@ -23,6 +29,7 @@ end
|
||||
dofile("mods/noita-mapcap/files/external.lua")
|
||||
dofile("mods/noita-mapcap/files/capture.lua")
|
||||
dofile("mods/noita-mapcap/files/ui.lua")
|
||||
--dofile("mods/noita-mapcap/files/blablabla.lua")
|
||||
|
||||
--------------------
|
||||
-- Hook callbacks --
|
||||
@ -78,6 +85,9 @@ end
|
||||
---The last point where the Mod API is available.
|
||||
---After this materials.xml will be loaded.
|
||||
function OnMagicNumbersAndWorldSeedInitialized()
|
||||
-- Get resolutions for correct coordinate transformations.
|
||||
-- This needs to be done once all magic numbers are set.
|
||||
Coords:ReadResolutions()
|
||||
end
|
||||
|
||||
---Called when the game is paused or unpaused.
|
||||
|
Loading…
Reference in New Issue
Block a user