using System.Collections.Generic; using UnityEngine; namespace IdleSpectator; /// /// Centralized WorldLog asset ids and tier mapping. /// public static class WorldLogInterestTable { private static readonly Dictionary Tiers = new Dictionary { // Epic - world-shaping (wiki: Wars, Kingdoms fall, Disasters, city destroyed) ["diplomacy_war_started"] = InterestTier.Epic, ["total_war_started"] = InterestTier.Epic, ["kingdom_destroyed"] = InterestTier.Epic, ["kingdom_shattered"] = InterestTier.Epic, ["kingdom_fractured"] = InterestTier.Epic, ["city_destroyed"] = InterestTier.Epic, ["log_city_revolted"] = InterestTier.Epic, // Story - leadership / politics / favorites / founding ["kingdom_new"] = InterestTier.Story, ["city_new"] = InterestTier.Story, ["king_new"] = InterestTier.Story, ["king_dead"] = InterestTier.Story, ["king_killed"] = InterestTier.Story, ["king_fled_capital"] = InterestTier.Story, ["king_fled_city"] = InterestTier.Story, ["king_left"] = InterestTier.Story, ["alliance_new"] = InterestTier.Story, ["alliance_dissolved"] = InterestTier.Story, ["diplomacy_war_ended"] = InterestTier.Story, ["favorite_dead"] = InterestTier.Story, ["favorite_killed"] = InterestTier.Story, ["kingdom_royal_clan_new"] = InterestTier.Story, ["kingdom_royal_clan_changed"] = InterestTier.Story, ["kingdom_royal_clan_dead"] = InterestTier.Story, // Curiosity - biosphere footnotes ["race_dead"] = InterestTier.Curiosity }; public static bool TryGetTier(string assetId, out InterestTier tier) { if (string.IsNullOrEmpty(assetId)) { tier = InterestTier.Ambient; return false; } if (Tiers.TryGetValue(assetId, out tier)) { return true; } if (assetId.Contains("disaster") || assetId.StartsWith("worldlog_disaster")) { tier = InterestTier.Epic; return true; } tier = InterestTier.Ambient; return false; } public static string MakeLabel(WorldLogMessage message) { string id = message.asset_id ?? "event"; string a = message.special1; string b = message.special2; switch (id) { case "diplomacy_war_started": return $"War: {a} vs {b}"; case "total_war_started": return $"Total war: {a}"; case "kingdom_destroyed": return $"Kingdom fell: {a}"; case "kingdom_shattered": return $"Kingdom shattered: {a}"; case "kingdom_fractured": return $"Kingdom fractured: {a}"; case "city_destroyed": return $"City destroyed: {a}"; case "log_city_revolted": return $"Revolt: {a}"; case "kingdom_new": return $"New kingdom: {a}"; case "city_new": return $"New city: {a}"; case "king_new": return $"New king: {b} ({a})"; case "king_dead": return $"King died: {b} ({a})"; case "king_killed": return $"King killed: {b} ({a})"; case "king_fled_capital": return $"King fled capital: {b}"; case "king_fled_city": return $"King fled city: {b}"; case "alliance_new": return $"Alliance: {a}"; case "alliance_dissolved": return $"Alliance dissolved: {a}"; case "diplomacy_war_ended": return $"War ended: {a}"; case "kingdom_royal_clan_new": case "kingdom_royal_clan_changed": return $"Royal clan: {a}"; case "kingdom_royal_clan_dead": return $"Royal clan ended: {a}"; case "race_dead": return $"Species extinct: {a}"; case "favorite_dead": case "favorite_killed": return $"Favorite fell: {a}"; default: if (!string.IsNullOrEmpty(a) && !string.IsNullOrEmpty(b)) { return $"{id}: {a} / {b}"; } if (!string.IsNullOrEmpty(a)) { return $"{id}: {a}"; } return id; } } }