forked from lizzie/lc_liberties
commit
7cd53d2e89
10 changed files with 212 additions and 0 deletions
@ -0,0 +1 @@ |
||||
/.idea |
@ -0,0 +1,15 @@ |
||||
-- LUALOCALS < --------------------------------------------------------- |
||||
local include, nodecore |
||||
= include, nodecore |
||||
-- LUALOCALS > --------------------------------------------------------- |
||||
|
||||
nodecore.register_concrete_pattern({description = "Crossy"}) |
||||
nodecore.register_concrete_pattern({description = "Starcrossy"}) |
||||
nodecore.register_concrete_pattern({description = "Edgy", paramtype2 = "4dir"}) |
||||
nodecore.register_concrete_pattern({description = "Corny", paramtype2 = "4dir"}) |
||||
|
||||
|
||||
--nodecore.register_concrete_pattern({description = "Crossy", groups = {goban = 1}}) |
||||
--nodecore.register_concrete_pattern({description = "Starcrossy", groups = {goban = 1}}) |
||||
--nodecore.register_concrete_pattern({description = "Edgy", paramtype2 = "4dir", groups = {goban = 1}}) |
||||
--nodecore.register_concrete_pattern({description = "Corny", paramtype2 = "4dir", groups = {goban = 1}}) |
@ -0,0 +1,9 @@ |
||||
-- LUALOCALS < --------------------------------------------------------- |
||||
local include, nodecore |
||||
= include, nodecore |
||||
-- LUALOCALS > --------------------------------------------------------- |
||||
|
||||
|
||||
include("goban") |
||||
include("rules") |
||||
include("stones") |
@ -0,0 +1,3 @@ |
||||
name = lc_liberties |
||||
description = A minimalistic approach to enabling the game of go. |
||||
depends = nc_api_all, nc_concrete |
@ -0,0 +1,81 @@ |
||||
-- LUALOCALS < --------------------------------------------------------- |
||||
local include, nodecore, pairs, string, table |
||||
= include, nodecore, pairs, string, table |
||||
local string_lower |
||||
= string.lower |
||||
|
||||
-- LUALOCALS > --------------------------------------------------------- |
||||
local modname = minetest.get_current_modname() |
||||
|
||||
--nodecore.gametime |
||||
|
||||
local cache = {} |
||||
|
||||
local relativeNeighbors = { |
||||
vector.new(1, 0, 0), |
||||
vector.new(0, 0, 1), |
||||
vector.new(-1, 0, 0), |
||||
vector.new(0, 0, -1) |
||||
} |
||||
|
||||
function check_position(pos) |
||||
local hash = minetest.hash_node_position(pos) |
||||
if cache[hash] then |
||||
return cache[hash] |
||||
end |
||||
|
||||
local ret = minetest.get_node(pos) |
||||
print_r(ret) |
||||
print_r(minetest.registered_items[ret.name]) |
||||
print(pos) |
||||
cache[hash] = ret |
||||
return ret |
||||
end |
||||
|
||||
function check_captures(pos) |
||||
minetest.chat_send_all(tostring(pos)) |
||||
nodecore.node_sound(pos, "dug") |
||||
|
||||
check_position(pos + vector.new(0, -1, 0)) |
||||
|
||||
local neighbors = {} |
||||
|
||||
for i,v in ipairs(relativeNeighbors) do |
||||
neighbors[i] = pos + v |
||||
end |
||||
|
||||
end |
||||
|
||||
function surrounded_group(pos) |
||||
local group = {} |
||||
local queue = {} |
||||
end |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
function print_r ( t ) |
||||
local print_r_cache={} |
||||
local function sub_print_r(t,indent) |
||||
if (print_r_cache[tostring(t)]) then |
||||
print(indent.."*"..tostring(t)) |
||||
else |
||||
print_r_cache[tostring(t)]=true |
||||
if (type(t)=="table") then |
||||
for pos,val in pairs(t) do |
||||
if (type(val)=="table") then |
||||
print(indent.."["..pos.."] => "..tostring(t).." {") |
||||
sub_print_r(val,indent..string.rep(" ",string.len(pos)+8)) |
||||
print(indent..string.rep(" ",string.len(pos)+6).."}") |
||||
else |
||||
print(indent.."["..pos.."] => "..tostring(val)) |
||||
end |
||||
end |
||||
else |
||||
print(indent..tostring(t)) |
||||
end |
||||
end |
||||
end |
||||
sub_print_r(t," ") |
||||
end |
@ -0,0 +1,103 @@ |
||||
-- LUALOCALS < --------------------------------------------------------- |
||||
local include, nodecore, pairs, string |
||||
= include, nodecore, pairs, string |
||||
local string_lower |
||||
= string.lower |
||||
-- LUALOCALS > --------------------------------------------------------- |
||||
|
||||
include("rules") |
||||
|
||||
local modname = minetest.get_current_modname() |
||||
|
||||
local function reg(name, basename, basedef) |
||||
local piecename = modname .. ":stone_" .. string_lower(name) |
||||
if minetest.registered_nodes[piecename] then return end |
||||
local desc = basedef.description or name |
||||
|
||||
local nodeDesc |
||||
|
||||
local nameStone = string.match(desc, "(.*)stone$") |
||||
if nameStone then |
||||
nodeDesc = nameStone |
||||
elseif desc == "Stone" then |
||||
nodeDesc = "Go" |
||||
else |
||||
nodeDesc = desc |
||||
end |
||||
nodeDesc = nodeDesc .. " Stone" |
||||
|
||||
minetest.register_node(":" .. piecename, { |
||||
description = nodeDesc, |
||||
drawtype = "nodebox", |
||||
|
||||
node_box = { |
||||
type = "fixed", |
||||
fixed = { |
||||
{-3/16, -8/16, -3/16, 3/16, -7/16, 3/16}, |
||||
{-5/16, -7/16, -5/16, 5/16, -6/16, 5/16}, |
||||
{-6/16, -6/16, -6/16, 6/16, -4/16, 6/16}, |
||||
{-7/16, -4/16, -7/16, 7/16, -2/16, 7/16}, |
||||
{-6/16, -2/16, -6/16, 6/16, 0/16, 6/16}, |
||||
{-5/16, 0/16, -5/16, 5/16, 1/16, 5/16}, |
||||
{-3/16, 1/16, -3/16, 3/16, 2/16, 3/16}, |
||||
} |
||||
}, |
||||
|
||||
selection_box = { |
||||
type = "fixed", |
||||
fixed = {-7/16, -8/16, -7/16, 7/16, 2/16, 7/16} |
||||
}, |
||||
|
||||
|
||||
tiles = { |
||||
basedef.tiles[1] |
||||
}, |
||||
|
||||
paramtype = "light", |
||||
sunlight_propagates = true, |
||||
groups = { |
||||
snappy = 1, |
||||
falling_node = 1, |
||||
falling_repose = 1, |
||||
}, |
||||
sounds = basedef.sounds, |
||||
|
||||
on_construct = check_captures |
||||
}) |
||||
|
||||
nodecore.register_craft({ |
||||
label = "shave " .. string_lower(desc) .. " into stones", |
||||
action = "pummel", |
||||
toolgroups = {choppy = 3}, |
||||
nodes = { |
||||
{ |
||||
match = "nc_concrete:" .. name .. "_starcrossy_ply", |
||||
--match = {groups = {goban = 1}}, |
||||
replace = "air" |
||||
} |
||||
}, |
||||
items = {{name = piecename, count = 3, scatter = 4}}, |
||||
}) |
||||
end |
||||
|
||||
local function buildall() |
||||
for _, v in ipairs(nodecore.registered_concrete_etchables) do |
||||
local basedef = v.name and v.basename and minetest.registered_nodes[v.basename] |
||||
if basedef then |
||||
reg(v.name, v.basename, basedef) |
||||
end |
||||
end |
||||
end |
||||
|
||||
do |
||||
local old_reg_etch = nodecore.register_concrete_etchable |
||||
local function helper(...) |
||||
buildall() |
||||
return ... |
||||
end |
||||
nodecore.register_concrete_etchable = function(...) |
||||
return helper(old_reg_etch(...)) |
||||
end |
||||
end |
||||
|
||||
buildall() |
After Width: | Height: | Size: 112 B |
After Width: | Height: | Size: 118 B |
After Width: | Height: | Size: 109 B |
After Width: | Height: | Size: 117 B |
Loading…
Reference in new issue