Commit 8bebedcf authored by nanahira's avatar nanahira

no_more_support_for_non_kpro_clients

parent 7256a7a5
...@@ -144,97 +144,65 @@ function cm.CheckGroup(g,f,cg,min,max,...) ...@@ -144,97 +144,65 @@ function cm.CheckGroup(g,f,cg,min,max,...)
if ct>=min and ct<=max and f(sg,...) then return true end if ct>=min and ct<=max and f(sg,...) then return true end
return g:IsExists(cm.CheckGroupRecursive,1,sg,sg,g,f,min,max,ext_params) return g:IsExists(cm.CheckGroupRecursive,1,sg,sg,g,f,min,max,ext_params)
end end
if Group.SelectUnselect then function cm.SelectGroup(tp,desc,g,f,cg,min,max,...)
function cm.SelectGroup(tp,desc,g,f,cg,min,max,...) local min=min or 1
local min=min or 1 local max=max or g:GetCount()
local max=max or g:GetCount() local ext_params={...}
local ext_params={...} local sg=Group.CreateGroup()
local sg=Group.CreateGroup() local cg=cg or Group.CreateGroup()
local cg=cg or Group.CreateGroup() sg:Merge(cg)
sg:Merge(cg) local ct=sg:GetCount()
local ct=sg:GetCount() local ag=g:Filter(cm.CheckGroupRecursive,sg,sg,g,f,min,max,ext_params)
local ag=g:Filter(cm.CheckGroupRecursive,sg,sg,g,f,min,max,ext_params) while ct<max and ag:GetCount()>0 do
while ct<max and ag:GetCount()>0 do local finish=(ct>=min and ct<=max and f(sg,...))
local finish=(ct>=min and ct<=max and f(sg,...)) local seg=sg:Clone()
local seg=sg:Clone() local dmin=min-cg:GetCount()
local dmin=min-cg:GetCount() local dmax=math.min(max-cg:GetCount(),g:GetCount())
local dmax=math.min(max-cg:GetCount(),g:GetCount()) seg:Sub(cg)
seg:Sub(cg) Duel.Hint(HINT_SELECTMSG,tp,desc)
Duel.Hint(HINT_SELECTMSG,tp,desc) local tc=ag:SelectUnselect(seg,tp,finish,finish,dmin,dmax)
local tc=ag:SelectUnselect(seg,tp,finish,finish,dmin,dmax) if not tc then break end
if not tc then break end if sg:IsContains(tc) then
if sg:IsContains(tc) then sg:RemoveCard(tc)
sg:RemoveCard(tc) else
else sg:AddCard(tc)
sg:AddCard(tc)
end
ct=sg:GetCount()
ag=g:Filter(cm.CheckGroupRecursive,sg,sg,g,f,min,max,ext_params)
end
return sg
end
function cm.SelectGroupWithCancel(tp,desc,g,f,cg,min,max,...)
local min=min or 1
local max=max or g:GetCount()
local ext_params={...}
local sg=Group.CreateGroup()
local cg=cg or Group.CreateGroup()
sg:Merge(cg)
local ct=sg:GetCount()
local ag=g:Filter(cm.CheckGroupRecursive,sg,sg,g,f,min,max,ext_params)
while ct<max and ag:GetCount()>0 do
local finish=(ct>=min and ct<=max and f(sg,...))
local cancel=finish or ct==0
local seg=sg:Clone()
local dmin=min-cg:GetCount()
local dmax=math.min(max-cg:GetCount(),g:GetCount())
seg:Sub(cg)
Duel.Hint(HINT_SELECTMSG,tp,desc)
local tc=ag:SelectUnselect(seg,tp,finish,cancel,dmin,dmax)
if not tc then
if not finish then return end
break
end
if sg:IsContains(tc) then
sg:RemoveCard(tc)
else
sg:AddCard(tc)
end
ct=sg:GetCount()
ag=g:Filter(cm.CheckGroupRecursive,sg,sg,g,f,min,max,ext_params)
end end
return sg ct=sg:GetCount()
ag=g:Filter(cm.CheckGroupRecursive,sg,sg,g,f,min,max,ext_params)
end end
else return sg
function cm.SelectGroup(tp,desc,g,f,cg,min,max,...) end
local min=min or 1 function cm.SelectGroupWithCancel(tp,desc,g,f,cg,min,max,...)
local max=max or g:GetCount() local min=min or 1
local ext_params={...} local max=max or g:GetCount()
local sg=Group.CreateGroup() local ext_params={...}
if cg then local sg=Group.CreateGroup()
sg:Merge(cg) local cg=cg or Group.CreateGroup()
sg:Merge(cg)
local ct=sg:GetCount()
local ag=g:Filter(cm.CheckGroupRecursive,sg,sg,g,f,min,max,ext_params)
while ct<max and ag:GetCount()>0 do
local finish=(ct>=min and ct<=max and f(sg,...))
local cancel=finish or ct==0
local seg=sg:Clone()
local dmin=min-cg:GetCount()
local dmax=math.min(max-cg:GetCount(),g:GetCount())
seg:Sub(cg)
Duel.Hint(HINT_SELECTMSG,tp,desc)
local tc=ag:SelectUnselect(seg,tp,finish,cancel,dmin,dmax)
if not tc then
if not finish then return end
break
end end
local ct=sg:GetCount() if sg:IsContains(tc) then
local ag=g:Filter(cm.CheckGroupRecursive,sg,sg,g,f,min,max,ext_params) sg:RemoveCard(tc)
while ct<max and ag:GetCount()>0 do else
local minc=1 sg:AddCard(tc)
local finish=(ct>=min and ct<=max and f(sg,...))
if finish then
minc=0
if cm.master_rule_3_flag and not Duel.SelectYesNo(tp,210) then break end
end
Duel.Hint(HINT_SELECTMSG,tp,desc)
local tg=ag:Select(tp,minc,1,nil)
if tg:GetCount()==0 then break end
sg:Merge(tg)
ct=sg:GetCount()
ag=g:Filter(cm.CheckGroupRecursive,sg,sg,g,f,min,max,ext_params)
end end
return sg ct=sg:GetCount()
end ag=g:Filter(cm.CheckGroupRecursive,sg,sg,g,f,min,max,ext_params)
function cm.SelectGroupWithCancel(tp,desc,g,f,cg,min,max,...)
return cm.SelectGroup(tp,desc,g,f,cg,min,max,...)
end end
return sg
end end
--updated overlay --updated overlay
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment