Esempio n. 1
0
        /// <summary>
        /// called by ReCalcProcessor
        /// </summary>
        /// <param name="colonyEntity"></param>
        public static void ReCalcRefiningRate(Entity colonyEntity)
        {
            //    Dictionary<Entity, int> installations = colonyEntity.GetDataBlob<ColonyInfoDB>().Installations;
            //    Dictionary<Entity, int> Refinerys = installations.Where(kvp => kvp.Key.HasDataBlob<RefineResourcesDB>()).ToDictionary(kvp => kvp.Key, kvp => kvp.Value);

            //    int pointsRate = 0;
            //    Dictionary<Guid, int> matRate = new Dictionary<Guid, int>();
            //    foreach (var RefineryKvp in Refinerys)
            //    {
            //        int points = RefineryKvp.Key.GetDataBlob<RefineResourcesDB>().RefineryPoints;

            //        foreach (var mat in RefineryKvp.Key.GetDataBlob<RefineResourcesDB>().RefinableMatsList)
            //        {
            //           matRate.SafeValueAdd(mat, points * RefineryKvp.Value);
            //        }
            //        pointsRate += points;
            //    }

            Dictionary <Guid, int> rates       = new Dictionary <Guid, int>();
            ComponentInstancesDB   instancesDB = colonyEntity.GetDataBlob <ComponentInstancesDB>();
            List <KeyValuePair <Entity, PrIwObsList <Entity> > > refineingEntities = instancesDB.SpecificInstances.GetInternalDictionary().Where(item => item.Key.HasDataBlob <RefineResourcesAtbDB>()).ToList();

            foreach (var refiningComponentDesignList in refineingEntities)
            {
                RefineResourcesAtbDB refineblob = refiningComponentDesignList.Key.GetDataBlob <RefineResourcesAtbDB>();
                foreach (var mineInstance in refiningComponentDesignList.Value)
                {
                    //todo check if it's damaged, check if it's enabled, check if there's enough workers here to.
                    foreach (var item in refineblob.RefinableMatsList)
                    {
                        rates.SafeValueAdd(item, refineblob.RefineryPoints);
                    }
                }
            }
            int maxPoints = 0;

            foreach (int p in rates.Values)
            {
                if (p > maxPoints)
                {
                    maxPoints = p;
                }
            }

            var refining = colonyEntity.GetDataBlob <ColonyRefiningDB>();

            refining.RefiningRates = rates;
            refining.PointsPerTick = maxPoints;
        }
Esempio n. 2
0
 public RefineResourcesAtbDB(RefineResourcesAtbDB db)
 {
     RefinableMatsList = new List <Guid>(db.RefinableMatsList);
     RefineryPoints    = db.RefineryPoints;
 }