Ticket #1849: darkenUnavailable.2.patch

File darkenUnavailable.2.patch, 7.7 KB (added by wraitii, 11 years ago)

Better version

  • binaries/data/mods/public/gui/session/session.xml

     
    10081008            <repeat count="16">
    10091009                <object name="unitResearchButton[n]" hidden="true" style="iconButton" type="button" size="0 0 46 46" tooltip_style="sessionToolTipBottom">
    10101010                <object name="unitResearchIcon[n]" type="image" ghost="true" size="3 3 43 43"/>
    1011                 <object name="unitResearchSelection[n]" hidden="true" type="image" ghost="true" size="3 3 43 43" sprite="colour: 255 0 0 127"/>
     1011                <object name="unitResearchUnchosenIcon[n]" type="image" hidden="true" ghost="true" size="3 3 43 43" sprite="stretched:session/icons/tech_pair_would_be_unavailable.png"/>
    10121012                <object name="unitResearchUnaffordable[n]" hidden="true" type="image" ghost="true" size="3 3 43 43" sprite="colour: 255 0 0 60"/>
    10131013                </object>
    10141014            </repeat>
  • binaries/data/mods/public/gui/session/unit_commands.js

     
    554554                button1.tooltip = tooltip1;
    555555                button1.onpress = (function(e){ return function() { callback(e) } })(item.top);
    556556
    557                 // We add a red overlay to the paired button (we reuse the selection for that)
    558                 button1.onmouseenter = (function(e){ return function() { setOverlay(e, true) } })(selection);
    559                 button1.onmouseleave = (function(e){ return function() { setOverlay(e, false) } })(selection);
     557                // when we hover over a pair, the other one gets a red cross over it to show it won't be available any more.
     558                var unchosenIcon = getGUIObjectByName("unit"+guiName+"UnchosenIcon["+i+"]");
     559                var unchosenIcon1 = getGUIObjectByName("unit"+guiName+"UnchosenIcon["+(i+rowLength)+"]");
    560560
    561                 var selection1 = getGUIObjectByName("unit"+guiName+"Selection["+(i+rowLength)+"]");;
    562                 button.onmouseenter = (function(e){ return function() { setOverlay(e, true) } })(selection1);
    563                 button.onmouseleave = (function(e){ return function() { setOverlay(e, false) } })(selection1);
     561                button1.onmouseenter = (function(e){ return function() { setOverlay(e, true) } })(unchosenIcon);
     562                button1.onmouseleave = (function(e){ return function() { setOverlay(e, false) } })(unchosenIcon);
    564563
     564                button.onmouseenter = (function(e){ return function() { setOverlay(e, true) } })(unchosenIcon1);
     565                button.onmouseleave = (function(e){ return function() { setOverlay(e, false) } })(unchosenIcon1);
     566
    565567                pair.hidden = false;
    566568            }
    567569            else
    568570            {
    569                 // Hide the overlay
    570                 selection.hidden = true;
     571                // Hide the overlay.
     572                var unchosenIcon = getGUIObjectByName("unit"+guiName+"UnchosenIcon["+i+"]");
     573                unchosenIcon.hidden = true;
    571574            }
    572575        }
    573576
     
    664667        {
    665668            var grayscale = "";
    666669            button.enabled = true;
    667            
     670            if (affordableMask)
     671                affordableMask.hidden = true;   // actually used for the red "lack of resource" overlay, and darkening if unavailable. Sort of a hack.
     672   
     673            // Turn the icon into grayscale and darken it if it's unavailable
    668674            if (guiName != SELECTION && guiName != GARRISON && template.requiredTechnology && !Engine.GuiInterfaceCall("IsTechnologyResearched", template.requiredTechnology))
    669675            {
    670676                button.enabled = false;
    671677                var techName = getEntityNames(GetTechnologyData(template.requiredTechnology));
    672678                button.tooltip += "\nRequires " + techName;
    673679                grayscale = "grayscale:";
     680                affordableMask.hidden = false;
     681                affordableMask.sprite = "colour: 0 0 0 127";
    674682            }
    675683           
    676684            if (guiName == RESEARCH && !Engine.GuiInterfaceCall("CheckTechnologyRequirements", entType))
     
    678686                button.enabled = false;
    679687                button.tooltip += "\n" + GetTechnologyData(entType).requirementsTooltip;
    680688                grayscale = "grayscale:";
     689                affordableMask.hidden = false;
     690                affordableMask.sprite = "colour: 0 0 0 127";
    681691            }
    682692           
    683693            icon.sprite = "stretched:" + grayscale + "session/portraits/" + template.icon;
    684694           
    685695            if (guiName == RESEARCH)
    686696            {
    687                 // Check resource requirements for first button
    688                 affordableMask.hidden = true;
     697                // Check resource requirements
    689698                var neededResources = Engine.GuiInterfaceCall("GetNeededResources", template.cost);
    690699                if (neededResources)
    691700                {
     
    693702                    {
    694703                        button.enabled = false;
    695704                        affordableMask.hidden = false;
     705                       
     706                        var totalCost = 0;
     707                        for each (var resource in neededResources)
     708                            totalCost += resource;
     709                        var alpha = 50 + totalCost/10;
     710                        alpha = alpha > 125 ? 125 : alpha;
     711                        affordableMask.sprite = "colour: 255 0 0 " + (alpha);
    696712                    }
    697713                    button.tooltip += getNeededResourcesTooltip(neededResources);
    698714                }
     
    701717                {
    702718                    grayscale = "";
    703719                    button1.enabled = true;
     720                    affordableMask1.hidden = true;
    704721
    705722                    if (!Engine.GuiInterfaceCall("CheckTechnologyRequirements", entType1))
    706723                    {
    707724                        button1.enabled = false;
    708725                        button1.tooltip += "\n" + GetTechnologyData(entType1).requirementsTooltip;
    709726                        grayscale = "grayscale:";
     727                        affordableMask1.hidden = false;
     728                        affordableMask1.sprite = "colour: 0 0 0 127";
    710729                    }
    711730                    icon1.sprite = "stretched:" + grayscale + "session/portraits/" +template1.icon;
    712731
    713732                    // Check resource requirements for second button
    714                     affordableMask1.hidden = true;
    715733                    neededResources = Engine.GuiInterfaceCall("GetNeededResources", template1.cost);
    716734                    if (neededResources)
    717735                    {
     
    719737                        {
    720738                            button1.enabled = false;
    721739                            affordableMask1.hidden = false;
     740
     741                            var totalCost = 0;
     742                            for each (var resource in neededResources)
     743                                totalCost += resource;
     744                            var alpha = 50 + totalCost/10;
     745                            alpha = alpha > 125 ? 125 : alpha;
     746                            affordableMask1.sprite = "colour: 255 0 0 " + (alpha);
    722747                        }
    723748                        button1.tooltip += getNeededResourcesTooltip(neededResources);
    724749                    }
     
    732757            }
    733758            else if (guiName == CONSTRUCTION || guiName == TRAINING)
    734759            {
    735                 affordableMask.hidden = true;
    736760                var totalCosts = {};
    737761                var trainNum = 1;
    738762                var button_disableable = true;
     
    743767                        trainingCategory = template.trainingRestrictions.category;
    744768                    if (trainingCategory && playerState.entityLimits[trainingCategory] &&
    745769                        playerState.entityCounts[trainingCategory] >= playerState.entityLimits[trainingCategory])
     770                    {
    746771                        grayscale = "grayscale:";
     772                        affordableMask.hidden = false;
     773                        affordableMask.sprite = "colour: 0 0 0 100";
     774                    }
    747775                    icon.sprite = "stretched:" + grayscale + "session/portraits/" + template.icon;
    748776
    749777                    if (Engine.HotkeyIsPressed("session.batchtrain"))
     
    763791                var neededResources = Engine.GuiInterfaceCall("GetNeededResources", totalCosts);
    764792                if (neededResources)
    765793                {
    766                     var totalCost = 0;
    767794                    if (button.enabled !== false)
    768795                    {
     796                        button.enabled = (button_disableable ? false : true);
     797                        affordableMask.hidden = false;
     798
     799                        var totalCost = 0;
    769800                        for each (var resource in neededResources)
    770801                            totalCost += resource;
    771 
    772                         button.enabled = (button_disableable ? false : true);
    773                         affordableMask.hidden = false;
    774                         var alpha = 75 + totalCost/6;
    775                         alpha = alpha > 150 ? 150 : alpha;
     802                        var alpha = 50 + totalCost/10;
     803                        alpha = alpha > 125 ? 125 : alpha;
    776804                        affordableMask.sprite = "colour: 255 0 0 " + (alpha);
    777805                    }
    778806                    button.tooltip += getNeededResourcesTooltip(neededResources);