示例#1
0
    /// <summary>
    /// 进入帮派红包雨
    /// </summary>
    /// <param name="playJumpOutAnimation"></param>
    public static void EnterGuildRainRedPacket(bool playJumpOutAnimation = true)
    {
        if (SceneHelp.Instance.IsInGuildManor == true)
        {
            UINotice.Instance.ShowMessage(DBConstText.GetText("GUILD_ALREADY_IN_GUILD_MANOR"));
            return;
        }

        if (SceneHelp.CheckCanSwitch(GameConst.WAR_TYPE_WILD, GameConst.WAR_SUBTYPE_GUILD_MANOR) == false)
        {
            return;
        }

        if (PKModeManagerEx.Instance.TryToOtherDungeonScene() == false)
        {
            return;
        }

        if (playJumpOutAnimation)
        {
            JumpToInstance(0, GameConst.WAR_TYPE_WILD, GameConst.WAR_SUBTYPE_GUILD_MANOR, () =>
            {
                var pack = new C2SMoneyRainStart();
                NetClient.GetBaseClient().SendData <C2SMoneyRainStart>(NetMsg.MSG_MONEY_RAIN_START, pack);
            });
        }
        else
        {
            var pack = new C2SMoneyRainStart();
            NetClient.GetBaseClient().SendData <C2SMoneyRainStart>(NetMsg.MSG_MONEY_RAIN_START, pack);
        }
    }
示例#2
0
    /// <summary>
    /// 进入远洋海盗船
    /// </summary>
    /// <param name="type"></param>
    public static void EnterCorsair(uint type)
    {
        if (type == 1)
        {
            if (SceneHelp.CheckCanSwitch(GameConst.WAR_TYPE_DUNGEON, GameConst.WAR_SUBTYPE_CORSAIR) == false)
            {
                return;
            }

            if (PKModeManagerEx.Instance.TryToOtherDungeonScene() == false)
            {
                return;
            }

            JumpToInstance(0, GameConst.WAR_TYPE_DUNGEON, GameConst.WAR_SUBTYPE_CORSAIR, () => {
                var pack  = new C2SDungeonCorsairEnter();
                pack.type = type;
                NetClient.GetBaseClient().SendData <C2SDungeonCorsairEnter>(NetMsg.MSG_DUNGEON_CORSAIR_ENTER, pack);
            });
        }
        else
        {
            var pack = new C2SDungeonCorsairEnter();
            pack.type = type;
            NetClient.GetBaseClient().SendData <C2SDungeonCorsairEnter>(NetMsg.MSG_DUNGEON_CORSAIR_ENTER, pack);
        }
    }
示例#3
0
    /// <summary>
    /// 传送点
    /// </summary>
    /// <returns></returns>
    public static List <MiniMapPointInfo> GetInstanceAllTrasnspot(uint instance_id)
    {
        List <MiniMapPointInfo> map_point_infos = new List <MiniMapPointInfo>();
        var nep_data = xc.Dungeon.LevelManager.Instance.LoadLevelFileTemporary(SceneHelp.GetFirstStageId(instance_id));

        if (nep_data == null)
        {
            GameDebug.LogError("get nep_data failed,instance id: " + instance_id);
            return(map_point_infos);
        }

        var monstersData = nep_data.GetData <Neptune.Collider>().Data;

        foreach (var item in monstersData)
        {
            if (item.Value is Neptune.Collider)
            {
                Neptune.Collider tag = item.Value as Neptune.Collider;
                if (tag.Comment != null && tag.Comment.CompareTo("transfer") == 0)
                {
                    MiniMapPointInfo info = new MiniMapPointInfo();
                    info.Id        = tag.Id;
                    info.MapId     = instance_id;
                    info.Position  = tag.Position;
                    info.PointType = MiniMapPointType.Transfer;
                    map_point_infos.Add(info);
                }
            }
        }
        return(map_point_infos);
    }
示例#4
0
    /// <summary>
    /// 获得场景中所有npc
    /// </summary>
    /// <returns></returns>
    public static List <MiniMapPointInfo> GetInstanceAllNpc(uint instance_id)
    {
        List <MiniMapPointInfo> map_point_infos = new List <MiniMapPointInfo>();
        var nep_data = xc.Dungeon.LevelManager.Instance.LoadLevelFileTemporary(SceneHelp.GetFirstStageId(instance_id));

        if (nep_data == null)
        {
            GameDebug.LogError("get nep_data failed,instance id: " + instance_id);
            return(map_point_infos);
        }

        Dictionary <int, Neptune.BaseGenericNode> monstersData = nep_data.GetData <Neptune.NPC>().Data;

        foreach (var item in monstersData)
        {
            if (item.Value is Neptune.NPC)
            {
                Neptune.NPC npc = item.Value as Neptune.NPC;
                //if (npc.SpawnDirectly)
                {
                    MiniMapPointInfo info = new MiniMapPointInfo();
                    info.Id        = npc.Id;
                    info.MapId     = instance_id;
                    info.ActorId   = NpcHelper.GetNpcActorId(npc.ExcelId);
                    info.Name      = RoleHelp.GetActorName(info.ActorId);
                    info.BlackName = info.Name;
                    info.Position  = npc.Position;
                    info.PointType = MiniMapPointType.Npc;
                    map_point_infos.Add(info);
                }
            }
        }
        return(map_point_infos);
    }
        /// <summary>
        /// 点击前往挂机点的按钮
        /// </summary>
        public void OnClickGotoMonster()
        {
            // 本地玩家是否处于护送状态
            if (SceneHelp.CheckLocalPlayerEscortTaskState() == false)
            {
                return;
            }

            if (mCurrentMonsterInfo == null)
            {
                return;
            }

            // 记录当弹出退出提示的时候是否要继续自动战斗
            if (SceneHelp.Instance.IsInInstance == true || SceneHelp.Instance.IsCanExitBtnInWild == true)
            {
                SceneHelp.Instance.IsAutoFightingWhenShowExitTips = InstanceManager.Instance.IsAutoFighting || SceneHelp.Instance.IsAutoFightingWhenShowExitTips;
            }

            // 首先取消自动挂机
            InstanceManager.Instance.IsAutoFighting = false;

            // 世界boss默认刷新到1分线
            if (ActorHelper.IsWorldBoss(mCurrentMonsterInfo.ActorId) &&
                !SceneHelp.Instance.IsInFirstWorldBossInstance)
            {
                if (SceneHelp.CheckCanSwitch(mCurrentMonsterInfo.MapId, true) == true)
                {
                    TargetPathManager.Instance.GoToConstPosition(mCurrentMonsterInfo.MapId, 1, mCurrentMonsterInfo.Position, null, () => { InstanceManager.Instance.SetOnHook(true); });
                }
            }
            else
            {
                // 从服务器那里获取挂机位置
                uint hangId   = DBHang.Instance.GetHangIdByInstanceIdAndTagId(mCurrentMonsterInfo.MapId, (uint)mCurrentMonsterInfo.Id);
                uint tagIndex = DBHang.Instance.GetTagIndexByInstanceIdAndTagId(mCurrentMonsterInfo.MapId, (uint)mCurrentMonsterInfo.Id);
                if (hangId > 0)
                {
                    var data = new C2SMapGetHangPos();
                    data.data_id = hangId;
                    data.nth_pos = tagIndex;
                    NetClient.GetBaseClient().SendData <C2SMapGetHangPos>(NetMsg.MSG_MAP_GET_HANG_POS, data);
                }
                // 如果配置表没有数据则客户端直接跳转
                else
                {
                    if (SceneHelp.CheckCanSwitch(mCurrentMonsterInfo.MapId, true) == true)
                    {
                        TargetPathManager.Instance.GoToConstPosition(mCurrentMonsterInfo.MapId, SceneHelp.Instance.CurLine, mCurrentMonsterInfo.Position, null, () => { InstanceManager.Instance.SetOnHook(true); });
                    }
                }
            }

            UIManager.Instance.CloseSysWindow("UIMapWindow");
        }
示例#6
0
        private IEnumerator CoLoadNavmeshFile(string path)
        {
            SGameEngine.AssetResource result = new SGameEngine.AssetResource();

            yield return(MainGame.HeartBehavior.StartCoroutine(SGameEngine.ResourceLoader.Instance.load_asset(path, typeof(TextAsset), result)));

            // 加载好的数据是否是当前场景的数据
            uint   stage_id     = SceneHelp.GetFirstStageId(SceneHelp.Instance.CurSceneID);
            uint   map_id       = SceneHelp.GetMapIdByStageId(stage_id);
            string navmesh_file = "Assets/Res/NavMesh/" + map_id.ToString() + ".txt";

            if (navmesh_file.Equals(path) == false)
            {
                yield break;
            }

            if (result.asset_ == null)
            {
                IsLoadingNavmeshFile = false;
                yield break;
            }

            TextAsset textAsset = result.asset_ as TextAsset;

            if (textAsset == null || textAsset.text == null)
            {
                IsLoadingNavmeshFile = false;
                Debug.LogError("LevelManager::CoLoadNavmeshFile, can not read navmesh file:" + path);
                yield break;
            }

            bool ret = XNavMesh.LoadBuffer(textAsset.bytes);

            if (!ret)
            {
                mCurNavmeshFile = string.Empty;
                GameDebug.LogError("navmesh LoadBuffer error : " + path);
            }
            else
            {
                mCurNavmeshFile = path;
            }

            result.destroy();

            IsLoadingNavmeshFile = false;
        }
示例#7
0
    /// <summary>
    /// 进入武神塔
    /// </summary>
    public static void EnterKungFuGod()
    {
        if (SceneHelp.CheckCanSwitch(GameConst.WAR_TYPE_DUNGEON, GameConst.WAR_SUBTYPE_SECRET_AREA) == false)
        {
            return;
        }

        if (PKModeManagerEx.Instance.TryToOtherDungeonScene() == false)
        {
            return;
        }

        JumpToInstance(0, GameConst.WAR_TYPE_DUNGEON, GameConst.WAR_SUBTYPE_SECRET_AREA, () => {
            var pack = new C2SDungeonSecretAreaEnter();
            NetClient.GetBaseClient().SendData <C2SDungeonSecretAreaEnter>(NetMsg.MSG_DUNGEON_SECRET_AREA_ENTER, pack);
        });
    }
示例#8
0
    /// <summary>
    /// 进入剑域盛会
    /// </summary>
    public static void EnterWorshipMeeting()
    {
        if (SceneHelp.CheckCanSwitch(GameConst.WAR_TYPE_DUNGEON, GameConst.WAR_SUBTYPE_WORSHIP_MEETING) == false)
        {
            return;
        }

        if (PKModeManagerEx.Instance.TryToOtherDungeonScene() == false)
        {
            return;
        }

        JumpToInstance(0, GameConst.WAR_TYPE_DUNGEON, GameConst.WAR_SUBTYPE_WORSHIP_MEETING, () => {
            var pack = new C2SDungeonWorshipMeetingEnter();
            NetClient.GetBaseClient().SendData <C2SDungeonWorshipMeetingEnter>(NetMsg.MSG_DUNGEON_WORSHIP_MEETING_ENTER, pack);
        });
    }
示例#9
0
        /// <summary>
        /// 加载关卡配置
        /// </summary>
        /// <param name="id"></param>
        public void LoadLevelFile(uint stage_id, bool async)
        {
            string path = Id2Path(stage_id);

            LoadLevelFile(path, async);

            //Debug.LogError("test navmesh .........");

            uint   map_id       = SceneHelp.GetMapIdByStageId(stage_id);
            string navmesh_file = "Assets/Res/NavMesh/" + map_id.ToString() + ".txt";

            if (mCurNavmeshFile.Equals(navmesh_file) == false)
            {
                IsLoadingNavmeshFile = true;

                MainGame.HeartBehavior.StartCoroutine(CoLoadNavmeshFile(navmesh_file));
            }
        }
示例#10
0
    /// <summary>
    /// 进入帮派联赛
    /// </summary>
    public static void EnterGuildLeague()
    {
        if (SceneHelp.Instance.IsInGuildLeagueInstance() == true)
        {
            UINotice.Instance.ShowMessage(DBConstText.GetText("GUILD_ALREADY_IN_GUILD_LEAGUE"));
            return;
        }

        if (SceneHelp.CheckCanSwitch(GameConst.WAR_TYPE_DUNGEON, GameConst.WAR_SUBTYPE_GUILD_LEAGUE) == false)
        {
            return;
        }

        JumpToInstance(0, GameConst.WAR_TYPE_DUNGEON, GameConst.WAR_SUBTYPE_GUILD_LEAGUE, () => {
            var pack = new C2SGuildLeagueEnter();
            NetClient.GetBaseClient().SendData <C2SGuildLeagueEnter>(NetMsg.MSG_GUILD_LEAGUE_ENTER, pack);
        });
    }
示例#11
0
    /// <summary>
    /// 进入婚宴副本
    /// </summary>
    public static void EnterWeddingInstance()
    {
        if (SceneHelp.Instance.IsInWeddingInstance == true)
        {
            UINotice.Instance.ShowMessage(DBConstText.GetText("INSTANCE_ALREADY_IN_IT"));
            return;
        }

        if (SceneHelp.CheckCanSwitch(GameConst.WAR_TYPE_DUNGEON, GameConst.WAR_SUBTYPE_WEDDING) == false)
        {
            return;
        }

        JumpToInstance(0, GameConst.WAR_TYPE_DUNGEON, GameConst.WAR_SUBTYPE_WEDDING, () =>
        {
            var pack = new C2SDungeonWeddingEnter();
            NetClient.GetBaseClient().SendData <C2SDungeonWeddingEnter>(NetMsg.MSG_DUNGEON_WEDDING_ENTER, pack);
        });
    }
示例#12
0
    /// <summary>
    /// 进入破碎死域
    /// </summary>
    public static void EnterDeadSpace()
    {
        if (SceneHelp.Instance.IsInDeadSpaceInstance == true)
        {
            xc.UINotice.Instance.ShowMessage(DBConstText.GetText("INSTANCE_ALREADY_IN_IT"));
            return;
        }

        if (SceneHelp.CheckCanSwitch(GameConst.WAR_TYPE_DUNGEON, GameConst.WAR_SUBTYPE_DEAD_SPACE) == false)
        {
            return;
        }

        if (PKModeManagerEx.Instance.TryToOtherDungeonScene() == false)
        {
            return;
        }

        JumpToInstance(0, GameConst.WAR_TYPE_DUNGEON, GameConst.WAR_SUBTYPE_DEAD_SPACE, () => {
            var pack = new C2SDungeonDeadSpaceEnter();
            NetClient.GetBaseClient().SendData <C2SDungeonDeadSpaceEnter>(NetMsg.MSG_DUNGEON_DEAD_SPACE_ENTER, pack);
        });
    }
示例#13
0
        public void OnClickMap(uint mapId)
        {
            uint needLevel = InstanceHelper.GetInstanceNeedRoleLevel((uint)mapId);
            var  instance  = DBInstance.Instance.GetInstanceInfo(mapId);

            string peakLvDesc = GetPeakLvDesc(needLevel);
            var    preStrFmt  = DBConstText.GetText("GAME_MAP_OPEN_TIPS"); // 达到{0}
            string descontent = string.Format(preStrFmt, peakLvDesc);

            uint isCanEnterCount = 0;

            if (needLevel > LocalPlayerManager.Instance.Level)
            {
                isCanEnterCount++;
                descontent = string.Format("<color=#ff0000>{0}</color>", descontent);
            }

            var needTaskId = instance.mNeedTaskId;

            if (instance != null && needTaskId != 0)
            {
                int requestLevelMin = TaskDefine.GetTaskRequestLevelMin(needTaskId);

                string taskFmt           = DBConstText.GetText("GAME_MAP_FINISH_TASK_TIPS"); //完成{0}任务开启
                string requestPeakLvDesc = GetPeakLvDesc((uint)requestLevelMin);
                string taskDesc          = string.Format(taskFmt, requestPeakLvDesc);

                if (TaskHelper.MainTaskIsPassed(needTaskId) == false)
                {
                    taskDesc = string.Format("<color=#ff0000>{0}</color>", taskDesc);

                    isCanEnterCount++;
                }

                descontent += string.Format("\n{0}", taskDesc);
            }

            if (isCanEnterCount == 0)
            {
                if (mapId == SceneHelp.Instance.CurSceneID)
                {
                    if (instance != null)
                    {
                        UINotice.Instance.ShowMessage(string.Format(DBConstText.GetText("ENTER_SAME_SCENE_TIPS"), instance.mName));
                    }
                    else
                    {
                        UINotice.Instance.ShowMessage(DBConstText.GetText("INSTANCE_CAN_NOT_SWITCH_WILD_INSTANCE"));
                    }
                }
                else
                {
                    SceneHelp.JumpToScene(mapId);
                    UIManager.Instance.CloseSysWindow("UIWorldMapWindow");
                }
            }
            else
            {
                var refObjPos = GetMapPointRefObjPos(mMapGoDic[(int)mapId]);
                mNotEnterTips.transform.localPosition = new Vector3(refObjPos.x, refObjPos.y - 190, 0);
                mNotEnterTips.SetActive(true);

                mNotEnterTipsTrigger.gameObject.SetActive(true);
                mNotEnterTipsTrigger.transform.SetAsLastSibling();
                Text content = UIHelper.FindChild(mNotEnterTips, "Content").GetComponent <Text>();

                content.text = descontent;
            }
        }
示例#14
0
    /// <summary>
    /// 获取指定副本中标记的普通刷怪点和特殊怪物点
    /// </summary>
    /// <returns></returns>
    public static List <MiniMapPointInfo> GetInstanceAllNormalMonster(uint instance_id)
    {
        List <MiniMapPointInfo> map_point_infos = new List <MiniMapPointInfo>();
        var nep_data = xc.Dungeon.LevelManager.Instance.LoadLevelFileTemporary(SceneHelp.GetFirstStageId(instance_id));

        if (nep_data == null)
        {
            GameDebug.LogError("get nep_data failed,instance id: " + instance_id);
            return(map_point_infos);
        }

        Dictionary <int, Neptune.BaseGenericNode> all_node_data = nep_data.GetData <Neptune.Tag>().Data;  // 获取关卡中所有标记为Tag的物体数据
        var special_monster_info = DBManager.Instance.GetDB <DBSpecialMon>().GetDungeonData(instance_id); // 获取当前副本中特殊怪物的数据(世界boss,盗宝怪)

        foreach (var item in all_node_data)
        {
            Neptune.Tag tag = item.Value as Neptune.Tag;
            if (tag == null || tag.Type == null)
            {
                continue;
            }

            if (tag.Type.CompareTo("map_mon_pos") == 0)// Tag 为怪物标识点
            {
                MiniMapPointInfo info = new MiniMapPointInfo();
                info.Id       = tag.Id;
                info.Tag      = tag.Id;
                info.Position = tag.Position;
                info.MapId    = instance_id;
                string key            = string.Format("{0}_{1}", tag.Id, instance_id);// 唯一id由{tag_id}_{map_id}组成
                var    data_actor_tag = DBManager.Instance.QuerySqliteRow <string>(GlobalConfig.DBFile, "data_actor_tag", "csv_id", key);


                //服务端不建议改表格式
                //List<Dictionary<string, string>> data_actor_tag = null;
                //string key = string.Empty;
                //SDKConfig sdk_config = SDKHelper.GetSDKConfig();
                //if (sdk_config != null && SDKHelper.IsCopyBag() && AuditManager.Instance.Open)
                //{
                //    key = string.Format("{0}_{1}{2}", tag.Id, instance_id, sdk_config.SDKNamePrefix);
                //    data_actor_tag = DBManager.Instance.QuerySqliteRow<string>(GlobalConfig.DBFile, "data_actor_tag", "csv_id", key);
                //}


                ////当对应的马甲包没配置对应的数据时,就直接用正式数据
                //if (data_actor_tag == null || data_actor_tag.Count == 0)
                //{
                //    key = string.Format("{0}_{1}", tag.Id, instance_id);// 唯一id由{tag_id}_{map_id}组成
                //    data_actor_tag = DBManager.Instance.QuerySqliteRow<string>(GlobalConfig.DBFile, "data_actor_tag", "csv_id", key);
                //}



                if (data_actor_tag.Count > 0)
                {
                    var table = data_actor_tag[0];
                    info.ActorId      = DBTextResource.ParseUI(table["actor_id"]);
                    info.ListNeedShow = DBTextResource.ParseUI(table["need_show"]) == 1 ? true : false;

                    if (ActorHelper.IsEliteMonster(info.ActorId))// 判断怪物是否是精英怪
                    {
                        info.PointType = MiniMapPointType.EliteMonster;
                    }
                    else
                    {
                        info.PointType = MiniMapPointType.Monster;
                    }

                    info.Name      = ActorHelper.GetColorNameDiff(info.ActorId, 0);
                    info.BlackName = ActorHelper.GetColorNameDiff(info.ActorId, 1);
                    info.Level     = ActorHelper.GetActorLevel(info.ActorId);
                    map_point_infos.Add(info);
                }
            }
            else if (tag.Type.CompareTo("boss_pos") == 0 && special_monster_info != null)
            {
                //boss读表
                string tagGroup = "boss_pos_" + tag.Id;
                DBSpecialMon.DBSpecialMonItem boss = special_monster_info.Find(delegate(DBSpecialMon.DBSpecialMonItem specialMon)
                {
                    return(specialMon.TagGroup.CompareTo(tagGroup) == 0);
                });

                if (boss != null)
                {
                    MiniMapPointInfo info = new MiniMapPointInfo();
                    info.Id        = (int)boss.Id;
                    info.Tag       = tag.Id;
                    info.Position  = tag.Position;
                    info.MapId     = instance_id;
                    info.ActorId   = boss.ActorId;
                    info.Name      = ActorHelper.GetColorNameDiff(info.ActorId, 0);
                    info.BlackName = ActorHelper.GetColorNameDiff(info.ActorId, 1);
                    info.Level     = ActorHelper.GetActorLevel(info.ActorId);
                    info.PointType = MiniMapPointType.Boss;

                    map_point_infos.Add(info);
                }
            }
        }
        return(map_point_infos);
    }