AdvancedTerminalAPI
A Mod to provide a more advanced API for the Terminal.
Date uploaded | 7 months ago |
Version | 4.1.0 |
Download link | Computerdores-AdvancedTerminalAPI-4.1.0.zip |
Downloads | 1046 |
Dependency string | Computerdores-AdvancedTerminalAPI-4.1.0 |
This mod requires the following mods to function
BepInEx-BepInExPack
BepInEx pack for Mono Unity games. Preconfigured and ready to use.
Preferred version: 5.4.2100README
AdvancedTerminalAPI
AdvancedTerminalAPI provides a simple way of adding new commands and terminals. The primary motivation for the creation of this API was my personal dislike for the way Commands are implemented in the base game. For that reason this API is very different from the vanilla Implementation. If you are looking for an API that is close to the way the vanilla commands are implemented, take a look at the TerminalApi by NotAtomicBomb which also inspired me to pick up this project.
Contributing
If you want to contribute just open a pull request and make sure your code follows the same style as the existing code base.
Also the license used by this project includes a CLA.
Building
Use dotnet build -p:BuildThunderstorePackage=true
to build the Thunderstore package (Note: this requires tcli
to be installed).
Use dotnet build -p:BuildNugetPackage=true
to build the NuGet package.
Credits
This project uses the LethalCompanyTemplate by Distractic under the MIT License.
CHANGELOG
Changelog
5.1.0 (2024-04-19)
Features
- BuyCommand: Implement IPredictable (ab7917c)
- InfoCommand: Implement IPredictable (80709ec)
- ViewCommand: Implement IPredictable (c97742d)
5.0.0 (2024-04-17)
⚠ BREAKING CHANGES
- refactoring with renaming of API members
- InputFieldDriver: remove obsolete method
- IPredictable: pass an ITerminal instance when predicting to streamline predictors that require that
Features
- add Util method for predicting Items to buy (3baaa1f)
- BuyItemCommand: Implement IPredictable (a3ee9b7)
- BuyUnlockableCommand: Implement IPredictable (6836fbe)
- IPredictable: pass an ITerminal instance when predicting to streamline predictors that require that (87f5c62)
- RouteCommand: Implement IPredictable (6b092c6)
- RouteMoonCommand: Implement IPredictable (d891696)
Bug Fixes
- CommandResult.IGNORE_INPUT had
success == false
(27cd187) - EjectCommand: NullReferenceException in Execute (588dd85)
- EjectCommand: update Logic to use newer Util methods and fix a bug where you couldn't exit the command (8a1d3de)
- Implement IAliasable in RouteCommand instead of RouteMoonCommand (c5a8c3b)
- Improve PredictConfirmation by using VanillaStringMatch (ba4dd3f)
- InputFieldDriver: remove obsolete method (f7b09c7)
- refactoring with renaming of API members (93222c7)
- rename AdvancedTerminalAPI.cs to Plugin.cs (27fcfff)
- RouteMoonCommand: Improve code quality (896d82e)
- Use VanillaStringMatch for GetPlayerIndexByName (cb87b62)
- VanillaStringMatch now behaves closer to the base game (d9a7dae)
4.1.0 (2024-04-15)
Features
- TerminalWrapper: add field TerminalInUse (8beb653)
- TerminalWrapper: add OnExitTerminal Event (2e91ff6)
Bug Fixes
- Mark InputFieldDriver.OnEnterTerminal as obsolete and update internal usages (262e3b0)
4.0.0 (2024-04-14)
⚠ BREAKING CHANGES
- VanillinTerminal: allow for certain methods to be overridden
Features
- VanillinTerminal: allow for certain methods to be overridden (86ae7cf)
3.0.0 (2024-04-14)
⚠ BREAKING CHANGES
- make Util.TextPostProcess an extension method of TerminalNode
- make most private members of VanillinTerminal protected instead
Bug Fixes
- make most private members of VanillinTerminal protected instead (af764e2)
- make Util.TextPostProcess an extension method of TerminalNode (962ffcc)
2.0.9 (2024-04-14)
Bug Fixes
- ci: I give up, no fancy GITHUB_TOKEN just use a generated PAT and be fucking done with it (98a9558)
2.0.8 (2024-04-14)
Bug Fixes
- ci: add continue on error to thunderstore publish (627bc4d)
2.0.7 (2024-04-14)
Bug Fixes
- ci: stop using
${{ github.repository_owner }}
in hopes of getting it working (747e7f5)
2.0.6 (2024-04-14)
Bug Fixes
- another attempt to fix the ci (76d8da8)
2.0.5 (2024-04-14)
Bug Fixes
- ci/cd pipeline should work now (fa8d3ec)
2.0.4 (2024-04-14)
Bug Fixes
- remove unnecessary C# project (a429909)
2.0.3 (2024-04-14)
Bug Fixes
- correct category name in thunderstore.toml to fix thunderstore upload (635096a)
2.0.2 (2024-04-14)
Bug Fixes
- add category "client-side" for Thunderstore upload (d545879)
- move code from namespace 'Computerdores' to 'Computerdores.AdvancedTerminalAPI' (9c8d88e)
2.0.1 (2024-04-12)
Bug Fixes
- update icon (538709c)
2.0.0 (2024-04-12)
⚠ BREAKING CHANGES
- Overhaul API for loading Nodes by adding a Wrapper Class
Features
- add IDescribable Interface and implement it in Vanillin Commands (aadfb1a)
- ITerminals now need to implement GetCommands (dafadf4)
- OtherCommand: rework to show commands that use the IDescribable Interface (c9a0826)
- Overhaul API for loading Nodes by adding a Wrapper Class (27fedeb)
Bug Fixes
- AdvancedTerminalAPI: Fix NullReferenceException (67747e7)
- InputFieldDriver: remove unnecessary types (a60cd58)
- remove 'test' command (2ddbee9)
- VanillinTerminal: GetCommands now puts built-ins before other commands (bba6dd1)
1.0.0 (2024-04-10)
⚠ BREAKING CHANGES
- Change naming in IPredictable API to clearly convey that not just arguments but also Input should be predicted
- InputFieldDriver: Change DisplayText to offer clearing the Screen instead of the input
- InputFieldDriver: add OnInputChange Event
- Move ICommand.PredictArguments to a seperate interface (IPredictable)
- Changes to API and Vanillin Shell to allow for commands to accept input
Features
- add a generic wrapper for vanilla load methods (01ef577)
- Add help command (baf4e8b)
- Add IAliasable for e.g. commands which can be shortened by leaving out the name (c93dcf1)
- BuyCommand: now implements IAliasable (78f078c)
- Changes to API and Vanillin Shell to allow for commands to accept input (dbe84a0)
- Implement 'bestiary' command (9597e8c)
- Implement 'buy' command and accompanying commands for individual items (d73af78)
- Implement 'decor' & 'upgrades' commands (d0732e5)
- Implement 'eject' command (67ab2ac)
- Implement 'flash' command (eaad100)
- Implement 'info' command (1a0db30)
- Implement 'moons' command (7a1966f)
- Implement 'other' command (76d6953)
- Implement 'ping' command (cc01794)
- Implement 'route' command and accompanying commands for individual moons (c5e361e)
- Implement 'scan' command (3a0180d)
- Implement 'sigurd' command (d814913)
- Implement 'storage' command (bb73821)
- Implement 'store' command (90ab1a9)
- Implement 'transmit' command (1676cc9)
- Implement command for terminal accessible objects (doors, turrets, etc.) (7b2df24)
- implement SpecialNodeCommand and replace WelcomeCommand and HelpCommand with it (52362d5)
- implement switch command (83aeb1c)
- InfoCommand: now implements IAliasable (930e9af)
- InputFieldDriver: add OnInputChange Event (cd4955b)
- InputFieldDriver: Change DisplayText to offer clearing the Screen instead of the input (7547e90)
- InputFieldDriver: expose MaxInputLength on the public API (d8ceb51)
- Major API rework for better replacing of the Terminal and adding of commands (0d04e5a)
- Plugin Builds and Shows awake message (165f1bb)
- RouteMoonCommand: now implements IAliasable (ad480da)
- sigurd log entries are now accessible without 'view' (17d6c29)
- TerminalPatch: add LoadNewNode and LoadNewNodeIfAffordable (a0de98b)
- TerminalPath: add pre and post events for awake, start and update (74accae)
- VanillinTerminal: Publicly expose IEnumerable of all Builtin Commands (72a754e)
- view command now working (b64e9a5)
- ViewCommand: now implements IAliasable (f13344a)
Bug Fixes
- accidental bypass of Unity.Object Lifetime check (38e7de2)
- Adapt ICommand.Execute Signature to better suit future needs (018be78)
- add debug log for terminal nodes and keywords (c865e37)
- add version.txt (d73335b)
- BuyCommand: you can now actually buy all items (c78cbf6)
- BuyUnlockableCommand: now clones the correctly (a5b7249)
- Change naming in IPredictable API to clearly convey that not just arguments but also Input should be predicted (ab52e49)
- change SwitchCommand implementation to be closer to the vanilla one (8da9f5d)
- CommandResult: add constants (technically static readonlys) for a generic error and for ignoring the given input (2cacc35)
- CommandResult: add default values for clearScreen and success (d3dc6a0)
- CommandResult: Correctly apply default values (f28499a)
- EjectCommand: adhere closer to the vanilla command (5b9d3fb)
- EjectCommand: Clone now works correctly (39138ea)
- HelpCommand: use the vanilla string formatting (35bb444)
- InfoCommand: you can now leave out the info keyword (f44d5b3)
- InfoThingCommand: Creature file now get loaded correctly (cc51e76)
- InputFieldDriver: DisplayText now ACTUALLY follows intended behaviour when text is null (e6003fb)
- InputFieldDriver: DisplayText now follows intended behaviour when text is null (431c4ef)
- ITerminal now exposes the InputFieldDriver Instance (9151779)
- ITerminal: remove unused methods (a8eca58)
- Move ASimpleCommand to a more appropriate namespace (1d8b342)
- move default commands and terminal to a common namespace (77d47cc)
- Move ICommand.PredictArguments to a seperate interface (IPredictable) (f14575e)
- move static methods to a common Util class (cb6030c)
- prevent Vanillin Commands from being copied to other terminals when it is replaced (a4dd8c8)
- remove unused private method (25d2af3)
- rename ASimpleCommand to SimpleCommand in order to adhere to dotnet naming conventions (7b2adb0)
- shift responsibility for enumerating all AccessibleObjectCommands to AccessibleObjectCommand (7eb42f3)
- shift responsibility for enumerating all SimpleCommands to SimpleCommand (a0fc8bf)
- SwitchCommand now pulls special string from the game in case it changes (2d17e62)
- TerminalPatch: use nameof instead of hardcoded strings (3530537)
- update InputFieldDriver API to somewhat future proof it (f11f64d)
- Util: FindTerminalOption now uses the correct specificity (efbf5b9)
- Util: move Util to more appropriate namespace (d2fae97)
- VanillinTerminal now pulls special strings from the game in case they change (78a3388)
- VanillinTerminal now pulls the list of terminal accessible objects from the game (c92c121)
- VanillinTerminal: allow for custom error messages (1c048c0)
- VanillinTerminal: Execution of a command will now be terminated if execution fails instead of forcing the player to reopen the terminal. (24dc0f5)
- VanillinTerminal: fix a bug where a command would not be found because more than 1 command matched the input (e053c0c)
- VanillinTerminal: prevent empty input from triggering a command not found message (ba50015)
- VanillinTerminal: respect clearScreen even when success == false (6437fbc)
- VanillinTerminal: use vanilla string matching (4137a3b)
- ViewCommand: ignore case (bd2484c)
- ViewThingCommand: Log Files now get loaded correctly (cea2f8e)
- WelcomeCommand now pulls special string from the game in case it changes (2917f8f)
- WelcomeCommand: use the vanilla string formatting (5d502dc)