Exemplo n.º 1
0
        public void Close()
        {
            if (m_onClose == null)
            {
                return;
            }
            if (m_socket == null)
            {
                return;
            }

            foreach (ChannelDelegate @d in m_onClose)
            {
                CompleteEvent e = new CompleteEvent();
                e.@delegate = @d;
                e.channel   = this;
                e.message   = null;
                m_queue.Add(e);
            }
            SCommunity msg = new SCommunity();

            Backend.Game.Player p = this.GetContent() as Backend.Game.Player;
            p.online = false;
            msg.name = p.user;
            Console.WriteLine(string.Format("Channel {0} remove", p.user));
            msg.id    = 0;
            msg.enter = false;
            Database.Instance.playerExit(p.dbid);
            Backend.Game.World.Instance.Broundcast(msg);
        }
Exemplo n.º 2
0
        private void OnRecvCommunity(IChannel channel, Message message)
        {
            Debug.Log("ccccccomunity");
            SCommunity msg = message as SCommunity;

            if (World.Instance.players.ContainsKey(msg.name) == false && msg.enter == true)
            {
                Debug.Log("ENTER");
                World.Instance.addPlayers(msg.name, msg.id);
            }
            else if (World.Instance.players.ContainsKey(msg.name) == true && msg.enter == false)
            {
                World.Instance.players.Remove(msg.name);
            }
            if (msg.isTeammate)
            {
                World.Instance.teammate_dbid = msg.dbid;
            }
        }
Exemplo n.º 3
0
        private void OnRecvAddFriend(IChannel channel, Message message)
        {
            CAddFriend request = message as CAddFriend;
            SAddFriend reply   = new SAddFriend();
            string     scene   = "Level1";
            Scene      scenes  = World.Instance.GetScene(scene);
            var        conn    = db.Instance.Connect();

            switch (request.option)
            {
            case "get":
                reply.items  = db.Instance.GetAddFriend(request.selfdbid, conn);
                reply.option = "get";
                break;

            case "feedback":
                if (request.acc == true)
                {
                    bool isteammate = db.Instance.AccFriend(request.request, request.response, conn);
                    foreach (var kvp in scenes.Players)
                    {
                        if (kvp.Value.dbid == request.request)
                        {
                            SCommunity am = new SCommunity();
                            am.name       = kvp.Value.user;
                            am.id         = kvp.Value.entityId;
                            am.enter      = true;
                            am.isTeammate = isteammate;
                            am.dbid       = kvp.Value.dbid;
                            channel.Send(am);
                            SCommunity bm = new SCommunity();
                            bm.name       = request.selfname;
                            bm.id         = request.selfentityid;
                            bm.enter      = true;
                            bm.isTeammate = isteammate;
                            bm.dbid       = request.selfdbid;
                            kvp.Value.connection.Send(bm);
                            break;
                        }
                    }
                    ClientTipInfo(channel, "Successfully accept :)");
                }
                else
                {
                    db.Instance.RejFriend(request.request, request.response, conn);
                    ClientTipInfo(channel, "Successfully reject :)");
                }
                break;

            case "send":
                if (db.Instance.findFriend(request.name, conn))
                {
                    int temp = db.Instance.insertFriend(request.name, request.selfdbid, request.message, request.asTeam, conn);
                    if (temp == 0)
                    {
                        ClientTipInfo(channel, "Successfully send the message :)");
                    }
                    else
                    {
                        ClientTipInfo(channel, "Message already exists :(");
                    }
                }
                else
                {
                    ClientTipInfo(channel, string.Format("Sorry, cannot find {0}", request.name));
                }
                break;
            }
            channel.Send(reply);
        }
Exemplo n.º 4
0
        private void OnRecvLogin(IChannel channel, Message message)
        {
            CLogin       request  = message as CLogin;
            SPlayerEnter response = new SPlayerEnter();
            string       scene    = "Level1";

            response.user  = request.user;
            response.token = request.user;
            response.scene = scene;
            var conn = db.Instance.Connect();

            if (db.Instance.LoginUser(request.user.ToString(), request.password.ToString(), conn))
            {
                //response.id = db.GetID(request.user);
                ClientTipInfo(channel, "Successfully login :)");
                //channel.Send(response);
            }
            else
            {
                ClientTipInfo(channel, "Sorry :(");
                return;
            }
            Player player = new Player(channel);

            player.scene = scene;
            player.user  = request.user;
            player.id    = response.id;
            player.dbid  = db.Instance.GetID(request.user, conn);
            int k = player.entityId;

            response.id   = k;
            response.dbid = player.dbid;
            ClientTipInfo(channel, string.Format("Backend:('name: {0}', 'entity_id: {1}','sql_id: {2});", player.user, player.entityId, player.dbid));
            DEntity dentity = World.Instance.EntityData["Ellen"];

            player.FromDEntity(dentity);
            player.forClone = false;

            SCommunity bm = new SCommunity();

            bm.name              = request.user;
            bm.id                = k;
            bm.enter             = true;
            response.inventory   = db.Instance.GetInventory(player.dbid, conn);
            response.market      = db.Instance.GetMyMarket(player.dbid, conn);
            response.silver      = db.Instance.GetSilverCoins(player.dbid, conn);
            response.gold        = db.Instance.GetGoldCoins(player.dbid, conn);
            response.teammate_id = db.Instance.getTeammate(player.dbid, conn);
            channel.Send(response);
            Scene      scenes   = World.Instance.GetScene(player.scene);
            List <int> myFriend = db.Instance.getMyFriend(player.dbid, conn);

            foreach (var kvp in scenes.Players)
            {
                if (myFriend.Contains(kvp.Value.dbid) == false)
                {
                    continue;
                }
                SCommunity am = new SCommunity();
                am.name  = kvp.Value.user;
                am.id    = kvp.Value.entityId;
                am.enter = true;
                channel.Send(am);
                kvp.Value.connection.Send(bm);
            }

            STemp snameresponse = new STemp();

            snameresponse.name     = request.user;
            snameresponse.entityid = player.entityId;
            World.Instance.Broundcast(snameresponse);
            Console.WriteLine(string.Format("send to backend sucess"));
        }