LCOV - code coverage report
Current view: top level - globalscripts - StatusEffects.js (source / functions) Hit Total Coverage
Test: lcov.info Lines: 14 19 73.7 %
Date: 2023-04-02 12:52:40 Functions: 6 6 100.0 %

          Line data    Source code
       1             : /**
       2             :  * This class provides a cache for accessing status effects metadata stored in JSON files.
       3             :  * This class must be initialised before using, as initialising it directly in globalscripts would
       4             :  * introduce disk I/O every time e.g. a GUI page is loaded.
       5             :  */
       6             : class StatusEffectsMetadata
       7             : {
       8             :         constructor()
       9             :         {
      10           1 :                 this.statusEffectData = {};
      11             : 
      12           1 :                 let files = Engine.ListDirectoryFiles("simulation/data/status_effects", "*.json", false);
      13           1 :                 for (let filename of files)
      14             :                 {
      15           2 :                         let data = Engine.ReadJSONFile(filename);
      16           2 :                         if (!data)
      17           0 :                                 continue;
      18             : 
      19           2 :                         if (data.code in this.statusEffectData)
      20             :                         {
      21           0 :                                 error("Encountered two status effects with the code " + data.code);
      22           0 :                                 continue;
      23             :                         }
      24             : 
      25           2 :                         this.statusEffectData[data.code] = {
      26             :                                 "applierTooltip": data.applierTooltip || "",
      27             :                                 "code": data.code,
      28             :                                 "icon": data.icon || "default",
      29             :                                 "statusName": data.statusName || data.code,
      30             :                                 "receiverTooltip": data.receiverTooltip || ""
      31             :                         };
      32             :                 }
      33             : 
      34           1 :                 deepfreeze(this.statusEffectData);
      35             :         }
      36             : 
      37             :         /**
      38             :          * @param {string} code - The code of the Status Effect.
      39             :          * @return {Object} - The JSON data corresponding to the code.
      40             :          */
      41             :         getData(code)
      42             :         {
      43           6 :                 if (this.statusEffectData[code])
      44           6 :                         return this.statusEffectData[code];
      45             : 
      46           0 :                 warn("No status effects data found for: " + code + ".");
      47           0 :                 return {};
      48             :         }
      49             : 
      50             :         getApplierTooltip(code)
      51             :         {
      52           1 :                 return this.getData(code).applierTooltip;
      53             :         }
      54             : 
      55             :         getIcon(code)
      56             :         {
      57           1 :                 return this.getData(code).icon;
      58             :         }
      59             : 
      60             :         getName(code)
      61             :         {
      62           1 :                 return this.getData(code).statusName;
      63             :         }
      64             : 
      65             :         getReceiverTooltip(code)
      66             :         {
      67           1 :                 return this.getData(code).receiverTooltip;
      68             :         }
      69             : }

Generated by: LCOV version 1.14