Example #1
0
        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)";
            }
        }
 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" };
     List<string> knownSiteLinkSubProperties = new List<string>() { "link_type", "site_id", "sub_id", "entity_id" };
     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 "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)";
 }