85 lines
4.2 KiB
C#
85 lines
4.2 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
|
|
namespace IdleSpectator;
|
|
|
|
/// <summary>Authored interest overlay for every live plots_library asset.</summary>
|
|
public static class PlotInterestCatalog
|
|
{
|
|
private static readonly Dictionary<string, DiscreteEventEntry> Entries =
|
|
new Dictionary<string, DiscreteEventEntry>(StringComparer.OrdinalIgnoreCase);
|
|
|
|
static PlotInterestCatalog()
|
|
{
|
|
Add("rebellion", 92f, "Politics", InterestOwnership.Signal, "Rebellion plot: {a}");
|
|
Add("new_war", 94f, "Politics", InterestOwnership.Signal, "War plot: {a}");
|
|
Add("alliance_create", 80f, "Politics", InterestOwnership.Signal, "Alliance plot: {a}");
|
|
Add("alliance_join", 72f, "Politics", InterestOwnership.Signal, "Join alliance: {a}");
|
|
Add("alliance_destroy", 86f, "Politics", InterestOwnership.Signal, "Break alliance: {a}");
|
|
Add("attacker_stop_war", 78f, "Politics", InterestOwnership.Signal, "End war plot: {a}");
|
|
Add("new_book", 55f, "Culture", InterestOwnership.Ambient, "Book plot: {a}");
|
|
Add("new_language", 62f, "Culture", InterestOwnership.Ambient, "Language plot: {a}");
|
|
Add("new_religion", 70f, "Culture", InterestOwnership.Signal, "Religion plot: {a}");
|
|
Add("new_culture", 68f, "Culture", InterestOwnership.Signal, "Culture plot: {a}");
|
|
Add("clan_ascension", 82f, "Politics", InterestOwnership.Signal, "Clan ascension: {a}");
|
|
Add("culture_divide", 75f, "Culture", InterestOwnership.Signal, "Culture divides: {a}");
|
|
Add("religion_schism", 84f, "Culture", InterestOwnership.Signal, "Religion schism: {a}");
|
|
Add("language_divergence", 60f, "Culture", InterestOwnership.Ambient, "Language splits: {a}");
|
|
Add("summon_meteor_rain", 96f, "Spectacle", InterestOwnership.Signal, "Meteor plot: {a}");
|
|
Add("summon_earthquake", 95f, "Spectacle", InterestOwnership.Signal, "Earthquake plot: {a}");
|
|
Add("summon_thunderstorm", 93f, "Spectacle", InterestOwnership.Signal, "Thunderstorm plot: {a}");
|
|
Add("summon_stormfront", 93f, "Spectacle", InterestOwnership.Signal, "Stormfront plot: {a}");
|
|
Add("summon_hellstorm", 97f, "Spectacle", InterestOwnership.Signal, "Hellstorm plot: {a}");
|
|
Add("summon_demons", 96f, "Spectacle", InterestOwnership.Signal, "Summon demons: {a}");
|
|
Add("summon_angles", 96f, "Spectacle", InterestOwnership.Signal, "Summon angels: {a}");
|
|
Add("summon_skeletons", 92f, "Spectacle", InterestOwnership.Signal, "Summon skeletons: {a}");
|
|
Add("summon_living_plants", 90f, "Spectacle", InterestOwnership.Signal, "Summon plants: {a}");
|
|
Add("big_cast_coffee", 58f, "Spectacle", InterestOwnership.Ambient, "Coffee ritual: {a}");
|
|
Add("big_cast_bubble_shield", 64f, "Spectacle", InterestOwnership.Ambient, "Bubble shield: {a}");
|
|
Add("big_cast_madness", 80f, "Spectacle", InterestOwnership.Signal, "Madness cast: {a}");
|
|
Add("big_cast_slowness", 70f, "Spectacle", InterestOwnership.Ambient, "Slowness cast: {a}");
|
|
Add("cause_rebellion", 90f, "Politics", InterestOwnership.Signal, "Cause rebellion: {a}");
|
|
}
|
|
|
|
private static void Add(
|
|
string id,
|
|
float strength,
|
|
string category,
|
|
InterestOwnership owns,
|
|
string label)
|
|
{
|
|
Entries[id] = new DiscreteEventEntry
|
|
{
|
|
Id = id,
|
|
EventStrength = strength,
|
|
Category = category,
|
|
OwnsCamera = owns,
|
|
CreatesInterest = true,
|
|
LabelTemplate = label
|
|
};
|
|
}
|
|
|
|
public static IEnumerable<string> AuthoredIds => Entries.Keys;
|
|
|
|
public static bool HasAuthored(string id) =>
|
|
!string.IsNullOrEmpty(id) && Entries.ContainsKey(id.Trim());
|
|
|
|
public static DiscreteEventEntry GetOrFallback(string id)
|
|
{
|
|
if (!string.IsNullOrEmpty(id) && Entries.TryGetValue(id.Trim(), out DiscreteEventEntry entry))
|
|
{
|
|
return entry;
|
|
}
|
|
|
|
string key = string.IsNullOrEmpty(id) ? "unknown" : id.Trim();
|
|
return new DiscreteEventEntry
|
|
{
|
|
Id = key,
|
|
EventStrength = 55f,
|
|
Category = "Plot",
|
|
OwnsCamera = InterestOwnership.Ambient,
|
|
LabelTemplate = "Plot ({id}): {a}",
|
|
IsFallback = true
|
|
};
|
|
}
|
|
}
|