Example #1
0
    public void CreateStoryInfoDetailsDataByType(long storyId, StoryInfoDetailsBean.StoryInfoDetailsTypeEnum type)
    {
        StoryInfoDetailsBean itemDetailsInfo = new StoryInfoDetailsBean();

        itemDetailsInfo.type = (int)type;
        switch (type)
        {
        case StoryInfoDetailsBean.StoryInfoDetailsTypeEnum.NpcPosition:
            itemDetailsInfo.npc_id = 1;
            itemDetailsInfo.num    = 1;
            break;

        case StoryInfoDetailsBean.StoryInfoDetailsTypeEnum.NpcExpression:
            break;

        case StoryInfoDetailsBean.StoryInfoDetailsTypeEnum.Talk:
            itemDetailsInfo.text_mark_id = storyId * 10000 + mFindStroyOrder;
            break;

        case StoryInfoDetailsBean.StoryInfoDetailsTypeEnum.NpcDestory:
            break;

        case StoryInfoDetailsBean.StoryInfoDetailsTypeEnum.SceneInt:
            break;

        case StoryInfoDetailsBean.StoryInfoDetailsTypeEnum.AutoNext:
            itemDetailsInfo.wait_time = 1;
            break;

        case StoryInfoDetailsBean.StoryInfoDetailsTypeEnum.CameraPosition:
            break;

        case StoryInfoDetailsBean.StoryInfoDetailsTypeEnum.CameraFollowCharacter:
            break;

        case StoryInfoDetailsBean.StoryInfoDetailsTypeEnum.AudioSound:
            itemDetailsInfo.audio_sound = (int)AudioSoundEnum.ButtonForNormal;
            break;
        }

        itemDetailsInfo.story_id    = storyId;
        itemDetailsInfo.story_order = mFindStroyOrder;
        listAllStoryInfoDetails.Add(itemDetailsInfo);
        listOrderStoryInfoDetails.Add(itemDetailsInfo);
        storyInfoService.UpdateStoryDetailsByIdAndOrder(mFindStoryId, mFindStroyOrder, listOrderStoryInfoDetails);
    }
Example #2
0
    /// <summary>
    /// 刷新场景数据
    /// </summary>
    /// <param name="listData"></param>
    public void RefreshSceneData(List <StoryInfoDetailsBean> listData)
    {
        if (listData == null)
        {
            return;
        }
        if (listStoryTextInfo != null)
        {
            listStoryTextInfo.Clear();
        }
        listStoryTextInfo = null;
        foreach (StoryInfoDetailsBean itemData in listData)
        {
            StoryInfoDetailsBean.StoryInfoDetailsTypeEnum storyInfoDetailsType = itemData.GetStoryInfoDetailsType();
            if (storyInfoDetailsType == StoryInfoDetailsBean.StoryInfoDetailsTypeEnum.NpcPosition)
            {
                GameObject objNpc = GetSceneObjByName("character_" + itemData.num);
                BaseNpcAI  npcAI  = null;
                if (objNpc != null)
                {
                    npcAI = objNpc.GetComponent <BaseNpcAI>();
                }

                if (npcAI == null)
                {
                    NpcInfoBean npcInfoBean;
                    if (itemData.npc_id == 0)
                    {
                        npcInfoBean = new NpcInfoBean();
                    }
                    else if (itemData.npc_id == -1)
                    {
                        npcInfoBean = new NpcInfoBean();
                    }
                    else
                    {
                        if (mapNpcInfo.TryGetValue(itemData.npc_id, out NpcInfoBean npcInfo))
                        {
                            npcInfoBean = npcInfo;
                        }
                        else
                        {
                            npcInfoBean = new NpcInfoBean();
                            LogUtil.LogError("创建NPC失败 找不到ID为" + itemData.npc_id + "的NPC信息");
                        }
                    }
                    objNpc = CreateNpc(npcInfoBean.npc_id, new Vector3(itemData.position_x, itemData.position_y), itemData.num);
                    npcAI  = objNpc.GetComponent <BaseNpcAI>();
                }
                npcAI.transform.localPosition = new Vector3(itemData.position_x, itemData.position_y);
                //设置朝向
                npcAI.SetCharacterFace(itemData.face);
            }
            else if (storyInfoDetailsType == StoryInfoDetailsBean.StoryInfoDetailsTypeEnum.NpcEquip)
            {
                GameObject objNpc = GetSceneObjByName("character_" + itemData.num);
                if (objNpc == null)
                {
                    continue;
                }
                BaseNpcAI npcAI = objNpc.GetComponent <BaseNpcAI>();
                if (npcAI == null)
                {
                    continue;
                }
                SexEnum sex = npcAI.characterData.body.GetSex();
                itemData.GetNpcEquip(sex, out long hatId, out long clothesId, out long shoesId);
                if (hatId != -1)
                {
                    npcAI.characterData.equips.hatTFId = hatId;
                }
                if (clothesId != -1)
                {
                    npcAI.characterData.equips.clothesTFId = clothesId;
                }
                if (shoesId != -1)
                {
                    npcAI.characterData.equips.shoesTFId = shoesId;
                }
                npcAI.SetCharacterData(npcAI.characterData);
            }
            else if (storyInfoDetailsType == StoryInfoDetailsBean.StoryInfoDetailsTypeEnum.PropPosition)
            {
                GameObject objProp = GetSceneObjByName("prop_" + itemData.num);
                if (objProp == null)
                {
                    GameObject objModel = StoryInfoHandler.Instance.manager.GetStoryPropModelByName(itemData.key_name);
                    objProp      = Instantiate(objModel, StoryInfoHandler.Instance.builderForStory.transform);
                    objProp.name = "prop_" + itemData.num;
                }
                //设置位置和朝向
                objProp.transform.localPosition = new Vector3(itemData.position_x, itemData.position_y);
                Vector3 bodyScale = objProp.transform.localScale;
                switch (itemData.face)
                {
                case 1:
                    bodyScale.x = -1;
                    break;

                case 2:
                    bodyScale.x = 1;
                    break;
                }
                objProp.transform.localScale = bodyScale;
            }
            //如果是对话 查询对话数据
            else if (storyInfoDetailsType == StoryInfoDetailsBean.StoryInfoDetailsTypeEnum.Talk)
            {
                listStoryTextInfo = textInfoService.QueryDataByMarkId(TextEnum.Story, itemData.text_mark_id);
            }
            else if (storyInfoDetailsType == StoryInfoDetailsBean.StoryInfoDetailsTypeEnum.NpcDestory)
            {
                int[] numList = StringUtil.SplitBySubstringForArrayInt(itemData.npc_destroy, ',');
                foreach (int num in numList)
                {
                    BaseNpcAI npcAI = CptUtil.GetCptInChildrenByName <BaseNpcAI>(StoryInfoHandler.Instance.builderForStory.gameObject, num + "");
                    DestroyImmediate(npcAI.gameObject);
                }
            }
            else if (storyInfoDetailsType == StoryInfoDetailsBean.StoryInfoDetailsTypeEnum.CameraPosition)
            {
                Vector3 cameraWorldPosition = StoryInfoHandler.Instance.builderForStory.transform.TransformPoint(new Vector3(itemData.position_x, itemData.position_y, -10));

                GameCameraHandler.Instance.manager.camera2D.Follow             = null;
                GameCameraHandler.Instance.manager.camera2D.transform.position = cameraWorldPosition;
            }
            else if (itemData.type == (int)StoryInfoDetailsBean.StoryInfoDetailsTypeEnum.CameraFollowCharacter)
            {
                BaseNpcAI npcAI = CptUtil.GetCptInChildrenByName <BaseNpcAI>(StoryInfoHandler.Instance.builderForStory.gameObject, "character_" + itemData.num);
                GameCameraHandler.Instance.manager.camera2D.Follow = npcAI.transform;
            }
        }
    }
Example #3
0
    protected void UIForStoryInfoDetails(StoryInfoDetailsBean itemData)
    {
        GUILayout.BeginHorizontal();
        StoryInfoDetailsBean.StoryInfoDetailsTypeEnum storyInfoDetailsType = itemData.GetStoryInfoDetailsType();
        switch (storyInfoDetailsType)
        {
        case StoryInfoDetailsBean.StoryInfoDetailsTypeEnum.NpcPosition:
            UIForStoryInfoDetailsNpcPosition(itemData);
            break;

        case StoryInfoDetailsBean.StoryInfoDetailsTypeEnum.NpcExpression:
            UIForStoryInfoDetailsExpression(itemData);
            break;

        case StoryInfoDetailsBean.StoryInfoDetailsTypeEnum.NpcDestory:
            UIForStoryInfoDetailsNpcDestory(itemData);
            break;

        case StoryInfoDetailsBean.StoryInfoDetailsTypeEnum.NpcEquip:
            UIForStoryInfoDetailsNpcEquip(itemData);
            break;

        case StoryInfoDetailsBean.StoryInfoDetailsTypeEnum.Talk:
            UIForStoryInfoDetailsTalk(itemData);
            break;

        case StoryInfoDetailsBean.StoryInfoDetailsTypeEnum.AutoNext:
            UIForStoryInfoDetailsAutoNext(itemData);
            break;

        case StoryInfoDetailsBean.StoryInfoDetailsTypeEnum.PropPosition:
            UIForStoryInfoDetailsPropPosition(itemData);
            break;

        case StoryInfoDetailsBean.StoryInfoDetailsTypeEnum.WorkerPosition:
            UIForStoryInfoDetailsWorkerPosition(itemData);
            break;

        case StoryInfoDetailsBean.StoryInfoDetailsTypeEnum.Effect:
            UIForStoryInfoDetailsEffect(itemData);
            break;

        case StoryInfoDetailsBean.StoryInfoDetailsTypeEnum.SetTime:
            UIForStoryInfoSetTime(itemData);
            break;

        case StoryInfoDetailsBean.StoryInfoDetailsTypeEnum.CameraPosition:
            UIForStoryInfoDetailsCameraPosition(itemData);
            break;

        case StoryInfoDetailsBean.StoryInfoDetailsTypeEnum.CameraFollowCharacter:
            UIForStoryInfoDetailsCameraFollowCharacter(itemData);
            break;


        case StoryInfoDetailsBean.StoryInfoDetailsTypeEnum.AudioSound:
            UIForStoryInfoDetailsAudioSound(itemData);
            break;

        case StoryInfoDetailsBean.StoryInfoDetailsTypeEnum.AudioMusic:
            UIForStoryInfoDetailsAudioMusic(itemData);
            break;



        case StoryInfoDetailsBean.StoryInfoDetailsTypeEnum.SceneInt:
            UIForStoryInfoDetailsSceneInt(itemData);
            break;
        }
        GUILayout.EndHorizontal();
    }