diff --git a/solitaire.lua b/solitaire.lua index a0dd2a3..0b0af97 100644 --- a/solitaire.lua +++ b/solitaire.lua @@ -245,9 +245,15 @@ function update() if #stacks[1]==0 then exhausted=true end - --[[elseif hand and hover and - hand[1]==hover[1] and left - then--]] -- TODO: double click to send to finished + elseif hand and hover and + hand[1]==hover[1] and hand[2]==hover[2] and left + then + for i=3,6 do + if move_sel(hand, {i,#stacks[i]}) then + hand=nil + break + end + end elseif hand and hover and left then move_sel(hand,hover) hand=nil @@ -290,8 +296,8 @@ function update() last_left=left end -function move_sel(hand,hover) - if hand[1]==hover[1] then return end +function move_is_valid(hand,hover) + if hand[1]==hover[1] then return false end local moved_card=stacks[hand[1]][hand[2]] local is_valid_move=false if hover[1]==1 then @@ -327,14 +333,19 @@ function move_sel(hand,hover) is_valid_move=true end end - if is_valid_move then - for i=hand[2],#stacks[hand[1]] do - stacks[hand[1]][hand[2]].state=0 - table.insert( - stacks[hover[1]], - table.remove(stacks[hand[1]], hand[2])) - end + return is_valid_move +end + +function move_sel(hand,hover) + if not move_is_valid(hand, hover) then return false end + + for i=hand[2],#stacks[hand[1]] do + stacks[hand[1]][hand[2]].state=0 + table.insert( + stacks[hover[1]], + table.remove(stacks[hand[1]], hand[2])) end + return true end function sel_can_move(sel)