/// <summary>
        /// 创建挂机点怪物和特殊怪物(世界boss)位置的UI物体
        /// </summary>
        public void CreateMonsterPoint()
        {
            var monster_infos = MiniMapHelp.GetInstanceAllNormalMonster(m_CurSceneId);

            WorldBossList.Clear();
            for (int i = 0; i < monster_infos.Count; i++)
            {
                var     info = monster_infos[i];
                var     rect = GetItem(m_MonsterPoint);
                Vector3 vect = new Vector3((info.Position.x - minX) / uiScalex, (info.Position.z - minY) / uiScaley, 0);
                rect.localPosition = vect;
                Text   nameText   = UIHelper.FindChild(rect.gameObject, "NameText").GetComponent <Text>();
                var    monster1   = UIHelper.FindChild(rect.gameObject, "MonsterType1");
                var    monster2   = UIHelper.FindChild(rect.gameObject, "MonsterType2");
                var    monster3   = UIHelper.FindChild(rect.gameObject, "MonsterType3");
                var    bossDead   = UIHelper.FindChild(rect.gameObject, "BossDead");
                Button moneterBtn = rect.GetComponent <Button>();
                moneterBtn.onClick.RemoveAllListeners();
                moneterBtn.onClick.AddListener(() => { OnClickMonsterPoint(info); });
                monster1.SetActive(false);
                monster2.SetActive(false);
                monster3.SetActive(false);
                bossDead.SetActive(false);

                string blackLv = ActorHelper.GetColorLvDiff(info.ActorId, 1);
                switch (info.PointType)
                {
                case MiniMapPointType.Monster:
                case MiniMapPointType.EliteMonster:
                    monster2.SetActive(true);
                    nameText.text = info.BlackName;
                    break;

                case MiniMapPointType.Boss:
                    monster3.SetActive(true);
                    WorldBossList.Add(info.Id, info);
                    nameText.text = string.Format("{0}\n{1}", info.BlackName, blackLv);
                    break;
                }

                mMonsterListPointObjs.Add(info.Id, rect.gameObject);
            }
        }
        public override void EnableBehaviour(bool isEnable)
        {
            base.EnableBehaviour(isEnable);

            m_bNetAnswer = false;
            m_CurSceneId = SceneHelp.Instance.CurSceneID;

            if (isEnable)         // 显示
            {
                uint pos_tag = 0; // 指定的挂机点位置Tag
                if (Window != null && Window.ShowParam != null)
                {
                    if (Window.ShowParam.Length >= 1)
                    {
                        if ((bool)Window.ShowParam[0] == true) // 标识需要通过离线挂机表来寻找合适的场景和挂机点
                        {
                            var hang_info = DBHang.Instance.GetSuitableHangInfo();
                            if (hang_info != null)
                            {
                                m_CurSceneId = hang_info.Dungeon;
                                pos_tag      = hang_info.GetRandomTag().Id;
                            }
                        }
                    }
                }

                DBInstance.InstanceInfo instanceInfo = DBInstance.Instance.GetInstanceInfo(m_CurSceneId);
                if (instanceInfo != null)
                {
                    minX     = instanceInfo.mMinPos.x;
                    minY     = instanceInfo.mMinPos.y;
                    uiScalex = instanceInfo.mMiniMapWidth / mMiniMapRawImage.rectTransform.rect.width;
                    uiScaley = instanceInfo.mMiniMapHeight / mMiniMapRawImage.rectTransform.rect.height;
                    LoadMiniMapTexture(instanceInfo.mMiniMapName);
                }


                LocalCenter();
                ClearPoint();
                CreateMonsterPoint();
                CreateTranspotPoint();
                CreateNpcPoint();

                if (TargetPathManager.Instance.IsNavigating)
                {
                    CreatePathPoint();
                }

                UpdateRequsetTeam(null);
                UpdateWorldBossState(null);

                bool isInCurScene = SceneHelp.Instance.CurSceneID.Equals(m_CurSceneId);
                m_LocalPlayerPoint.SetActive(isInCurScene);
                m_LocalPlayerPoint.transform.SetAsLastSibling();
                MonsterTipsTrigger.transform.SetAsLastSibling();

                // 寻找指定的挂机点
                var monster_infos = MiniMapHelp.GetInstanceAllNormalMonster(m_CurSceneId);
                for (int i = 0; i < monster_infos.Count; i++)
                {
                    var info = monster_infos[i];
                    if (info == null)
                    {
                        continue;
                    }

                    if (info.Id == pos_tag)
                    {
                        OnClickMonsterPoint(info);
                        break;
                    }
                }
            }
            else// 隐藏
            {
                ClearPathPoint();
                ClearPoint();
                MonsterTipsTrigger.gameObject.SetActive(false);
            }
        }
Exemple #3
0
        static int _m_GetInstanceAllNormalMonster_xlua_st_(RealStatePtr L)
        {
            ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);



            try {
                {
                    uint instance_id = LuaAPI.xlua_touint(L, 1);

                    System.Collections.Generic.List <MiniMapPointInfo> __cl_gen_ret = MiniMapHelp.GetInstanceAllNormalMonster(instance_id);
                    translator.Push(L, __cl_gen_ret);



                    return(1);
                }
            } catch (System.Exception __gen_e) {
                return(LuaAPI.luaL_error(L, "c# exception:" + __gen_e));
            }
        }