public async Task GetStoryOverview_GetsStorySections() { var storySection = new StorySection { Id = 10, Description = "Chapter One", Order = 1, HierarchyLevel = 1 }; var storySections = new OrderedHierarchicalTree <StorySection> (new [] { storySection }); Mock.Arrange(() => storySectionRepository.GetTreeForStory(testStory.Id)) .Returns(() => Task.FromResult(storySections)); var result = await target.GetStoryOverview(testStory.Id); Assert.Equal(1, result.Sections.Count); Assert.Equal(10, result.Sections[0].Id); }
IEnumerator ManageStorySection(StorySection story) { //Debug.Log("[Story] Executing Action: " + story.Action + " [" + story.Order + "]"); switch (story.Emotion) { case StoryCharacterEmotion.Jump: switch (story.Focus) { case StoryCharacterPosition.Left: LeftCharacterRect.DOPunchPosition(new Vector3(0f, 10f, 0f), 0.2f, 0); break; case StoryCharacterPosition.Right: RightCharacterRect.DOPunchPosition(new Vector3(0f, 10f, 0f), 0.2f, 0); break; } break; case StoryCharacterEmotion.Sink: switch (story.Focus) { case StoryCharacterPosition.Left: LeftCharacterRect.DOPunchPosition(new Vector3(0f, -15f, 0f), 1f, 0); break; case StoryCharacterPosition.Right: RightCharacterRect.DOPunchPosition(new Vector3(0f, -15f, 0f), 1f, 0); break; } break; default: break; } switch (story.Action) { case StoryAction.Talk: charactername.text = story.Name; // Show the focused target switch (story.Focus) { case StoryCharacterPosition.Left: LeftCharacter.DOColor(new Color(1f, 1f, 1f, 1f), 0.3f); RightCharacter.DOColor(new Color(0.8f, 0.8f, 0.8f, 1f), 0.3f); break; case StoryCharacterPosition.Right: RightCharacter.DOColor(new Color(1f, 1f, 1f, 1f), 0.3f); LeftCharacter.DOColor(new Color(0.8f, 0.8f, 0.8f, 1f), 0.3f); break; } yield return(StartCoroutine(RevealText(story.Text))); break; case StoryAction.Enter: switch (story.Focus) { case StoryCharacterPosition.Left: LeftCharacter.sprite = story.CharacterArt; yield return(StartCoroutine(MoveCharacter(LeftCharacterRect, characterPostion, true))); break; case StoryCharacterPosition.Right: RightCharacter.sprite = story.CharacterArt; yield return(StartCoroutine(MoveCharacter(RightCharacterRect, -characterPostion, true))); break; } break; case StoryAction.Leave: switch (story.Focus) { case StoryCharacterPosition.Left: yield return(StartCoroutine(MoveCharacter(LeftCharacterRect, -characterOffset))); break; case StoryCharacterPosition.Right: yield return(StartCoroutine(MoveCharacter(RightCharacterRect, characterOffset))); break; } break; case StoryAction.Question: Debug.Log(" -- [Question] Story Text: " + story.Text); string[] questionAndAnswers = story.Text.Split('\n'); charactername.text = questionAndAnswers[0]; textarea.text = ""; ChoiceContainer.SetActive(true); foreach (GameObject c in Choices) { c.SetActive(false); } for (int i = 1; i < questionAndAnswers.Length; i++) { Choices[i - 1].SetActive(true); string responce = questionAndAnswers[i].Split(':')[0]; string answer = questionAndAnswers[i].Split(':')[1]; Debug.Log(" -- [Question] Answer " + i + ": " + responce + " [" + answer + "]"); Choices[i - 1].GetComponentInChildren <TextMeshProUGUI>().text = responce; Choices[i - 1].GetComponent <Button>().onClick.AddListener(delegate { BtnChoice(answer); }); Choices[i - 1].GetComponent <RectTransform>().DOAnchorPosY(-((i - 1) * 125f), 0.25f); yield return(new WaitForSeconds(0.1f)); } waitingOnQuestionAnswer = true; yield return(StartCoroutine(HandleQuestionInput())); break; case StoryAction.Skip: yield return(StartCoroutine(RemoveSectionsBefore(int.Parse(story.Text)))); break; case StoryAction.Background: yield return(StartCoroutine(ChangeBackground(story.Text))); break; case StoryAction.TapChange: pauseInteraction = true; string[] changes = story.Text.Split('-'); //NewBoss-bossfight_1 //ExtendTime-1.5 switch (changes[0]) { case "ExtendTime": if (inTap) { float multiplier = float.Parse(changes[1]); float totalZoneHP = (float)PlayerManager.Instance.SelectedBattle.Zone.ZoneHP; PlayerManager.Instance.SelectedBattle.AccumulatedDamage -= totalZoneHP * multiplier; } break; case "NewBoss": if (inTap) { // Set the new boss here // This needs to be hooked up to the server PlayerManager.Instance.SelectedBattle.Zone.BossFight = DataManager.Instance.bossFightDataList.GetByIdentity(changes[1]); } break; default: Debug.Log("No reward issue"); break; } pauseInteraction = false; break; case StoryAction.Reward: pauseInteraction = true; Debug.Log("Reward the player here"); //FreeLoot-lt_zone_training_boss_1-40-20 //ZoneLoot-a0zone_1 string[] rewards = story.Text.Split('-'); LootCrate crate = null; switch (rewards[0]) { case "FreeLoot": crate = new LootCrate(rewards[1], float.Parse(rewards[2]), float.Parse(rewards[3]), DataManager.Instance.crateTypeDataList.GetByIdentity(rewards[4])); break; case "ZoneLoot": ZoneData zone = DataManager.Instance.zoneDataList.GetByIdentity(rewards[1]); crate = new LootCrate(zone.LootTable.Identity, zone.MinItemLevel, zone.Variance, MathHelper.WeightedRandom(zone.LootTable.crateType).Key); break; default: Debug.Log("No reward issue"); break; } openingChest = true; Debug.Log(" [crate] " + crate.lootTableIdentity + " | " + crate.LootTableData); OpenChest(crate); while (openingChest) { yield return(new WaitForEndOfFrame()); } pauseInteraction = false; break; case StoryAction.ClearText: charactername.text = ""; textarea.text = ""; break; } }