Add button to place all players's cards to pile.

This commit is contained in:
Mikko Tuumanen 2020-06-10 17:28:45 +03:00
parent 3311fe4015
commit 72cbb4e96c

View File

@ -154,6 +154,7 @@ end
local function pile_pop(inv) local function pile_pop(inv)
local s=inv:get_size("main") local s=inv:get_size("main")
local i
for i=1,s,1 do for i=1,s,1 do
local stack=inv:get_stack("main",i) local stack=inv:get_stack("main",i)
if stack:get_count() > 0 then if stack:get_count() > 0 then
@ -202,6 +203,33 @@ local function lighten_pile(pos)
minetest.set_node(pos,node) minetest.set_node(pos,node)
end end
local function put_all_to_pile(pos,formname,fields,sender)
local player_inv=minetest.get_inventory({type="player", name=sender:get_player_name()})
local meta=minetest.get_meta(pos)
local pile_inv=meta:get_inventory()
local s=player_inv:get_size("main")
local i
if pile_peek_first(pile_inv) == nil then
lighten_pile(pos)
end
for i=1,s,1 do
local stack=player_inv:get_stack("main",i)
if stack:get_count() > 0 then
local cardname=stack:get_name()
if string.sub(cardname,1,cardprefixlen) == cardprefix then
local item=stack:take_item(1)
if item ~= nil then
add_to_inv(pile_inv, cardname)
player_inv:set_stack("main",i,stack)
end
end
end
end
if pile_peek_first(pile_inv) == nil then
darken_pile(pos)
end
end
local function draw_one_card(pos,formname,fields,sender) local function draw_one_card(pos,formname,fields,sender)
local player_inv=minetest.get_inventory({type="player", name=sender:get_player_name()}) local player_inv=minetest.get_inventory({type="player", name=sender:get_player_name()})
local meta=minetest.get_meta(pos) local meta=minetest.get_meta(pos)
@ -273,6 +301,8 @@ local function draw_card(pos,formname,fields,sender)
elseif fields.tostock then elseif fields.tostock then
minetest.close_formspec(sender:get_player_name(),"") minetest.close_formspec(sender:get_player_name(),"")
convert_pile(pos,"deck:stockpile") convert_pile(pos,"deck:stockpile")
elseif fields.alltopile then
put_all_to_pile(pos,formname,fields,sender)
end end
end end
@ -352,8 +382,9 @@ minetest.register_node("deck:chestpile", {
"list[context;main;0,0;13,4;]".. "list[context;main;0,0;13,4;]"..
"button[0,4;2,1;draw;Draw]".. "button[0,4;2,1;draw;Draw]"..
"button[2,4;2,1;drawall;Draw all]".. "button[2,4;2,1;drawall;Draw all]"..
"button[4,4;2,1;shuffle;Shuffle cards]".. "button[4,4;2,1;alltopile;Add all to pile]"..
"button[6,4;2,1;tostock;Make stockpile]".. "button[6,4;2,1;shuffle;Shuffle cards]"..
"button[8,4;2,1;tostock;Make stockpile]"..
"list[current_player;main;0,6;13,5;]") "list[current_player;main;0,6;13,5;]")
end, end,
on_dig = on_dig_pile_getpile, on_dig = on_dig_pile_getpile,
@ -375,7 +406,8 @@ minetest.register_node("deck:stockpile", {
meta:set_string("formspec","size[13,6]".. meta:set_string("formspec","size[13,6]"..
"button[0,0;2,1;draw;Draw]".. "button[0,0;2,1;draw;Draw]"..
"button[2,0;2,1;drawall;Draw all]".. "button[2,0;2,1;drawall;Draw all]"..
"button[4,0;2,1;shuffle;Shuffle cards]".. "button[4,0;2,1;alltopile;Add all to pile]"..
"button[6,0;2,1;shuffle;Shuffle cards]"..
"list[current_player;main;0,1;13,5;]" "list[current_player;main;0,1;13,5;]"
) )
end, end,