Ticket #1404: tech.diff

File tech.diff, 4.5 KB (added by mimo, 9 years ago)
  • binaries/data/mods/public/maps/skirmishes/Acropolis

     
    11<?xml version="1.0" encoding="UTF-8"?>
    22
    33<Scenario version="5">
     4    <Script><![CDATA[//
     5
     6    let cmpPlayerManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_PlayerManager);
     7    let numPlayers = cmpPlayerManager.GetNumPlayers();
     8
     9    for (let i = 1; i < numPlayers; ++i)
     10    {
     11        let cmpPlayer = Engine.QueryInterface(cmpPlayerManager.GetPlayerByID(i), IID_Player);
     12        if (!cmpPlayer)
     13            continue;
     14        cmpPlayer.SetDisabledTechs({
     15            "gather_lumbering_ironaxes": true
     16        });
     17        cmpPlayer.SetStartingTechs({
     18            "phase_town_generic": true,
     19            "phase_town_athen": true,
     20        });
     21    }
     22
     23    //]]></Script>
    424    <Environment>
    525        <SkySet>cirrus</SkySet>
    626        <SunColour r="0.776471" g="0.729412" b="0.592157"/>
     
    2778827808        </Entity>
    2778927809    </Entities>
    2779027810    <Paths/>
    27791 </Scenario>
    27792  No newline at end of file
     27811</Scenario>
  • binaries/data/mods/public/simulation/components/Player.js

     
    4343        "stone": markForTranslation("Stone"),
    4444    }
    4545    this.disabledTemplates = {};
     46    this.disabledTechs = {};
     47    this.startingTechs = {};
    4648};
    4749
    4850Player.prototype.SetPlayerID = function(id)
     
    569571};
    570572
    571573/**
     574 * Initialise the starting techs
     575 */
     576Player.prototype.OnGlobalInitGame = function(msg)
     577{
     578    var cmpTechnologyManager = Engine.QueryInterface(this.entity, IID_TechnologyManager);
     579    if (!cmpTechnologyManager)
     580        return;
     581
     582    for (let tech in this.startingTechs)
     583        cmpTechnologyManager.ResearchTechnology(tech);
     584};
     585
     586/**
    572587 * Keep track of population effects of all entities that
    573588 * become owned or unowned by this player
    574589 */
     
    731746    return this.disabledTemplates;
    732747};
    733748
     749Player.prototype.AddDisabledTech = function(tech)
     750{
     751    this.disabledTechs[tech] = true;
     752    Engine.BroadcastMessage(MT_DisabledTechsChanged, {});
     753};
     754
     755Player.prototype.RemoveDisabledTech = function(tech)
     756{
     757    this.disabledTechs[tech] = false;
     758    Engine.BroadcastMessage(MT_DisabledTechsChanged, {});
     759};
     760
     761Player.prototype.SetDisabledTechs = function(techs)
     762{
     763    this.disabledTechs = techs;
     764    Engine.BroadcastMessage(MT_DisabledTechsChanged, {});
     765};
     766
     767Player.prototype.GetDisabledTechs = function()
     768{
     769    return this.disabledTechs;
     770};
     771
     772Player.prototype.AddStartingTech = function(tech)
     773{
     774    this.startingTechs[tech] = true;
     775};
     776
     777Player.prototype.SetStartingTechs = function(techs)
     778{
     779    this.startingTechs = techs;
     780};
     781
    734782Engine.RegisterComponentType(IID_Player, "Player", Player);
  • binaries/data/mods/public/simulation/components/ProductionQueue.js

     
    156156   
    157157    var techs = string.split(/\s+/);
    158158    var techList = [];
    159     var superseded = {}; // Stores the tech which supersedes the key
     159    var superseded = {}; // Stores the tech which supersedes the key
     160
     161    var cmpPlayer = QueryOwnerInterface(this.entity, IID_Player);
     162    if (cmpPlayer)
     163        var disabledTechs = cmpPlayer.GetDisabledTechs();
    160164   
    161165    // Add any top level technologies to an array which corresponds to the displayed icons
    162166    // Also store what a technology is superceded by in the superceded object {"tech1":"techWhichSupercedesTech1", ...}
     
    163167    for (var i in techs)
    164168    {
    165169        var tech = techs[i];
     170        if (disabledTechs && disabledTechs[tech])
     171            continue;
    166172        var template = cmpTechnologyManager.GetTechnologyTemplate(tech);
    167173        if (!template.supersedes || techs.indexOf(template.supersedes) === -1)
    168174            techList.push(tech);
  • binaries/data/mods/public/simulation/components/interfaces/Trigger.js

     
    11Engine.RegisterInterface("Trigger");
    22
    33Engine.RegisterMessageType("DisabledTemplatesChanged");
     4
     5Engine.RegisterMessageType("DisabledTechsChanged");