Exemple #1
0
        public override void WorldComponentTick()
        {
            if (ticks == 0)
            {
                /*
                 * for (int i = 0; i < HiveFactions.Count; i++)
                 * {
                 *      HiveFactionExtension extension = HiveFactions[i].def.GetModExtension<HiveFactionExtension>();
                 *      if (!extension.HasStages)
                 *      {
                 *              continue;
                 *      }
                 *
                 * }
                 */
                for (int i = 0; i < Find.FactionManager.AllFactionsListForReading.Count; i++)
                {
                    Faction f = Find.FactionManager.AllFactionsListForReading[i];
                    if (f != null)
                    {
                        if (f.def.HasModExtension <HiveFactionExtension>() && !f.defeated)
                        {
                            HiveFactionExtension ext = f.def.GetModExtension <HiveFactionExtension>();
                            //	Log.Message(f+" hive faction");
                            if (!ext.stages.NullOrEmpty())
                            {
                                //	Log.Message(f +" has " + ext.stages.Count + " stages");
                                //	Log.Message(Find.TickManager.TicksGame + " day passed " + DaysPassed + " CurrentPhase: " + ext.CurStage + " " + ext.ActiveStage);

                                if (CurrentPhase < ext.ActiveStage || !this.HiveFactionStages.ContainsKey(f.ToString()))
                                {
                                    UpdatePhase(f, ext.ActiveStage);
                                }
                            }
                            if (!ext.hiveStartMessageKey.NullOrEmpty())
                            {
                                if (!startMsg)
                                {
                                    startMsg = true;
                                    NewGameDialogMessage(f, ext.hiveStartMessageKey);
                                }
                            }
                            if (!ext.hiveActiveMessageKey.NullOrEmpty())
                            {
                                if (!activetMsg && DaysPassed > f.def.earliestRaidDays)
                                {
                                    activetMsg = true;
                                    HiveActiveDialogMessage(f, ext.ActiveStage, ext.hiveActiveMessageKey, ext.stages[ext.ActiveStage].DaysPassed - DaysPassed);
                                }
                            }
                        }
                    }
                }
                ticks = tickInterval;
            }
            ticks--;
        }
Exemple #2
0
        public void UpdatePhase(Faction f, int phase)
        {
            //	Log.Message(f+ " UpdatePhase Keyed: "+ this.HiveFactionStages.ContainsKey(f.ToString()));
            HiveFactionExtension hive = f.def.GetModExtension <HiveFactionExtension>();

            if (!hive.hiveStageProgressionKey.NullOrEmpty() && this.HiveFactionStages.ContainsKey(f.ToString()))
            {
                UpdatePhaseDialogMessage(f, phase, hive.hiveStageProgressionKey);
            }
            CurrentPhase = phase;
            HiveFactionStages.SetOrAdd(f.ToString(), phase);
        }