mars_game/mods/hyperloop/deco.lua

242 lines
5.9 KiB
Lua

--[[
Hyperloop Mod
=============
Copyright (C) 2017 Joachim Stolberg
LGPLv2.1+
See LICENSE.txt for more information
History:
see init.lua
]]--
-- Load support for intllib.
local MP = minetest.get_modpath("hyperloop")
local I, NS = dofile(MP.."/intllib.lua")
local tilesL = {"hyperloop_alpsL.png", "hyperloop_seaL.png", "hyperloop_agyptL.png"}
local tilesR = {"hyperloop_alpsR.png", "hyperloop_seaR.png", "hyperloop_agyptR.png"}
-- determine facedir and pos on the right hand side from the given pos
function right_hand_side(pos, placer)
local facedir = hyperloop.get_facedir(placer)
pos = hyperloop.new_pos(pos, facedir, "1R", 0)
return facedir,pos
end
for idx = 1,3 do
minetest.register_node("hyperloop:poster"..idx.."L", {
description = I("Hyperloop Promo Poster ")..idx,
tiles = {
-- up, down, right, left, back, front
"hyperloop_skin2.png",
"hyperloop_skin2.png",
"hyperloop_skin2.png",
"hyperloop_skin2.png",
"hyperloop_skin2.png",
tilesL[idx],
},
drawtype = "nodebox",
node_box = {
type = "fixed",
fixed = {
{ -8/16, -8/16, -6/16, 8/16, 8/16, 8/16},
},
},
selection_box = {
type = "fixed",
fixed = { -8/16, -8/16, -6/16, 24/16, 8/16, 8/16},
},
after_place_node = function(pos, placer)
local meta = minetest.get_meta(pos)
local facedir
facedir, pos = right_hand_side(pos, placer)
meta:set_string("pos", minetest.pos_to_string(pos))
if minetest.get_node_or_nil(pos).name == "air" then
minetest.add_node(pos, {name="hyperloop:poster"..idx.."R", param2=facedir})
end
end,
on_destruct = function(pos)
local meta = minetest.get_meta(pos)
pos = minetest.string_to_pos(meta:get_string("pos"))
if pos ~= nil and minetest.get_node_or_nil(pos).name == "hyperloop:poster"..idx.."R" then
minetest.remove_node(pos)
end
end,
paramtype2 = "facedir",
light_source = 4,
is_ground_content = false,
groups = {cracky = 2, stone = 2},
})
minetest.register_node("hyperloop:poster"..idx.."R", {
description = I("Hyperloop Promo Poster ")..idx,
tiles = {
-- up, down, right, left, back, front
"hyperloop_skin2.png",
"hyperloop_skin2.png",
"hyperloop_skin2.png",
"hyperloop_skin2.png",
"hyperloop_skin2.png",
tilesR[idx],
},
drawtype = "nodebox",
node_box = {
type = "fixed",
fixed = {
{ -8/16, -8/16, -6/16, 8/16, 8/16, 8/16},
},
},
paramtype2 = "facedir",
light_source = 4,
is_ground_content = false,
groups = {cracky = 2, stone = 2, not_in_creative_inventory=1},
})
end
minetest.register_node("hyperloop:sign", {
description = I("Hyperloop Station Sign"),
tiles = {
-- up, down, right, left, back, front
"hyperloop_sign_top.png",
"hyperloop_sign.png",
},
light_source = 4,
is_ground_content = false,
groups = {cracky = 2, stone = 2},
})
minetest.register_node("hyperloop:signR", {
description = I("Hyperloop Station Sign Right"),
tiles = {
-- up, down, right, left, back, front
"hyperloop_sign3.png^[transformR90]",
"hyperloop_sign3.png^[transformR90]",
"hyperloop_sign3.png",
"hyperloop_sign3.png",
"hyperloop_sign2.png^[transformFX",
"hyperloop_sign2.png",
},
drawtype = "nodebox",
node_box = {
type = "fixed",
fixed = {
{ -8/16, -5/16, 6/16, 8/16, 5/16, 8/16},
},
},
after_place_node = function(pos, placer, itemstack, pointed_thing)
pos.y = pos.y - 1
if minetest.get_node_or_nil(pos).name ~= "air" then
local node = minetest.get_node(pos)
node.name = "hyperloop:signR_ground"
node.param2 = hyperloop.get_facedir(placer)
pos.y = pos.y + 1
minetest.swap_node(pos, node)
end
end,
paramtype2 = "facedir",
paramtype = 'light',
light_source = 4,
is_ground_content = false,
groups = {cracky = 2, stone = 2},
})
minetest.register_node("hyperloop:signL", {
description = I("Hyperloop Station Sign Left"),
tiles = {
-- up, down, right, left, back, front
"hyperloop_sign3.png^[transformR90]",
"hyperloop_sign3.png^[transformR90]",
"hyperloop_sign3.png",
"hyperloop_sign3.png",
"hyperloop_sign2.png",
"hyperloop_sign2.png^[transformFX",
},
drawtype = "nodebox",
node_box = {
type = "fixed",
fixed = {
{ -8/16, -5/16, 6/16, 8/16, 5/16, 8/16},
},
},
after_place_node = function(pos, placer, itemstack, pointed_thing)
pos.y = pos.y - 1
if minetest.get_node_or_nil(pos).name ~= "air" then
local node = minetest.get_node(pos)
node.name = "hyperloop:signL_ground"
node.param2 = hyperloop.get_facedir(placer)
pos.y = pos.y + 1
minetest.swap_node(pos, node)
end
end,
paramtype2 = "facedir",
paramtype = 'light',
light_source = 4,
is_ground_content = false,
groups = {cracky = 2, stone = 2},
})
minetest.register_node("hyperloop:signR_ground", {
description = I("Hyperloop Station Sign Right"),
tiles = {
-- up, down, right, left, back, front
"hyperloop_sign3.png^[transformR90]",
"hyperloop_sign3.png^[transformR90]",
"hyperloop_sign3.png",
"hyperloop_sign3.png",
"hyperloop_sign2_ground.png^[transformFX",
"hyperloop_sign2_ground.png",
},
drawtype = "nodebox",
node_box = {
type = "fixed",
fixed = {
{ -8/16, -8/16, -1/16, 8/16, 2/16, 1/16},
},
},
paramtype2 = "facedir",
drop = "hyperloop:signR",
paramtype = 'light',
light_source = 4,
is_ground_content = false,
groups = {cracky = 2, stone = 2, not_in_creative_inventory=1},
})
minetest.register_node("hyperloop:signL_ground", {
description = I("Hyperloop Station Sign Left"),
tiles = {
-- up, down, right, left, back, front
"hyperloop_sign3.png^[transformR90]",
"hyperloop_sign3.png^[transformR90]",
"hyperloop_sign3.png",
"hyperloop_sign3.png",
"hyperloop_sign2_ground.png",
"hyperloop_sign2_ground.png^[transformFX",
},
drawtype = "nodebox",
node_box = {
type = "fixed",
fixed = {
{ -8/16, -8/16, -1/16, 8/16, 2/16, 1/16},
},
},
paramtype2 = "facedir",
drop = "hyperloop:signL",
paramtype = 'light',
light_source = 4,
is_ground_content = false,
groups = {cracky = 2, stone = 2, not_in_creative_inventory=1},
})