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--; }
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); }