예제 #1
0
        public bool GotoGuildFire(params object[] args)
        {
            if (!SysConfigManager.GetInstance().CheckSysHasOpened(GameConst.SYS_OPEN_GUILD_FIRE, true))
            {
                return(false);
            }

            if (!ActivityHelper.IsActivityOpen(GameConst.SYS_OPEN_GUILD_FIRE, true))
            {
                return(false);
            }

            if (!CheckSysDownloaded(GameConst.SYS_OPEN_GUILD_FIRE))
            {
                return(false);
            }

            if (LocalPlayerManager.Instance.GuildID > 0)
            {
                InstanceHelper.EnterGuildManor();
            }
            else
            {
                UIManager.GetInstance().ShowSysWindow("UIGuildWindow");
            }
            return(true);
        }
예제 #2
0
        /// <summary>
        /// 检查包括活动在内所有系统的开启
        /// </summary>
        private void CheckSysOpenCondition()
        {
            bool all_inited = true;

            foreach (var recv in mWaitNetMsg.Values)
            {
                if (recv == false)
                {
                    all_inited = false;
                    break;
                }
            }

            if (all_inited)
            {
                var db_sys_config = DBManager.GetInstance().GetDB <DBSysConfig>();
                foreach (var sys_id in mRawOpenSysIds)
                {
                    //GameDebug.LogRed("初始系统:id=" + sys_id);
                    var sys_config = db_sys_config.GetConfigById(sys_id);
                    if (sys_config != null)
                    {
                        // 活动类型的系统需要检查活动是否开启
                        if (sys_config.IsActivity)
                        {
                            bool is_open = ActivityHelper.IsActivityOpen(sys_config.Id);
                            if (is_open)
                            {
                                mOpenSysList.Add(sys_config);
                                mOpenSysDic[sys_config.Id] = sys_config;
                            }
                            else
                            {
                                GameDebug.LogRed(string.Format("系统: id= {0} 对应的活动未开启", sys_id));
                            }
                        }
                        else
                        {
                            mOpenSysList.Add(sys_config);
                            mOpenSysDic[sys_config.Id] = sys_config;
                        }
                    }
                    else
                    {
                        GameDebug.LogWarning(string.Format("[MSG_PLAYER_SYS_OPEN_INFO] 找不到对应的系统:{0}", sys_id));
                    }
                }
                mOpenSysList.Sort();

                ClientEventMgr.GetInstance().FireEvent((int)ClientEvent.CE_SYS_CONFIG_INIT, null);
            }
        }
예제 #3
0
 public bool GotoDeadSpace(params object[] args)
 {
     if (!SysConfigManager.GetInstance().CheckSysHasOpened(GameConst.SYS_OPEN_DEAD_SPACE, true))
     {
         return(false);
     }
     if (!ActivityHelper.IsActivityOpen(GameConst.SYS_OPEN_DEAD_SPACE, true))
     {
         return(false);
     }
     if (!CheckSysDownloaded(GameConst.SYS_OPEN_DEAD_SPACE))
     {
         return(false);
     }
     UIManager.GetInstance().ShowSysWindow("UIDeadSpaceEnterWindow");
     return(true);
 }
예제 #4
0
 public bool GotoWorshipMeeting(params object[] args)
 {
     if (!SysConfigManager.GetInstance().CheckSysHasOpened(GameConst.SYS_OPEN_WORSHIP_MEETING, true))
     {
         return(false);
     }
     if (!ActivityHelper.IsActivityOpen(GameConst.SYS_OPEN_WORSHIP_MEETING, true))
     {
         return(false);
     }
     if (!CheckSysDownloaded(GameConst.SYS_OPEN_WORSHIP_MEETING))
     {
         return(false);
     }
     UIManager.GetInstance().ShowSysWindow("UIWorshipMeetingEnterWindow");
     return(true);
 }
예제 #5
0
        public bool GotoArena(params object[] args)
        {
            if (!SysConfigManager.GetInstance().CheckSysHasOpened(GameConst.SYS_OPEN_ARENA, true))
            {
                return(false);
            }
            if (!CheckSysDownloaded(GameConst.SYS_OPEN_ARENA))
            {
                return(false);
            }
            if (!ActivityHelper.IsActivityOpen(GameConst.SYS_OPEN_ARENA, true))
            {
                return(false);
            }

            UIManager.GetInstance().ShowSysWindow("UIArenaMainWindow");
            return(true);
        }
예제 #6
0
        /// <summary>
        /// 响应网络消息
        /// </summary>
        /// <param name="protocol"></param>
        /// <param name="data"></param>
        private void HandleServerData(ushort protocol, byte[] data)
        {
            switch (protocol)
            {
            case NetMsg.MSG_PLAYER_SYS_OPEN_INFO:     // 系统开放列表的消息
            {
                var pack = S2CPackBase.DeserializePack <S2CPlayerSysOpenInfo>(data);
                mRawOpenSysIds = pack.sys_ids;


                //送审 的时候过滤系统
                AuditManager.Instance.FilterSystemWhenAudit(pack.sys_ids);


                if (mWaitNetMsg[NetMsg.MSG_PLAYER_SYS_OPEN_INFO] == false)
                {
                    mWaitNetMsg[NetMsg.MSG_PLAYER_SYS_OPEN_INFO] = true;
                    CheckSysOpenCondition();
                }
            }
            break;

            case NetMsg.MSG_PLAYER_NOTIFY_SYS_CLOSE:     // 系统关闭
            {
                var pack = S2CPackBase.DeserializePack <S2CPlayerNotifySysClose>(data);
                for (int i = 0; i < pack.sys_ids.Count; i++)
                {
                    HandleNotifySysClose(pack.sys_ids[i]);
                }
            }
            break;

            case NetMsg.MSG_PLAYER_NOTIFY_SYS_OPEN:     // 系统开启
            {
                var pack          = S2CPackBase.DeserializePack <S2CPlayerNotifySysOpen>(data);
                var db_sys_config = DBManager.GetInstance().GetDB <DBSysConfig>();

                //送审 的时候过滤系统
                AuditManager.Instance.FilterSystemWhenAudit(pack.sys_ids);

                bool fire = mWaitingSysList.Count == 0 ?true:false;

                for (int i = 0; i < pack.sys_ids.Count; i++)
                {
                    var sys_id     = pack.sys_ids[i];
                    var sys_config = db_sys_config.GetConfigById(sys_id);
                    if (sys_config == null)
                    {
                        continue;
                    }

                    bool is_open = true;
                    if (sys_config.IsActivity)         // 活动类型的系统需要检查活动是否开启
                    {
                        is_open = ActivityHelper.IsActivityOpen(sys_config.Id);
                    }

                    if (is_open)
                    {
                        HandleNotifySysOpen(sys_id);
                    }
                    else        // 如果活动未开启,也需要加入到系统开启列表中
                    {
                        if (!mRawOpenSysIds.Contains(sys_id))
                        {
                            mRawOpenSysIds.Add(sys_id);
                        }
                    }

                    // 获取需要关闭的系统按钮列表
                    var sysIdList = db_sys_config.GetRelationSysById(sys_id);
                    if (sysIdList != null)
                    {
                        foreach (var id in sysIdList)
                        {
                            CloseSys(id);
                        }
                    }
                }

                mWaitingSysList.Sort();
                if (fire && mWaitingSysList.Count > 0)
                {
                    if (SceneHelp.Instance.IsInWildInstance())
                    {
                        TargetPathManager.Instance.StopPlayerAndReset();        //有系统开启停止寻路
                        ClientEventMgr.GetInstance().FireEvent((int)ClientEvent.CE_NEW_WAITING_SYS, new CEventBaseArgs());
                    }
                    else
                    {
                        ClientEventMgr.GetInstance().PostEvent((int)ClientEvent.CE_NEW_WAITING_SYS, new CEventBaseArgs());
                    }
                }
            }
            break;
            }
        }