Exemplo n.º 1
0
    public void AddQustUI(QuestManager.QuestBase quest)
    {
        GameObject questButton = Instantiate(QuestButton);

        questButton.name = quest.ID.ToString();
        questButton.transform.SetParent(QuestListUI.transform, false);

        Image     iconImage   = questButton.transform.Find("icon").GetComponent <Image>();
        Slider    prograssBar = questButton.transform.Find("progress").GetComponent <Slider>();
        Transform hint        = questButton.transform.Find("hint");

        iconImage.sprite  = Materiral.GetIconByName(quest.Smallicon);
        prograssBar.value = (float)PlayerInfo.GetQuestProgress(quest.ID) / quest.QuestComplete.Num;
        //如果已经完成
        if (prograssBar.value >= 1)
        {
            hint.gameObject.SetActive(true);
            AniController.Get(hint.gameObject).AddSprite(hintsprites);
            hint.GetComponent <Image>().color = Color.green;
            AniController.Get(hint.gameObject).PlayAni(0, 3, AniController.AniType.Loop, 5);
        }
        EventTriggerListener.Get(questButton).onClick = OpenQuestBoard;
    }
Exemplo n.º 2
0
    //读取任务配置
    public ArrayList loadQuestXmlToArray()
    {
        //保存路径
        string filepath = "Config/Quest/QuestList";

        string _result = Resources.Load(filepath).ToString();

        ArrayList List = new ArrayList();

        XmlDocument xmlDoc = new XmlDocument();

        xmlDoc.LoadXml(_result);

        XmlNodeList nodeList = xmlDoc.SelectSingleNode("QuestList").ChildNodes;

        foreach (XmlElement quest in nodeList)
        {
            QuestManager.QuestBase _quest = new QuestManager.QuestBase();

            //读取node内属性,把string转化为对应的属性
            if (quest.GetAttribute("ID") != "")
            {
                _quest.ID = int.Parse(quest.GetAttribute("ID"));
            }
            if (quest.GetAttribute("Questgroup") != "")
            {
                _quest.Questgroup = int.Parse(quest.GetAttribute("Questgroup"));
            }
            if (quest.GetAttribute("GroupID") != "")
            {
                _quest.GroupID = int.Parse(quest.GetAttribute("GroupID"));
            }
            if (quest.GetAttribute("Smallicon") != "")
            {
                _quest.Smallicon = quest.GetAttribute("Smallicon");
            }
            if (quest.GetAttribute("Bigicon") != "")
            {
                _quest.Bigicon = quest.GetAttribute("Bigicon");
            }
            if (quest.GetAttribute("Name") != "")
            {
                _quest.name = quest.GetAttribute("Name");
            }
            if (quest.GetAttribute("Des") != "")
            {
                _quest.des = quest.GetAttribute("Des");
            }
            if (quest.GetAttribute("CompleteDes") != "")
            {
                _quest.completedes = quest.GetAttribute("CompleteDes");
            }

            for (int i = 0; i < quest.ChildNodes.Count; i++)
            {
                XmlElement element = (XmlElement)quest.ChildNodes[i];

                //暂时不需要前置条件
                //if (element.Name == "Need")
                //{
                //    if (element.GetAttribute("Quest") != "")
                //        _quest.QuestNeed.PreQuest = int.Parse(element.GetAttribute("Quest"));
                //    if (element.GetAttribute("Goods") != "")
                //    {
                //        string[] Goods = element.GetAttribute("Goods").Split(',');
                //        _quest.QuestNeed.NeedGoods = new int[Goods.Length];
                //        for (int j = 0; j < Goods.Length; j++)
                //        {
                //            _quest.QuestNeed.NeedGoods[j] = int.Parse(Goods[j]);
                //        }
                //    }
                //}

                if (element.Name == "Complete")
                {
                    if (element.GetAttribute("QuestType") != "")
                    {
                        switch (element.GetAttribute("QuestType"))
                        {
                        case "PutGoods":
                            _quest.QuestComplete.QuestType = QuestManager.QuestTypeList.PutGoods;
                            break;

                        case "SellGoods":
                            _quest.QuestComplete.QuestType = QuestManager.QuestTypeList.SellGoods;
                            break;

                        case "ComposeGoods":
                            _quest.QuestComplete.QuestType = QuestManager.QuestTypeList.ComposeGoods;
                            break;

                        case "CollectGoods":
                            _quest.QuestComplete.QuestType = QuestManager.QuestTypeList.CollectGoods;
                            break;

                        case "ComposeProperty":
                            _quest.QuestComplete.QuestType = QuestManager.QuestTypeList.ComposeProperty;
                            break;

                        case "Arrive":
                            _quest.QuestComplete.QuestType = QuestManager.QuestTypeList.Arrive;
                            break;

                        case "Golds":
                            _quest.QuestComplete.QuestType = QuestManager.QuestTypeList.Golds;
                            break;

                        default:
                            Debug.LogError("Unkown QuestType:" + element.GetAttribute("QuestType") + "!!!!");
                            break;
                        }
                    }
                    if (element.GetAttribute("Num") != "")
                    {
                        _quest.QuestComplete.Num = int.Parse(element.GetAttribute("Num"));
                    }
                    if (element.GetAttribute("Parameter") != "")
                    {
                        string[] parameter = element.GetAttribute("Parameter").Split(',');
                        _quest.QuestComplete.Parameter = new int[parameter.Length];
                        for (int j = 0; j < parameter.Length; j++)
                        {
                            _quest.QuestComplete.Parameter[j] = int.Parse(parameter[j]);
                        }
                    }
                }

                if (element.Name == "Award")
                {
                    if (element.GetAttribute("Golds") != "")
                    {
                        _quest.Award.Gold = int.Parse(element.GetAttribute("Golds"));
                    }
                    if (element.GetAttribute("Exp") != "")
                    {
                        _quest.Award.Exp = int.Parse(element.GetAttribute("Exp"));
                    }
                    if (element.GetAttribute("Goods") != "")
                    {
                        string[] parameter = element.GetAttribute("Goods").Split(',');
                        _quest.Award.Goods = new int[parameter.Length];
                        for (int j = 0; j < parameter.Length; j++)
                        {
                            _quest.Award.Goods[j] = int.Parse(parameter[j]);
                        }
                    }
                    if (element.GetAttribute("GoodsNum") != "")
                    {
                        _quest.Award.GoodsNum = int.Parse(element.GetAttribute("GoodsNum"));
                    }
                    if (element.GetAttribute("Event") != "")
                    {
                        _quest.Award.Event = int.Parse(element.GetAttribute("Event"));
                    }
                    if (element.GetAttribute("TaskPoint") != "")
                    {
                        _quest.Award.TaskPoint = int.Parse(element.GetAttribute("TaskPoint"));
                    }
                }
            }
            //添加进List中
            List.Add(_quest);
        }
        return(List);
    }
Exemplo n.º 3
0
    public void OpenQuestBoard(int questID, float delyTime)
    {
        QuestManager.QuestBase quest = questManager.GetQuestInfoByID(questID);

        GameObject Board = Instantiate(QuestBoard);

        Board.name = quest.ID.ToString();
        Board.transform.SetParent(QuestCanvas.transform, false);

        //获取面板组件
        Image      iconImage        = Board.transform.Find("QuestBoard/icon").GetComponent <Image>();
        Text       questinfoText    = Board.transform.Find("QuestBoard/questinfo/Text").GetComponent <Text>();
        Text       CompleteinfoText = Board.transform.Find("QuestBoard/questinfo/CompleteText").GetComponent <Text>();
        Text       questnameText    = Board.transform.Find("QuestBoard/questName/questText").GetComponent <Text>();
        Slider     prograssBar      = Board.transform.Find("QuestBoard/questName/progress").GetComponent <Slider>();
        Text       prograssBarText  = Board.transform.Find("QuestBoard/questName/progress/progressText").GetComponent <Text>();
        GameObject closebutton      = Board.transform.Find("QuestBoard/Close").gameObject;
        Text       closebuttonText  = closebutton.transform.Find("Text").GetComponent <Text>();
        GameObject Mask             = Board.transform.Find("Mask").gameObject;
        GameObject questBoardBG     = closebutton.transform.parent.gameObject;
        //Award
        Text  awardGoldNum    = Board.transform.Find("QuestBoard/award/GoldNum").GetComponent <Text>();
        Text  awardExpNum     = Board.transform.Find("QuestBoard/award/ExpNum").GetComponent <Text>();
        Image AwardGoodsImage = Board.transform.Find("QuestBoard/award/Goods").GetComponent <Image>();
        Text  AwardGoodsNum   = Board.transform.Find("QuestBoard/award/GoodsNum").GetComponent <Text>();

        //更新参数
        iconImage.sprite       = Materiral.GetIconByName(quest.Bigicon);
        questinfoText.text     = TextParser.SpecialString(quest.des);
        questnameText.text     = quest.name;
        awardGoldNum.text      = "x" + quest.Award.Gold;
        awardExpNum.text       = "x" + quest.Award.Exp;
        AwardGoodsImage.sprite = Materiral.GetMaterialIcon(quest.Award.Goods[0], quest.Award.Goods[1]);
        AwardGoodsNum.text     = "x" + quest.Award.GoodsNum;

        prograssBar.value    = (float)questManager.GetQuestProgress(quest.ID) / quest.QuestComplete.Num;
        prograssBarText.text = questManager.GetQuestProgress(quest.ID) + "/" + quest.QuestComplete.Num;

        //设置按钮响应
        if (prograssBar.value >= 1)
        {
            if (PlayerInfo.GetNowscene() == quest.Award.TaskPoint)
            {
                //如果在任务地点则设置领取
                closebutton.GetComponent <Image>().color = Color.green;
                closebuttonText.text = "领取";
                EventTriggerListener.Get(closebutton).onClick = GetQuestAward;
            }
            else
            {
                //关闭按钮
                closebutton.GetComponent <Image>().color = Color.white;
                closebuttonText.text  = "关闭";
                CompleteinfoText.text = quest.completedes;
                EventTriggerListener.Get(closebutton).onClick = CloseQuestBoard;
            }
        }
        else
        {
            //关闭按钮
            closebutton.GetComponent <Image>().color = Color.white;
            closebuttonText.text = "关闭";
            EventTriggerListener.Get(closebutton).onClick = CloseQuestBoard;
        }

        questBoardBG.transform.localPosition = new Vector2(0, Screen.height / 2 + 200);
        LeanTween.moveLocalY(closebutton.transform.parent.gameObject, 300, 0.5f).setEaseOutBack().setDelay(delyTime);
    }
Exemplo n.º 4
0
    void GetQuestAward(GameObject go)
    {
        Transform Board      = go.transform.parent.parent;
        Transform root       = Board.parent;
        Transform MoneyBoard = transform.Find("/ToolsKit/Canvas/PlayerInfo/glodBoard");
        Transform mineBoard  = transform.Find("/ToolsKit/Canvas/PlayerInfo/mineBoard");
        //Award
        Transform awardGold  = Board.transform.Find("QuestBoard/award/Gold");
        Transform awardExp   = Board.transform.Find("QuestBoard/award/Exp");
        Transform AwardGoods = Board.transform.Find("QuestBoard/award/Goods");

        QuestManager.QuestBase info = questManager.GetQuestInfoByID(int.Parse(Board.name));

        //增加奖励
        PlayerInfo.ChangeMoney(info.Award.Gold);
        for (int i = 0; i < info.Award.GoodsNum; i++)
        {
            CharBag.AddGoodsByID(info.Award.Goods[0], info.Award.Goods[1]);
        }

        //完成任务
        PlayerInfo.AddCompleteQuest(info.ID);
        questManager.RemoveQuestToList(info.ID);
        //销毁任务面板的任务
        Transform questbutton = QuestListUI.transform.Find(info.ID.ToString());

        if (questbutton != null)
        {
            Destroy(questbutton.gameObject);
        }

        //生成金币
        for (int i = 0; i < info.Award.Gold; i = i + 50)
        {
            Transform gold = Instantiate(awardGold, root);
            gold.position = awardGold.position;
            float randomrange = 100f;
            float time        = 0.5f;
            LeanTween.moveY(gold.gameObject, gold.position.y + Random.Range(-randomrange, randomrange), time).setEase(LeanTweenType.easeOutSine);
            LeanTween.moveX(gold.gameObject, gold.position.x + Random.Range(-randomrange, randomrange), time).setEase(LeanTweenType.easeOutSine);

            LeanTween.moveX(gold.gameObject, MoneyBoard.position.x, time).setDelay(time * Random.Range(1.5f, 2f));
            LeanTween.moveY(gold.gameObject, MoneyBoard.position.y, time).setDelay(time * Random.Range(1.5f, 2f)).setOnComplete(
                () =>
            {
                Destroy(gold.gameObject);
            });
            if (i > 500)
            {
                break;
            }
        }

        //生成经验
        for (int i = 0; i < info.Award.Exp; i = i + 50)
        {
            Transform exp = Instantiate(awardExp, root);
            exp.position = awardExp.position;
            float randomrange = 100f;
            float time        = 0.5f;
            LeanTween.moveY(exp.gameObject, exp.position.y + Random.Range(-randomrange, randomrange), time).setEase(LeanTweenType.easeOutSine);
            LeanTween.moveX(exp.gameObject, exp.position.x + Random.Range(-randomrange, randomrange), time).setEase(LeanTweenType.easeOutSine);

            LeanTween.moveX(exp.gameObject, mineBoard.position.x, time).setDelay(time * Random.Range(1.5f, 2f));
            LeanTween.moveY(exp.gameObject, mineBoard.position.y, time).setDelay(time * Random.Range(1.5f, 2f)).setOnComplete(
                () =>
            {
                Destroy(exp.gameObject);
            });

            if (i > 500)
            {
                break;
            }
        }

        //生成物品
        for (int i = 0; i < info.Award.GoodsNum; i++)
        {
            Transform goods = Instantiate(AwardGoods, root);
            goods.position = AwardGoods.position;
            float randomrange = 100f;
            float time        = 0.5f;
            LeanTween.moveY(goods.gameObject, AwardGoods.position.y + Random.Range(-randomrange, randomrange), time).setEase(LeanTweenType.easeOutSine);
            LeanTween.moveX(goods.gameObject, AwardGoods.position.x + Random.Range(-randomrange, randomrange), time).setEase(LeanTweenType.easeOutSine);

            LeanTween.moveX(goods.gameObject, mineBoard.position.x + 100, time).setDelay(time * Random.Range(1.5f, 2f));
            LeanTween.moveY(goods.gameObject, mineBoard.position.y, time).setDelay(time * Random.Range(1.5f, 2f)).setOnComplete(
                () =>
            {
                Destroy(goods.gameObject);
            });

            if (i > 10)
            {
                break;
            }
        }

        LeanTween.moveLocalY(go.transform.parent.gameObject, Screen.height / 2 + 200, 0.3f).setEaseInBack().setOnComplete(() =>
        {
            Destroy(Board.gameObject);

            //添加完成的事件
            if (info.Award.Event != 0)
            {
                eventmanager.AddStroyWithEventID(info.Award.Event);
            }

            if (!questManager.IsArriveWaitingCheckPoint(0))
            {
                eventmanager.StartStory();
            }
        });

        //延迟更新显示
        LeanTween.delayedCall(0.5f * 2f, () => {
            PlayerInfo.Info playerInfo = PlayerInfo.GetPlayerInfo();
            MoneyBoard.Find("Text").GetComponent <Text>().text = playerInfo.Money.ToString();
        });
    }