Exemplo n.º 1
0
        public async Task RenameCharacter(CharacterRenameRequest packet, IRakConnection connection)
        {
            var session = Server.SessionCache.GetSession(connection.EndPoint);

            await using var ctx = new UchuContext();

            if (ctx.Characters.Any(c => c.Name == packet.Name || c.CustomName == packet.Name))
            {
                connection.Send(new CharacterRenameResponse
                {
                    ResponseId = CharacterRenamingResponse.NameAlreadyInUse
                }
                                );

                return;
            }

            var chr = await ctx.Characters.FindAsync(packet.CharacterId);

            chr.CustomName   = packet.Name;
            chr.NameRejected = false;
            chr.LastActivity = DateTimeOffset.Now.ToUnixTimeSeconds();

            await ctx.SaveChangesAsync();

            connection.Send(new CharacterRenameResponse
            {
                ResponseId = CharacterRenamingResponse.Success
            }
                            );

            await SendCharacterList(connection, session.UserId);
        }
Exemplo n.º 2
0
        public async Task RenameCharacter(CharacterRenameRequest packet, IRakConnection connection)
        {
            var session = UchuServer.SessionCache.GetSession(connection.EndPoint);

            await using var ctx = new UchuContext();

            // Check if the name already exists and return proper response if so
            if (ctx.Characters.Any(c => c.Name == packet.Name || c.CustomName == packet.Name))
            {
                connection.Send(new CharacterRenameResponse
                {
                    ResponseId = CharacterRenamingResponse.NameAlreadyInUse
                }
                                );

                return;
            }

            // If the name is free, update accordingly and notify the client
            var chr = await ctx.Characters.FindAsync(packet.CharacterId);

            chr.CustomName   = packet.Name;
            chr.NameRejected = false;
            chr.LastActivity = DateTimeOffset.Now.ToUnixTimeSeconds();

            await ctx.SaveChangesAsync();

            connection.Send(new CharacterRenameResponse
            {
                ResponseId = CharacterRenamingResponse.Success
            }
                            );

            await SendCharacterList(connection, session.UserId);
        }