Example #1
0
        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);
            }
        }
Example #2
0
        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);
            }
        }
Example #3
0
        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);
            }
        }
Example #4
0
        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);
            }
        }
Example #5
0
 private void ShowDialog(config.GuideItem item)
 {
     dialog.gameObject.SetActive(true);
     (dialog.transform as RectTransform).anchoredPosition = item.position;
     text.text = item.dialogue;
 }
Example #6
0
        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);
        }
Example #7
0
 private void OnGuideItemEnd(config.GuideItem item)
 {
     //特殊处理 结束引导时的处理
 }