worldbox-observer-mod/IdleSpectator/ActivityVoice.cs

177 lines
4.4 KiB
C#

namespace IdleSpectator;
public enum ActivityAssetKind
{
Creature,
Vehicle,
Special
}
public enum ActivityModifier
{
None,
Undead,
Elemental,
Mush,
Tumor,
Alien,
Construct
}
public enum ActivityBodyTag
{
Default,
Humanoid,
Canine,
Feline,
Bird,
Insect,
Arachnid,
Amphibian,
Aquatic,
Reptile,
Livestock,
Plant,
Fungi,
Protist,
Machina,
Mythic,
Gregalia,
Dragon,
Primate,
Rodent,
Ursid,
Seal,
Procyonid,
Hyaenid,
Armadillo,
Crawler,
Crystal,
Cold,
Crab,
Vehicle,
Undead,
Elemental,
Mush,
Tumor,
Alien,
Construct
}
public enum ActivityEcologyTag
{
Default,
Civilized,
Land,
Air,
Water,
Plant,
Fungal,
Mythic,
Machine,
Cold,
Alien,
Undead
}
/// <summary>One immutable interpretation of a live ActorAsset for activity prose.</summary>
public sealed class ProseVoice
{
public string LiveSpeciesId { get; }
public string BaseSpeciesId { get; }
public string BaseFamily { get; }
public ActivityBodyTag BaseBodyTag { get; }
public ActivityEcologyTag EcologyTag { get; }
public ActivityModifier Modifier { get; }
public ActivityBodyTag EffectiveActionTag { get; }
public ActivityAssetKind AssetKind { get; }
public bool BaseIsCiv { get; }
public bool BaseIsHumanoid { get; }
public bool BaseIsAnimal { get; }
public string FlavorKey { get; }
public int FlavorOrdinal { get; }
public string ProfileTag { get; }
public bool BaseRecoveryExpected { get; }
public bool BaseRecoverySucceeded { get; }
public ProseVoice(
string liveSpeciesId,
string baseSpeciesId,
string baseFamily,
ActivityBodyTag baseBodyTag,
ActivityEcologyTag ecologyTag,
ActivityModifier modifier,
ActivityBodyTag effectiveActionTag,
ActivityAssetKind assetKind,
bool baseIsCiv,
bool baseIsHumanoid,
bool baseIsAnimal,
string flavorKey,
int flavorOrdinal,
string profileTag,
bool baseRecoveryExpected,
bool baseRecoverySucceeded)
{
LiveSpeciesId = liveSpeciesId ?? "";
BaseSpeciesId = baseSpeciesId ?? LiveSpeciesId;
BaseFamily = string.IsNullOrEmpty(baseFamily) ? ActivityVoiceFamilies.Default : baseFamily;
BaseBodyTag = baseBodyTag;
EcologyTag = ecologyTag;
Modifier = modifier;
EffectiveActionTag = effectiveActionTag;
AssetKind = assetKind;
BaseIsCiv = baseIsCiv;
BaseIsHumanoid = baseIsHumanoid;
BaseIsAnimal = baseIsAnimal;
FlavorKey = string.IsNullOrEmpty(flavorKey) ? LiveSpeciesId : flavorKey;
FlavorOrdinal = flavorOrdinal;
ProfileTag = profileTag ?? "";
BaseRecoveryExpected = baseRecoveryExpected;
BaseRecoverySucceeded = baseRecoverySucceeded;
}
public static ProseVoice Unknown(string speciesId = "")
{
return new ProseVoice(
speciesId,
speciesId,
ActivityVoiceFamilies.Default,
ActivityBodyTag.Default,
ActivityEcologyTag.Default,
ActivityModifier.None,
ActivityBodyTag.Default,
ActivityAssetKind.Creature,
false,
false,
false,
speciesId,
0,
"",
false,
false);
}
}
public static class ActivityVoiceFamilies
{
public const string Default = "default";
public const string Humanoid = "humanoidCiv";
public const string Canine = "canine";
public const string Feline = "feline";
public const string Bird = "bird";
public const string Insect = "insect";
public const string Arachnid = "arachnid";
public const string Amphibian = "amphibian";
public const string Aquatic = "aquatic";
public const string Crustacean = "crustacean";
public const string Reptile = "reptile";
public const string Livestock = "livestock";
public const string Plant = "plant";
public const string Fungi = "fungi";
public const string Protist = "protist";
public const string Machina = "machina";
public const string Mythic = "mythic";
public const string Gregalia = "gregalia";
public const string Mammal = "mammal";
public const string Special = "special";
}