Skip to content
Blanc Faye edited this page Dec 8, 2020 · 8 revisions

Overview of the API

The mod itself uses the API to implement the Beam Drone (LaserDrone1) which is a custom entity along with its custom attack (FireLaser). This custom drone also has Option Support. Use it for reference on using the API.

Setting up the drone using the provided DroneCatalog

myCustomDronesList = DroneCatalog.Initialize("com.awesome.mod.guid", someConfigFile);
DroneCatalog.SetupAll(myCustomDronesList);

Creating a custom drone class by inheriting Drone

public class MyCustomDrone : Drone<MyCustomDrone>

Accessing the instance of the singleton drone class

// This will only work after DroneCatalog.Initialize() is done
MyCustomDrone drone = MyCustomDrone.instance;
drone.enabled; // true or false

Always use the base method when implementing the available virtual methods

protected override void SetupConfig()
{
    base.SetupConfig();
    // other code
}

// For PostSetup, it is ideal to call the base method last
protected override void PostSetup()
{
    // other code
    base.PostSetup();
}

Executing code for all the Options of a drone

GradiusOption.instance.FireForAllOptions(droneBody, (option, behavior, target, direction) =>
{
    new BulletAttack
    {
        owner = droneBody.gameObject,
        weapon = option,
        // remember to multiply damageMultiplier so that the config option for GradiusOption is respected for your custom drone
        damage = damage * coefficient * GradiusOption.instance.damageMultiplier,
        force = force * GradiusOption.instance.damageMultiplier, // do the same for force
        // other initialization here
    }.Fire();
});
Clone this wiki locally