Verity-LethalOS icon

LethalOS

An in-game terminal library, which allows you to easily create menus, categories, and programmable modules. Allows for a clean and easy way to implement your mods.

Last updated a year ago
Total downloads 26338
Total rating 5 
Categories Libraries BepInEx
Dependency string Verity-LethalOS-1.0.8
Dependants 31 other packages depend on this package

README

Creating Menus, Categories, and Modules in LethalOS.API

Introduction

LethalOS.API provides a flexible system for managing modules within Lethal Company's terminal environment. This guide demonstrates how to create menus, categories, and modules using the API.

Creating a Menu

// Creating a menu instance
Menu mainMenu = new Menu("Main Menu", "Description of the main menu", "main", "John Doe");

// Finalizing and adding the menu to the terminal, do this after adding categories and their respective modules
mainMenu.Finished();

Adding Categories to the Menu

// Creating a category instance
Category moonCategory = new Category("Moon", "Moon-related modules", "moon");

// Adding the category to the main menu, do this after adding the modules to the category
mainMenu.AddCategory(moonCategory);

Adding Modules to Categories

Creating a Custom Module Class

using LethalOS.API;

public class CustomModule : ModuleBase
{
    public CustomModule(string displayName, string displayDescription, string keyword, bool requiresHost, bool toggled)
        : base(displayName, displayDescription, keyword, requiresHost, toggled)
    {
        // Custom initialization code
    }

    public override void OnAdded()
    {
        // Custom Logic when the module is first added to the terminal
    }

    public override void OnEnabled()
    {
        // Custom logic when the module is enabled

        //Change the current text on the terminal, does not effect the existing terminal node
        ChangeScreenText("New Text", true);

        //Updates the current node with a new one, this will effect the existing terminal node
        UpdateNode(newNode: );
    }

    // Other overrideable lifecycle methods can be implemented here
}

Adding Custom Modules to Categories

// Creating a custom module instance
CustomModule moonInfo = new CustomModule("MoonInfo", "Display moon information", "MoonInfo", false, false);

// Adding the module to the 'moon' category
moonCategory.AddModule(moonInfo);

Retrieving Modules from Categories

// Retrieving a module by its name from the 'moon' category
ModuleBase retrievedModule = moonCategory.GetModuleByName("MoonInfo");
// Retrieving a module by its class from the 'moon' category
CustomModule moonModule = moonCategory.GetModule<CustomModule>();

Example Code

// Creating a menu instance
Menu mainMenu = new Menu("Main Menu", "Description of the main menu", "main", "John Doe");

// Creating a category instance
Category moonCategory = new Category("Moon", "Moon-related modules", "moon");

// Creating a custom module instance
CustomModule moonInfo = new CustomModule("MoonInfo", "Display moon information", "MoonInfo", false, false);

// Adding the module to the 'moon' category
moonCategory.AddModule(moonInfo);

// Adding the category to the main menu
mainMenu.AddCategory(moonCategory);

// Finalizing and adding the menu to the terminal
mainMenu.Finished();

// Retrieving a module by its name from the 'moon' category
ModuleBase retrievedModule = moonCategory.GetModuleByName("MoonInfo");

if (retrievedModule != null)
{
    Console.WriteLine("Module Found: " + retrievedModule.DisplayName);
}
else
{
    Console.WriteLine("Module Not Found.");
}

// Retrieving a module by its class from the 'moon' category
CustomModule moonModule = moonCategory.GetModule<CustomModule>();

if (moonModule != null)
{
    Console.WriteLine("Custom Module Found: " + moonModule.DisplayName);
}
else
{
    Console.WriteLine("Custom Module Not Found.");
}