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); }
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; } }
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); }
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")); }