Exemplo n.º 1
0
        /// <summary>
        /// 完成当前任务
        /// </summary>
        /// <param name="questId"></param>
        /// <param name="callBack"></param>
        /// <returns></returns>
        public bool ComplateQuestId(string questId, qy.config.Ability ability, Action <bool, PlayerDataMessage> callBack)
        {
            JsonData jd = new JsonData();

            jd["storyid"]   = questId;
            jd["choice"]    = string.Format("{0}|{1}|{2}", ability.discipline, ability.loyalty, ability.wisdom);
            jd["timestamp"] = time.ToString();
            return(SendData(SAVE_STORY_CMD, jd, callBack));
        }
Exemplo n.º 2
0
        public void RefreshData(PlayerDataMessage message)
        {
            hertTimestamp  = message.heartTime / 1000;
            coinNum        = message.gold;
            heartNum       = message.heart;
            starNum        = message.star;
            nickName       = message.name;
            userId         = message.uid;
            eliminateLevel = message.level;


            if (message.sevenDay != null && message.sevenDay.sevenDayInfo != null)
            {
                indexDay   = message.sevenDay.sevenDayInfo.index;
                awardState = message.sevenDay.sevenDayInfo.state;
            }
            else
            {
                awardState = 2;
            }

            propsDic = new Dictionary <string, config.PropItem>();
            foreach (PlayerDataMessage.PropItem item in message.items)
            {
                PropItem prop = GameMainManager.Instance.configManager.propsConfig.GetItem(item.itemId);
                if (prop != null)
                {
                    prop.count      = item.count;
                    prop.uuid       = item.uuid;
                    prop.vanishTime = item.vanishTime;
                }


                propsDic.Add(item.itemId, prop);
            }

            //---------------------------------------
            if (message.roles != null)
            {
                foreach (PlayerDataMessage.RoleData item in message.roles)
                {
                    SetRoleState(item.roleId, (RoleState)item.status);
                }
            }
            if (message.stories != null)
            {
                foreach (PlayerDataMessage.StoryData story in message.stories)
                {
                    if (!complatedQuests.ContainsKey(story.storyId))
                    {
                        complatedQuests.Add(story.storyId, 0);
                    }
                }
            }

            if (!string.IsNullOrEmpty(message.roleId))
            {
                role = GameMainManager.Instance.configManager.roleConfig.GetItem(message.roleId).Clone();
            }

            questId = message.storyid;//任务id存到角色数据中有了角色再保存数据
            if (!string.IsNullOrEmpty(nextQuestId))
            {
                questId = nextQuestId;
            }
            ability  = new config.Ability(message.discipline, message.loyalty, message.wisdom);
            totalExp = int.Parse(message.storyExp);
            currExp  = int.Parse(message.lvExp);
            level    = message.storyLv == 0?1: message.storyLv;
            //-----------------------------------

            dirty = false;

            SaveData();
            Messenger.Broadcast(ELocalMsgID.RefreshBaseData);
        }
Exemplo n.º 3
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);
        }
Exemplo n.º 4
0
 private void UpdateAbility(qy.config.Ability ability)
 {
     loyaltySlider.value = ability.loyalty / 100f;
     wisdomSlider.value  = ability.wisdom / 100f;
     discipline.value    = ability.discipline / 100f;
 }