/// <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)); }
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); }
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); }
private void UpdateAbility(qy.config.Ability ability) { loyaltySlider.value = ability.loyalty / 100f; wisdomSlider.value = ability.wisdom / 100f; discipline.value = ability.discipline / 100f; }