private void OnEnable() { npcInfoService = new NpcInfoService(); textInfoService = new TextInfoService(); npcTeamService = new NpcTeamService(); NpcInfoHandler.Instance.manager.Awake(); GameItemsHandler.Instance.manager.Awake(); }
/// <summary> /// 团队对话查询 /// </summary> public static void GUINpcTeamTalkFind(TextInfoService textInfoService, Dictionary <long, List <TextInfoBean> > mapNpcTalkInfoForFind) { if (mapNpcTalkInfoForFind == null) { return; } foreach (var mapItemTalkInfo in mapNpcTalkInfoForFind) { long markId = mapItemTalkInfo.Key; List <TextInfoBean> listTextData = mapItemTalkInfo.Value; GUINpcTextInfoItemForMarkId(textInfoService, 0, TextTalkTypeEnum.Normal, markId, listTextData, out listTextData); } }
private void OnEnable() { //查询所有NPC数据 listAllStoryInfoDetails = null; listOrderStoryInfoDetails = null; listStoryTextInfo = null; NpcInfoService npcInfoService = new NpcInfoService(); mapNpcInfo.Clear(); List <NpcInfoBean> listNpcInfo = npcInfoService.QueryAllData(); foreach (NpcInfoBean itemInfo in listNpcInfo) { mapNpcInfo.Add(itemInfo.id, itemInfo); } GameItemsHandler.Instance.manager.Awake(); StoryInfoHandler.Instance.manager.Awake(); textInfoService = new TextInfoService(); storyInfoService = new StoryInfoService(); }
/// <summary> /// NPC 对话ITEM /// </summary> /// <param name="textInfoService"></param> /// <param name="markId"></param> /// <param name="listTextData"></param> public static void GUINpcTextInfoItemForMarkId(TextInfoService textInfoService, long userId, TextTalkTypeEnum talkType, long markId, List <TextInfoBean> listTextData, out List <TextInfoBean> outListTextData) { GUILayout.Space(20); GUILayout.BeginHorizontal(); GUILayout.Label("markId:" + markId, GUILayout.Width(150), GUILayout.Height(20)); if (listTextData.Count > 0) { GUILayout.Label("对话类型:", GUILayout.Width(120), GUILayout.Height(20)); listTextData[0].talk_type = (int)(TextTalkTypeEnum)EditorGUILayout.EnumPopup((TextTalkTypeEnum)listTextData[0].talk_type, GUILayout.Width(100), GUILayout.Height(20)); GUILayout.Label("条件-好感对话:", GUILayout.Width(120), GUILayout.Height(20)); listTextData[0].condition_min_favorability = int.Parse(EditorGUILayout.TextArea(listTextData[0].condition_min_favorability + "", GUILayout.Width(50), GUILayout.Height(20))); } if (listTextData != null) { foreach (TextInfoBean itemTalkInfo in listTextData) { itemTalkInfo.talk_type = listTextData[0].talk_type; itemTalkInfo.condition_min_favorability = listTextData[0].condition_min_favorability; } } if (GUILayout.Button("添加对话", GUILayout.Width(120), GUILayout.Height(20))) { TextInfoBean addText = new TextInfoBean(); addText.mark_id = markId; addText.id = addText.mark_id * 1000 + (listTextData.Count + 1); addText.text_id = addText.id; addText.user_id = listTextData.Count > 0 ? listTextData[0].user_id : userId; addText.valid = 1; addText.text_order = 1; addText.talk_type = listTextData.Count > 0 ? listTextData[0].talk_type : (int)talkType; listTextData.Add(addText); } if (GUILayout.Button("保存当前所有对话", GUILayout.Width(120), GUILayout.Height(20))) { foreach (TextInfoBean itemTalkInfo in listTextData) { textInfoService.UpdateDataById(TextEnum.Talk, itemTalkInfo.id, itemTalkInfo); } } GUILayout.EndHorizontal(); TextInfoBean removeTalkInfo = null; foreach (TextInfoBean itemTalkInfo in listTextData) { GUILayout.BeginHorizontal(); if (GUILayout.Button("更新", GUILayout.Width(120), GUILayout.Height(20))) { textInfoService.UpdateDataById(TextEnum.Talk, itemTalkInfo.id, itemTalkInfo); } if (GUILayout.Button("删除对话", GUILayout.Width(120), GUILayout.Height(20))) { removeTalkInfo = itemTalkInfo; textInfoService.DeleteDataById(TextEnum.Talk, itemTalkInfo.id); } GUILayout.Label("talkId:", GUILayout.Width(100), GUILayout.Height(20)); itemTalkInfo.id = long.Parse(EditorGUILayout.TextArea(itemTalkInfo.id + "", GUILayout.Width(150), GUILayout.Height(20))); itemTalkInfo.text_id = itemTalkInfo.id; GUILayout.Label("对话顺序:", GUILayout.Width(100), GUILayout.Height(20)); itemTalkInfo.text_order = int.Parse(EditorGUILayout.TextArea(itemTalkInfo.text_order + "", GUILayout.Width(50), GUILayout.Height(20))); GUILayout.Label("说话者ID:", GUILayout.Width(100), GUILayout.Height(20)); itemTalkInfo.user_id = EditorUI.GUIEditorText(itemTalkInfo.user_id, 150); itemTalkInfo.type = (int)(TextInfoTypeEnum)EditorGUILayout.EnumPopup((TextInfoTypeEnum)itemTalkInfo.type, GUILayout.Width(100), GUILayout.Height(20)); if (itemTalkInfo.type == (int)TextInfoTypeEnum.Select) { GUILayout.Label("选择类型:", GUILayout.Width(100), GUILayout.Height(20)); itemTalkInfo.select_type = int.Parse(EditorGUILayout.TextArea(itemTalkInfo.select_type + "", GUILayout.Width(50), GUILayout.Height(20))); } else { if (itemTalkInfo.type == (int)TextInfoTypeEnum.Behind) { GUILayout.Label("黑屏时间:", GUILayout.Width(100), GUILayout.Height(20)); itemTalkInfo.wait_time = EditorUI.GUIEditorText(itemTalkInfo.wait_time, 50); } GUILayout.Label("增加的好感:", GUILayout.Width(100), GUILayout.Height(20)); itemTalkInfo.add_favorability = int.Parse(EditorGUILayout.TextArea(itemTalkInfo.add_favorability + "", GUILayout.Width(50), GUILayout.Height(20))); } GUILayout.Label("指定下一句对话:", GUILayout.Width(120), GUILayout.Height(20)); itemTalkInfo.next_order = int.Parse(EditorGUILayout.TextArea(itemTalkInfo.next_order + "", GUILayout.Width(50), GUILayout.Height(20))); GUILayout.Label("触发条件-最低好感:", GUILayout.Width(120), GUILayout.Height(20)); itemTalkInfo.condition_min_favorability = int.Parse(EditorGUILayout.TextArea(itemTalkInfo.condition_min_favorability + "", GUILayout.Width(50), GUILayout.Height(20))); GUILayout.Label("预设名字:", GUILayout.Width(100), GUILayout.Height(20)); itemTalkInfo.name = EditorGUILayout.TextArea(itemTalkInfo.name + "", GUILayout.Width(50), GUILayout.Height(20)); GUILayout.Label("对话内容:", GUILayout.Width(100), GUILayout.Height(20)); itemTalkInfo.content = EditorGUILayout.TextArea(itemTalkInfo.content + "", GUILayout.Width(500), GUILayout.Height(20)); itemTalkInfo.reward_data = EditorUI.GUIListData <RewardTypeEnum>("奖励", itemTalkInfo.reward_data); if (itemTalkInfo.type == (int)TextInfoTypeEnum.Select && itemTalkInfo.select_type == 1) { itemTalkInfo.pre_data = EditorUI.GUIListData <PreTypeEnum>("付出", itemTalkInfo.pre_data); itemTalkInfo.pre_data_minigame = EditorUI.GUIListData <PreTypeForMiniGameEnum>("小游戏数据", itemTalkInfo.pre_data_minigame); } if (GUILayout.Button("更新", GUILayout.Width(120), GUILayout.Height(20))) { textInfoService.UpdateDataById(TextEnum.Talk, itemTalkInfo.id, itemTalkInfo); } if (GUILayout.Button("删除对话", GUILayout.Width(120), GUILayout.Height(20))) { removeTalkInfo = itemTalkInfo; textInfoService.DeleteDataById(TextEnum.Talk, itemTalkInfo.id); } GUILayout.EndHorizontal(); } if (removeTalkInfo != null) { listTextData.Remove(removeTalkInfo); removeTalkInfo = null; } outListTextData = listTextData; }
/// <summary> /// Npc对话查询 UI /// </summary> public static void GUINpcTalkFind(TextInfoService textInfoService, long npcId, TextTalkTypeEnum talkType, Dictionary <long, List <TextInfoBean> > mapNpcTalkInfoForFind, out TextTalkTypeEnum outTalkType) { GUILayout.BeginHorizontal(); GUILayout.Label("NpcID:" + npcId, GUILayout.Width(120)); bool isFind = false; if (GUILayout.Button("查询普通对话", GUILayout.Width(120), GUILayout.Height(20))) { isFind = true; talkType = TextTalkTypeEnum.Normal; } if (GUILayout.Button("查询第一次对话", GUILayout.Width(120), GUILayout.Height(20))) { isFind = true; talkType = TextTalkTypeEnum.First; } if (GUILayout.Button("查询招募对话", GUILayout.Width(120), GUILayout.Height(20))) { isFind = true; talkType = TextTalkTypeEnum.Recruit; } if (GUILayout.Button("查询礼物对话", GUILayout.Width(120), GUILayout.Height(20))) { isFind = true; talkType = TextTalkTypeEnum.Gift; } if (GUILayout.Button("查询后续事件对话", GUILayout.Width(120), GUILayout.Height(20))) { isFind = true; talkType = TextTalkTypeEnum.Subsequent; } if (GUILayout.Button("查询捣乱事件对话", GUILayout.Width(120), GUILayout.Height(20))) { isFind = true; talkType = TextTalkTypeEnum.Rascal; } if (GUILayout.Button("查询杂项事件对话", GUILayout.Width(120), GUILayout.Height(20))) { isFind = true; talkType = TextTalkTypeEnum.Sundry; } if (GUILayout.Button("查询喊话", GUILayout.Width(120), GUILayout.Height(20))) { isFind = true; talkType = TextTalkTypeEnum.Shout; } if (GUILayout.Button("查询交换对话", GUILayout.Width(120), GUILayout.Height(20))) { isFind = true; talkType = TextTalkTypeEnum.Exchange; } if (isFind) { List <TextInfoBean> listNpcTalkInfo = textInfoService.QueryDataByTalkType(TextEnum.Talk, talkType, npcId); HandleTalkInfoDataByMarkId(listNpcTalkInfo, mapNpcTalkInfoForFind); } GUILayout.EndHorizontal(); outTalkType = talkType; if (mapNpcTalkInfoForFind == null) { return; } long deleteMarkId = 0; foreach (var mapItemTalkInfo in mapNpcTalkInfoForFind) { long markId = mapItemTalkInfo.Key; List <TextInfoBean> listTextData = mapItemTalkInfo.Value; if (GUILayout.Button("删除markId下所有对话", GUILayout.Width(150), GUILayout.Height(20))) { textInfoService.DeleteDataByMarkId(TextEnum.Talk, markId); deleteMarkId = markId; } GUINpcTextInfoItemForMarkId(textInfoService, npcId, talkType, markId, listTextData, out listTextData); } if (deleteMarkId != 0) { mapNpcTalkInfoForFind.Remove(deleteMarkId); deleteMarkId = 0; } }
/// <summary> /// 团队查询 UI /// </summary> public static void GUINpcTeamFind( TextInfoService textInfoService, NpcTeamService npcTeamService, string findIdsStr, List <NpcTeamBean> listFindData, Dictionary <long, List <TextInfoBean> > mapTeamTalkInfo, out string outFindIdsStr, out List <NpcTeamBean> outlistFindData, out Dictionary <long, List <TextInfoBean> > outMapTeamTalkInfo) { GUILayout.Label("Npc团队查询", GUILayout.Width(100), GUILayout.Height(20)); GUILayout.BeginHorizontal(); outFindIdsStr = EditorGUILayout.TextArea(findIdsStr + "", GUILayout.Width(200), GUILayout.Height(20)); if (GUILayout.Button("查询团队", GUILayout.Width(100), GUILayout.Height(20))) { long[] findIds = StringUtil.SplitBySubstringForArrayLong(findIdsStr, ','); listFindData = npcTeamService.QueryDataById(findIds); } if (GUILayout.Button("查询顾客团队", GUILayout.Width(100), GUILayout.Height(20))) { listFindData = npcTeamService.QueryDataByType((int)NpcTeamTypeEnum.Customer); } if (GUILayout.Button("查询好友团队", GUILayout.Width(100), GUILayout.Height(20))) { listFindData = npcTeamService.QueryDataByType((int)NpcTeamTypeEnum.Friend); } if (GUILayout.Button("查询捣乱团队", GUILayout.Width(100), GUILayout.Height(20))) { listFindData = npcTeamService.QueryDataByType((int)NpcTeamTypeEnum.Rascal); } if (GUILayout.Button("查询杂项团队", GUILayout.Width(100), GUILayout.Height(20))) { listFindData = npcTeamService.QueryDataByType((int)NpcTeamTypeEnum.Sundry); } if (GUILayout.Button("查询助兴团队", GUILayout.Width(100), GUILayout.Height(20))) { listFindData = npcTeamService.QueryDataByType((int)NpcTeamTypeEnum.Entertain); } if (GUILayout.Button("查询扫兴团队", GUILayout.Width(100), GUILayout.Height(20))) { listFindData = npcTeamService.QueryDataByType((int)NpcTeamTypeEnum.Disappointed); } GUILayout.EndHorizontal(); if (listFindData != null) { NpcTeamBean itemRemoveData = null; foreach (NpcTeamBean itemData in listFindData) { GUILayout.BeginHorizontal(); if (GUILayout.Button("更新", GUILayout.Width(100), GUILayout.Height(20))) { npcTeamService.Update(itemData); } if (GUILayout.Button("删除", GUILayout.Width(100), GUILayout.Height(20))) { npcTeamService.DeleteDataById(itemData.id); itemRemoveData = itemData; } if (GUILayout.Button("查询团队对话", GUILayout.Width(100), GUILayout.Height(20))) { List <TextInfoBean> listNpcTeamTalkInfo = textInfoService.QueryDataByMarkId(TextEnum.Talk, itemData.GetTalkIds()); HandleTalkInfoDataByMarkId(listNpcTeamTalkInfo, mapTeamTalkInfo); } GUILayout.EndHorizontal(); GUINpcTeamItem(itemData); GUILayout.Space(20); } if (itemRemoveData != null) { listFindData.Remove(itemRemoveData); itemRemoveData = null; } } outlistFindData = listFindData; outMapTeamTalkInfo = mapTeamTalkInfo; }
public override void InitData() { mTextInfoService = new TextInfoService(); }