Exemple #1
0
        /// <summary>
        /// 获取用户信息
        /// </summary>
        /// <param name="token"></param>
        /// <returns></returns>
        public UserModel GetModel(UserToken token)
        {
            //判断连接是否为空
            if (token == null)
            {
                return(null);
            }
            roleinfo info = cache.CacheFactory.user.Get(token);

            if (info == null)
            {
                return(null);
            }
            UserModel model = new UserModel();

            model.id       = info.id;
            model.head     = info.head;
            model.username = info.username;
            model.nickname = info.nickname;
            model.phone    = info.phone;
            model.sex      = info.sex;
            model.coin     = info.coin;
            model.cash     = info.cash;
            return(model);
        }
Exemple #2
0
        /// <summary>
        /// 初始化房间
        /// </summary>
        /// <param name="model"></param>
        public void Init(MatchInfoModel model)
        {
            GameType = model.GameType;//初始化房间类型
            //初始化队伍成员
            TemeId.Clear();
            TemeId.AddRange(model.Team);
            RoomId    = model.RoomId;    //初始化房间id
            MaxPlayer = model.MaxPlayer; //初始化人数
            //添加方位数量
            for (int i = 0; i < MaxPlayer; i++)
            {
                Direction.Add(i);
            }
            //初始化玩家信息
            for (int i = 0; i < model.Team.Count; i++)
            {
                //初始化玩家信息
                FightUserModel m = new FightUserModel();
                //获取用户信息
                roleinfo ri = cache.CacheFactory.user.Get(model.Team[i]);
                //如果获取到,则将玩家信息赋值给用户信息
                if (ri != null)
                {
                    m.coin     = ri.coin;
                    m.nickname = ri.nickname;
                    m.id       = ri.id;
                }
                //否则,设置为默认信息
                else
                {
                    m.coin     = 0;
                    m.nickname = "nickname";
                    m.id       = model.Team [i];
                }
                //赋值玩家当前方位
                m.direction = Direction[0];
                Direction.RemoveAt(0);
                UserFight.Add(m.id, m);
            }
            //广播玩家信息
            for (int i = 0; i < TemeId.Count; i++)
            {
                Broadcast(FightProtocol.PLAYERINFO_BRQ, UserFight[TemeId[i]]);
            }

            DebugUtil.Instance.LogToTime(RoomId + "房间初始化成功");
        }
Exemple #3
0
        /// <summary>
        /// 读取账号
        /// </summary>
        public void LoadAccount()
        {
            //实例化一个角色数据库对象
            roleinfo info = new roleinfo();
            //获取id列全部值
            List <int> idList = info.GetRowById();

            for (int i = 0; i < idList.Count; i++)
            {
                roleinfo rinfo = new roleinfo();
                rinfo.GetModelById(idList[i]);
                if (!AccountMap.ContainsKey(rinfo.username))
                {
                    AccountMap.Add(rinfo.username, rinfo);
                }
            }
        }
Exemple #4
0
        /// <summary>
        /// 请求开始匹配
        /// </summary>
        /// <param name="token">用户连接对象</param>
        /// <param name="type">房间类型</param>
        /// <returns>0 请求开始匹配成功</returns>
        /// <returns>-1 当前金币余额不足</returns>
        /// <returns>-2 当前玩家已在匹配列表</returns>
        /// <returns>-3 当前玩家无效</returns>
        public ResponseStartMatchInfo StartMatch(UserToken token, SConst.GameType type)
        {
            //通过连接获取账号
            roleinfo user = cache.CacheFactory.user.Get(token);
            ResponseStartMatchInfo info = new ResponseStartMatchInfo();

            if (user == null)
            {
                info.Status = -3;
                DebugUtil.Instance.LogToTime(token.conn.RemoteEndPoint + "请求开始匹配失败,连接无效");
                return(info);
            }
            int uid   = user.id;
            int ucoin = user.coin;

            //获取进入房间需要的最少的金币
            int coin = cache.CacheFactory.match.GetRoomCoinAtType(type);

            if (ucoin < coin)
            {
                info.Status = -1;
                DebugUtil.Instance.LogToTime(uid + "请求开始匹配失败,当前金币余额不足,余额为:" + ucoin);
                return(info);
            }
            //获取是否在匹配对列中
            int matchid = cache.CacheFactory.match.IsOnMatchArray(uid);

            if (matchid > 0)
            {
                info.Status = -2;
                DebugUtil.Instance.LogToTime(uid + "请求开始匹配");
                return(info);
            }
            //创建一个匹配对列,并返回匹配成功
            cache.CacheFactory.match.AddMatch(uid, type, ref info);
            info.Status = 0;
            DebugUtil.Instance.LogToTime(uid + "请求开始匹配成功,创建一个匹配对列");
            return(info);
        }