/// <inheritdoc />
        public override Task HandleMessage(IPeerMessageContext <PSOBBGamePacketPayloadClient> context, CharacterCharacterUpdateResponsePayload payload)
        {
            if (CharacterScreenUIContext.Elements.Count < payload.SlotSelected)
            {
                throw new InvalidOperationException($"Character slot unavailable for Slot: {payload.SlotSelected}");
            }

            CharacterScreenUIContext.Elements.ElementAt(payload.SlotSelected).ButtonElement.IsInteractable = true;
            CharacterScreenUIContext.Elements.ElementAt(payload.SlotSelected).TextElement.Text             = payload.CharacterData.CharacterName.Replace("\tE", "");
            CharacterScreenUIContext.Elements.ElementAt(payload.SlotSelected).ButtonElement.AddOnClickListenerAsync(async() =>
            {
                if (Logger.IsInfoEnabled)
                {
                    Logger.Info($"Selecting Character: {payload.SlotSelected}");
                }

                //Save the character we picked
                SelectedSlotModel.SlotSelected = payload.SlotSelected;

                //Disable all character buttons
                foreach (var uiEle in CharacterScreenUIContext.Elements)
                {
                    uiEle.ButtonElement.IsInteractable = false;
                }

                //TODO: What is this?
                //I really don't know what this is
                //However I DO know that we MUST wait for the result to come in before things continue.
                CharacterChecksumResponsePayload checksumResult = await context.RequestSendService.SendRequestAsync <CharacterChecksumResponsePayload>(new CharacterChecksumRequestPayload(0))
                                                                  .ConfigureAwait(false);

                if (Logger.IsInfoEnabled)
                {
                    Logger.Info($"Character ChecksumResponse: {checksumResult.ResponseCode}:{(int)checksumResult.ResponseCode} WasSuccessful: {checksumResult.ResponseCode == LoginChecksumResult.Success}");
                }

                //This starts the long drawnout bullshit for guild card data reading or whatever
                await context.PayloadSendService.SendMessage(new CharacterGuildHeaderRequestPayload())
                .ConfigureAwait(false);
            });

            return(Task.CompletedTask);
        }
 private async Task DoChecksumProcess()
 {
     //Syl doesn't check value, so I don't know what to send.
     CharacterChecksumResponsePayload payload = await SendService.SendRequestAsync <CharacterChecksumResponsePayload>(new CharacterChecksumRequestPayload(0));
 }