public BaseActivity ChooseActivityBasedOnNeed(Person person, NeedEntry needEntry) { if (Context.Settings.IsVerbose) { Context.Console.WriteDebugLine (" Choosing activity based on need for " + needEntry.ItemType); } var possibleActivities = new List<ActivityInfo> (); foreach (var activityInfo in Context.World.Logic.Activities) { if (activityInfo.IsSuited (needEntry.ActionType, needEntry.ItemType, needEntry.VitalType)) { possibleActivities.Add (activityInfo); } } // TODO: Add support for randomly choosing from multiple possibilities if (possibleActivities.Count > 1) throw new NotSupportedException ("Multiple activities identified. That's not yet supported."); if (possibleActivities.Count == 0) throw new Exception ("No activities found to address the need for " + needEntry.ItemType + ". Ensure the activities have been added to the environment logic."); if (Context.Settings.IsVerbose) { Context.Console.WriteDebugLine (" Activity chosen: " + possibleActivities [0].ActivityType.Name); } var activity = GetActivity (person, possibleActivities [0].ActivityType, needEntry); return activity; }
public void Test_Mill_NotEnoughWood() { Console.WriteLine (""); Console.WriteLine ("Preparing test"); Console.WriteLine (""); var context = MockEngineContext.New (EngineSettings.DefaultVerbose); var person = new Person (context.Settings); var tile = context.World.Tiles[0]; tile.AddPerson (person); var needEntry = new NeedEntry (ActivityVerb.Mill, ItemType.Timber, PersonVitalType.NotSet, 50, 101); var activity = new MillTimberActivity (person, needEntry, context.Settings, context.Console); Console.WriteLine (""); Console.WriteLine ("Executing test"); Console.WriteLine (""); activity.Act (person); var foundNeedEntry = person.Needs [0]; Assert.AreEqual (ItemType.Wood, foundNeedEntry.ItemType); Assert.AreEqual (90, foundNeedEntry.Quantity); Assert.AreEqual (102, foundNeedEntry.Priority); }
public void Test_EatFood_FoodAvailable() { Console.WriteLine (""); Console.WriteLine ("Preparing test"); Console.WriteLine (""); var context = MockEngineContext.New (); var settings = context.Settings; var person = new Person (settings); person.Inventory [ItemType.Food] = 100; person.Vitals[PersonVitalType.Hunger] = 80; var needEntry = new NeedEntry (ActivityVerb.Eat, ItemType.Food, PersonVitalType.NotSet, settings.DefaultEatAmount, settings.DefaultItemPriorities[ItemType.Food]); var activity = new EatFoodActivity (person, needEntry, settings, context.Console); Console.WriteLine (""); Console.WriteLine ("Executing test"); Console.WriteLine (""); activity.Act (person); Console.WriteLine (""); Console.WriteLine ("Analysing test"); Console.WriteLine (""); Assert.AreEqual(75, person.Vitals[PersonVitalType.Hunger]); }
public void Test_Act_WoodIsAvailable() { Console.WriteLine(""); Console.WriteLine("Preparing test"); Console.WriteLine(""); var context = MockEngineContext.New(EngineSettings.DefaultVerbose); context.Settings.TimberMillingRate = 50; var person = new Person(context.Settings); person.Inventory.Items[ItemType.Wood] = 100; var tile = context.World.Tiles[0]; tile.AddPerson(person); var needEntry = new NeedEntry(ActivityVerb.Mill, ItemType.Timber, PersonVitalType.NotSet, 50, 101); var activity = new MillTimberActivity(person, needEntry, context.Settings, context.Console); Console.WriteLine(""); Console.WriteLine("Executing test"); Console.WriteLine(""); activity.Act(person); Console.WriteLine(""); Console.WriteLine("Analysing test"); Console.WriteLine(""); Assert.AreEqual(50, person.Inventory.Items [ItemType.Timber]); Assert.AreEqual(10, person.Inventory.Items [ItemType.Wood]); }
public void Test_CollectWater_WaterAvailable() { Console.WriteLine (""); Console.WriteLine ("Preparing test"); Console.WriteLine (""); var context = MockEngineContext.New (EngineSettings.DefaultVerbose); context.World.Logic.AddActivity (typeof(CollectWaterActivity)); var settings = context.Settings; var tile = context.World.Tiles [0]; tile.Inventory [ItemType.Water] = 100; var person = new Person (settings); person.Tile = tile; var needEntry = new NeedEntry (ActivityVerb.Gather, ItemType.Water, PersonVitalType.Thirst, settings.DefaultDrinkAmount, settings.DefaultItemPriorities[ItemType.Water]); var activity = new CollectWaterActivity (person, needEntry, settings, new ConsoleHelper(settings)); Console.WriteLine (""); Console.WriteLine ("Executing test"); Console.WriteLine (""); activity.Act (person); Console.WriteLine (""); Console.WriteLine ("Analysing test"); Console.WriteLine (""); Assert.AreEqual(10, person.Inventory.Items[ItemType.Water]); }
public void Test_Act_ContinueFelling() { Console.WriteLine(""); Console.WriteLine("Preparing test"); Console.WriteLine(""); var context = MockEngineContext.New(); var settings = EngineSettings.DefaultVerbose; settings.FellingRate = 10; var person = new PersonCreator(settings).CreateAdult(); var tile = context.World.Tiles[0]; tile.AddPerson(person); tile.AddTrees(new PlantCreator(context.Settings).CreateTrees(2)); var needEntry = new NeedEntry(ActivityVerb.Fell, ItemType.Wood, PersonVitalType.NotSet, 50, 101); var activity = new FellWoodActivity(person, needEntry, settings, new ConsoleHelper(settings)); activity.Target = tile.Trees [0]; Console.WriteLine(""); Console.WriteLine("Executing target"); Console.WriteLine(""); activity.Act(person); Assert.AreEqual(10, activity.Target.PercentHarvested); }
public void Test_Build_CompleteConstruction() { Console.WriteLine(""); Console.WriteLine("Preparing test"); Console.WriteLine(""); var settings = EngineSettings.DefaultVerbose; settings.ConstructionRate = 10; var person = new Person(settings); person.Home = new Building(BuildingType.Shelter, settings); person.Home.Inventory.Items [ItemType.Timber] = settings.ShelterTimberCost; person.Home.PercentComplete = 99; var needEntry = new NeedEntry(ActivityVerb.Build, ItemType.Shelter, PersonVitalType.NotSet, 1, 100); person.AddNeed(needEntry); var activity = new BuildShelterActivity(person, needEntry, settings, new ConsoleHelper(settings)); activity.Shelter = person.Home; activity.Act(person); Assert.AreEqual(100, person.Home.PercentComplete); Assert.IsTrue(person.Home.IsCompleted); Assert.AreEqual(0, person.Needs.Count); }
public void Test_Sleep_ShelterAvailable() { Console.WriteLine(""); Console.WriteLine("Preparing test"); Console.WriteLine(""); var context = MockEngineContext.New(); context.World.Logic.AddActivity(typeof(DrinkWaterActivity)); var settings = context.Settings; var person = new Person(settings); person.Vitals[PersonVitalType.Energy] = 0; person.Home = new Building(BuildingType.Shelter, settings); person.Home.PercentComplete = 100; var needEntry = new NeedEntry(ActivityVerb.Sleep, ItemType.NotSet, PersonVitalType.Energy, 100, settings.DefaultVitalPriorities[PersonVitalType.Energy]); var activity = new SleepActivity(person, needEntry, settings, new ConsoleHelper(settings)); Console.WriteLine(""); Console.WriteLine("Executing test"); Console.WriteLine(""); activity.Act(person); Console.WriteLine(""); Console.WriteLine("Analysing test"); Console.WriteLine(""); Assert.AreEqual(settings.EnergyFromSleepRate, person.Vitals[PersonVitalType.Energy]); }
public void Test_Sleep_ShelterAvailable() { Console.WriteLine (""); Console.WriteLine ("Preparing test"); Console.WriteLine (""); var context = MockEngineContext.New (); context.World.Logic.AddActivity (typeof(DrinkWaterActivity)); var settings = context.Settings; var person = new Person (settings); person.Vitals[PersonVitalType.Energy] = 0; person.Home = new Building (BuildingType.Shelter, settings); person.Home.PercentComplete = 100; var needEntry = new NeedEntry (ActivityVerb.Sleep, ItemType.NotSet, PersonVitalType.Energy, 100, settings.DefaultVitalPriorities[PersonVitalType.Energy]); var activity = new SleepActivity (person, needEntry, settings, new ConsoleHelper(settings)); Console.WriteLine (""); Console.WriteLine ("Executing test"); Console.WriteLine (""); activity.Act (person); Console.WriteLine (""); Console.WriteLine ("Analysing test"); Console.WriteLine (""); Assert.AreEqual(settings.EnergyFromSleepRate, person.Vitals[PersonVitalType.Energy]); }
public void Test_Act_WoodIsAvailable() { Console.WriteLine (""); Console.WriteLine ("Preparing test"); Console.WriteLine (""); var context = MockEngineContext.New (EngineSettings.DefaultVerbose); context.Settings.TimberMillingRate = 50; var person = new Person(context.Settings); person.Inventory.Items[ItemType.Wood] = 100; var tile = context.World.Tiles[0]; tile.AddPerson (person); var needEntry = new NeedEntry (ActivityVerb.Mill, ItemType.Timber, PersonVitalType.NotSet, 50, 101); var activity = new MillTimberActivity (person, needEntry, context.Settings, context.Console); Console.WriteLine (""); Console.WriteLine ("Executing test"); Console.WriteLine (""); activity.Act (person); Console.WriteLine (""); Console.WriteLine ("Analysing test"); Console.WriteLine (""); Assert.AreEqual (50, person.Inventory.Items [ItemType.Timber]); Assert.AreEqual (10, person.Inventory.Items [ItemType.Wood]); }
public BuildShelterActivity(Person actor, NeedEntry needEntry, EngineSettings settings, ConsoleHelper console) : base(actor, needEntry, settings, console) { // TODO //WoodFelling = new FellWoodActivity (); //TimberMilling = new MillTimberActivity (); }
public void Test_Mill_NotEnoughWood() { Console.WriteLine(""); Console.WriteLine("Preparing test"); Console.WriteLine(""); var context = MockEngineContext.New(EngineSettings.DefaultVerbose); var person = new Person(context.Settings); var tile = context.World.Tiles[0]; tile.AddPerson(person); var needEntry = new NeedEntry(ActivityVerb.Mill, ItemType.Timber, PersonVitalType.NotSet, 50, 101); var activity = new MillTimberActivity(person, needEntry, context.Settings, context.Console); Console.WriteLine(""); Console.WriteLine("Executing test"); Console.WriteLine(""); activity.Act(person); var foundNeedEntry = person.Needs [0]; Assert.AreEqual(ItemType.Wood, foundNeedEntry.ItemType); Assert.AreEqual(90, foundNeedEntry.Quantity); Assert.AreEqual(102, foundNeedEntry.Priority); }
public void Test_EatFood_FoodAvailable() { Console.WriteLine(""); Console.WriteLine("Preparing test"); Console.WriteLine(""); var context = MockEngineContext.New(); var settings = context.Settings; var person = new Person(settings); person.Inventory [ItemType.Food] = 100; person.Vitals[PersonVitalType.Hunger] = 80; var needEntry = new NeedEntry(ActivityVerb.Eat, ItemType.Food, PersonVitalType.NotSet, settings.DefaultEatAmount, settings.DefaultItemPriorities[ItemType.Food]); var activity = new EatFoodActivity(person, needEntry, settings, context.Console); Console.WriteLine(""); Console.WriteLine("Executing test"); Console.WriteLine(""); activity.Act(person); Console.WriteLine(""); Console.WriteLine("Analysing test"); Console.WriteLine(""); Assert.AreEqual(75, person.Vitals[PersonVitalType.Hunger]); }
public void Test_Build_CompleteConstruction() { Console.WriteLine (""); Console.WriteLine ("Preparing test"); Console.WriteLine (""); var settings = EngineSettings.DefaultVerbose; settings.ConstructionRate = 10; var person = new Person (settings); person.Home = new Building (BuildingType.Shelter, settings); person.Home.Inventory.Items [ItemType.Timber] = settings.ShelterTimberCost; person.Home.PercentComplete = 99; var needEntry = new NeedEntry (ActivityVerb.Build, ItemType.Shelter, PersonVitalType.NotSet, 1, 100); person.AddNeed (needEntry); var activity = new BuildShelterActivity (person, needEntry, settings, new ConsoleHelper(settings)); activity.Shelter = person.Home; activity.Act (person); Assert.AreEqual (100, person.Home.PercentComplete); Assert.IsTrue (person.Home.IsCompleted); Assert.AreEqual (0, person.Needs.Count); }
public void Test_Build_StartConstruction() { Console.WriteLine(""); Console.WriteLine("Preparing test"); Console.WriteLine(""); var settings = EngineSettings.DefaultVerbose; var person = new Person(settings); person.Inventory.AddItem(ItemType.Timber, 50); // TODO: Get the 50 value from somewhere easier to configures var needEntry = new NeedEntry(ActivityVerb.Build, ItemType.Shelter, PersonVitalType.NotSet, 1, 100); var activity = new BuildShelterActivity(person, needEntry, settings, new ConsoleHelper(settings)); Console.WriteLine(""); Console.WriteLine("Executing test"); Console.WriteLine(""); activity.Act(person); Console.WriteLine(""); Console.WriteLine("Analysing test"); Console.WriteLine(""); Assert.IsNotNull(person.Home); Assert.AreEqual(50, person.Home.Inventory.Items[ItemType.Timber]); // TODO: Should all the timber necessarily be provided as soon as construction starts? }
public void Test_Act_ContinueFelling() { Console.WriteLine (""); Console.WriteLine ("Preparing test"); Console.WriteLine (""); var context = MockEngineContext.New (); var settings = EngineSettings.DefaultVerbose; settings.FellingRate = 10; var person = new PersonCreator (settings).CreateAdult (); var tile = context.World.Tiles[0]; tile.AddPerson (person); tile.AddTrees (new PlantCreator (context.Settings).CreateTrees (2)); var needEntry = new NeedEntry (ActivityVerb.Fell, ItemType.Wood, PersonVitalType.NotSet, 50, 101); var activity = new FellWoodActivity (person, needEntry, settings, new ConsoleHelper(settings)); activity.Target = tile.Trees [0]; Console.WriteLine (""); Console.WriteLine ("Executing target"); Console.WriteLine (""); activity.Act (person); Assert.AreEqual(10, activity.Target.PercentHarvested); }
public BaseActivity(Person actor, NeedEntry needEntry, EngineSettings settings, ConsoleHelper console) { Actor = actor; NeedEntry = needEntry; Settings = settings; Console = console; InitializeItemsProduced(); InitializeItemsConsumed(); }
public BaseActivity(Person actor, NeedEntry needEntry, EngineSettings settings, ConsoleHelper console) { Actor = actor; NeedEntry = needEntry; Settings = settings; Console = console; InitializeItemsProduced (); InitializeItemsConsumed (); }
public BaseActivity GetActivity(Person person, Type activityType, NeedEntry needEntry) { var activity = person.GetActivity(activityType); if (activity == null) { activity = Creator.CreateActivity(person, activityType, needEntry); } return(activity); }
public BaseActivity CreateActivity(Person actor, Type activityType, NeedEntry needEntry) { var arguments = new object[] { actor, needEntry, Settings, Console }; var activity = (BaseActivity)Activator.CreateInstance(activityType, arguments); return(activity); }
public BaseActivity CreateActivity(Person actor, Type activityType, NeedEntry needEntry) { var arguments = new object[] { actor, needEntry, Settings, Console }; var activity = (BaseActivity)Activator.CreateInstance(activityType, arguments); return activity; }
public void Test_Build_ContinueConstruction() { var settings = EngineSettings.DefaultVerbose; settings.ConstructionRate = 1; var person = new Person (settings); person.Home = new Building (BuildingType.House, settings); person.Home.Inventory.Items[ItemType.Timber] = 50; // TODO: Get the 50 value from somewhere easier to configures var needEntry = new NeedEntry (ActivityVerb.Build, ItemType.Shelter, PersonVitalType.NotSet, 1, 100); var activity = new BuildShelterActivity (person, needEntry, settings, new ConsoleHelper(settings)); activity.Act (person); Assert.AreEqual (1, person.Home.PercentComplete); }
public void Test_Act_FinishedFelling() { Console.WriteLine(""); Console.WriteLine("Preparing test"); Console.WriteLine(""); var context = MockEngineContext.New(); var settings = EngineSettings.DefaultVerbose; settings.FellingRate = 10; var person = new PersonCreator(settings).CreateAdult(); var tile = context.World.Tiles[0]; tile.AddPerson(person); tile.AddTrees(new PlantCreator(context.Settings).CreateTrees(2)); var needEntry = new NeedEntry(ActivityVerb.Fell, ItemType.Wood, PersonVitalType.NotSet, 50, 101); person.AddNeed(needEntry); var activity = new FellWoodActivity(person, needEntry, settings, new ConsoleHelper(settings)); activity.Target = tile.Trees [0]; activity.Target.PercentHarvested = 100; activity.TotalWoodFelled = 40; // Add just enough so the activity can finish var totalWoodExpected = activity.Target.Size; Console.WriteLine(""); Console.WriteLine("Executing test"); Console.WriteLine(""); activity.Act(person); Assert.IsTrue(activity.IsFinished); Assert.IsNull(activity.Target); Assert.AreEqual(totalWoodExpected, person.Inventory.Items [ItemType.Wood]); Assert.AreEqual(0, person.Needs.Count); }
public void Test_Build_ContinueConstruction() { var settings = EngineSettings.DefaultVerbose; settings.ConstructionRate = 1; var person = new Person(settings); person.Home = new Building(BuildingType.House, settings); person.Home.Inventory.Items[ItemType.Timber] = 50; // TODO: Get the 50 value from somewhere easier to configures var needEntry = new NeedEntry(ActivityVerb.Build, ItemType.Shelter, PersonVitalType.NotSet, 1, 100); var activity = new BuildShelterActivity(person, needEntry, settings, new ConsoleHelper(settings)); activity.Act(person); Assert.AreEqual(1, person.Home.PercentComplete); }
public void Test_Build_NotEnoughTimber() { var settings = EngineSettings.DefaultVerbose; var person = new Person(settings); var needEntry = new NeedEntry(ActivityVerb.Build, ItemType.Shelter, PersonVitalType.NotSet, 1, 100); var activity = new BuildShelterActivity(person, needEntry, settings, new ConsoleHelper(settings)); activity.Act(person); Assert.AreEqual(1, person.Needs.Count); var foundNeedEntry = person.Needs [0]; Assert.AreEqual(ItemType.Timber, foundNeedEntry.ItemType); Assert.AreEqual(50, foundNeedEntry.Quantity); Assert.AreEqual(101, foundNeedEntry.Priority); }
public void Test_Build_NotEnoughTimber() { var settings = EngineSettings.DefaultVerbose; var person = new Person (settings); var needEntry = new NeedEntry (ActivityVerb.Build, ItemType.Shelter, PersonVitalType.NotSet, 1, 100); var activity = new BuildShelterActivity (person, needEntry, settings, new ConsoleHelper(settings)); activity.Act (person); Assert.AreEqual (1, person.Needs.Count); var foundNeedEntry = person.Needs [0]; Assert.AreEqual (ItemType.Timber, foundNeedEntry.ItemType); Assert.AreEqual (50, foundNeedEntry.Quantity); Assert.AreEqual (101, foundNeedEntry.Priority); }
public void Test_DrinkWater_WaterAvailable() { Console.WriteLine(""); Console.WriteLine("Preparing test"); Console.WriteLine(""); var context = MockEngineContext.New(); context.World.Logic.AddActivity(typeof(DrinkWaterActivity)); var settings = context.Settings; settings.DefaultDrinkAmount = 10; // Increase the drink rate to speed up test var person = new Person(settings); person.Inventory [ItemType.Water] = 100; person.Vitals[PersonVitalType.Thirst] = 80; var needEntry = new NeedEntry( ActivityVerb.Drink, ItemType.Water, PersonVitalType.Thirst, settings.DefaultDrinkAmount, settings.DefaultItemPriorities[ItemType.Water] ); var activity = new DrinkWaterActivity(person, needEntry, settings, new ConsoleHelper(settings)); Console.WriteLine(""); Console.WriteLine("Executing test"); Console.WriteLine(""); activity.Act(person); Console.WriteLine(""); Console.WriteLine("Analysing test"); Console.WriteLine(""); Assert.AreEqual(70, person.Vitals[PersonVitalType.Thirst]); }
public void Test_DrinkWater_WaterAvailable() { Console.WriteLine (""); Console.WriteLine ("Preparing test"); Console.WriteLine (""); var context = MockEngineContext.New (); context.World.Logic.AddActivity (typeof(DrinkWaterActivity)); var settings = context.Settings; settings.DefaultDrinkAmount = 10; // Increase the drink rate to speed up test var person = new Person (settings); person.Inventory [ItemType.Water] = 100; person.Vitals[PersonVitalType.Thirst] = 80; var needEntry = new NeedEntry ( ActivityVerb.Drink, ItemType.Water, PersonVitalType.Thirst, settings.DefaultDrinkAmount, settings.DefaultItemPriorities[ItemType.Water] ); var activity = new DrinkWaterActivity (person, needEntry, settings, new ConsoleHelper(settings)); Console.WriteLine (""); Console.WriteLine ("Executing test"); Console.WriteLine (""); activity.Act (person); Console.WriteLine (""); Console.WriteLine ("Analysing test"); Console.WriteLine (""); Assert.AreEqual(70, person.Vitals[PersonVitalType.Thirst]); }
public BaseActivity ChooseActivityBasedOnNeed(Person person, NeedEntry needEntry) { if (Context.Settings.IsVerbose) { Context.Console.WriteDebugLine(" Choosing activity based on need for " + needEntry.ItemType); } var possibleActivities = new List <ActivityInfo> (); foreach (var activityInfo in Context.World.Logic.Activities) { if (activityInfo.IsSuited(needEntry.ActionType, needEntry.ItemType, needEntry.VitalType)) { possibleActivities.Add(activityInfo); } } // TODO: Add support for randomly choosing from multiple possibilities if (possibleActivities.Count > 1) { throw new NotSupportedException("Multiple activities identified. That's not yet supported."); } if (possibleActivities.Count == 0) { throw new Exception("No activities found to address the need for " + needEntry.ItemType + ". Ensure the activities have been added to the environment logic."); } if (Context.Settings.IsVerbose) { Context.Console.WriteDebugLine(" Activity chosen: " + possibleActivities [0].ActivityType.Name); } var activity = GetActivity(person, possibleActivities [0].ActivityType, needEntry); return(activity); }
public void Test_GatherFood_FoodAvailable() { Console.WriteLine(""); Console.WriteLine("Preparing test"); Console.WriteLine(""); var context = MockEngineContext.New(); // TODO: Remove if not needed //context.World.Logic.AddActivity (typeof(GatherFoodActivity)); var settings = context.Settings; var tile = context.World.Tiles [0]; tile.Inventory [ItemType.Food] = 100; var person = new Person(settings); person.Tile = tile; var needEntry = new NeedEntry(ActivityVerb.Gather, ItemType.Food, PersonVitalType.Hunger, settings.DefaultEatAmount, settings.DefaultItemPriorities[ItemType.Food]); var activity = new GatherFoodActivity(person, needEntry, settings, context.Console); Console.WriteLine(""); Console.WriteLine("Executing test"); Console.WriteLine(""); activity.Act(person); Console.WriteLine(""); Console.WriteLine("Analysing test"); Console.WriteLine(""); Assert.AreEqual(10, person.Inventory.Items[ItemType.Food]); }
public void Test_CollectWater_WaterAvailable() { Console.WriteLine(""); Console.WriteLine("Preparing test"); Console.WriteLine(""); var context = MockEngineContext.New(EngineSettings.DefaultVerbose); context.World.Logic.AddActivity(typeof(CollectWaterActivity)); var settings = context.Settings; var tile = context.World.Tiles [0]; tile.Inventory [ItemType.Water] = 100; var person = new Person(settings); person.Tile = tile; var needEntry = new NeedEntry(ActivityVerb.Gather, ItemType.Water, PersonVitalType.Thirst, settings.DefaultDrinkAmount, settings.DefaultItemPriorities[ItemType.Water]); var activity = new CollectWaterActivity(person, needEntry, settings, new ConsoleHelper(settings)); Console.WriteLine(""); Console.WriteLine("Executing test"); Console.WriteLine(""); activity.Act(person); Console.WriteLine(""); Console.WriteLine("Analysing test"); Console.WriteLine(""); Assert.AreEqual(10, person.Inventory.Items[ItemType.Water]); }
public void Test_GatherFood_FoodAvailable() { Console.WriteLine (""); Console.WriteLine ("Preparing test"); Console.WriteLine (""); var context = MockEngineContext.New (); // TODO: Remove if not needed //context.World.Logic.AddActivity (typeof(GatherFoodActivity)); var settings = context.Settings; var tile = context.World.Tiles [0]; tile.Inventory [ItemType.Food] = 100; var person = new Person (settings); person.Tile = tile; var needEntry = new NeedEntry (ActivityVerb.Gather, ItemType.Food, PersonVitalType.Hunger, settings.DefaultEatAmount, settings.DefaultItemPriorities[ItemType.Food]); var activity = new GatherFoodActivity (person, needEntry, settings, context.Console); Console.WriteLine (""); Console.WriteLine ("Executing test"); Console.WriteLine (""); activity.Act (person); Console.WriteLine (""); Console.WriteLine ("Analysing test"); Console.WriteLine (""); Assert.AreEqual(10, person.Inventory.Items[ItemType.Food]); }
public void Test_Build_StartConstruction() { Console.WriteLine (""); Console.WriteLine ("Preparing test"); Console.WriteLine (""); var settings = EngineSettings.DefaultVerbose; var person = new Person (settings); person.Inventory.AddItem (ItemType.Timber, 50); // TODO: Get the 50 value from somewhere easier to configures var needEntry = new NeedEntry (ActivityVerb.Build, ItemType.Shelter, PersonVitalType.NotSet, 1, 100); var activity = new BuildShelterActivity (person, needEntry, settings, new ConsoleHelper(settings)); Console.WriteLine (""); Console.WriteLine ("Executing test"); Console.WriteLine (""); activity.Act (person); Console.WriteLine (""); Console.WriteLine ("Analysing test"); Console.WriteLine (""); Assert.IsNotNull (person.Home); Assert.AreEqual (50, person.Home.Inventory.Items[ItemType.Timber]); // TODO: Should all the timber necessarily be provided as soon as construction starts? }
public void Test_Act_FinishedFelling() { Console.WriteLine (""); Console.WriteLine("Preparing test"); Console.WriteLine(""); var context = MockEngineContext.New (); var settings = EngineSettings.DefaultVerbose; settings.FellingRate = 10; var person = new PersonCreator (settings).CreateAdult (); var tile = context.World.Tiles[0]; tile.AddPerson (person); tile.AddTrees (new PlantCreator (context.Settings).CreateTrees (2)); var needEntry = new NeedEntry (ActivityVerb.Fell, ItemType.Wood, PersonVitalType.NotSet, 50, 101); person.AddNeed (needEntry); var activity = new FellWoodActivity (person, needEntry, settings, new ConsoleHelper(settings)); activity.Target = tile.Trees [0]; activity.Target.PercentHarvested = 100; activity.TotalWoodFelled = 40; // Add just enough so the activity can finish var totalWoodExpected = activity.Target.Size; Console.WriteLine (""); Console.WriteLine ("Executing test"); Console.WriteLine (""); activity.Act (person); Assert.IsTrue (activity.IsFinished); Assert.IsNull(activity.Target); Assert.AreEqual (totalWoodExpected, person.Inventory.Items [ItemType.Wood]); Assert.AreEqual (0, person.Needs.Count); }
public SleepActivity(Person person, NeedEntry needEntry, EngineSettings settings, ConsoleHelper console) : base(person, needEntry, settings, console) { }
public CollectWaterActivity(Person actor, NeedEntry needEntry, EngineSettings settings, ConsoleHelper console) : base(actor, needEntry, settings, console) { }
public FightActivity(Person person, NeedEntry needEntry, EngineSettings settings, ConsoleHelper console) : base(person, needEntry, settings, console) { }
public GatherFoodActivity(Person actor, NeedEntry needEntry, EngineSettings settings, ConsoleHelper console) : base(actor, needEntry, settings, console) { }
public override void ConfirmProduced(NeedEntry entry) { throw new NotImplementedException (); }
public virtual void ConfirmProduced(NeedEntry entry) { ItemsProduced [entry.ItemType] += entry.Quantity; }
public FleeActivity(Person actor, NeedEntry needEntry, EngineSettings settings, ConsoleHelper console) : base(actor, needEntry, settings, console) { }
public override void ConfirmProduced(NeedEntry entry) { throw new NotImplementedException(); }
public void AddNeed(NeedEntry needEntry) { Needs.Add(needEntry); }
public override void ConfirmProduced(NeedEntry entry) { base.ConfirmProduced (entry); }
public BaseActivity GetActivity(Person person, Type activityType, NeedEntry needEntry) { var activity = person.GetActivity (activityType); if (activity == null) activity = Creator.CreateActivity(person, activityType, needEntry); return activity; }
public override void ConfirmProduced(NeedEntry entry) { base.ConfirmProduced(entry); }