//
//  SimpleChat.cs
//
//  Copyright (c) František Boháček. All rights reserved.
//  Licensed under the MIT license. See LICENSE file in the project root for full license information.
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using NosCore.Packets.Enumerations;
using NosCore.Packets.ServerPackets.Chats;
using NosCore.Shared.Enumerations;
using NosSmooth.Core.Client;
using NosSmooth.Core.Packets;
using NosSmooth.LocalClient.Extensions;
namespace SimpleChat;
/// 
/// The main simple chat class.
/// 
public class SimpleChat
{
    /// 
    /// Run the client.
    /// 
    /// The task that may or may not have succeeded.
    public async Task RunAsync()
    {
        var provider = new ServiceCollection()
            .AddLocalClient()
            // .AddPacketResponder()
            .AddLogging(b =>
            {
                b.ClearProviders();
                b.AddConsole();
                b.SetMinimumLevel(LogLevel.Debug);
            })
            .BuildServiceProvider();
        var dummy1 = provider.GetRequiredService().ServerSerializer;
        var dummy2 = provider.GetRequiredService().ClientSerializer;
        var logger = provider.GetRequiredService>();
        logger.LogInformation("Hello world from SimpleChat!");
        var client = provider.GetRequiredService();
        await client.ReceivePacketAsync(new SayPacket()
        {
            Message = "Hello world from NosSmooth!",
            VisualType = VisualType.Player,
            Type = SayColorType.Red,
            VisualId = 1,
        });
        await client.RunAsync();
    }
}