LCOV - code coverage report
Current view: top level - simulation/ai/common-api - technology.js (source / functions) Hit Total Coverage
Test: lcov.info Lines: 0 71 0.0 %
Date: 2023-04-02 12:52:40 Functions: 0 17 0.0 %

          Line data    Source code
       1           0 : LoadModificationTemplates();
       2             : 
       3           0 : var API3 = function(m)
       4             : {
       5             : 
       6             : /** Wrapper around a technology template */
       7             : 
       8           0 : m.Technology = function(templateName)
       9             : {
      10           0 :         this._templateName = templateName;
      11           0 :         let template = TechnologyTemplates.Get(templateName);
      12             : 
      13             :         // check if this is one of two paired technologies.
      14           0 :         this._isPair = template.pair !== undefined;
      15           0 :         if (this._isPair)
      16             :         {
      17           0 :                 let pairTech = TechnologyTemplates.Get(template.pair);
      18           0 :                 this._pairedWith = pairTech.top == templateName ? pairTech.bottom : pairTech.top;
      19             :         }
      20             : 
      21             :         // check if it only defines a pair:
      22           0 :         this._definesPair = template.top !== undefined;
      23           0 :         this._template = template;
      24             : };
      25             : 
      26             : /** returns generic, or specific if civ provided. */
      27           0 : m.Technology.prototype.name = function(civ)
      28             : {
      29           0 :         if (civ === undefined)
      30           0 :                 return this._template.genericName;
      31             : 
      32           0 :         if (this._template.specificName === undefined || this._template.specificName[civ] === undefined)
      33           0 :                 return undefined;
      34           0 :         return this._template.specificName[civ];
      35             : };
      36             : 
      37           0 : m.Technology.prototype.pairDef = function()
      38             : {
      39           0 :         return this._definesPair;
      40             : };
      41             : 
      42             : /** in case this defines a pair only, returns the two paired technologies. */
      43           0 : m.Technology.prototype.getPairedTechs = function()
      44             : {
      45           0 :         if (!this._definesPair)
      46           0 :                 return undefined;
      47             : 
      48           0 :         return [
      49             :                 new m.Technology(this._template.top),
      50             :                 new m.Technology(this._template.bottom)
      51             :         ];
      52             : };
      53             : 
      54           0 : m.Technology.prototype.pair = function()
      55             : {
      56           0 :         if (!this._isPair)
      57           0 :                 return undefined;
      58           0 :         return this._template.pair;
      59             : };
      60             : 
      61           0 : m.Technology.prototype.pairedWith = function()
      62             : {
      63           0 :         if (!this._isPair)
      64           0 :                 return undefined;
      65           0 :         return this._pairedWith;
      66             : };
      67             : 
      68           0 : m.Technology.prototype.cost = function(researcher)
      69             : {
      70           0 :         if (!this._template.cost)
      71           0 :                 return undefined;
      72           0 :         let cost = {};
      73           0 :         for (let type in this._template.cost)
      74             :         {
      75           0 :                 cost[type] = +this._template.cost[type];
      76           0 :                 if (researcher)
      77           0 :                         cost[type] *= researcher.techCostMultiplier(type);
      78             :         }
      79           0 :         return cost;
      80             : };
      81             : 
      82           0 : m.Technology.prototype.costSum = function(researcher)
      83             : {
      84           0 :         const cost = this.cost(researcher);
      85           0 :         if (!cost)
      86           0 :                 return 0;
      87           0 :         let ret = 0;
      88           0 :         for (let type in cost)
      89           0 :                 ret += cost[type];
      90           0 :         return ret;
      91             : };
      92             : 
      93           0 : m.Technology.prototype.researchTime = function()
      94             : {
      95           0 :         return this._template.researchTime || 0;
      96             : };
      97             : 
      98           0 : m.Technology.prototype.requirements = function(civ)
      99             : {
     100           0 :         return DeriveTechnologyRequirements(this._template, civ);
     101             : };
     102             : 
     103           0 : m.Technology.prototype.autoResearch = function()
     104             : {
     105           0 :         if (!this._template.autoResearch)
     106           0 :                 return undefined;
     107           0 :         return this._template.autoResearch;
     108             : };
     109             : 
     110           0 : m.Technology.prototype.supersedes = function()
     111             : {
     112           0 :         if (!this._template.supersedes)
     113           0 :                 return undefined;
     114           0 :         return this._template.supersedes;
     115             : };
     116             : 
     117           0 : m.Technology.prototype.modifications = function()
     118             : {
     119           0 :         if (!this._template.modifications)
     120           0 :                 return undefined;
     121           0 :         return this._template.modifications;
     122             : };
     123             : 
     124           0 : m.Technology.prototype.affects = function()
     125             : {
     126           0 :         if (!this._template.affects)
     127           0 :                 return undefined;
     128           0 :         return this._template.affects;
     129             : };
     130             : 
     131           0 : m.Technology.prototype.isAffected = function(classes)
     132             : {
     133           0 :         return this._template.affects && this._template.affects.some(affect => MatchesClassList(classes, affect));
     134             : };
     135             : 
     136           0 : return m;
     137             : 
     138             : }(API3);

Generated by: LCOV version 1.14