コード例 #1
0
        public PlayerModelErr QuestComplate(out string storyID, string selectedID = "")
        {
            Messenger.Broadcast <CallMethodInfo>(ELocalMsgID.CallPlayerModel, new CallMethodInfo()
            {
                name       = "QuestComplate",
                parameters = new object[] { "", selectedID },
            });
            storyID = "";

            //检测完成任务条件
            config.QuestItem questItem = playerData.GetQuest();
            if (questItem.type == QuestItem.QuestType.Ending)
            {
                return(PlayerModelErr.NULL);
            }
            //完成过的任务无消耗 无经验
            if (!playerData.complatedQuests.ContainsKey(questItem.id))
            {
                if (playerData.starNum < questItem.requireStar)
                {
                    return(PlayerModelErr.NOT_ENOUGH_STAR);
                }
                List <PropItem> needProps = questItem.requireItem;
                foreach (PropItem item in needProps)
                {
                    PropItem haveItem  = playerData.GetPropItem(item.id);
                    int      haveCount = haveItem == null ? 0 : haveItem.count;
                    if (haveCount < item.count)
                    {
                        return(PlayerModelErr.NOT_ENOUGH_PROP);
                    }
                }

                //扣除完成任务物品
                playerData.starNum -= questItem.requireStar;
                foreach (PropItem item in needProps)
                {
                    playerData.RemovePropItem(item.id, item.count);
                }
                playerData.complatedQuests.Add(questItem.id, 0);

                //获得奖励物品
                foreach (PropItem item in questItem.prize)
                {
                    bool isGet = Random.Range(0, 100) < item.rate;
                    if (isGet)
                    {
                        playerData.AddPropItem(item.id, item.count);
                    }
                }

                //获得经验值
                playerData.totalExp += questItem.exp;
                playerData.currExp  += questItem.exp;
                //判断升级
                config.LevelItem levelItem = GameMainManager.Instance.configManager.levelConfig.GetItem(playerData.level);
                while (levelItem != null && playerData.currExp >= levelItem.exp)
                {
                    playerData.level++;
                    playerData.currExp -= levelItem.exp;
                    levelItem           = GameMainManager.Instance.configManager.levelConfig.GetItem(playerData.level);
                }
            }

            //更新下个任务
            qy.config.Ability ability = new config.Ability();
            if (questItem.type == config.QuestItem.QuestType.Main)
            {
                playerData.nextQuestId = questItem.gotoId;
                storyID = questItem.storyID;
            }
            else if (questItem.type == config.QuestItem.QuestType.Branch)
            {
                foreach (SelectItem item in questItem.selectList)
                {
                    if (item.id == selectedID)
                    {
                        playerData.nextQuestId = item.toQuestId;
                        storyID = item.storyID;
                        ability = item.ability;

                        string selectID = questItem.id + "_" + item.id;
                        if (!playerData.selectedItems.ContainsKey(selectID))
                        {
                            playerData.selectedItems.Add(selectID, 0);
                        }
                        break;
                    }
                }
            }
            else if (questItem.type == config.QuestItem.QuestType.Important)
            {
                if (playerData.survival < questItem.endingPoint.survival)
                {
                    //进入分支任务
                    playerData.nextQuestId = questItem.endingPoint.questID;
                    storyID = questItem.endingPoint.storyID;
                }
                else
                {
                    //进入普通任务
                    playerData.nextQuestId = questItem.gotoId;
                    storyID = questItem.storyID;
                }
            }
            if (string.IsNullOrEmpty(playerData.nextQuestId))
            {
                return(PlayerModelErr.QUEST_ID_ERROR);
            }

            //增加属性值
            config.Ability addAbilty = config.Ability.GetAddAbilty(playerData.ability, ability);
            playerData.ability += addAbilty;

            GameMainManager.Instance.netManager.ComplateQuestId(playerData.questId, addAbilty, (ret, res) => {
            });
            playerData.questId = playerData.nextQuestId;

            //标记角色状态
            config.QuestItem nextQuest = playerData.GetQuest();
            if (nextQuest.type == config.QuestItem.QuestType.Ending)
            {
                GameMainManager.Instance.netManager.ComplateQuestId(nextQuest.id, new config.Ability(), (ret, res) => {});
                GameMainManager.Instance.netManager.EndingRole(nextQuest.endingType, (ret, res) => { });
                switch (nextQuest.endingType)
                {
                case 1:    //死亡
                    playerData.SetRoleState(playerData.role.id, PlayerData.RoleState.Dide);
                    break;

                case 2:    //通关
                    playerData.SetRoleState(playerData.role.id, PlayerData.RoleState.Pass);
                    break;
                }
            }

            playerData.dirty = true;
            SaveData();
            Messenger.Broadcast(ELocalMsgID.RefreshBaseData);

            if (questItem.chapter != nextQuest.chapter)
            {
                Messenger.Broadcast <string>(ELocalMsgID.LoadScene, "Film");
            }

            return(PlayerModelErr.NULL);
        }
コード例 #2
0
    private void UpdatePanel()
    {
        questItem = playerdata.GetQuest();

        var sp =
            March.Core.ResourceManager.ResourceManager.instance.Load <Sprite>(Configure.StoryPerson,
                                                                              playerdata.role.headIcon);

        roleHeadImage.sprite = sp;
        GameUtils.Scaling(roleHeadImage.transform as RectTransform, new Vector2(sp.texture.width, sp.texture.height));

        //string headUrl = FilePathTools.GetPersonHeadPath(playerdata.role.headIcon);
        //AssetsManager.Instance.LoadAssetAsync<Sprite>(headUrl, (sp) =>
        //{
        //    roleHeadImage.sprite = sp;
        //    GameUtils.Scaling(roleHeadImage.transform as RectTransform,new Vector2(sp.texture.width,sp.texture.height));
        //});
        roleNameText.text = playerdata.role.name;
        levelText.text    = playerdata.level.ToString();
        UpdateAbility(playerdata.ability);

        qy.config.LevelItem levelItem = GameMainManager.Instance.configManager.levelConfig.GetItem(playerdata.level);
        if (levelItem != null)
        {
            float expProgress = playerdata.currExp / (float)levelItem.exp;
            levelSlider.value      = expProgress;
            levelProgressText.text = (expProgress * 100).ToString("f0") + "%";
        }
        else
        {
            levelSlider.value      = 0;
            levelProgressText.text = "0%";
        }


        if (!string.IsNullOrEmpty(questItem.bg))
        {
            taskImg.gameObject.SetActive(true);

            var sprite =
                March.Core.ResourceManager.ResourceManager.instance.Load <Sprite>(Configure.StoryBackground,
                                                                                  questItem.bg);
            taskImg.sprite = sprite;
            GameUtils.ScalingFixedWithHeight(taskImg.transform as RectTransform, new Vector2(sprite.texture.width, sprite.texture.height));

            //string taskBGUrl = FilePathTools.GetStorySpritePath(questItem.bg);
            //AssetsManager.Instance.LoadAssetAsync<Sprite>(taskBGUrl, (sp) =>
            //{
            //    taskImg.sprite = sp;
            //    GameUtils.ScalingFixedWithHeight(taskImg.transform as RectTransform, new Vector2(sp.texture.width, sp.texture.height));
            //});
        }
        else
        {
            taskImg.gameObject.SetActive(false);
        }


        taskTitle.text   = questItem.sectionName;
        taskDesText.text = questItem.sectionDes;


        SetMainTask();
    }