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