コード例 #1
0
        public bool Encounter(Person person)
        {
            person.Profession = null;
            person.Log("I got fired.");

            return true;
        }
コード例 #2
0
        public bool Encounter(Person person)
        {
            var finalTerritory = _rootTerritory.GetLiveableTerritories().First(t => t != person.Location);

            person.AddFlag(TravelFlags.SettledFlag);
            finalTerritory.MovePerson(person);
            person.Log("I have settled permanently at {0}.", person.Location.Name);

            return true;
        }
コード例 #3
0
        public bool Encounter(Person person)
        {
            var newTerritory = _availableTerritory.GetLiveableTerritories().First(t => t != person.Location);
            newTerritory.MovePerson(person);
            person.Log("I've moved to a new home at {0}", newTerritory.Name);

            if (person.Partner != null)
            {
                var mate = person.Partner;

                person.Log("I broke up with {0} to move.", mate.Name);
                mate.ClearFlags(FlagCategory.Romantic);
                person.ClearFlags(FlagCategory.Romantic);
                mate.Partner = null;
                person.Partner = null;
                person.PopulationModule.SaveChanges(mate);
            }

            return true;
        }
コード例 #4
0
        public bool Encounter(Person person)
        {
            person.Gender = person.Gender == "Female"
                ? "Male"
                : "Female";
            person.FirstName = this._firstNameGenerator.Build(person).FirstName;
            person.Log(string.Format("Changed their name to {0} {1} and is now transistioning", person.FirstName,
                person.FamilyName));
            person.AddFlag(IdentityFlags.TransitioningFlag);

            return true;
        }
コード例 #5
0
        public bool Encounter(Person person)
        {
            if ((Chance/(person.Children.Count*2)) < Universe.CurrentUniverse.RandomGenerator.NextDouble())
                return false;

            var mate = person.Partner;

            if (mate == null)
            {
                // We're having sex with a stranger!
                var stranger =
                    person.Location.GetPeopleWhere(p => p.Partner == null && !p.Equals(person)).FirstOrDefault();

                if (stranger == null)
                {
                    // No one to have sex with.
                    return false;
                }

                mate = stranger;
            }

            var child = person.PopulationModule.CreatePerson(person, mate);
            person.Children.Add(child);
            mate.Children.Add(child);
            child.Parents = new Person[2];
            child.Parents[0] = person;
            child.Parents[1] = mate;
            person.Log("I had a child with {0}.", mate.FirstName);
            mate.Log("I had a child with {0}", person.FirstName);

            if (Universe.CurrentUniverse.RandomGenerator.NextDouble() < 0.12)
            {
                person.Log("Passed away having a child.");
                person.DeathDate = Universe.CurrentUniverse.CurrentTime;
            }

            return true;
        }
コード例 #6
0
        public bool Encounter(Person person)
        {
            var mate = person.Partner;
            person.Log("I had a divorce with {0}.", mate.Name);
            mate.Log("I had a divorce with {0}.", person.Name);
            person.ClearFlag(RomanticFlags.MarriedFlag);
            mate.ClearFlag(RomanticFlags.MarriedFlag);
            mate.History.Divorces.Add(person);
            person.History.Divorces.Add(mate);
            mate.Partner = null;
            person.Partner = null;

            person.PopulationModule.SaveChanges(mate);

            return true;
        }
コード例 #7
0
        public bool Encounter(Person person)
        {
            var mate = person.Partner;

            // Mate them up!
            person.Log("I married {0}.", mate.Name);
            mate.Log("I married {0}. ", person.Name);
            person.AddFlag(RomanticFlags.MarriedFlag);
            mate.AddFlag(RomanticFlags.MarriedFlag);

            if (person.HasFlag(RomanticFlags.EngagedFlag))
            {
                person.ClearFlag(RomanticFlags.EngagedFlag);
                mate.ClearFlag(RomanticFlags.EngagedFlag);
            }

            person.PopulationModule.SaveChanges(mate);

            return true;
        }
コード例 #8
0
        public bool Encounter(Person person)
        {
            var potentialPartner =
                person.Location.GetPeopleWhere(p => ValidPartner(person, p))
                    .OrderBy(_ => Guid.NewGuid())
                    .FirstOrDefault();
            if (potentialPartner == null)
            {
                return false;
            }

            person.Log("I've started dating {0}!", potentialPartner.Name);
            potentialPartner.Log("I've started dating {0}!", person.Name);
            person.AddFlag(RomanticFlags.DatingFlag);
            potentialPartner.AddFlag(RomanticFlags.DatingFlag);

            person.Partner = potentialPartner;
            person.PopulationModule.SaveChanges(potentialPartner);

            return true;
        }