Beispiel #1
0
        public void do7007(MessageNode node)
        {
            ByteBuffer buffer = node.buffer;
            User       user   = node.socket.user;

            user.room.updateGameReadyOnCancel(user, -1);
        }
Beispiel #2
0
        //房间密码设置
        public void do7017(MessageNode node)
        {
            User       user   = node.socket.user;
            ByteBuffer buffer = node.buffer;

            GameHall.shareGameHall().setRoomPassword(buffer.readInt(), user, buffer.readString());
        }
Beispiel #3
0
        //私聊
        public void do2002(MessageNode node)
        {
            User       user   = node.socket.user;
            ByteBuffer buffer = node.buffer;

            GameHall.shareGameHall().SiLiaoMessage(user, buffer);
        }
Beispiel #4
0
 public void Run()
 {
     try {
         while (run)
         {
             if (!cqueue.IsEmpty)
             {
                 // lock(this)
                 //{
                 MessageNode node;
                 bool        f = cqueue.TryDequeue(out node);
                 cNode = node;
                 util.core.EventDispatch.dispatchEvent(node.Type, node);
                 debug.logln("===============还有剩余消息:   " + cqueue.Count);
                 //debug.logln(node.socket.name + " < " + (node.socket.user != null ? node.socket.user.ChinaName : "") + " : " + node.Type + " > - 执行第[ " + (++msgCount) + " ]条协议");
                 // }
             }
             //
             Thread.Sleep(1);
         }
     }catch (Exception e)
     {
         debug.log(e.Message);
         debug.logln("==========================================================");
         debug.logln("警告: 发生了严重错误!!! <" + cNode.socket.user.ChinaName + " : " + cNode.Type + ">");
         debug.logln("==========================================================");
         cNode.socket.Close();
         ConstomMessage.SendAllMessage("原因:[" + cNode.socket.user.ChinaName + "]执行了 > " + cNode.Type + " 协议");
         run = false;
     }
 }
Beispiel #5
0
        //玩家加入房间
        public void do6310(MessageNode node)
        {
            User       user   = node.socket.user;
            ByteBuffer buffer = node.buffer;

            GameHall.shareGameHall().addRoom(buffer.readInt(), user, buffer.readString());
        }
Beispiel #6
0
 /// <summary>
 /// 消息入队
 /// </summary>
 /// <param name="message"></param>
 public void addTask(MessageNode node)
 {
     lock (this)
     {
         cqueue.Enqueue(node);
     }
     RunMessage();
 }
Beispiel #7
0
        public void do7999(MessageNode node)
        {
            User user = node.socket.user;

            if (user.room != null)
            {
                user.room.ExitRoom(user);
            }
        }
Beispiel #8
0
        public void do7111(MessageNode node)
        {
            ByteBuffer buffer = node.buffer;
            User       user   = node.socket.user;
            int        row    = buffer.readInt(); //行
            int        col    = buffer.readInt(); //列

            user.room.UserTurnGame(user, row, col);
        }
Beispiel #9
0
        //用户登陆
        public void do1001(MessageNode node)
        {
            ClientNode client = node.socket;
            ByteBuffer buffer = node.buffer;

            string name = buffer.readString();

            if (g.ContansUser(name))
            {
                client.send(ConstomMessage.getError("该用户已在别处登陆,服务器拒绝登陆!"));
                return;
            }
            if (!FFactory.Exists(Share.USER_SAVE_PATH + name))
            {
                client.send(ConstomMessage.getError("用户名错误!"));
                return;
            }
            User   user = FFactory.ReadObject <User>(Share.USER_SAVE_PATH + name);
            string pwd  = buffer.readString();

            if (!user.Password.Equals(pwd))
            {
                client.send(ConstomMessage.getError("密码错误!"));
            }
            else
            {
                user.BindSocket(client);
                g.addUser(user);

                ByteBuffer buf = new ByteBuffer();
                buf.writeInt(Protcol.用户登陆);
                buf.writeString(user.UserName);
                buf.writeString(user.ChinaName);
                //debug.logln(user.Money, user.Duanwei, user.Image, user.Text);
                buf.writeInt(user.Money);
                buf.writeString(user.Duanwei);
                buf.writeString(user.Image);
                buf.writeString(user.Text);

                client.send(buf);


                GameHall.shareGameHall().addGameHall(user);

                //debug.logln(user.ChinaName + " 登陆成功");

                //user.ReadImageBuffer();//先把图片读出来
            }
        }
Beispiel #10
0
        /// <summary>
        /// 消息入队
        /// </summary>
        /// <param name="message"></param>
        public void addTask(MessageNode node)
        {
            cqueue.Enqueue(node);

            if (this.wait)
            {
                Moinst.Set();
            }
            if (!this.runing)
            {
                runing    = true;
                runAction = new Action(doRun);
                this.RunTask();
            }
        }
Beispiel #11
0
        //私聊
        public void _do2002(MessageNode node)
        {
            ClientNode client = node.socket;
            ByteBuffer buff   = node.buffer;
            string     dfUser = buff.readString();
            string     wrod   = buff.readString();
            User       user   = g.getUser(dfUser);

            if (user != null)
            {
                ByteBuffer buf = new ByteBuffer(Protcol.用户私聊);
                buf.writeInt(Protcol.用户私聊);
                buf.writeString(client.user.UserName);
                buf.writeString(client.user.ChinaName);
                buf.writeString(wrod);
                user.Send(buf);
            }
        }
Beispiel #12
0
        public void doRun()
        {
            MessageNode node;
            bool        f = cqueue.TryDequeue(out node);

            cNode = node;

            if (node.Method != null)
            {
                node.Method();
            }
            else
            {
                debug.logln("准备执行: " + (node.socket.user != null ? node.socket.user.ChinaName : node.socket.name) + " 的协议,Type: " + node.Type);
                util.core.EventDispatch.dispatchEvent(node.Type, node);
            }
            //debug.logln(node.socket.name + " < " + (node.socket.user != null ? node.socket.user.ChinaName : "") + " : " + node.Type + " > - 执行第[ " + (++msgCount) + " ]条协议");
        }
Beispiel #13
0
        //注册
        public void do1002(MessageNode node)
        {
            ClientNode client = node.socket;
            ByteBuffer buff   = node.buffer;

            string name = buff.readString();

            if (g.ContansUser(name) || FFactory.Exists(Share.USER_SAVE_PATH + name))
            {
                //存在
                client.send(ConstomMessage.getError("用户名已存在"));
                client = null;
                return;
            }
            string chinaName = buff.readString();
            string sex       = buff.readString();
            int    age       = buff.readInt();
            string pwd       = buff.readString();

            User user = new User(name, chinaName, sex, age, pwd);
            //是否有图片上传
            int im = buff.readInt();

            if (im > 0)
            {
                string imgExt  = buff.readString();
                string imgName = name + this.getImageName() + imgExt;
                user.Image = imgName;
                ByteBuffer imgbs = buff.readBuffer();
                FFactory.SaveObject(Share.USER_SAVE_IMAGE_PATH + imgName, imgbs.getBuffer());
            }
            FFactory.SaveObject(Share.USER_SAVE_PATH + name, user);
            //g.addUser(user);

            debug.logln("用户注册成功 : " + name + " 密码: " + pwd);
            ByteBuffer buf = ByteBuffer.CreateByteBufferType(Protcol.用户注册);

            //buf.writeInt(Protcol.用户注册);
            //buf.writeInt(1);
            client.send(buf);
        }
Beispiel #14
0
        public void _do2001(MessageNode node)
        {
            ClientNode client = node.socket;
            ByteBuffer buff   = node.buffer;
            string     wrod   = buff.readString();
            ByteBuffer buf    = new ByteBuffer(Protcol.用户群聊);

            buf.writeInt(Protcol.用户群聊);
            buf.writeString(client.user.UserName);
            buf.writeString(client.user.ChinaName);
            buf.writeString(wrod);

            User[] users = g.Users();
            foreach (User u in users)
            {
                if (u != null)
                {
                    u.Send(buf);
                }
            }
        }
Beispiel #15
0
 public void Run()
 {
     try {
         while (run)
         {
             if (cqueue.Count > 0)
             {
                 lock (this)
                 {
                     MessageNode node;
                     bool        f = cqueue.TryDequeue(out node);
                     cNode = node;
                     //if (node.socket.user != null)
                     {
                         node.buffer.Send(node.socket.getSocket());
                     }
                 }
             }
             //
             Thread.Sleep(10);
         }
     }catch (Exception e)
     {
         debug.logln("==========================发送消息时出错:==================================");
         if (cNode.socket.user != null)
         {
             debug.logln("错误:" + cNode.Type + "   :   " + cNode.socket.user.ChinaName);
         }
         else
         {
             debug.logln("错误:" + cNode.Type + "   :   " + cNode.socket.name);
         }
         debug.log(e.Message);
         debug.logln("===========================================================================");
         run = false;
     }
 }
Beispiel #16
0
 //当玩家第一次进入大厅时 获得所有房间信息
 public void do6210(MessageNode node)
 {
     //User user = node.socket.user;
     //ByteBuffer buf = RoomManager.shareRoomManager().RoomInfos();
     // user.Send(buf);
 }
Beispiel #17
0
 public static void addSendTask(MessageNode node)
 {
     SendMessageQueue.addTask(node);
 }
Beispiel #18
0
 public static void addReciveTask(MessageNode node)
 {
     ReciveMessageQueue.addTask(node);
 }