示例#1
0
 /// <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);
 }
示例#2
0
    /// <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);
    }
示例#3
0
    /// <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();
    }
示例#4
0
    /// <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);
    }
示例#5
0
 private void GUIStoryInfo()
 {
     if (listStoryInfo == null)
     {
         return;
     }
     for (int i = 0; i < listStoryInfo.Count; i++)
     {
         StoryInfoBean storyInfo = listStoryInfo[i];
         GUIStoryInfoItem(storyInfo);
     }
 }
示例#6
0
    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);
    }
示例#7
0
    /// <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);
    }
示例#8
0
    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);
        }
    }
示例#9
0
    /// <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);
        }
    }
示例#10
0
 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);
 }
示例#11
0
 /// <summary>
 /// 创建数据
 /// </summary>
 /// <param name="storyInfo"></param>
 public void CreateStoryInfo(StoryInfoBean storyInfo)
 {
     BaseInsertData(tableNameForMain, storyInfo);
 }
示例#12
0
 /// <summary>
 /// 更新数据
 /// </summary>
 /// <param name="storyInfoBean"></param>
 public void UpdateStoryData(StoryInfoBean storyInfoBean)
 {
     BaseDeleteDataById(storyInfoBean.id);
     BaseInsertData(tableNameForMain, storyInfoBean);
 }
示例#13
0
 /// <summary>
 /// 创建迷你烹饪游戏的故事
 /// </summary>
 /// <param name="storyInfo"></param>
 /// <param name="gameCookingData"></param>
 public void BuildStoryForMiniGameCooking(StoryInfoBean storyInfo, MiniGameCookingBean gameCookingData)
 {
     mGameCookingData = gameCookingData;
     BuildStory(storyInfo);
 }
示例#14
0
 /// <summary>
 /// 创建故事
 /// </summary>
 /// <param name="listData"></param>
 public void BuildStory(StoryInfoBean storyInfo)
 {
     this.storyInfo = storyInfo;
     StoryInfoHandler.Instance.manager.GetStoryDetailsById(storyInfo.id, SetStoryDetailsData);
 }