예제 #1
0
 protected override void HandleAfterOpenView()
 {
     base.HandleAfterOpenView();
     _currentNpcId    = _npcDialogModel.CurrentNpcId;
     _currentSysNpcVo = BaseDataMgr.instance.GetNpcVoById(_currentNpcId);
     ShowRightInfo();
     Singleton <MainView> .Instance.CloseView();
 }
예제 #2
0
        /**创建NPC**/

        public NpcDisplay CreateNpc(DisplayVo vo)
        {
            if (vo == null)
            {
                return(null);
            }
            vo.Type = DisplayType.NPC;
            var display = new NpcDisplay();

            NpcDisplayList.Add(display);
            objectList.Add(display);
            SysNpcVo sysNpcVo = BaseDataMgr.instance.GetNpcVoById(vo.Id);

            if (sysNpcVo == null)
            {
                Log.error(this, "NPC表不存在NPC,Id:" + vo.Id);
                return(null);
            }
            vo.ClothUrl = "Model/Npc/" + sysNpcVo.model + "/Model/BIP.assetbundle";
            display.SetVo(vo);
            return(display);
        }
예제 #3
0
        public override void Run()
        {
            UILabel labName;
            UILabel labWords;

            //主角显示在左侧
            if (StoryConst.SELF_ID == this.npcId)
            {
                Singleton <StoryView> .Instance.LeftNPC.SetActive(true);

                Singleton <StoryView> .Instance.RightNPC.SetActive(false);

                sprNPC   = Singleton <StoryView> .Instance.LeftNPCSprite;
                labName  = Singleton <StoryView> .Instance.LeftNPCName;
                labWords = Singleton <StoryView> .Instance.LeftNPCWords;
                NPCBustMgr.Instance.GetBust(MeVo.instance.BustUrl, RoleBustLoaded);
            }
            //NPC显示在右侧
            else
            {
                Singleton <StoryView> .Instance.LeftNPC.SetActive(false);

                Singleton <StoryView> .Instance.RightNPC.SetActive(true);

                sprNPC   = Singleton <StoryView> .Instance.RightNPCSprite;
                labName  = Singleton <StoryView> .Instance.RightNPCName;
                labWords = Singleton <StoryView> .Instance.RightNPCWords;
            }

            talkWindow = Singleton <StoryView> .Instance.TalkWindow;

            //显示对话框
            if (!talkWindow.activeSelf)
            {
                talkWindow.SetActive(true);
            }

            //打字机不能重复利用,需要先删除再创建
            TypewriterEffect typewriter = labWords.GetComponent <TypewriterEffect>();

            if (null != typewriter)
            {
                GameObject.Destroy(typewriter);
            }

            //获得头像、主角名字
            string spriteName = "";
            string roleName   = "";

            if (StoryConst.SELF_ID == this.npcId)
            {
                //主角头像
                spriteName = Singleton <RoleMode> .Instance.GetPlayerHeadSpriteName(MeVo.instance.job);

                roleName = MeVo.instance.Name;
            }
            else
            {
                CreateAction action = Singleton <StoryMode> .Instance.GetCreateAction(this.npcId);

                if (null != action)
                {
                    string resourceId = action.ResourceId;

                    //为怪物
                    if (action.IsMonster)
                    {
                        SysMonsterVo vo = BaseDataMgr.instance.getSysMonsterVo(Convert.ToUInt32(resourceId));
                        if (null != vo)
                        {
                            spriteName = vo.icon.ToString();
                            roleName   = vo.name;
                        }
                    }
                    //为NPC
                    else
                    {
                        SysNpcVo vo = BaseDataMgr.instance.GetNpcVoById(Convert.ToUInt32(resourceId));
                        if (null != vo)
                        {
                            spriteName = vo.halfImgSprite;
                            roleName   = vo.name;
                        }
                    }

                    bust = action.Bust;
                }
            }

            sprNPC.atlas = Singleton <AtlasManager> .Instance.GetAtlas(AtlasManager.Header);

            sprNPC.spriteName = spriteName;
            sprNPC.SetActive(false);
            labName.text  = roleName;
            labWords.text = this.words;

            if (null != bust)
            {
                bust.SetActive(true);
                bustVisible = true;
            }

            if (delay > 0f)
            {
                vp_Timer.In(delay, Finish, 1, 0);
            }

            //增加打字效果(测试先屏蔽)
            //typewriter = labWords.gameObject.AddComponent<TypewriterEffect>();
            //typewriter.charsPerSecond = 20;
            //typewriter.DoTypeEnd = Finish;
        }