Пример #1
0
        public async Task PlayerLeaveRoom(IUserGrain user)
        {
            S2C100006 content = new S2C100006();

            content.UserId = user.GetPrimaryKeyLong();
            content.RoomId = (int)this.GetPrimaryKeyLong();
            MOMsg msg = new MOMsg();

            msg.ActionId = 100006;
            msg.Content  = content.ToByteString();
            await RoomNotify(msg);

            _players.Remove(user.GetPrimaryKeyLong());
            await user.UnsubscribeRoom();
        }
Пример #2
0
        public void Handle(object sender, Packet packet)
        {
            S2C100006 rep = S2C100006.Parser.ParseFrom(((MOPacket)packet).Packet.Content);

            if (rep.UserId == GameUser.Instance.UserId)
            {
                GlobalGame.IsGameStart = false;
                GlobalGame.Channel.Close();
                GlobalGame.FrameCount = 0;
                GameUser.Instance.Players.Clear();
            }
            else
            {
                PlayerData player;
                if (GameUser.Instance.Players.TryGetValue(rep.UserId, out player))
                {
                    GameUser.Instance.Players.Remove(rep.UserId);
                    GameEntry.Entity.HideEntity(player.EntityId);
                }
            }
        }