/// <summary> /// 创建故事数据 /// </summary> /// <param name="scene"></param> /// <param name="positionType"></param> /// <param name="storyId"></param> public void CreateStoryData(StoryInfoBean storyInfo) { storyInfo.position_x = 0; storyInfo.position_y = 0; storyInfo.valid = 1; storyInfoService.CreateStoryInfo(storyInfo); }
/// <summary> /// 烹饪游戏剧情触发 /// </summary> /// <param name="gameCookingData"></param> /// <param name="id"></param> public bool EventTriggerForStoryCooking(MiniGameCookingBean gameCookingData, long id) { StoryInfoBean storyInfo = StoryInfoHandler.Instance.manager.GetStoryInfoDataById(id); if (storyInfo == null) { return(false); } this.storyInfo = storyInfo; SetEventStatus(EventStatusEnum.EventIng); SetEventType(EventTypeEnum.StoryForMiniGameCooking); //控制模式修改 BaseControl baseControl = GameControlHandler.Instance.StartControl <ControlForStoryCpt>(GameControlHandler.ControlEnum.Story); baseControl.transform.position = new Vector3(storyInfo.position_x, storyInfo.position_y); UIHandler.Instance.manager.CloseAllUI(); //设置文本的回调 UIGameText uiGameText = UIHandler.Instance.manager.GetUI <UIGameText>(UIEnum.GameText); uiGameText.SetCallBack(this); //设置文本的备用数据 SortedList <string, string> listMarkData = GetMiniGameMarkStrData(gameCookingData); uiGameText.SetListMark(listMarkData); StoryInfoHandler.Instance.builderForStory.BuildStory(storyInfo); return(true); }
/// <summary> /// 前置条件UI /// </summary> /// <param name="storeInfo"></param> private void GUITriggerCondition(StoryInfoBean storyInfo) { //前置相关 EditorGUILayout.BeginVertical(); EditorUI.GUIText("触发条件:", 100, 20); if (EditorUI.GUIButton("添加条件", 100, 20)) { storyInfo.trigger_condition += ("|" + EnumUtil.GetEnumName(EventTriggerEnum.Year) + ":" + "1|"); } List <string> listTriggerData = StringUtil.SplitBySubstringForListStr(storyInfo.trigger_condition, '|'); storyInfo.trigger_condition = ""; for (int i = 0; i < listTriggerData.Count; i++) { string itemTriggerData = listTriggerData[i]; if (CheckUtil.StringIsNull(itemTriggerData)) { continue; } EditorGUILayout.BeginHorizontal(); if (EditorUI.GUIButton("删除")) { listTriggerData.RemoveAt(i); i--; continue; } List <string> listItemTriggerData = StringUtil.SplitBySubstringForListStr(itemTriggerData, ':'); listItemTriggerData[0] = EnumUtil.GetEnumName(EditorUI.GUIEnum <EventTriggerEnum>("触发条件", (int)EnumUtil.GetEnum <EventTriggerEnum>(listItemTriggerData[0]), 300, 20)); listItemTriggerData[1] = EditorUI.GUIEditorText(listItemTriggerData[1] + "", 100, 20); EditorGUILayout.EndHorizontal(); storyInfo.trigger_condition += (listItemTriggerData[0] + ":" + listItemTriggerData[1]) + "|"; } EditorGUILayout.EndVertical(); }
/// <summary> /// 剧情触发 /// </summary> /// <param name="markId"></param> public bool EventTriggerForStory(StoryInfoBean storyInfo) { if (!CheckEventTrigger()) { return(false); } this.storyInfo = storyInfo; SetEventStatus(EventStatusEnum.EventIng); SetEventType(EventTypeEnum.Story); //暂停时间 GameTimeHandler.Instance.SetTimeStop(); //控制模式修改 BaseControl baseControl = GameControlHandler.Instance.StartControl <ControlForStoryCpt>(GameControlHandler.ControlEnum.Story); baseControl.transform.position = new Vector3(storyInfo.position_x, storyInfo.position_y); //隐藏重要NPC if (NpcHandler.Instance.buildForImportant != null) { NpcHandler.Instance.buildForImportant.HideNpc(); } if (NpcHandler.Instance.builderForFamily != null) { NpcHandler.Instance.builderForFamily.HideNpc(); } UIHandler.Instance.manager.CloseAllUI(); //设置文本的回调 UIGameText uiGameText = UIHandler.Instance.manager.GetUI <UIGameText>(UIEnum.GameText); uiGameText.SetCallBack(this); StoryInfoHandler.Instance.builderForStory.BuildStory(storyInfo); return(true); }
private void GUIStoryInfo() { if (listStoryInfo == null) { return; } for (int i = 0; i < listStoryInfo.Count; i++) { StoryInfoBean storyInfo = listStoryInfo[i]; GUIStoryInfoItem(storyInfo); } }
private void GUIStoryInfoItem(StoryInfoBean storyInfo) { GUILayout.BeginHorizontal(); if (EditorUI.GUIButton("删除", 50, 20)) { storyInfoService.DeleteDataById(storyInfo.id); listStoryInfo.Remove(storyInfo); } if (EditorUI.GUIButton("更新", 50, 20)) { storyInfoService.UpdateStoryData(storyInfo); } if (EditorUI.GUIButton("显示详情", 100, 20)) { mFindStoryId = storyInfo.id; StoryInfoHandler.Instance.builderForStory.transform.position = new Vector3(storyInfo.position_x, storyInfo.position_y); QueryStoryInfoData(mFindStoryId); QueryStoryDetailsData(mFindStoryId); } EditorUI.GUIText("注释:", 50, 20); storyInfo.note = EditorUI.GUIEditorText(storyInfo.note + "", 200, 20); EditorUI.GUIText("id:" + storyInfo.id, 150, 20); storyInfo.story_scene = (int)EditorUI.GUIEnum <ScenesEnum>("场景:", storyInfo.story_scene, 300, 20); if (storyInfo.story_scene == (int)ScenesEnum.GameTownScene) { EditorUI.GUIText("故事发生地点:", 150, 20); storyInfo.location_type = (int)EditorUI.GUIEnum <TownBuildingEnum>("", storyInfo.location_type, 150, 20); EditorUI.GUIText("0外 1里:", 150, 20); storyInfo.out_in = int.Parse(EditorUI.GUIEditorText(storyInfo.out_in + "", 50, 20)); } EditorUI.GUIText("坐标:", 150, 20); if (EditorUI.GUIButton("获取容器坐标", 150, 20)) { storyInfo.position_x = StoryInfoHandler.Instance.builderForStory.transform.position.x; storyInfo.position_y = StoryInfoHandler.Instance.builderForStory.transform.position.y; } storyInfo.position_x = float.Parse(EditorUI.GUIEditorText(storyInfo.position_x + "", 100, 20)); storyInfo.position_y = float.Parse(EditorUI.GUIEditorText(storyInfo.position_y + "", 100, 20)); GUITriggerCondition(storyInfo); if (EditorUI.GUIButton("更新", 50, 20)) { storyInfoService.UpdateStoryData(storyInfo); } GUILayout.EndHorizontal(); GUILayout.Space(20); }
/// <summary> /// 根据ID触发故事 /// </summary> /// <param name="id"></param> public bool EventTriggerForStory(long id) { if (!CheckEventTrigger()) { return(false); } StoryInfoBean storyInfo = StoryInfoHandler.Instance.manager.GetStoryInfoDataById(id); if (storyInfo != null) { EventTriggerForStory(storyInfo); } return(true); }
public bool EventTriggerForStory() { if (!CheckEventTrigger()) { return(false); } GameDataBean gameData = GameDataHandler.Instance.manager.GetGameData(); StoryInfoBean storyInfo = StoryInfoHandler.Instance.manager.CheckStory(gameData, SceneUtil.GetCurrentScene()); if (storyInfo != null) { EventTriggerForStory(storyInfo); return(true); } else { return(false); } }
/// <summary> /// 检测故事 自动触发剧情 /// </summary> public bool EventTriggerForStory(TownBuildingEnum positionType, int OutOrIn) { if (!CheckEventTrigger()) { return(false); } GameDataBean gameData = GameDataHandler.Instance.manager.GetGameData(); StoryInfoBean storyInfo = StoryInfoHandler.Instance.manager.CheckStory(gameData, SceneUtil.GetCurrentScene(), positionType, OutOrIn); if (storyInfo != null) { EventTriggerForStory(storyInfo); return(true); } else { return(false); } }
public StoryInfoBean CheckStory(GameDataBean gameData, ScenesEnum scenesEnum, TownBuildingEnum positionType, int outOrIn) { if (mapStory == null) { return(null); } foreach (long key in mapStory.Keys) { StoryInfoBean storyInfo = mapStory[key]; //TODO 检测条件 //判断场景是否符合 if (scenesEnum != storyInfo.GetStoryScene()) { continue; } //判断该事件是否可重复触发 if (storyInfo.trigger_loop == 0) { //如果已经触发过该事件 if (gameData.CheckTriggeredEvent(storyInfo.id)) { continue; } } //检测触发条件 if (!EventTriggerEnumTools.CheckIsAllTrigger(gameData, storyInfo.trigger_condition)) { continue; } //如果是小镇 if (storyInfo.story_scene == (int)ScenesEnum.GameTownScene) { //判断地点是否正确 if (positionType != (TownBuildingEnum)storyInfo.location_type || outOrIn != storyInfo.out_in) { continue; } } return(storyInfo); } return(null); }
/// <summary> /// 创建数据 /// </summary> /// <param name="storyInfo"></param> public void CreateStoryInfo(StoryInfoBean storyInfo) { BaseInsertData(tableNameForMain, storyInfo); }
/// <summary> /// 更新数据 /// </summary> /// <param name="storyInfoBean"></param> public void UpdateStoryData(StoryInfoBean storyInfoBean) { BaseDeleteDataById(storyInfoBean.id); BaseInsertData(tableNameForMain, storyInfoBean); }
/// <summary> /// 创建迷你烹饪游戏的故事 /// </summary> /// <param name="storyInfo"></param> /// <param name="gameCookingData"></param> public void BuildStoryForMiniGameCooking(StoryInfoBean storyInfo, MiniGameCookingBean gameCookingData) { mGameCookingData = gameCookingData; BuildStory(storyInfo); }
/// <summary> /// 创建故事 /// </summary> /// <param name="listData"></param> public void BuildStory(StoryInfoBean storyInfo) { this.storyInfo = storyInfo; StoryInfoHandler.Instance.manager.GetStoryDetailsById(storyInfo.id, SetStoryDetailsData); }