added alt override

cleaned up code
This commit is contained in:
Sheppy 2015-10-15 10:59:37 +02:00
parent 8fe2eb0dc6
commit e383773ad3

View File

@ -2,190 +2,63 @@
local ref_low local ref_low
--medium (construction) --medium (construction)
local ref_medium local ref_medium
local trigger = true
--header
function widget:GetInfo() function widget:GetInfo()
return { return {
name = "Selection Priority", name = "Selection Priority",
desc = "Sorts Units by Priority (atackunit>builder/commander>buildings)", desc = "Sorts Units by Priority (atackunit>builder/commander>buildings)",
author = "Sheppy", author = "Sheppy",
date = "2015", date = "2015",
license = "PD", -- should be compatible with Spring license = "GPL",
layer = 0, layer = 0,
enabled = true enabled = true
} }
end end
function widget:CommandNotify(cmdID, cmdParams, cmdOptions) function widget:CommandNotify(cmdID, cmdParams, cmdOptions)
if trigger then
ref_medium = {
--arm
"armcom",
"armaca",
"armca",
"armacv",
"armcv",
"armack",
"armck",
"armcs",
"armacs",
"armacsub",
"armch",
"corch",
--core
"coracs",
"corcom",
"coraca",
"coracv",
"corack",
"corca",
"corck",
"corcv",
"corcs",
"coracsub"
}
ref_low = {
--arm
"armaap",
"armalab",
"armap",
"armadvsol",
"armavp",
"armarad",
"armalab",
"armbrtha",
"armckfus",
"armclaw",
"armestor",
"armfmkr",
"armfus",
"armlab",
"armjam",
"armmakr",
"armmex",
"armmoho",
"armnanotc",
"armrad",
"armsolar",
"armtide",
"armvp",
"armwin",
"aafus",
"amgeo",
"armuwfus",
"armeyes",
"armason",
"armasy",
"armch",
"armhp",
"armmmkr",
"armsy",
"armgeo",
"armuwadves",
"armshltx",
"armuwmex",
"armuwmme",
"armuwmmm",
"cmgeo",
"asubpen",
--core
"coraap",
"coralab",
"corap",
"coradvsol",
"coravp",
"corarad",
"coralab",
"corbrtha",
"corckfus",
"corclaw",
"corestor",
"corfmkr",
"corfus",
"corlab",
"corjam",
"cormakr",
"cormex",
"cormoho",
"cornanotc",
"corrad",
"corsolar",
"cortide",
"corvp",
"corwin",
"aafus",
"amgeo",
"coruwfus",
"coreyes",
"corason",
"corasy",
"corch",
"corhp",
"cormmkr",
"corsy",
"corgeo",
"coruwadves",
"corshltx",
"coruwmex",
"coruwmme",
"coruwmmm",
"cmgeo",
"asubpen",
"armhp",
"armllt",
"armhlt",
"armjamt",
"corhp",
"corllt",
"corhlt",
"corjamt"
}
Spring.Echo("Done.")
trigger = false
end
local selected = Spring.GetSelectedUnits() local selected = Spring.GetSelectedUnits()
local low = {} local low = {}
local medium = {} local medium = {}
local high = {} local high = {}
local deselect = 0 local deselect = 0
--if teamID ~= Spring.GetMyTeamID() then return end local a = Spring.GetModKeyState() --alt ctrl ? shift , discard all but alt
--do nothing if CTRL is pressed
Spring.Echo(Spring.GetModKeyState())
if a then return end
--iterate Selection
for i=1,200 do for i=1,200 do
if selected[i] == nil then break end if selected[i] == nil then break end
--get name to match --get name to match
defID = UnitDefs[Spring.GetUnitDefID(selected[i])].name defID = UnitDefs[Spring.GetUnitDefID(selected[i])].name
--Spring.Echo(selected[i])
--Check what we got in out selection --Check what we got in out selection
if inTable(ref_low,defID) then if inTable(ref_low,defID) then
table.insert(low,selected[i]) table.insert(low,selected[i])
--Spring.Echo("reflow")
elseif inTable(ref_medium,defID) then elseif inTable(ref_medium,defID) then
--Spring.Echo("refmed")
table.insert(medium,selected[i]) table.insert(medium,selected[i])
if deselect == 0 then deselect = 1 end if deselect == 0 then deselect = 1 end
else else
--Spring.Echo("refhigh")
table.insert(high,selected[i]) table.insert(high,selected[i])
if deselect < 2 then deselect = 2 end if deselect < 2 then deselect = 2 end
end end
end end
--debug() --discard selections
--discard selections
if deselect == 1 then if deselect == 1 then
Spring.SelectUnitArray(medium,false) Spring.SelectUnitArray(medium,false)
Spring.SelectUnitArray(high,true) Spring.SelectUnitArray(high,true)
elseif deselect == 2 then elseif deselect == 2 then
Spring.SelectUnitArray(high,false) Spring.SelectUnitArray(high,false)
end end
--Spring.Echo("Dis was: " .. deselect)
end end
function inTable(tbl,item) function inTable(tbl,item)
for key, value in pairs(tbl) do for key, value in pairs(tbl) do
--Spring.Echo(key .. "val: " .. value)
if value == item then return true end if value == item then return true end
end end
return false return false
end end
--for debugging purpose only
function debug() function debug()
for key, value in pairs(medium) do for key, value in pairs(medium) do
Spring.Echo("val_med: " .. value) Spring.Echo("val_med: " .. value)
@ -198,3 +71,129 @@ function debug()
end end
end end
--loading unit-names to match against
function widget:Initialize()
ref_medium = {
--arm
"armcom",
"armaca",
"armca",
"armacv",
"armcv",
"armack",
"armck",
"armcs",
"armacs",
"armacsub",
"armch",
"corch",
--core
"coracs",
"corcom",
"coraca",
"coracv",
"corack",
"corca",
"corck",
"corcv",
"corcs",
"coracsub"
}
ref_low = {
--arm
"armaap",
"armalab",
"armap",
"armadvsol",
"armavp",
"armarad",
"armalab",
"armbrtha",
"armckfus",
"armclaw",
"armestor",
"armfmkr",
"armfus",
"armlab",
"armjam",
"armmakr",
"armmex",
"armmoho",
"armnanotc",
"armrad",
"armsolar",
"armtide",
"armvp",
"armwin",
"aafus",
"amgeo",
"armuwfus",
"armeyes",
"armason",
"armasy",
"armch",
"armhp",
"armmmkr",
"armsy",
"armgeo",
"armuwadves",
"armshltx",
"armuwmex",
"armuwmme",
"armuwmmm",
"cmgeo",
"asubpen",
--core
"coraap",
"coralab",
"corap",
"coradvsol",
"coravp",
"corarad",
"coralab",
"corbrtha",
"corckfus",
"corclaw",
"corestor",
"corfmkr",
"corfus",
"corlab",
"corjam",
"cormakr",
"cormex",
"cormoho",
"cornanotc",
"corrad",
"corsolar",
"cortide",
"corvp",
"corwin",
"aafus",
"amgeo",
"coruwfus",
"coreyes",
"corason",
"corasy",
"corch",
"corhp",
"cormmkr",
"corsy",
"corgeo",
"coruwadves",
"corshltx",
"coruwmex",
"coruwmme",
"coruwmmm",
"cmgeo",
"asubpen",
"armhp",
"armllt",
"armhlt",
"armjamt",
"corhp",
"corllt",
"corhlt",
"corjamt"
}
Spring.Echo("Namelist init done.")
end