public void TestMultipleScenarios() { WorldState state = CreateWorldState(450); StoryEventsScenario scenario = new StoryEventsScenario("Scenarios/test_story"); StoryEventsScenario scenario2 = new StoryEventsScenario("Scenarios/test_story2"); IPressEventScheduler scheduler = new PressEventScheduler(state, new DateTime(1989, 11, 17), new DateTime(1990, 1, 1), scenario, scenario2); var evt = scheduler.PopNextEvent(); Assert.AreEqual(new DateTime(1989, 11, 17), evt.Date); Assert.AreEqual(0, evt.Preconditions.Count); Assert.AreEqual(typeof(CutsceneEvent), evt.GetType()); Assert.AreEqual(evt.Date, new DateTime(1989, 11, 17)); evt = scheduler.PopNextEvent(); Assert.AreEqual(evt.Date, new DateTime(1989, 11, 19)); Assert.AreEqual("InsertedNotHigh", ((CutsceneEvent)evt).Description); evt = scheduler.PopNextEvent(); Assert.AreEqual("EventLowCredibility", ((CutsceneEvent)evt).Description); state.JournalistState[Attribs.Credibility] = 522; evt = scheduler.PopNextEvent(); Assert.AreEqual("InsertedEqual", ((CutsceneEvent)evt).Description); evt = scheduler.PopNextEvent(); Assert.AreNotEqual(null, evt); Assert.AreEqual("EventHighCredibility", ((CutsceneEvent)evt).Description); Assert.AreEqual(new DateTime(1989, 11, 22), evt.Date); evt = scheduler.PopNextEvent(); Assert.AreEqual(new DateTime(1989, 11, 25), evt.Date); Assert.AreEqual("InsertedLast", ((CutsceneEvent)evt).Description); }
public void TestConditional1() { var worldState = GameInit.CreateWorldState("Attributes/credibility_and_money"); var storyEventsScenario = new StoryEventsScenario("Attributes/test_story_effects"); var condScenario = new ConditionalEventsScenario("Scenarios/test_conditional", worldState); var cred = Attribs.GetAttribByName("Credibility"); var money = Attribs.GetAttribByName("Money"); worldState.JournalistState[cred] = 0; var scheduler = new PressEventScheduler(worldState, new DateTime(2016, 1, 1), new DateTime(2017, 2, 2), storyEventsScenario, condScenario); Assert.AreEqual(500, worldState.JournalistState[money]); var cond = scheduler.PopNextEvent(); Assert.IsNotNull(cond as CutsceneEvent); Assert.AreEqual("Unconditional conditional!", (cond as CutsceneEvent).Description); var evt = NextAsMultipleChoice(scheduler); evt.Apply(evt.Choices[1], worldState); Assert.AreEqual(250, worldState.JournalistState[cred]); evt = NextAsMultipleChoice(scheduler); Assert.AreEqual("Credibility is 250.", evt.Description); evt.Apply(evt.Choices[0], worldState); Assert.AreEqual(0, worldState.JournalistState[money]); evt = NextAsMultipleChoice(scheduler); evt.Apply(evt.Choices[0], worldState); Assert.AreEqual(275, worldState.JournalistState[cred]); Assert.IsNull(scheduler.PopNextEvent()); }
public static IPressEventScheduler CreateEventScheduler(WorldState worldState) { IPressScenario randomEventsScenario = new RandomEventsScenario(Constants.StartDate, Constants.RandomEventsScenarioLoc); IPressScenario storyScenario = new StoryEventsScenario(Constants.StoryEventsScenarioLoc); IPressScenario condScenario = new ConditionalEventsScenario(Constants.ConditionalScenarioLoc, worldState); return(new PressEventScheduler(worldState, Constants.StartDate, Constants.EndDate, condScenario, storyScenario, randomEventsScenario)); }
public void TestAttributesAndTermination() { var worldState = GameInit.CreateWorldState("Attributes/credibility_only"); var storyEventsScenario = new StoryEventsScenario("Attributes/test_story_effects"); var cred = Attribs.GetAttribByName("Credibility"); var scheduler = new PressEventScheduler(worldState, new DateTime(2016, 1, 1), new DateTime(2017, 2, 2), storyEventsScenario); var evt = NextAsMultipleChoice(scheduler); Assert.AreEqual(500, worldState.JournalistState[cred]); evt.Apply(evt.Choices[0], worldState); Assert.AreEqual(125, worldState.JournalistState[cred]); evt = NextAsMultipleChoice(scheduler); evt.Apply(evt.Choices[0], worldState); Assert.AreEqual(150, worldState.JournalistState[cred]); Assert.IsNull(scheduler.PopNextEvent()); }
public void TestNotMatchingDates() { var worldState = GameInit.CreateWorldState("Attributes/credibility_and_money"); var storyEventsScenario = new StoryEventsScenario("Attributes/test_story_effects"); var condScenario = new ConditionalEventsScenario("Scenarios/test_conditional", worldState); var cred = Attribs.GetAttribByName("Credibility"); var money = Attribs.GetAttribByName("Money"); worldState.JournalistState[cred] = 500; var scheduler = new PressEventScheduler(worldState, new DateTime(1605, 1, 1), new DateTime(1606, 2, 2), storyEventsScenario, condScenario); Assert.AreEqual(500, worldState.JournalistState[money]); var cond = scheduler.PopNextEvent(); Assert.IsNotNull(cond as CutsceneEvent); Assert.AreEqual("Unconditional conditional!", (cond as CutsceneEvent).Description); Assert.IsNull(scheduler.PopNextEvent()); }
public void TestBasic() { var initialCredibility = 450; var state = CreateWorldState(initialCredibility); Attribs.SetAttribsCollection(new Dictionary <string, Attrib>() { { "Credibility", Attribs.Credibility } }); StoryEventsScenario scenario = new StoryEventsScenario("Scenarios/test_story"); IPressEventScheduler scheduler = new PressEventScheduler(state, new DateTime(1989, 11, 17), new DateTime(1990, 1, 1), scenario); var evt = scheduler.PopNextEvent(); Assert.AreEqual(new DateTime(1989, 11, 17), evt.Date); Assert.AreEqual(0, evt.Preconditions.Count); Assert.AreEqual(typeof(CutsceneEvent), evt.GetType()); Assert.AreEqual(evt.Date, new DateTime(1989, 11, 17)); evt = scheduler.PopNextEvent(); Assert.AreEqual("EventLowCredibility", ((CutsceneEvent)evt).Description); evt = scheduler.PopNextEvent(); Assert.AreEqual(null, evt); }