Skip to content
This repository has been archived by the owner on Nov 11, 2024. It is now read-only.

duydang2311/AltV.Community.Events

Repository files navigation

AltV.Community.Events

NuGet badge

Quickstart

This package helps you quickly create event as a class with provided base methods for managing event handlers.

Installation

  1. Add the NuGet package to your project.
dotnet add package AltV.Community.Events

Usage with Dependency Injection

  1. Create your event
using AltV.Net;
using AltV.Community.Events;

// .net 8 primary constructor syntax
public sealed class PlayerLoggedInEvent(IEventInvoker invoker) : Event<IPlayer>(invoker) { }

// with more parameters
public sealed class PlayerLoggedInEvent(IEventInvoker invoker) : Event<IPlayer, int, string, float, double>(invoker) { }
  1. Register necessary types to the service collection
// your resource startup

serviceCollection.AddSingleton<IEventInvoker, EventInvoker>(); // register the default event invoker
serviceCollection.AddSingleton<PlayerLoggedInEvent>(); // register the event
  1. Use the event by adding/removing handlers or invoking handlers.
// somewhere in your Script

public sealed class SpawnPlayerScript(PlayerLoggedInEvent playerLoggedInEvent)
{
    playerLoggedInEvent.AddHandler((player) =>
    {
        Console.WriteLine($"{player.Name} has logged in successfully!");
        SpawnPlayer(player);
    });
    playerLoggedInEvent.AddHandler((player) =>
    {
        Console.WriteLine("I'm another event handler");
    });
}

public sealed class PlayerConnectScript(PlayerLoggedInEvent playerLoggedInEvent)
{
    Alt.OnPlayerConnect += (player) =>
    {
        var success = AskPlayerToLogin(player);
        if (success)
        {
            playerLoggedInEvent.Invoke(player); // or InvokeAsync, InvokeAsyncSerial
        }
    };
}