Add button to place all players's cards to pile.
This commit is contained in:
parent
3311fe4015
commit
72cbb4e96c
38
init.lua
38
init.lua
@ -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,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user