using Google.Protobuf; using Google.Protobuf.WellKnownTypes; using ServerCore; using ServerBase; using ServerCommon; using ServerCommon.BusinessLogDomain; using MetaAssets; using NICKNAME = System.String; namespace GameServer; public class NicknameAction : EntityActionBase { public NicknameAction(Player owner) : base(owner) { } public override async Task onInit() { await Task.CompletedTask; var result = new Result(); return result; } public override void onClear() { return; } public bool isCreatedNickname() { var owner = getOwner(); ArgumentNullException.ThrowIfNull(owner); var nickname_attr = owner.getEntityAttribute(); ArgumentNullException.ThrowIfNull(nickname_attr); var nickname = nickname_attr.Nickname; if (true == nickname.isNullOrWhiteSpace()) { return false; } return true; } public async Task tryChangeNickname(NICKNAME newNickname) { var player = getOwner() as Player; NullReferenceCheckHelper.throwIfNull(player, () => $"player is null !!!"); var result = new Result(); var err_msg = string.Empty; var server_logic = GameServerApp.getServerLogic(); var nickname_attribute = player.getEntityAttribute(); NullReferenceCheckHelper.throwIfNull(nickname_attribute, () => $"nickname_attribute is null !!! - {player.toBasicString()}"); var del_user_nickname_registry_doc = new UserNicknameRegistryDoc(nickname_attribute.Nickname); result = await del_user_nickname_registry_doc.deleteDoc4Query(); if (result.isFail()) { return result; } var new_user_nickname_registry_doc = new UserNicknameRegistryDoc(newNickname); result = await new_user_nickname_registry_doc.newDoc4Query(); if (result.isFail()) { return result; } var new_doc_user_nickname_attrib = new_user_nickname_registry_doc.getAttrib(); ArgumentNullException.ThrowIfNull(new_doc_user_nickname_attrib, $"new_doc_user_nickname_attrib is null !!! - {player.toBasicString()}"); var account_attribute = player.getEntityAttribute(); ArgumentNullException.ThrowIfNull(account_attribute); new_doc_user_nickname_attrib.Nickname = newNickname; new_doc_user_nickname_attrib.UserGuid = player.getUserGuid(); new_doc_user_nickname_attrib.AccountId = account_attribute.AccountId; nickname_attribute.Nickname = newNickname; nickname_attribute.modifiedEntityAttribute(); var batch = new QueryBatchEx( player, LogActionType.CheatCommandChangeNickName , server_logic.getDynamoDbClient()); { batch.addQuery(new DBQEntityDelete(del_user_nickname_registry_doc)); batch.addQuery(new DBQEntityWrite(new_user_nickname_registry_doc)); batch.addQuery(new DBQWriteToAttributeAllWithTransactionRunner()); } result = await QueryHelper.sendQueryAndBusinessLog(batch); if (result.isFail()) { return result; } return result; } public NICKNAME getNickname() { var owner = getOwner(); ArgumentNullException.ThrowIfNull(owner, $"owner is null !!!"); var nickname_attribute = owner.getEntityAttribute(); ArgumentNullException.ThrowIfNull(nickname_attribute, $"nickname_attribute is null !!! - {owner.toBasicString()}"); return nickname_attribute.Nickname; } public ServerErrorCode send_GS2C_NTF_NICKNAME_CHANGE(string nickName) { var owner = getOwner() as Player; ArgumentNullException.ThrowIfNull(owner, $"owner is null !!!"); ClientToGame ntf_packet = new(); ntf_packet.Message = new(); ntf_packet.Message.ChangeNickNameNoti = new(); ntf_packet.Message.ChangeNickNameNoti.Guid = owner.getUserGuid(); ntf_packet.Message.ChangeNickNameNoti.NickName = nickName; var game_zone_action = owner.getEntityAction(); ArgumentNullException.ThrowIfNull(game_zone_action, $"game_zone_action is null !!! - {owner.toBasicString()}"); game_zone_action.broadcast(owner, ntf_packet); return ServerErrorCode.Success; } }