public HistoricalFigure(List <Property> properties, World world) : base(properties, world) { Initialize(); foreach (Property property in properties) { switch (property.Name) { case "appeared": Appeared = Convert.ToInt32(property.Value); break; case "birth_year": BirthYear = Convert.ToInt32(property.Value); break; case "birth_seconds72": BirthSeconds72 = Convert.ToInt32(property.Value); break; case "death_year": DeathYear = Convert.ToInt32(property.Value); break; case "death_seconds72": DeathSeconds72 = Convert.ToInt32(property.Value); break; case "name": Name = Formatting.InitCaps(property.Value.Replace("'", "`")); break; case "race": Race = string.Intern(Formatting.FormatRace(property.Value)); break; case "caste": Caste = string.Intern(Formatting.InitCaps(property.Value.ToLower().Replace('_', ' '))); break; case "associated_type": AssociatedType = string.Intern(Formatting.InitCaps(property.Value.ToLower().Replace('_', ' '))); break; case "deity": Deity = true; property.Known = true; break; case "skeleton": Skeleton = true; property.Known = true; break; case "force": Force = true; property.Known = true; Race = "Force"; break; case "zombie": Zombie = true; property.Known = true; break; case "ghost": Ghost = true; property.Known = true; break; case "hf_link": //Will be processed after all HFs have been loaded world.AddHFtoHfLink(this, property); property.Known = true; List <string> knownSubProperties = new List <string> { "hfid", "link_strength", "link_type" }; if (property.SubProperties != null) { foreach (string subPropertyName in knownSubProperties) { Property subProperty = property.SubProperties.FirstOrDefault(property1 => property1.Name == subPropertyName); if (subProperty != null) { subProperty.Known = true; } } } break; case "entity_link": case "entity_former_position_link": case "entity_position_link": world.AddHFtoEntityLink(this, property); property.Known = true; if (property.SubProperties != null) { foreach (string subPropertyName in KnownEntitySubProperties) { Property subProperty = property.SubProperties.FirstOrDefault(property1 => property1.Name == subPropertyName); if (subProperty != null) { subProperty.Known = true; } } } break; case "entity_reputation": world.AddReputation(this, property); property.Known = true; if (property.SubProperties != null) { foreach (string subPropertyName in Reputation.KnownReputationSubProperties) { Property subProperty = property.SubProperties.FirstOrDefault(property1 => property1.Name == subPropertyName); if (subProperty != null) { subProperty.Known = true; } } } break; case "entity_squad_link": case "entity_former_squad_link": property.Known = true; if (property.SubProperties != null) { foreach (string subPropertyName in KnownEntitySquadLinkProperties) { Property subProperty = property.SubProperties.FirstOrDefault(property1 => property1.Name == subPropertyName); if (subProperty != null) { subProperty.Known = true; } } } break; case "relationship_profile_hf": case "relationship_profile_hf_visual": property.Known = true; if (property.SubProperties != null) { RelationshipProfiles.Add(new RelationshipProfileHf(property.SubProperties)); } break; case "site_link": world.AddHFtoSiteLink(this, property); property.Known = true; if (property.SubProperties != null) { foreach (string subPropertyName in KnownSiteLinkSubProperties) { Property subProperty = property.SubProperties.FirstOrDefault(property1 => property1.Name == subPropertyName); if (subProperty != null) { subProperty.Known = true; } } } break; case "hf_skill": property.Known = true; if (property.SubProperties != null) { Skills.Add(new Skill(property.SubProperties)); } break; case "active_interaction": ActiveInteractions.Add(string.Intern(property.Value)); break; case "interaction_knowledge": InteractionKnowledge.Add(string.Intern(property.Value)); break; case "animated": Animated = true; property.Known = true; break; case "animated_string": if (AnimatedType != "") { throw new Exception("Animated Type already exists."); } AnimatedType = Formatting.InitCaps(property.Value); break; case "journey_pet": JourneyPets.Add(Formatting.FormatRace(property.Value)); break; case "goal": Goal = Formatting.InitCaps(property.Value); break; case "sphere": Spheres.Add(property.Value); break; case "current_identity_id": CurrentIdentityId = Convert.ToInt32(property.Value); break; case "used_identity_id": UsedIdentityIds.Add(Convert.ToInt32(property.Value)); break; case "ent_pop_id": EntityPopulationId = Convert.ToInt32(property.Value); break; case "holds_artifact": HoldingArtifacts.Add(world.GetArtifact(Convert.ToInt32(property.Value))); break; case "adventurer": Adventurer = true; property.Known = true; break; case "breed_id": BreedId = property.Value; if (!string.IsNullOrWhiteSpace(BreedId)) { if (world.Breeds.ContainsKey(BreedId)) { world.Breeds[BreedId].Add(this); } else { world.Breeds.Add(BreedId, new List <HistoricalFigure> { this }); } } break; case "sex": property.Known = true; break; } } if (string.IsNullOrWhiteSpace(Name)) { Name = !string.IsNullOrWhiteSpace(AnimatedType) ? Formatting.InitCaps(AnimatedType) : "(Unnamed)"; } if (Adventurer) { world.AddPlayerRelatedDwarfObjects(this); } }
public HistoricalFigure(List <Property> properties, World world) : base(properties, world) { Initialize(); List <string> knownEntitySubProperties = new List <string>() { "entity_id", "link_strength", "link_type", "position_profile_id", "start_year", "end_year" }; List <string> knownReputationSubProperties = new List <string>() { "entity_id", "unsolved_murders", "first_ageless_year", "first_ageless_season_count", "rep_enemy_fighter" }; List <string> knownSiteLinkSubProperties = new List <string>() { "link_type", "site_id", "sub_id", "entity_id" }; List <string> knownEntitySquadLinkProperties = new List <string>() { "squad_id", "squad_position", "entity_id", "start_year", "end_year" }; List <string> knownRelationshipProfileProperties = new List <string>() { "hf_id", "meet_count", "last_meet_year", "last_meet_seconds72", "rep_friendly", "rep_buddy", "rep_grudge" }; foreach (Property property in properties) { switch (property.Name) { case "appeared": Appeared = Convert.ToInt32(property.Value); break; case "birth_year": BirthYear = Convert.ToInt32(property.Value); break; case "birth_seconds72": BirthSeconds72 = Convert.ToInt32(property.Value); break; case "death_year": DeathYear = Convert.ToInt32(property.Value); break; case "death_seconds72": DeathSeconds72 = Convert.ToInt32(property.Value); break; case "name": Name = String.Intern(Formatting.InitCaps(property.Value)); break; case "race": Race = String.Intern(Formatting.FormatRace(property.Value)); break; case "caste": Caste = Formatting.InitCaps(property.Value.ToLower().Replace('_', ' ')); break; case "associated_type": AssociatedType = Formatting.InitCaps(property.Value.ToLower().Replace('_', ' ')); break; case "deity": Deity = true; property.Known = true; break; case "skeleton": Skeleton = true; property.Known = true; break; case "force": Force = true; property.Known = true; break; case "zombie": Zombie = true; property.Known = true; break; case "ghost": Ghost = true; property.Known = true; break; case "hf_link": //Will be processed after all HFs have been loaded world.AddHFtoHFLink(this, property); property.Known = true; List <string> knownSubProperties = new List <string>() { "hfid", "link_strength", "link_type" }; foreach (string subPropertyName in knownSubProperties) { Property subProperty = property.SubProperties.FirstOrDefault(property1 => property1.Name == subPropertyName); if (subProperty != null) { subProperty.Known = true; } } break; case "entity_link": case "entity_former_position_link": case "entity_position_link": world.AddHFtoEntityLink(this, property); foreach (string subPropertyName in knownEntitySubProperties) { Property subProperty = property.SubProperties.FirstOrDefault(property1 => property1.Name == subPropertyName); if (subProperty != null) { subProperty.Known = true; } } break; case "entity_reputation": world.AddReputation(this, property); foreach (string subPropertyName in knownReputationSubProperties) { Property subProperty = property.SubProperties.FirstOrDefault(property1 => property1.Name == subPropertyName); if (subProperty != null) { subProperty.Known = true; } } break; case "entity_squad_link": case "entity_former_squad_link": property.Known = true; foreach (string subPropertyName in knownEntitySquadLinkProperties) { Property subProperty = property.SubProperties.FirstOrDefault(property1 => property1.Name == subPropertyName); if (subProperty != null) { subProperty.Known = true; } } break; case "relationship_profile_hf": property.Known = true; foreach (string subPropertyName in knownRelationshipProfileProperties) { Property subProperty = property.SubProperties.FirstOrDefault(property1 => property1.Name == subPropertyName); if (subProperty != null) { subProperty.Known = true; } } break; case "site_link": world.AddHFtoSiteLink(this, property); foreach (string subPropertyName in knownSiteLinkSubProperties) { Property subProperty = property.SubProperties.FirstOrDefault(property1 => property1.Name == subPropertyName); if (subProperty != null) { subProperty.Known = true; } } break; case "hf_skill": Skills.Add(new Skill(property.SubProperties)); break; case "active_interaction": ActiveInteractions.Add(property.Value); break; case "interaction_knowledge": InteractionKnowledge.Add(property.Value); break; case "animated": Animated = true; property.Known = true; break; case "animated_string": if (AnimatedType != "") { throw new Exception("Animated Type already exists."); } AnimatedType = Formatting.InitCaps(property.Value); break; case "journey_pet": JourneyPets.Add(Formatting.FormatRace(property.Value)); break; case "goal": Goal = Formatting.InitCaps(property.Value); break; case "sphere": Spheres.Add(property.Value); break; case "current_identity_id": world.AddHFCurrentIdentity(this, Convert.ToInt32(property.Value)); break; case "used_identity_id": world.AddHFUsedIdentity(this, Convert.ToInt32(property.Value)); break; case "ent_pop_id": EntityPopulation = world.GetEntityPopulation(Convert.ToInt32(property.Value)); break; case "holds_artifact": HoldingArtifacts.Add(world.GetArtifact(Convert.ToInt32(property.Value))); break; case "adventurer": Adventurer = true; property.Known = true; break; } } if (Name == "") { Name = "(Unnamed)"; } }