protected void New_Tutorial(object sender, EventArgs e) { List <TutorialPage> pages = new List <TutorialPage>() { new TutorialPage() { PageNumber = 1, Text = "Some text", Video = "" } }; TutorialItem item = new TutorialItem() { Title = "Title", Author = ((Person)Session["User"]).Username, Published = false, DatePublished = DateTime.Now, DateModified = DateTime.Now, Pages = pages.ToArray() }; using (Service1Client client = new Service1Client()) { InsertTutorialItemResponse response = client.InsertTutorialItem(new InsertTutorialItemRequest() { TutorialItem = item }); if (!response.Errored) { string idlink = response._idtutorial; Response.Redirect("~/TutorialEditor?id=" + idlink); } } }
public async Task Simple() { var sb = new Storyboard(); sb.Root.ForwardQueue.Enqueue(new MusicItem("abertura", null)); sb.Root.ForwardQueue.Enqueue(new BackgroundItem("floresta", null)); sb.Root.ForwardQueue.Enqueue(new ProtagonistChangeItem("eva", null)); var t1 = new TutorialItem(null); t1.Block.ForwardQueue.Enqueue(new TutorialTextItem("tutorial1", null)); t1.Block.ForwardQueue.Enqueue(new TutorialTextItem("tutorial2", null)); sb.Root.ForwardQueue.Enqueue(t1); var listener = new EventListener(sb.Context); var data = await listener.ForwardAsync(sb); data.Should().BeEquivalentTo( @"-- next -- OnMusicChange(abertura) OnBackgroundChange(floresta) OnProtagonistChange(eva) OnTutorialOpen() OnTutorialChange(tutorial1) -- next -- OnTutorialChange(tutorial2) -- next -- OnTutorialClose() OnProtagonistChange() OnBackgroundChange() OnMusicChange() "); }
private void HandleTutorialItem(TutorialItem tutorialItem) { _tutorialTextField.Type(PlayerPrefStringResolver.Instance.Resolve(tutorialItem.Text)); switch (tutorialItem.Action) { case TutorialItemActionType.ShowTemperatureMeter: _temperatureUiController.Hide(false); break; case TutorialItemActionType.CameraShake: CameraManager.Instance.Shake(0.2f); break; case TutorialItemActionType.SpawnFireball: _fireballSpawner.Spawn(); _fireballSpawner.Invoke("Spawn", 0.6f); break; case TutorialItemActionType.Mayhem: NpcManager.Instance.UnleashTheChaos(); break; case TutorialItemActionType.None: default: break; } }
private void OffGyroallback() { PlayerPrefs.SetInt("GUIDE3D", 3); MsgBase.MsgAdd <GameObject, MySkyInputEvent.DragState, Vector2, Vector2, Vector3>("EventDrag", EventDrag); MsgBase.MsgAdd <GameObject, MySkyInputEvent.ClickState, Vector2>("EventClick", OnClickPhoto); PhotoCameraObj = new GameObject(); PhotoCameraObj.name = "PhotoCameraObj1111111"; PhotoCameraObj.transform.SetParent(SCameraManager.currentCamera.gameObject.transform.parent.gameObject.transform); Royboj = Instantiate(Resources.Load("photo/Rotation")) as GameObject; Royboj.SetActive(false); Royboj.transform.SetParent(PhotoCameraObj.transform); Royboj.transform.localPosition = new Vector3(0, -2.5f, 6.22f); tutorialProcess2 = new TutorialProcess2(TutorialUIObj, TutorialUIObj2); FindConfig = MonoBehaviour.Instantiate(Resources.Load("photo/Find_config")) as GameObject; FindConfig.name = "FindConfig"; FindConfig.transform.SetParent(gameObject.transform); m_FindConfig = FindConfig.GetComponent <Find_Item_Config>(); m_PhotoConfigArray = new PhotoConfigArray(); TutorialItem tutorialItem = new TutorialItem(gameObject); tutorialItem.Init(20); MsgBase.SendMsg("OpenGyroController"); }
private void OnSelectedItem(object sender, SelectedItemChangedEventArgs e) { if (e.SelectedItem is TutorialItem) { TutorialItem selectedItem = e.SelectedItem as TutorialItem; image.Source = GetImageSource(selectedItem.Id); } }
public void NextTutorialItem() { if (index < items.Length - 1) { currenItem.gameObject.SetActive(false); index++; currenItem = items[index]; currenItem.gameObject.SetActive(true); } else { StopTutorial(); } }
public void StartTutorial(string name) { if (!string.IsNullOrEmpty(_item.name)) { StopTutorial(); } foreach (TutorialItem item in tutorials) { if (item.name == name) { _item = item; window.SetActive(true); ui.TriggerUI(item); } } }
private IEnumerable TutorialScript() { if (this.items == null) { yield break; } while (this.items.Count > 0) { TutorialItem item = this.items[0]; this.items.RemoveAt(0); yield return(new WaitForSeconds(item.WaitForSeconds)); this.ApplyText(item.Text); } }
public async Task BackAndForth() { var target = new Storyboard(); var listener = new EventListener(target.Context); target.Root.ForwardQueue.Enqueue(new MusicItem("abertura", null)); target.Root.ForwardQueue.Enqueue(new BackgroundItem("floresta", null)); target.Root.ForwardQueue.Enqueue(new ProtagonistChangeItem("eva", null)); var t1 = new TutorialItem(null); t1.Block.ForwardQueue.Enqueue(new TutorialTextItem("tutorial1", null)); t1.Block.ForwardQueue.Enqueue(new TutorialTextItem("tutorial2", null)); target.Root.ForwardQueue.Enqueue(t1); (await target.MoveNextAsync()).Should().BeTrue(); (await target.MoveNextAsync()).Should().BeTrue(); (await target.MovePreviousAsync()).Should().BeTrue(); (await target.MovePreviousAsync()).Should().BeFalse(); (await target.MoveNextAsync()).Should().BeTrue(); (await target.MoveNextAsync()).Should().BeTrue(); (await target.MoveNextAsync()).Should().BeFalse(); listener.ToString().Should().Be( @"OnMusicChange(abertura) OnBackgroundChange(floresta) OnProtagonistChange(eva) OnTutorialOpen OnTutorialChange(tutorial1) OnTutorialChange(tutorial2) OnTutorialChange(tutorial1) OnProtagonistChange() OnTutorialClose OnBackgroundChange() OnMusicChange() OnMusicChange(abertura) OnBackgroundChange(floresta) OnProtagonistChange(eva) OnTutorialOpen OnTutorialChange(tutorial1) OnTutorialChange(tutorial2) OnTutorialClose" ); }
public async Task SimpleNarration() { var sb = new Storyboard(); sb.Root.ForwardQueue.Enqueue(new MusicItem("abertura", null)); sb.Root.ForwardQueue.Enqueue(new BackgroundItem("floresta", null)); var tutorial = new TutorialItem(null); tutorial.Block.ForwardQueue.Enqueue(new TutorialTextItem("Tutorial 1", null)); sb.Root.ForwardQueue.Enqueue(tutorial); var listener = new EventListener(sb.Context); var data = await listener.ForwardAsync(sb); data.Should().Be( @"-- next -- OnMusicChange(abertura) OnBackgroundChange(floresta) OnTutorialOpen() OnTutorialChange(Tutorial 1) -- next -- OnTutorialClose() OnBackgroundChange() OnMusicChange() " ); data = await listener.BackwardAsync(sb); data.Should().Be( @"-- previous -- OnMusicChange(abertura) OnBackgroundChange(floresta) OnTutorialOpen() OnTutorialChange(Tutorial 1) -- previous -- OnTutorialClose() OnBackgroundChange() OnMusicChange() " ); }
void OnTriggerEnter(Collider other) { if (other.tag == "Destination") { fade.GetComponent <FadeInOut>().isFadeOut = true; fade.GetComponent <FadeInOut>().isNext = true; } if (other.tag == "TutorialItem") { tutorialItem = other.GetComponent <TutorialItem>(); if (!tutorialItem.find) { questionMark.SetActive(true); } } if (other.tag == "item" || other.tag == "Npc") { questionMark.SetActive(true); } }
/// <summary> /// Tutorial button on RHS clicked, open up relevant tutorial UI based on supplied item /// </summary> /// <param name="item"></param> private void OpenTutorialItem(int index = -1) { //flush input buffer Input.ResetInputAxes(); if (GameManager.i.inputScript.ModalState == ModalState.Normal) { if (index > -1) { //get tutorialItem if (index < listOfSetItems.Count) { currentItem = listOfSetItems[index]; if (currentItem != null) { //switch off all arrows for (int i = 0; i < numOfItems; i++) { listOfInteractions[i].arrowImage.gameObject.SetActive(false); } //display arrow next to selected + 1 tutorial button (shows the next one you need to click on) if (index + 1 < numOfItems) { listOfInteractions[index + 1].arrowImage.gameObject.SetActive(true); } //what type of item switch (currentItem.tutorialType.name) { case "Dialogue": //open special outcome window ModalOutcomeDetails details = new ModalOutcomeDetails() { side = GameManager.i.sideScript.PlayerSide, textTop = GameManager.Formatt(currentItem.dialogue.topText, ColourType.moccasinText), textBottom = currentItem.dialogue.bottomText, sprite = GameManager.i.tutorialScript.tutorial.sprite, isAction = false, isSpecial = true, isSpecialGood = true }; EventManager.i.PostNotification(EventType.OutcomeOpen, this, details); break; case "Goal": GameManager.i.tutorialScript.UpdateGoal(currentItem.goal); //change colour to completed (indicates that you're currently doing, or have done, the goal) ColorBlock goalColours = listOfButtons[index].colors; goalColours.normalColor = colourCompleted; listOfButtons[index].colors = goalColours; break; case "Information": EventManager.i.PostNotification(EventType.GameHelpOpen, this, currentItem.gameHelp); break; case "Query": /* * if (currentItem.isQueryDone == false) * { * TopicUIData data = GetTopicData(currentItem); * if (data != null) * { EventManager.i.PostNotification(EventType.TopicDisplayOpen, this, data); } * //change colour to completed (indicates that you're currently doing, or have done, the query) * ColorBlock itemColours = listOfButtons[index].colors; * itemColours.normalColor = colourCompleted; * listOfButtons[index].colors = itemColours; * } * else * { * //query has already been done * ModalOutcomeDetails detailsDone = new ModalOutcomeDetails() * { * side = GameManager.i.sideScript.PlayerSide, * textBottom = "Haven't we already covered that?<br><br>I must be having a <b>Senior Moment</b>", * sprite = GameManager.i.tutorialScript.tutorial.sprite, * isAction = false, * isSpecial = true, * isSpecialGood = false * }; * if (string.IsNullOrEmpty(currentItem.queryHeader) == false) * { detailsDone.textTop = GameManager.Formatt(currentItem.queryHeader, ColourType.moccasinText); } * else * { * detailsDone.textTop = GameManager.Formatt("I beg your pardon", ColourType.moccasinText); * Debug.LogWarningFormat("Invalid queryHeader (Null or Empty) for \"{0}\"", currentItem.name); * } * //special outcome * EventManager.i.PostNotification(EventType.OutcomeOpen, this, detailsDone); * }*/ TopicUIData data = GetTopicData(currentItem); if (data != null) { EventManager.i.PostNotification(EventType.TopicDisplayOpen, this, data); } /*//change colour to completed (indicates that you're currently doing, or have done, the query) * ColorBlock itemColours = listOfButtons[index].colors; * itemColours.normalColor = colourCompleted; * listOfButtons[index].colors = itemColours;*/ break; default: Debug.LogWarningFormat("Unrecognised item.TutorialType \"{0}\"", currentItem.tutorialType.name); break; } } else { Debug.LogWarningFormat("Invalid currentItem (tutorial) (Null)"); } } else { Debug.LogWarningFormat("Invalid index (is {0}, listOfSetItems.Count is {1})", index, listOfSetItems.Count); } } else { Debug.LogWarning("Invalid index (button.buttonInteraction.returnValue (-1)"); } } }
private void Start() { items = GetComponentsInChildren <TutorialItem>(true); currenItem = items[0]; currenItem.gameObject.SetActive(true); }
private void Start() { m_Master = GetComponent <TutorialItem>(); }
private IStoryboardItem HandlePromptTriggerElement(bool triggerFound) { void Validate() { var elementName = reader.LocalName; if (triggerFound) { throw new StoryboardParsingException(reader, $"O elemento '{elementName}' é inválido porque existe outro elemento de pausa dentro do '{Prompt}'."); } if (reader.MoveToNextAttribute()) { throw new StoryboardParsingException(reader, $"Não são permitidos atributos no elemento '{elementName}' dentro do elemento '{Prompt}'."); } } void CloseToProtagonist() { for (; ;) { if (Is <ProtagonistItem>() || Is <ProtagonistMoodItem>() || Is <ProtagonistBumpItem>()) { return; } if (blocks.Count == 0) { throw new StoryboardParsingException(reader, $"O elemento '{reader.LocalName}' só pode ser usado em um '{Prompt}' quando o mesmo estiver ligado a um '{Protagonist}'."); } CloseBlock(); } } switch (reader.LocalName) { case Narration: { CloseToRootOrDo(); Validate(); var item = new NarrationItem(null); item.Block.ForwardQueue.Enqueue(new NarrationTextItem(GetContent(), null)); return(item); } case Tutorial: { CloseToRootOrDo(); Validate(); var item = new TutorialItem(null); item.Block.ForwardQueue.Enqueue(new TutorialTextItem(GetContent(), null)); return(item); } case Speech: { CloseToProtagonist(); Validate(); var item = new ProtagonistSpeechItem(null); item.Block.ForwardQueue.Enqueue(new ProtagonistSpeechTextItem(GetContent(), null)); return(item); } case Thought: { CloseToProtagonist(); Validate(); var item = new ProtagonistThoughtItem(null); item.Block.ForwardQueue.Enqueue(new ProtagonistThoughtTextItem(GetContent(), null)); return(item); } case Observe: CloseToRootOrDo(); Validate(); return(new PauseItem(null)); default: throw new StoryboardParsingException(reader, $"O elemento '{reader.LocalName}' não é suportado dentro do elemento 'prompt'."); } }
/// <summary> /// Populates and returns a data package suitable for TopicUI. Returns null if a problem. /// </summary> /// <param name="item"></param> /// <returns></returns> private TopicUIData GetTopicData(TutorialItem item) { if (item != null) { int index, limit, count; //data package TopicUIData data = new TopicUIData(); data.topicName = item.tag; data.header = item.query.queryHeader; data.text = item.query.queryText; data.isBoss = false; data.nodeID = -1; data.uiType = TopicDecisionType.Tutorial; data.spriteMain = GameManager.i.tutorialScript.tutorial.sprite; data.ignoreTooltipHeader = string.Format("<size=120%>{0}</size>", GameManager.Formatt("Disappointed", ColourType.badText)); data.ignoreTooltipMain = "Yes, I am. Being able to make a decision is important, what's wrong with you?"; data.ignoreTooltipDetails = string.Format("<size=115%>{0}</size>", GameManager.Formatt("I'll have to make it for you", ColourType.neutralText)); if (item.query.queryType != null) { //query item type GameManager.i.tutorialScript.queryType = item.query.queryType; //Topic options TopicOption[] arrayOfTopicOptions = GameManager.i.tutorialScript.tutorial.arrayOfOptions; if (arrayOfTopicOptions != null) { //ignore option TopicOption ignoreOption = GameManager.i.tutorialScript.tutorial.ignoreOption; if (ignoreOption != null) { //check there are four options and none are null if (arrayOfTopicOptions.Length == maxOptions) { bool isProceed = true; for (int i = 0; i < arrayOfTopicOptions.Length; i++) { if (arrayOfTopicOptions[i] == null) { Debug.LogErrorFormat("Invalid topicOption (Null) for tutorial \"{0}\" arrayOfTopicOptions[{1}]", GameManager.i.tutorialScript.tutorial.name, i); isProceed = false; } } if (isProceed == true) { //Tutorial options List <TutorialOption> listOfTutorialOptions = new List <TutorialOption>(); List <TutorialOption> listOfTutorialIgnoreOptions = new List <TutorialOption>(); //special cases where an Alt set of options may be needed switch (item.query.queryType.name) { case "Name": switch (GameManager.i.playerScript.sex) { case ActorSex.Male: listOfTutorialOptions = item.query.listOfOptions; listOfTutorialIgnoreOptions = item.query.listOfIgnoreOptions; break; case ActorSex.Female: listOfTutorialOptions = item.query.listOfOptionsAlt; listOfTutorialIgnoreOptions = item.query.listOfIgnoreOptionsAlt; break; default: Debug.LogWarningFormat("Unrecognised ActorSex \"{0}\"", GameManager.i.playerScript.sex); break; } break; default: listOfTutorialOptions = item.query.listOfOptions; listOfTutorialIgnoreOptions = item.query.listOfIgnoreOptions; break; } count = listOfTutorialOptions.Count; //create temp list by Value (will be deleting List <TutorialOption> listOfTempOptions = new List <TutorialOption>(listOfTutorialOptions) { }; // - - - RANDOM if (item.query.isRandomOptions == true) { limit = Mathf.Min(maxOptions, count); //select up to four tutorial options randomly for (int i = 0; i < limit; i++) { index = Random.Range(0, listOfTempOptions.Count); TutorialOption optionTutorial = listOfTempOptions[index]; if (optionTutorial != null) { //Get Topic options TopicOption optionTopic = arrayOfTopicOptions[i]; optionTopic.tag = optionTutorial.tag; optionTopic.textToDisplay = GameManager.i.topicScript.GetOptionString(optionTutorial.text); data.listOfOptions.Add(optionTopic); listOfTempOptions.RemoveAt(index); } else { Debug.LogWarningFormat("Invalid tutorialOption (Null) for isRandom listOfTempOptions[{0}]", index); } } } else { // - - - NOT random, take first four options limit = Mathf.Min(maxOptions, count); for (int i = 0; i < limit; i++) { TutorialOption optionTutorial = listOfTempOptions[i]; if (optionTutorial != null) { TopicOption optionTopic = arrayOfTopicOptions[i]; optionTopic.tag = optionTutorial.tag; optionTopic.textToDisplay = GameManager.i.topicScript.GetOptionString(optionTutorial.text); data.listOfOptions.Add(optionTopic); } else { Debug.LogWarningFormat("Invalid topicOption (Null) for normal listOfTempOptions[{0}]", i); } } } //IGNORE option if (listOfTutorialIgnoreOptions != null) { //needs to be one option (can be more but they are ignored) if (listOfTutorialIgnoreOptions.Count >= 1) { TutorialOption optionTutorial = listOfTutorialIgnoreOptions[0]; if (optionTutorial != null) { data.listOfIgnoreEffects.Add(ignoreOption.listOfGoodEffects[0]); //ignore option data GameManager.i.tutorialScript.optionIgnoreTag = optionTutorial.tag; } else { Debug.LogWarning("Invalid topicOption (Null) for IGNORE listOfTempOptions[0]"); } } else { Debug.LogWarningFormat("Invalid listOfIgnoreOptions (Empty) for topicItem \"{0}\"", item.name); } } else { Debug.LogWarningFormat("Invalid listOfIgnoreOptions (Null) for topicItem \"{0}\"", item.name); } //option tooltips and optionNumber (ignore option done above) for (index = 0; index < data.listOfOptions.Count; index++) { TopicOption option = data.listOfOptions[index]; if (option != null) { option.tooltipHeader = string.Format("<size=120%>{0}</size>", GameManager.Formatt(option.tag, ColourType.neutralText)); option.tooltipMain = GameManager.i.tutorialScript.GetTutorialTooltip(item.query.queryType); //reassign option number to be the position in the listOfOptions option.optionNumber = index; //set all options as Valid option.isValid = true; //copy data across to TutorialManager.cs fields switch (index) { case 0: GameManager.i.tutorialScript.option0Tag = option.tag; break; case 1: GameManager.i.tutorialScript.option1Tag = option.tag; break; case 2: GameManager.i.tutorialScript.option2Tag = option.tag; break; case 3: GameManager.i.tutorialScript.option3Tag = option.tag; break; default: Debug.LogWarningFormat("Invalid index \"{0}\"", index); break; } } else { Debug.LogWarningFormat("Invalid topicOption (Null) for data.listOfOptions[{0}]", index); } } } return(data); } else { Debug.LogErrorFormat("Invalid arrayOfTopicOptions (records, has {0}, needs {1}) for tutorial \"{2}\"", arrayOfTopicOptions.Length, maxOptions, GameManager.i.tutorialScript.tutorial.name); } } else { Debug.LogErrorFormat("Invalid ignoreOption (Null) for tutorial \"{0}\"", GameManager.i.tutorialScript.tutorial.name); } } else { Debug.LogError("Invalid tutorial.arrayOfOptions (Null)"); } } else { Debug.LogWarning("Invalid (Tutorial) item (Null)"); } } else { Debug.LogErrorFormat("Invalid queryType (Null) for TutorialItem \"{0}\"", item.name); } //fault condition return(null); }
public static Dictionary <string, TutorialBaseScript> activeTutorials = new Dictionary <string, TutorialBaseScript>(); //store list of active tutorial to iterate through public static TutorialBaseScript ShowTutorial(TutorialItem caller) { TutorialBaseScript m_Tut = ShowTutorial(caller.m_Data, caller.transform); return(m_Tut); }