Changeset 3987


Ignore:
Timestamp:
08/04/15 11:57:27 (5 years ago)
Author:
Bluestone
Message:

sInfo shows info on sMenu build target (TODO: better info)

Location:
branches/BAR/luaui/widgets
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • branches/BAR/luaui/widgets/bgu_sInfo.lua

    r3985 r3987  
    77        date      = '2013', 
    88        license   = 'GNU GPL v2', 
    9         layer     = 2000, 
     9        layer     = 0, 
    1010        enabled   = true, 
    11         handler   = true, 
    1211    } 
    1312end 
     
    1918local healthBars = {} 
    2019 
    21 local curTip  
    22 local focusDefID 
     20local curTip -- general info about  
     21local focusDefID -- unitDefID of unit we are currently thinking of building 
    2322 
    2423local spGetTimer                = Spring.GetTimer 
     
    4039local teamColor = {r,g,b} 
    4140 
    42 local timer = spGetTimer() 
    43 local healthTimer = timer 
    44 local groundTimer = timer 
     41local groundTimer = spGetTimer() 
    4542 
    4643local green = '\255\0\255\0' 
     
    5350 
    5451function round(num, idp) 
    55   local mult = 10^(idp or 0) 
    56   return math.floor(num * mult + 0.5) / mult 
    57 end 
    58  
    59 ---------------------------------- 
     52    return string.format("%." .. (idp or 0) .. "f", num) -- lua is such a great language that this is the only reliable way to round 
     53end  
     54 
     55local function getInline(r,g,b) 
     56    if type(r) == 'table' then 
     57        return string.char(255, (r[1]*255), (r[2]*255), (r[3]*255)) 
     58    else 
     59        return string.char(255, (r*255), (g*255), (b*255)) 
     60    end 
     61end 
     62 
     63---------------------------------- 
     64-- multi-unitdef info 
     65 
    6066local function refineSelection(obj) 
    61         Spring.SelectUnitArray(obj.unitIDs) 
    62 end 
    63  
    64 -- add unitDefID (curTip = -1) 
     67    Spring.SelectUnitArray(obj.unitIDs) 
     68end 
     69 
    6570local function addUnitGroup(name,texture,overlay,unitIDs) 
    6671    local count = #unitIDs 
     
    110115end 
    111116 
    112  
    113 ---------------------------------- 
    114  
    115 function round(num, idp) 
    116     return string.format("%." .. (idp or 0) .. "f", num) -- lua is such a great language that this is the only reliable way to round 
    117 end 
     117local function addUnitGroupInfo() 
     118 
     119    unitCostText = Chili.TextBox:New{ 
     120        name     = "unitCostText", 
     121        x        = '70%', 
     122        height   = 28, 
     123        bottom   = 10, 
     124        text     = "", --mColour .. Mcost .. '\n' .. eColour .. Ecost, 
     125        fontsize = 12 
     126    } 
     127         
     128    unitResText = Chili.TextBox:New{ 
     129        name     = "unitResText", 
     130        x        = 5, 
     131        bottom   = 10, 
     132        height   = 24, 
     133        text     =  "", --ResToolTip(Mmake, Muse, Emake, Euse), 
     134        fontsize = 12, 
     135    } 
     136 
     137    unitInfo:AddChild(unitCostText) 
     138    unitInfo:AddChild(unitResText) 
     139     
     140    infoWindow:Show() 
     141end 
     142 
     143---------------------------------- 
     144-- single unitdef info 
    118145 
    119146local function ResToolTip(Mmake, Muse, Emake, Euse) 
    120147    return white .. "M: " .. green .. '+' .. round(Mmake,1) .. '  ' .. red .. '-' .. round(Muse,1) .. "\n" ..  white .. "E:  " .. green .. '+' .. round(Emake,1) .. '  ' .. red .. "-" .. round(Euse,1) 
    121148end 
    122  
    123149 
    124150local function showUnitInfo() 
     
    155181     
    156182    unitName = Chili.TextBox:New{ 
    157         x      = 0, 
     183        x      = 5, 
    158184        y      = 5, 
    159185        right  = 0, 
    160186        bottom = 0, 
    161         text   = " " .. humanName..'\n'.. " " .. description .. numText, 
     187        text   = humanName .. numText, 
    162188    } 
    163189     
     
    200226         
    201227    unitIcon = Chili.Image:New{ 
     228        parent   = unitInfo, 
    202229        file     = texture, 
    203230        y        = 0, 
     
    216243     
    217244     
    218     unitInfo:AddChild(unitIcon) 
    219      
    220245    if UnitDefs[defID].customParams.iscommander then 
    221246        unitCostText:Hide() 
     
    228253end 
    229254 
    230 local function addUnitGroupInfo() 
    231  
    232     unitCostText = Chili.TextBox:New{ 
    233         name     = "unitCostText", 
    234         x        = '70%', 
    235         height   = 28, 
    236         bottom   = 10, 
    237         text     = "", --mColour .. Mcost .. '\n' .. eColour .. Ecost, 
    238         fontsize = 12 
    239     } 
    240          
    241     unitResText = Chili.TextBox:New{ 
    242         name     = "unitResText", 
    243         x        = 5, 
    244         bottom   = 10, 
    245         height   = 24, 
    246         text     =  "", --ResToolTip(Mmake, Muse, Emake, Euse), 
    247         fontsize = 12, 
    248     } 
    249  
    250     unitInfo:AddChild(unitCostText) 
    251     unitInfo:AddChild(unitResText) 
    252      
    253     infoWindow:Show() 
    254 end 
     255---------------------------------- 
     256-- basic unit info 
    255257 
    256258local function showBasicUnitInfo() 
    257259 
    258260    basicUnitInfo = Chili.TextBox:New{ 
    259         x      = 0, 
     261        parent = unitInfo, 
     262        x      = 5, 
    260263        y      = 5, 
    261264        right  = 0, 
    262265        bottom = 0, 
    263         text   = " Units selected: " .. curTip.n .. "\n Unit types: " .. curTip.nType, 
    264     } 
    265      
    266     unitInfo:AddChild(basicUnitInfo) 
     266        text   = "Units selected: " .. curTip.n .. "\nUnit types: " .. curTip.nType, 
     267    } 
    267268     
    268269    infoWindow:Show() 
     
    270271 
    271272---------------------------------- 
     273-- focus unit info 
     274 
     275local function showFocusInfo() 
     276    local defID = curTip.focusDefID 
     277    local unitDef = UnitDefs[defID] 
     278 
     279    local description = UnitDefs[defID].tooltip or '' 
     280    local name        = UnitDefs[defID].name 
     281    local texture     = imageDir..'Units/' .. name .. '.dds' 
     282    local overlay     = imageDir..'Overlays/' .. name .. '.dds' 
     283    local humanName   = UnitDefs[defID].humanName 
     284 
     285    local Ecost = UnitDefs[defID].energyCost 
     286    local Mcost = UnitDefs[defID].metalCost  
     287    local maxHealth = UnitDefs[defID].health 
     288     
     289    focusName = Chili.TextBox:New{ 
     290        x      = 5, 
     291        y      = 5, 
     292        right  = 0, 
     293        bottom = 0, 
     294        text   = humanName .. "\n" .. description, 
     295    } 
     296 
     297    -- TODO: more/better info 
     298    focusMCost = Chili.TextBox:New{ 
     299        x        = 5, 
     300        bottom   = 35, 
     301        height   = 24, 
     302        text     =  getInline{0.6,0.6,0.8} .. "Metal Cost: " .. "\255\255\255\255" .. unitDef.metalCost, 
     303    } 
     304    focusECost = Chili.TextBox:New{ 
     305        x        = 5, 
     306        bottom   = 50, 
     307        height   = 24, 
     308        text     =  getInline{1,1,0.3} .. "Energy Cost: " .. "\255\255\255\255" .. unitDef.energyCost, 
     309    } 
     310    focusBuildTime = Chili.TextBox:New{ 
     311        x        = 5, 
     312        bottom   = 20, 
     313        height   = 24, 
     314        text     =  "Build Time: " .. unitDef.buildTime, -- this isn't very intuitive 
     315    } 
     316         
     317    focusIcon = Chili.Image:New{ 
     318        parent   = unitInfo, 
     319        file     = texture, 
     320        y        = 0, 
     321        height   = '100%', 
     322        width    = '100%', 
     323        children = { 
     324            Chili.Image:New{ 
     325                color    = teamColor, 
     326                height   = '100%', 
     327                width    = '100%', 
     328                file     = overlay, 
     329                children = {focusName, focusMCost, focusECost, focusBuildTime, focusRestText}, 
     330            } 
     331        } 
     332    } 
     333     
     334    infoWindow:Show()         
     335end 
     336 
     337---------------------------------- 
     338-- ground info 
     339 
    272340local max = math.max 
    273341local min = math.min 
     
    287355    return schar(255, r*255, g*255, b*255) 
    288356end 
    289 ---------------------------------- 
    290 -- ground info 
     357 
    291358local function updateGroundInfo() 
    292359    local mx, my    = spGetMouseState() 
     
    383450 
    384451---------------------------------- 
     452-- (re-)setting up  
     453 
    385454local function ChooseCurTip() 
    386455    curTip = {} 
     
    393462    curTip.sortedSelUnits = sortedSelUnits 
    394463    curTip.n = #selUnits 
    395     curTip.nType = #sortedSelUnits 
     464    curTip.nType = sortedSelUnits['n'] 
    396465 
    397466    if focusDefID then 
    398467        -- info about a unit we are thinking to build 
    399468        curTip.type = "focusDefID" 
    400         curTip.uDID = focusDefID          
     469        curTip.focusDefID = focusDefID          
    401470    elseif #selUnits == 0 then 
    402471        --info about point on map corresponding to cursor  
     
    415484         
    416485end 
     486 
    417487local function ResetTip() 
    418488    -- delete/hide the old tip 
     
    427497    ChooseCurTip() 
    428498 
    429     --if curTip.type=="focusDefID" then 
    430         -- TODO 
    431     --else 
    432     if curTip.type=="unitDefID" then 
     499    if curTip.type=="focusDefID" then 
     500        showFocusInfo() 
     501    elseif curTip.type=="unitDefID" then 
    433502        showUnitInfo() 
    434503        updateUnitInfo() 
     
    447516        showBasicUnitInfo()     
    448517    elseif curTip.type=="ground" then 
    449         -- nothing to do? 
    450     end 
    451 end 
    452  
    453 ---------------------------------- 
     518        updateGroundInfo() 
     519    end 
     520end 
     521 
     522---------------------------------- 
     523 
    454524function widget:Initialize()     
    455525    if (not WG.Chili) then 
     
    523593     
    524594    Spring.SetDrawSelectionInfo(false) 
     595     
    525596    widget:CommandsChanged() 
    526597end 
    527598 
    528599---------------------------------- 
     600 
    529601function widget:CommandsChanged() 
    530602    local r,g,b = Spring.GetTeamColor(Spring.GetMyTeamID()) 
  • branches/BAR/luaui/widgets/bgu_sMenu.lua

    r3985 r3987  
    693693    end 
    694694     
    695     -- make the tooltip for this unit 
    696     local tooltip = unitDef.humanName..' - '..unitDef.tooltip.. 
    697                     '\nCost: '..getInline{0.6,0.6,0.8}..unitDef.metalCost..'\b Metal, '..getInline{1,1,0.3}..unitDef.energyCost..'\b Energy'.. 
    698                     '\nBuild Time: '..unitDef.buildTime.. 
    699                   rangeText 
    700  
    701695    -- make the button for this unit 
    702696    local hotkey = WG.buildingHotkeys and WG.buildingHotkeys[unitDef.id] or '' 
     
    704698        name      = name, 
    705699        cmdId     = -unitDef.id, 
    706         tooltip   = tooltip, 
     700        --tooltip   = tooltip, 
    707701        caption   = '', 
    708702        disabled  = false, 
     
    710704        margin    = {0,0,0,0}, 
    711705        OnMouseUp = {cmdAction}, 
     706        OnMouseOver = {function() WG.sMenu.mouseOverDefID = unitDef.id end}, 
     707        OnMouseOut   = {function() WG.sMenu.mouseOverDefID = nil end}, -- FIXME 
    712708        children  = { 
    713709            Chili.Image:New{ 
     
    774770    updateRequired = true 
    775771    activeSelUDID = uDID 
     772    WG.sMenu.mouseOverDefID = uDID 
    776773    activeSelCmdID = nil 
    777774    if WG.InitialQueue then 
     
    787784    if Spring.GetGameFrame()>0 then gameStarted = true end 
    788785 
     786    WG.sMenu = {}     
     787     
    789788    if (not WG.Chili) then 
    790789        widgetHandler:RemoveWidget() 
     
    810809        width   = 120, 
    811810        padding = {0,0,0,0}, 
    812         margin  = {0,0,0,0} 
     811        margin  = {0,0,0,0}, 
    813812    } 
    814813     
     
    857856 
    858857    -- offer the option to force select build menu buttons 
    859     WG.SelectionMenuForceSelect = ForceSelect 
     858    WG.sMenu.ForceSelect = ForceSelect 
    860859end 
    861860 
  • branches/BAR/luaui/widgets/cmd_hotkeys.lua

    r3966 r3987  
    247247function SetActiveBuildUnit(uDID) 
    248248    Spring.SetActiveCommand('buildunit_'..UnitDefs[uDID].name) 
    249     if WG.InitialQueue and WG.SelectionMenuForceSelect then -- if the game hasn't started, we can't set buildunit_ as the active command, so we tell sMenu directly 
    250         WG.SelectionMenuForceSelect(uDID) 
     249    if WG.InitialQueue and WG.sMenu then -- if the game hasn't started, we can't set buildunit_ as the active command, so we tell sMenu directly 
     250        WG.sMenu.ForceSelect(uDID) 
    251251    end 
    252252end 
Note: See TracChangeset for help on using the changeset viewer.