01332c2a0b
If the glyph is in an active area but the node it's attached to isn't loaded (so we can't check it for eligibility) then let the writing stay.
71 lines
1.6 KiB
Lua
71 lines
1.6 KiB
Lua
-- LUALOCALS < ---------------------------------------------------------
|
|
local ItemStack, minetest, nodecore, pairs, table
|
|
= ItemStack, minetest, nodecore, pairs, table
|
|
local table_sort
|
|
= table.sort
|
|
-- LUALOCALS > ---------------------------------------------------------
|
|
|
|
local glyphs = {
|
|
{name = "Cav"},
|
|
{name = "Odo"},
|
|
{name = "Niz"},
|
|
{name = "Zin", flipped = "niz"},
|
|
{name = "Mew"},
|
|
{name = "Fot"},
|
|
{name = "Tof", flipped = "fot"},
|
|
{name = "Yit"},
|
|
{name = "Geq"},
|
|
{name = "Qeg", flipped = "geq"},
|
|
{name = "Prx"},
|
|
{name = "Xrp", flipped = "prx"}
|
|
}
|
|
nodecore.writing_glyphs = glyphs
|
|
|
|
local glyph_next = {}
|
|
local glyph_alts = {}
|
|
for i = 2, #glyphs do
|
|
glyph_next[i - 1] = i
|
|
if #glyphs[i] > #glyphs[1] then
|
|
glyph_next[i - 1] = (i < #glyphs) and i + 1 or 1
|
|
glyph_alts[i] = i - 1
|
|
glyph_alts[i - 1] = i
|
|
end
|
|
glyph_next[#glyphs] = 1
|
|
end
|
|
nodecore.writing_glyph_next = glyph_next
|
|
nodecore.writing_glyph_alts = glyph_alts
|
|
|
|
local spinmap
|
|
do
|
|
local rots = {}
|
|
for i = 0, 23 do
|
|
local f = nodecore.facedirs[i]
|
|
local r = rots[f.t.n]
|
|
if not r then
|
|
r = {}
|
|
rots[f.t.n] = r
|
|
end
|
|
r[f.f.n] = i
|
|
end
|
|
spinmap = {}
|
|
for _, v in pairs(rots) do
|
|
local t = {}
|
|
for _, x in pairs(v) do t[#t + 1] = x end
|
|
table_sort(t)
|
|
for i = 1, #t - 1 do
|
|
spinmap[t[i]] = t[i + 1]
|
|
end
|
|
spinmap[t[#t]] = t[1]
|
|
end
|
|
end
|
|
nodecore.writing_spinmap = spinmap
|
|
|
|
local function writable(pos, node, default)
|
|
node = node or minetest.get_node_or_nil(pos)
|
|
if not node then return default end
|
|
local def = minetest.registered_nodes[node.name]
|
|
return def.walkable and def.paramtype ~= "light"
|
|
and not nodecore.tool_digs(ItemStack(""), def.groups)
|
|
end
|
|
nodecore.writing_writable = writable
|