internal override void ReadItem(XmlElement item) { GuideItem guide = new GuideItem(); guide.id = item.GetAttribute("id"); guide.type = (GuideType)int.Parse(item.GetAttribute("type")); guide.personFile = item.GetAttribute("person"); guide.dialogue = GetLanguage(item.GetAttribute("dialog")); guide.ui = item.GetAttribute("ui"); guide.highlight = item.GetAttribute("highlight"); guide.nextId = item.GetAttribute("next"); guide.action = item.GetAttribute("action"); guide.questId = item.GetAttribute("questId"); string positionStr = item.GetAttribute("position"); if (!string.IsNullOrEmpty(positionStr)) { string[] p = positionStr.Split(':'); guide.position = new Vector2(int.Parse(p[0]), int.Parse(p[1])); } dic.Add(guide.id, guide); if (!uiNameDic.ContainsKey(guide.ui)) { uiNameDic[guide.ui] = new List <GuideItem>() { guide }; } else { uiNameDic[guide.ui].Add(guide); } }
private void Show(config.GuideItem item) { Debug.Log("@@@:开始执行引导:" + item.id); guideItem = item; mask.gameObject.SetActive(true); if (!string.IsNullOrEmpty(guideItem.highlight)) { ShowHightLight(guideItem.highlight); } if (!string.IsNullOrEmpty(guideItem.dialogue)) { ShowDialog(guideItem); } }
private void OnOpenUIHandle(ui.UISettings.UIWindowID uiID) { StartCoroutine(SetCanvasCamera()); PlayerData playerdata = GameMainManager.Instance.playerData; if (playerdata.role != null && playerdata.GetRoleState(playerdata.role.id) != PlayerData.RoleState.Normal) { //return; } Debug.Log("打开面板" + uiID.ToString()); config.GuideItem item = GetUnDisplayedGuideWithUIid(uiID, playerdata.questId); if (item != null) { guideStepID = item.id; Show(item); } }
private void Next() { CancelHightLight(); HideDialog(); if (guideItem == null) { return; } config.GuideItem nextItem = guideItem.next as config.GuideItem; if (nextItem != null) { Show(nextItem); } else { AddDisplayedGuide(guideStepID); OnGuideItemEnd(guideItem); } }
private void ShowDialog(config.GuideItem item) { dialog.gameObject.SetActive(true); (dialog.transform as RectTransform).anchoredPosition = item.position; text.text = item.dialogue; }
private config.GuideItem GetUnDisplayedGuideWithUIid(ui.UISettings.UIWindowID id, string questId) { config.GuideItem guide = null; questId = string.IsNullOrEmpty(questId)?"0":questId; //除了特殊情况 从配置表里遍历寻找没有展示过的 当前面板的引导 List <config.GuideItem> allItems = GameMainManager.Instance.configManager.guideConfig.GetItemWithWindowName(id.ToString()); List <config.GuideItem> list = new List <config.GuideItem>();//步骤id 每个步骤起始引导的id if (allItems != null) { //查找每个步骤的起始id for (int i = 0; i < allItems.Count; i++) { config.GuideItem item = allItems[i]; if (!string.IsNullOrEmpty(item.questId) && item.questId != questId) { continue; } if (i > 0) { config.GuideItem lastItem = allItems[i - 1]; if (lastItem.nextId == item.id) { continue; } } list.Add(item); } } //找出没有展示过的引导 for (int i = 0; i < list.Count; i++) { if (!displayedGuides.ContainsKey(list[i].id)) { guide = list[i]; break; } } if (guide == null) { return(null); } /* * //特殊处理 * if (id == ui.UISettings.UIWindowID.UITaskWindow) * { * config.QuestItem quest = GameMainManager.Instance.playerData.GetQuest(); * if (quest.type == config.QuestItem.QuestType.Branch && guide.id != "10014") * { * return null; * } * }*/ string displayedGuidesStr = ""; foreach (string key in displayedGuides.Keys) { displayedGuidesStr += "[" + key + "]"; } Debug.Log("@@@准备进行引导:" + guide.id + " 进行过的引导:" + displayedGuidesStr); return(guide); }
private void OnGuideItemEnd(config.GuideItem item) { //特殊处理 结束引导时的处理 }