diff --git a/docs/api/index.md b/docs/api/index.md index de6708af..0d4a8c88 100644 --- a/docs/api/index.md +++ b/docs/api/index.md @@ -1,4 +1,4 @@ -# API Documentation -Hello, and welcome to the documentation section of the Inscryption API! +# Inscryption API Documentation +Hello, and welcome to the documentation section for the Inscryption API! -This section documents the various classes and members of the API, providing information on what they do. \ No newline at end of file +This section documents the various classes and members of the Inscryption API, providing information on what they do. \ No newline at end of file diff --git a/docs/community/.gitignore b/docs/community/.gitignore new file mode 100644 index 00000000..e8079a3b --- /dev/null +++ b/docs/community/.gitignore @@ -0,0 +1,5 @@ +############### +# temp file # +############### +*.yml +.manifest diff --git a/docs/community/index.md b/docs/community/index.md new file mode 100644 index 00000000..f79961e0 --- /dev/null +++ b/docs/community/index.md @@ -0,0 +1,4 @@ +# Inscryption Community Patch Documentation +Hello, and welcome to the documentation section for the Inscryption Community Patch! + +This section documents the various classes and members of the Inscryption Community Patch, providing information on what they do. \ No newline at end of file diff --git a/docs/docfx.json b/docs/docfx.json index 9e8a1497..0875132e 100644 --- a/docs/docfx.json +++ b/docs/docfx.json @@ -3,13 +3,22 @@ { "src": [ { - "files": ["**/*.csproj"], - "exclude": ["**/bin/**", "**/obj/**"], + "files": ["InscryptionAPI/InscryptionAPI.csproj"], "src": "../" } ], "dest": "api", "filter": "filter.yml" + }, + { + "src": [ + { + "files": ["InscryptionCommunityPatch/InscryptionCommunityPatch.csproj"], + "src": "../" + } + ], + "dest": "community", + "filter": "filter.yml" } ], "build": { @@ -18,17 +27,30 @@ "files": ["README.md"] }, { - "files": ["LICENSE"], + "files": ["LICENSE.md"], "src": "../" }, { "files": ["images/**", "logo.svg", "favicon.ico"] + }, + { + "files": ["**"], + "src": "../InscryptionAPI/Assets", + "dest": "resources/api/assets" + }, + { + "files": ["**"], + "src": "../InscryptionCommunityPatch/Assets", + "dest": "resources/community/assets" } ], "content": [ { "files": ["api/**.yml", "api/index.md"] }, + { + "files": ["community/**.yml", "community/index.md"] + }, { "files": ["wiki/toc.yml", "wiki/**.md"] }, @@ -43,7 +65,7 @@ ], "globalMetadata": { "_appTitle": "InscryptionAPI", - "_appName": "Inscryption Modding API", + "_appName": "Inscryption Modding Wiki", "_appLogoPath": "images/logo.svg", "_appFaviconPath": "images/favicon.ico", "_disableBreadcrumb": true, @@ -65,8 +87,7 @@ "template": [ "default", "modern", - "template/darkfx", - "template/no_inherited_members" + "template/api_wiki" ] } } diff --git a/docs/filter.yml b/docs/filter.yml index ec615f88..288010f9 100644 --- a/docs/filter.yml +++ b/docs/filter.yml @@ -4,12 +4,6 @@ apiRules: uid: System.ComponentModel.EditorBrowsableAttribute ctorArguments: - System.ComponentModel.EditorBrowsableState.Never - - exclude: - uidRegex: ^APIPatcher - - exclude: - uidRegex: ^APIPlugin - - exclude: - uidRegex: ^InscryptionCommunityPatch attributeRules: - exclude: uidRegex: ^System\.ComponentModel\.Design$ diff --git a/docs/index.md b/docs/index.md index 4795094f..bab34934 100644 --- a/docs/index.md +++ b/docs/index.md @@ -1,19 +1,275 @@ +# Inscryption API Wiki +--- +Hey there, and welcome to the Inscryption Modding and API Wiki. This is your one stop hub for all things related to the API. The following are some quick links: + +* [Inscryption API Documentation](api/index.md) +* [Inscryption Community Patch Documentation](community/index.md) +* [Inscryption Modding Wiki](wiki/index.md) + +Some other links you may find extremely valuable are as follows: +* [Inscryption Modding Discord](https://discord.gg/QrJEF5Denm) +* [Thunderstore Package](https://thunderstore.io/c/inscryption/p/API_dev/API/) +* [GitHub Repository](https://github.com/InscryptionModding/InscryptionAPI) + +How can you contribute to the wiki? Well for starters you can find the Wiki end of our setup [here](https://github.com/InscryptionModding/InscryptionAPI/tree/main/docs), the only relevant part of this setup you may need to interact with is `wiki` or any `index.md` files. The rest of it leave untouched unless you ***know*** what you are doing. Once you have a markdown file open its straight forward editing as long as you know how Markdown works. + +___ + ## Inscryption API + +This plugin is a BepInEx plugin made for Inscryption as an API. This is the de-facto standard API for Inscryption modders. + +It can currently create and modify: +- Cards +- Abilities +- Appearance behaviours +- Stat Icons +- Challenges +- Starter Decks +- Regions +- Encounters +- Totem Tops +- Consumable Items +- Gramophone Tracks +- Slot Modifications +- Talking Cards +- Custom Costs +- Custom Rulebook Pages +- Rulebook Redirects/Hyperlinks +- And much more! + +Additionally, a number of quality-of-life patches from the community are included with each release. + +___ + +## Getting Started: Installation +--- +To begin, we'll go over how to install BepInEx, the framework all Inscryption mods use. This is a necessary step to playing modded Inscryption, so be sure to follow this carefully. + +**FOR LINUX AND STEAMDECK:** Ensure that the game is set to run using `Proton` in he game settings on steam. Should be a setting like this: `Change launch behaviour` -> `Proton`. + +### Installing with a Mod Manager +1. Download and install [Thunderstore Mod Manager](https://www.overwolf.com/app/Thunderstore-Thunderstore_Mod_Manager), [Gale](https://thunderstore.io/c/inscryption/p/Kesomannen/GaleModManager/), [Pulsar](https://pulsarmods.com/) or [r2modman](https://thunderstore.io/c/inscryption/p/ebkr/r2modman/). +2. Click the **Install with Mod Manager** button on the top of [BepInEx's](https://thunderstore.io/c/inscryption/p/BepInEx/BepInExPack_Inscryption/) page. +3. Run the game via the mod manager. + +If you have issues with Mod Managers head to one of these discords; + +* **Thunderstore Support Discord:** [Here](https://discord.gg/Fbz54kQAxg) +* **R2ModMan Support Discord:** [Here](https://discord.gg/R85wjqa4WN) +* **Gale Mod Manager Support Discord:** [Here](https://discord.gg/sfuWXRfeTt) + +### Installing Manually +1. Install [BepInEx](https://thunderstore.io/package/download/BepInEx/BepInExPack_Inscryption/5.4.2305/) by pressing `Manual Download` and extract the contents into a folder. **Do not extract into the game folder!** +2. Move the contents of the `BepInExPack_Inscryption` folder into the game folder (where the game executable is; usually found here: `C:\Program Files (x86)\Steam\steamapps\common\Inscryption`). +3. Run the game. If everything was done correctly, you will see the BepInEx console appear on your desktop. Close the game after it finishes loading. +4. Install [MonoModLoader](https://inscryption.thunderstore.io/package/BepInEx/MonoMod_Loader_Inscryption/) and extract the contents into a folder. +5. Move the contents of the `patchers` folder into `BepInEx/patchers` (If any of the mentioned BepInEx folders don't exist, just create them). +6. Install [Inscryption API](https://inscryption.thunderstore.io/package/API_dev/API/) and extract the contents into a folder. +7. Move the contents of the `plugins` folder into `BepInEx/plugins` and the contents of the `monomod` folder into the `BepInEx/monomod` folder. +8. Run the game again. If everything runs correctly, a message will appear in the console telling you that the API was loaded. +9. For any additional mods create a new subfolder, it can be called anything and extract the zips archive into it and if there is a `BepInEx` folder within the zip instead drop the contents of that folder into the `BepInEx` root for the modding instance. EX; + ``` + BepInEx // These go within the BepInEx root folder + |-- config + |-- patchers + |-- plugins + |-- monomod + |-- core + plugins // Files within go into the created plugin subfolder that was created for the mod + |-- Art + |-- Scripts + |-- MyMod.dll + manifest.json // Ignorable, but if kept, goes in plugin subfolder + README.md // Ignorable, but if kept, goes in plugin subfolder + CHANGELOG.md // Ignorable, but if kept, goes in plugin subfolder + icon.png // Ignorable, but if kept, goes in plugin subfolder + ``` +10. Run the game once more and everything should be correct and working. + +### Installing Manually (XBOX Game-Pass) +1. Install [BepInEx](https://thunderstore.io/package/download/BepInEx/BepInExPack_Inscryption/5.4.2305/) by pressing `Manual Download` and extract the contents into a folder. **Do not extract into the game folder!** +2. Move the contents of the `BepInExPack_Inscryption` folder into the game folder (where the game executable is; usually found here: `C:\XboxGames\Inscryption\Content`). +3. Install the following package: [XboxSilencio](https://thunderstore.io/c/inscryption/p/CORE_API_TEAM/GamepassSilencio/), this is a package which aims to solve frictions with XBOX Gamepass specific installations, such as HueyFS related errors. +4. Run the game. If everything was done correctly, you will see the BepInEx console appear on your desktop. Close the game after it finishes loading. +5. Install [MonoModLoader](https://inscryption.thunderstore.io/package/BepInEx/MonoMod_Loader_Inscryption/) and extract the contents into a folder. +6. Move the contents of the `patchers` folder into `BepInEx/patchers` (If any of the mentioned BepInEx folders don't exist, just create them). +7. Install [Inscryption API](https://inscryption.thunderstore.io/package/API_dev/API/) and extract the contents into a folder. +8. Move the contents of the `plugins` folder into `BepInEx/plugins` and the contents of the `monomod` folder into the `BepInEx/monomod` folder. +9. Run the game again. If everything runs correctly, a message will appear in the console telling you that the API was loaded. +10. For any additional mods create a new subfolder, it can be called anything and extract the zips archive into it and if there is a `BepInEx` folder within the zip instead drop the contents of that folder into the `BepInEx` root for the modding instance. EX; + ``` + BepInEx // These go within the BepInEx root folder + |-- config + |-- patchers + |-- plugins + |-- monomod + |-- core + plugins // Files within go into the created plugin subfolder that was created for the mod + |-- Art + |-- Scripts + |-- MyMod.dll + manifest.json // Ignorable, but if kept, goes in plugin subfolder + README.md // Ignorable, but if kept, goes in plugin subfolder + CHANGELOG.md // Ignorable, but if kept, goes in plugin subfolder + icon.png // Ignorable, but if kept, goes in plugin subfolder + ``` +11. Run the game once more and everything should be correct and working. + +### Installing on the Steam Deck +1. Download [r2modman](https://thunderstore.io/c/inscryption/p/ebkr/r2modman/) on the Steam Deck's Desktop Mode and open it from its download using its `AppImage` file. +2. Download the mods you plan on using and their dependencies. +3. Go to the setting of the profile you are using for the mods and click `Browse Profile Folder`. +4. Copy the BepInEx folder, then go to Steam and open Inscryption's Properties menu +5. Go to `Installed Files` click `Browse` to open the folder containing Inscryption's local files; paste the BepInEx folder there. +6. Enter Gaming Mode and check 'Force the use of a specific Steam Play compatibility tool' in the Properties menu under `Compatibility`. +7. Go to the launch parameters and enter `WINEDLLOVERRIDES="winhttp.dll=n,b" %command%`. +8. Open Inscryption. If everything was done correctly, you should see a console appear on your screen. + +### Mac & Linux +1. Follow the steps here first: +2. Next do steps 4-10 of the Manual Installation +3. Your game should be setup for inscryption modding now + +If you have any issues with Mac/Linux, Steam Deck, or Manual head over to the discord for this game: + +* **Inscryption Modding Discord:** [Here](https://discord.gg/ZQPvfKEpwM) + +## Getting Started: Modding --- -Welcome to the site of the Inscryption Modding API! -You can find the wiki and API documentation here. +Modding Inscryption requires a knowledge of coding in C#, and in many cases an understanding of how to patch the game using HarmonyPatch. + +If you're unfamiliar with any of this, or just want to create cards and sigils, you can use [JSONLoader](https://inscryption.thunderstore.io/package/MADH95Mods/JSONCardLoader/). + +### Modding with JSONLoader +JSONLoader is a versatile mod that provides a more beginner-friendly way of creating new cards and abilities for Inscryption using JSON syntax, which is much simpler than C#. + +JSONLoader's documentation can be found [here](https://github.com/MADH95/JSONLoader). + +A video tutorial covering how to use JSONLoader in a basic form can be found [here](https://www.youtube.com/watch?v=grTSkpI4U7g). + +### Modding with C# +To begin modding with C#, you will need to create a new C# project using a code editor. +We recommend and assume you're using Microsoft's Visual Studio. + +Your project's target framework needs to be `netstandard2.0`. + +Once your project's created, go to `Project > Manage NuGet Packages`. +Click the dropdown menu for 'Package source' and check that 'BepInEx' and 'nuget' is there. + +If BepInEx or nuget aren't an available source, we need to add them. +To add a new package source, click on the gear icon next to the package source selector, then click the large green plus-sign. + +To add BepInEx, change the name to 'BepInEx' and the source link to 'https://nuget.bepinex.dev/v3/index.json'. +To add nuget, change the name to 'nuget' and the source link to 'https://nuget.windows10ce.com/nuget/v3/index.json'. -## Some Links +Change the package source to 'All' then click 'Browse'. +We want to install the following packages (**Make sure the version numbers match!**): +- BepInEx.Analyzers v1.0.8 +- BepInEx.Core v5.4.19 +- HarmonyX v2.9.0 +- Inscryption.GameLibs v1.9.0-r.0 +- UnityEngine.Modules v2019.4.24 + +You will also need to add the API as a reference. +There are a couple ways to do this, detailed below; whichever way you choose to do this, you'll also need to need to reference `InscryptionAPI.dll`, which should be in your BepInEx plugins folder; copy this path for future use. + +To do so, go to your 'BepInEx/plugins' folder and copy the folder path. +Then, navigate to `Project > Add Project Reference` and click 'Browse'. +Copy the folder path and add 'InscryptionAPI.dll' as a reference. +You can do this for other mods' .dll files if you want to reference them as a mod dependency (a separate mod that your mod relies on to work). + +An alternative method to adding the API (and other mods) as a reference is to use NuGet packages by adding 'https://nuget.bepinex.dev/v3/index.json' as a package source, and then adding 'API_dev-API' as a reference. + +With all this, you are now ready to begin creating your mod! +Some resources are provided below for you to use, including an example mod to look at for examples. +Otherwise, continue reading this wiki. + +### Modding Resources [Inscryption Modding Discord](https://discord.gg/QrJEF5Denm) -[Thunderstore Page](https://inscryption.thunderstore.io/package/API_dev/API/) +[BepInEx documentation](https://docs.bepinex.dev/) + +[Harmony patching article](https://harmony.pardeike.net/articles/patching.html) + +[Example Mod using C#](https://github.com/debugman18/InscryptionExampleMod) + +[Vanilla and Modded Enumerations](https://github.com/SaxbyMod/SabyModEnums) + +An example mod utilising this plugin can be found [here](https://github.com/debugman18/InscryptionExampleMod), +and the modding wiki and documentation can be found [here](https://inscryptionmodding.github.io/InscryptionAPI/wiki/index.html). + +___ + +## Modded Save File +With this API installed, an additional 'modded save file' will be created by the game. This file will be found in the 'BepInEx' subdirectory, and contains all save data created by mods that use this API. This file will not automatically be synced to the cloud by Steam. + +___ + +## Community Patches +The following patches from the Inscryption modding community have been included in this package to improve the overall quality-of-life for modding and compatibility. + +### SigilArtPatch by MADH95Mods +Fixes the art for abilities that previously only appeared in Act 2 so they appear correctly in Act 1 and Act 3 + +### Conduit Attack Fix by MADH95Mods +Fixes the behavior of conduits so they function correctly in Act 1. + +### Activated Sigil Fix by MADH95Mods +Allows activated sigils to work correctly in Act 1 and Act 3 by clicking the sigil icon on the card. + +### AnthonysLatchFix by AnthonyPython +Fixes latch sigils to work in Act 1 + +### Sigil Art Fix by Memez4Life +Allows up to 8 sigils to be displayed on cards and adds the option to display merged sigil stamps at the bottom of the card instead of over the artwork (see the config files for more information). + +### Visually Stackable Sigils by divisionbyz0rro +Combines multiple instances of the same sigil on a single card into a single sigil with a number to free up space on the card. + +### Cost Render Fix by Void Slime +Displays hybrid cost cards correctly and makes energy and mox show up on act 1 cards + +### Cost Choice Node fix by Void Slime +If energy/mox cards are in the Act 1 pool, energy and mox card choice nodes will be added to the cost choice node in Act 1. + +### Sniper Sigil Fix by SpecialAPI +Displays targets for attacks made with the sniper sigil in Act 1. + +### Act 1 Sentry Fixes by WhistleWind +Fixes a number of bugs caused by the Sentry ability being used in Act 1. + +### Multi-Act Sigil Compatibility Fixes by WhistleWind +Fixes a number of sigils to be usable in all Acts. Sigils include: Mental Gemnastics, Tidal Lock, Hoarder, Vessel Printer, Amorphous, Handy. + +### Fledgling Sigil Fixes by WhistleWind +Fixes Fledgling in Act 2 to show the correct number of turns until a card evolves, up to 3. Also changes its description to show the correct number of turns. + +### OverridePixelAbilityIcons by WhistleWind +Fixes the OverrideAbilityIcon method to work in Act 2. + +### Temporary Mod Fixes by WhistleWind +- Fixes issues related to using temporary mods in Act 2 or to add custom decals + +___ + +## Contribution + +### How can you help? +Use the plugin and report bugs you find! Ping us on the [Inscryption Modding Discord](https://discord.gg/QrJEF5Denm) server in the api channel with what you find. + +### But really, I want to help develop this mod! +Great! We're more than happy to accept help. Either make a pull request to the API's [GitHub page](https://github.com/InscryptionModding/InscryptionAPI) or come join us over in the [Inscryption Modding Discord](https://discord.gg/QrJEF5Denm). + +### Can I donate? +Donations are totally not needed, this is a passion project before anything else. -[GitHub Repository](https://github.com/InscryptionModding/InscryptionAPI) +___ -## Credits -Original version by cyantist. +## Contributors +Original version by cyantist -API 2.0 Contributors: +Contributors and builders of API 2.0: - BobbyShmurner - divisionbyz0rro - Eri @@ -25,4 +281,8 @@ API 2.0 Contributors: - SpecialAPI - Void Slime - WhistleWind -- Windows10CE \ No newline at end of file +- Windows10CE +- Keks307 +- Creator/Chaosyr/SaxbyMod/The Stoat Lord/ThinCreator3483 +- stillrinny +- R3b00t3d-kawaii \ No newline at end of file diff --git a/docs/template/api_wiki/partials/class.header.tmpl.partial b/docs/template/api_wiki/partials/class.header.tmpl.partial new file mode 100644 index 00000000..be8f4aed --- /dev/null +++ b/docs/template/api_wiki/partials/class.header.tmpl.partial @@ -0,0 +1,232 @@ +{{!Licensed to the .NET Foundation under one or more agreements. The .NET Foundation licenses this file to you under the MIT license.}} + +

+ {{>partials/title}} + {{#sourceurl}}{{/sourceurl}} +

+ +
+
{{__global.namespace}}
{{{namespace.specName.0.value}}}
+ {{#assemblies.0}}
{{__global.assembly}}
{{assemblies.0}}.dll
{{/assemblies.0}} +
+ +
{{{summary}}}
+
{{{conceptual}}}
+ +{{#inClass}} +
+
{{__global.inheritance}}
+ +
+ {{#inheritance}} +
+ {{{specName.0.value}}} +
+ {{/inheritance}} + +
+ {{name.0.value}} +
+ + {{#derivedClasses}} +
+ {{{specName.0.value}}} +
+ {{/derivedClasses}} +
+
+{{/inClass}} + +{{#implements.0}} +
+
{{__global.implements}}
+{{/implements.0}} + +{{#implements}} +
+ {{{specName.0.value}}} +
+{{/implements}} + +{{#implements.0}} +
+{{/implements.0}} + +{{#syntax.content.0.value}} +
+ {{__global.syntax}} +
+ +
+
{{syntax.content.0.value}}
+
+{{/syntax.content.0.value}} + +{{#syntax.parameters.0}} +
+ {{__global.parameters}} +
+ + + + + + + + + + +{{/syntax.parameters.0}} + +{{#syntax.parameters}} + + + + +{{/syntax.parameters}} + +{{#syntax.parameters.0}} + +
{{__global.name}}{{__global.description}}
+
+ {{{type.specName.0.value}}} +
+
+ {{{id}}} +
+
{{{description}}}
+{{/syntax.parameters.0}} + +{{#syntax.return}} +
+ {{__global.returns}} +
+ + + + + + + + + + + + + + + +
{{__global.type}}{{__global.description}}
{{{type.specName.0.value}}}{{{description}}}
+{{/syntax.return}} + +{{#syntax.typeParameters.0}} +
+ {{__global.typeParameters}} +
+ + + + + + + + + + +{{/syntax.typeParameters.0}} + +{{#syntax.typeParameters}} + + + + +{{/syntax.typeParameters}} + +{{#syntax.typeParameters.0}} + +
{{__global.name}}{{__global.description}}
+ {{{id}}} + {{{description}}}
+{{/syntax.typeParameters.0}} + +{{#inheritedMembers.0}} +
+
{{__global.inheritedMembers}}
+
+{{/inheritedMembers.0}} +{{#inheritedMembers}} +
+ {{#definition}} + + {{/definition}} + {{^definition}} + + {{/definition}} +
+{{/inheritedMembers}} +{{#inheritedMembers.0}} +
+
+{{/inheritedMembers.0}} + +{{#extensionMethods.0}} +
+
{{__global.extensionMethods}}
+
+{{/extensionMethods.0}} +{{#extensionMethods}} +
+ {{#definition}} + + {{/definition}} + {{^definition}} + + {{/definition}} +
+{{/extensionMethods}} +{{#extensionMethods.0}} +
+
+{{/extensionMethods.0}} + +{{#isEnum}} +{{#children}} +

{{>partials/classSubtitle}}

+ + + + + + + + + + + {{#children}} + + + + + {{/children}} + +
{{__global.name}}{{__global.description}}
+ {{syntax.content.0.value}} + + {{{summary}}} + {{#remarks}}{{{remarks}}}{{/remarks}} +
+ +{{/children}} +{{/isEnum}} + +{{#example.0}} +

{{__global.examples}}

+{{/example.0}} +{{#example}} +{{{.}}} +{{/example}} + +{{#remarks}} +

{{__global.remarks}}

+
{{{remarks}}}
+{{/remarks}} \ No newline at end of file diff --git a/docs/template/api_wiki/partials/class.tmpl.partial b/docs/template/api_wiki/partials/class.tmpl.partial new file mode 100644 index 00000000..723686d8 --- /dev/null +++ b/docs/template/api_wiki/partials/class.tmpl.partial @@ -0,0 +1,246 @@ +{{!Licensed to the .NET Foundation under one or more agreements by the .NET Foundation. The .NET Foundation licenses this file to you under the MIT license.}} + +{{>partials/class.header}} + +{{#children}} + +{{^_splitReference}} +

{{>partials/classSubtitle}}

+{{/_splitReference}} + +{{#children}} + +{{#overload}} + +{{/overload}} + +

+ {{name.0.value}} + {{#sourceurl}}{{/sourceurl}} +

+ +
{{{summary}}}
+
{{{conceptual}}}
+ +{{#syntax}} +
+
{{syntax.content.0.value}}
+
+ +{{#syntax.parameters.0}} +

{{__global.parameters}}

+ + + + + + + + + + +{{/syntax.parameters.0}} + +{{#syntax.parameters}} + + + + +{{/syntax.parameters}} + +{{#syntax.parameters.0}} + +
{{__global.name}}{{__global.description}}
+
+ {{{type.specName.0.value}}} +
+
+ {{{id}}} +
+
{{{description}}}
+{{/syntax.parameters.0}} + +{{#syntax.return}} +

{{__global.returns}}

+ + + + + + + + + + + + + + + +
{{__global.type}}{{__global.description}}
{{{type.specName.0.value}}}{{{description}}}
+{{/syntax.return}} + +{{#syntax.typeParameters.0}} +

{{__global.typeParameters}}

+ + + + + + + + + + +{{/syntax.typeParameters.0}} + +{{#syntax.typeParameters}} + + + + +{{/syntax.typeParameters}} + +{{#syntax.typeParameters.0}} + +
{{__global.name}}{{__global.description}}
+ {{{id}}} + {{{description}}}
+{{/syntax.typeParameters.0}} + +{{#fieldValue}} +

{{__global.fieldValue}}

+ + + + + + + + + + + + + + + +
{{__global.type}}{{__global.description}}
{{{type.specName.0.value}}}{{{description}}}
+{{/fieldValue}} + +{{#propertyValue}} +

{{__global.returns}}

+ + + + + + + + + + + + + + + +
{{__global.type}}{{__global.description}}
{{{type.specName.0.value}}}{{{description}}}
+{{/propertyValue}} + +{{#eventType}} +

{{__global.eventType}}

+ + + + + + + + + + + + + + + +
{{__global.type}}{{__global.description}}
{{{type.specName.0.value}}}{{{description}}}
+{{/eventType}} + +{{/syntax}} + +{{#example.0}} +

{{__global.examples}}

+{{/example.0}} +{{#example}} +{{{.}}} +{{/example}} + +{{#remarks}} +

{{__global.remarks}}

+
{{{remarks}}}
+{{/remarks}} + +{{#exceptions.0}} +

{{__global.exceptions}}

+ + + + + + + + + + +{{/exceptions.0}} + +{{#exceptions}} + + + + +{{/exceptions}} + +{{#exceptions.0}} + +
{{__global.type}}{{__global.description}}
{{{type.specName.0.value}}}{{{description}}}
+{{/exceptions.0}} + +{{#seealso.0}} +
+
{{__global.seealso}}
+
+{{/seealso.0}} +{{#seealso}} + {{#isCref}} +
{{{type.specName.0.value}}}
+ {{/isCref}} + {{^isCref}} +
{{{url}}}
+ {{/isCref}} +{{/seealso}} +{{#seealso.0}} +
+
+{{/seealso.0}} + +{{/children}} +{{/children}} + +{{#seealso.0}} +

{{__global.seealso}}

+
+{{/seealso.0}} +{{#seealso}} + {{#isCref}} +
{{{type.specName.0.value}}}
+ {{/isCref}} + {{^isCref}} +
{{{url}}}
+ {{/isCref}} +{{/seealso}} +{{#seealso.0}} +
+{{/seealso.0}} \ No newline at end of file diff --git a/docs/template/api_wiki/public/fonts/dpcomic.ttf b/docs/template/api_wiki/public/fonts/dpcomic.ttf new file mode 100644 index 00000000..3707903d Binary files /dev/null and b/docs/template/api_wiki/public/fonts/dpcomic.ttf differ diff --git a/docs/template/api_wiki/public/main.css b/docs/template/api_wiki/public/main.css new file mode 100644 index 00000000..b31e1abb --- /dev/null +++ b/docs/template/api_wiki/public/main.css @@ -0,0 +1,137 @@ +@font-face { + font-family: 'DPComic'; + src: url('fonts/dpcomic.ttf') format('truetype'); + font-weight: normal; + font-style: normal; +} + +:root { + --bs-font-sans-serif: 'DPComic', system-ui, -apple-system, sans-serif; + --bs-body-font-family: var(--bs-font-sans-serif); + --bs-font-monospace: 'DPComic', system-ui, -apple-system, sans-serif; + --page-gutter: clamp(1rem, 4vw, 5rem); +} + +* { + border-width: 4px !important; +} + +b, strong { + font-weight: normal; +} + +code { + font-size: 18px !important; +} + +:not(pre) > code { + background-color: var(--bs-tertiary-bg, #e9ecef); + padding: 0.15em 0.35em; + border-radius: 4px; +} + +.container, .container-fluid, .container-xxl { + width: 100%; + max-width: 100%; + padding-right: var(--page-gutter); + padding-left: var(--page-gutter); + margin-right: auto; + margin-left: auto; +} + +.container { + max-width: 100%; +} + +body > header, body[data-layout="landing"] > header { + min-height: 90px; +} + +body > footer, body[data-layout="landing"] > footer { + min-height: 90px; + display: flex; + align-items: stretch; +} + +.navbar { + --bs-navbar-brand-margin-end: 2.5rem; + --bs-navbar-brand-font-size: 1.5rem; +} + +#logo { + padding-right: 1.5rem; +} + +.content { + font-size: 20px !important; +} + +.toc ul { + font-size: 20px !important; +} + +.affix { + font-size: 20px; +} + +body[data-yaml-mime="ManagedReference"] article h2.section, +body[data-yaml-mime="ApiPage"] article h2.section { + margin-top: 1rem; +} + +.inheritance { + margin-bottom: 1rem; +} + +.inheritance h5 { + margin-bottom: 0.35rem; +} + +.inheritance-tree { + border-top: 1px solid currentColor; + padding-top: 0.35rem; +} + +.inheritance-level { + line-height: 1.4; + padding-left: calc(var(--inheritance-level, 0) * 1.25rem); +} + +.inheritance-level::before { + content: "↳ "; + opacity: 0.75; +} + +.api-parameters, .api-returns, .api-type-parameters, .api-exceptions, .api-fields { + width: 100%; + border-collapse: collapse; + margin-bottom: 1rem; +} + +.api-parameters th, .api-returns th, .api-type-parameters th, .api-exceptions th, .api-fields th, +.api-parameters td, .api-returns td, .api-type-parameters td, .api-exceptions td, .api-fields td { + padding: 0.5rem 0.75rem; + border: 1px solid var(--bs-border-color, #444); + text-align: left; +} + +html.api-documentation h1, +html.api-documentation .h1, +html.community-documentation h1, +html.community-documentation .h1 { + border-bottom: 1px solid currentColor; + padding-bottom: 0.35rem; +} + +html.api-documentation h3, +html.api-documentation .h3, +html.community-documentation h3, +html.community-documentation .h3 { + border-bottom: 1px solid currentColor; + padding-bottom: 0.35rem; +} + +a.active { + font-style: italic; + text-decoration: underline; +} \ No newline at end of file diff --git a/docs/template/api_wiki/public/main.js b/docs/template/api_wiki/public/main.js new file mode 100644 index 00000000..688fe3ef --- /dev/null +++ b/docs/template/api_wiki/public/main.js @@ -0,0 +1,17 @@ +export default { + defaultTheme: 'dark' +} + +const docUrl = document.querySelector('meta[name="docfx:docurl"]')?.content || ''; + +if (docUrl.includes('/docs/api/')) { + document.documentElement.classList.add('api-documentation'); +} + +if (docUrl.includes('/docs/community/')) { + document.documentElement.classList.add('community-documentation'); +} + +if (docUrl.includes('/docs/wiki/')) { + document.documentElement.classList.add('wiki-documentation'); +} \ No newline at end of file diff --git a/docs/template/darkfx/partials/affix.tmpl.partial b/docs/template/darkfx/partials/affix.tmpl.partial deleted file mode 100644 index 11caeb3d..00000000 --- a/docs/template/darkfx/partials/affix.tmpl.partial +++ /dev/null @@ -1,40 +0,0 @@ -{{!Copyright (c) Microsoft. All rights reserved. Licensed under the MIT license. See LICENSE file in the project root for full license information.}} - - diff --git a/docs/template/darkfx/partials/footer.tmpl.partial b/docs/template/darkfx/partials/footer.tmpl.partial deleted file mode 100644 index a9da7c3b..00000000 --- a/docs/template/darkfx/partials/footer.tmpl.partial +++ /dev/null @@ -1,29 +0,0 @@ -{{!Copyright (c) Microsoft. All rights reserved. Licensed under the MIT license. See LICENSE file in the project root for full license information.}} - - \ No newline at end of file diff --git a/docs/template/darkfx/partials/head.tmpl.partial b/docs/template/darkfx/partials/head.tmpl.partial deleted file mode 100644 index 83fc5f91..00000000 --- a/docs/template/darkfx/partials/head.tmpl.partial +++ /dev/null @@ -1,20 +0,0 @@ -{{!Copyright (c) Oscar Vasquez. All rights reserved. Licensed under the MIT license. See LICENSE file in the project root for full license information.}} - - - - - {{#title}}{{title}}{{/title}}{{^title}}{{>partials/title}}{{/title}} {{#_appTitle}}| {{_appTitle}} {{/_appTitle}} - - - - {{#_description}}{{/_description}} - - - - - - - {{#_noindex}}{{/_noindex}} - {{#_enableSearch}}{{/_enableSearch}} - {{#_enableNewTab}}{{/_enableNewTab}} - \ No newline at end of file diff --git a/docs/template/darkfx/styles/main.css b/docs/template/darkfx/styles/main.css deleted file mode 100644 index 078adc77..00000000 --- a/docs/template/darkfx/styles/main.css +++ /dev/null @@ -1,470 +0,0 @@ -:root, body.dark-theme { - --color-foreground: #ccd5dc; - --color-navbar: #66666d; - --color-breadcrumb: #999; - --color-underline: #ddd; - --color-toc-hover: #fff; - --color-background: #2d2d30; - --color-background-subnav: #333337; - --color-background-dark: #1e1e1e; - --color-background-table-alt: #212123; - --color-background-quote: #69696e; -} - -body.light-theme { - --color-foreground: #171717; - --color-breadcrumb: #4a4a4a; - --color-toc-hover: #4c4c4c; - --color-background: #ffffff; - --color-background-subnav: #f5f5f5; - --color-background-dark: #ddd; - --color-background-table-alt: #f9f9f9; -} - -body { - color: var(--color-foreground); - line-height: 1.5; - font-size: 14px; - -ms-text-size-adjust: 100%; - -webkit-text-size-adjust: 100%; - word-wrap: break-word; - background-color: var(--color-background); -} - -.btn.focus, .btn:focus, .btn:hover { - color: var(--color-foreground); -} - -h1 { - font-weight: 600; - font-size: 32px; -} - -h2 { - font-weight: 600; - font-size: 24px; - line-height: 1.8; -} - -h3 { - font-weight: 600; - font-size: 20px; - line-height: 1.8; -} - -h5 { - font-size: 14px; - padding: 10px 0px; -} - -article h1, article h2, article h3, article h4 { - margin-top: 35px; - margin-bottom: 15px; -} - -article h4 { - padding-bottom: 8px; - border-bottom: 2px solid var(--color-underline); -} - -.navbar-brand>img { - color: var(--color-background); -} - -.navbar { - border: none; -} - -.subnav { - border-top: 1px solid var(--color-underline); - background-color: var(--color-background-subnav); -} - -.sidenav, .fixed_header, .toc { - background-color: var(--color-background); -} - -.navbar-inverse { - background-color: var(--color-background-dark); - z-index: 100; -} - -.navbar-inverse .navbar-nav>li>a, .navbar-inverse .navbar-text { - color: var(--color-navbar); - background-color: var(--color-background-dark); - border-bottom: 3px solid transparent; - padding-bottom: 12px; -} - -.navbar-inverse .navbar-nav>li>a:focus, .navbar-inverse .navbar-nav>li>a:hover { - color: var(--color-foreground); - background-color: var(--color-background-dark); - border-bottom: 3px solid var(--color-background-subnav); - transition: all ease 0.25s; -} - -.navbar-inverse .navbar-nav>.active>a, .navbar-inverse .navbar-nav>.active>a:focus, .navbar-inverse .navbar-nav>.active>a:hover { - color: var(--color-foreground); - background-color: var(--color-background-dark); - border-bottom: 3px solid var(--color-foreground); - transition: all ease 0.25s; -} - -.navbar-form .form-control { - border: none; - border-radius: 0; -} - -.light-theme .navbar-brand svg { - filter: brightness(20%); -} - -.toc .level1>li { - font-weight: 400; -} - -.toc .nav>li>a { - color: var(--color-foreground); -} - -.sidefilter { - background-color: var(--color-background); - border-left: none; - border-right: none; -} - -.sidefilter { - background-color: var(--color-background); - border-left: none; - border-right: none; -} - -.toc-filter { - padding: 10px; - margin: 0; - background-color: var(--color-background); -} - -.toc-filter>input { - border: none; - border-radius: unset; - background-color: var(--color-background-subnav); - padding: 5px 0 5px 20px; - font-size: 90% -} - -.toc-filter>.clear-icon { - position: absolute; - top: 17px; - right: 15px; -} - -.toc-filter>input:focus { - color: var(--color-foreground); - transition: all ease 0.25s; -} - -.toc-filter>.filter-icon { - display: none; -} - -.sidetoc>.toc { - background-color: var(--color-background); - overflow-x: hidden; -} - -.sidetoc { - background-color: var(--color-background); - border: none; -} - -.alert { - background-color: inherit; - border: none; - padding: 10px 0; - border-radius: 0; -} - -.alert>p { - margin-bottom: 0; - padding: 5px 10px; - border-bottom: 1px solid; - background-color: var(--color-background-dark); -} - -.alert>h5 { - padding: 10px 15px; - margin-top: 0; - margin-bottom: 0; - text-transform: uppercase; - font-weight: bold; - border-top: 2px solid; - background-color: var(--color-background-dark); - border-radius: none; -} - -.alert>ul { - margin-bottom: 0; - padding: 5px 40px; -} - -.alert-info { - color: #1976d2; -} - -.alert-warning { - color: #f57f17; -} - -.alert-danger { - color: #d32f2f; -} - -pre { - padding: 9.5px; - margin: 0 0 10px; - font-size: 13px; - word-break: break-all; - word-wrap: break-word; - background-color: var(--color-background-dark); - border-radius: 0; - border: none; -} - -code { - background: var(--color-background-dark) !important; - border-radius: 2px; -} - -.hljs { - color: var(--color-foreground); -} - -.toc .nav>li.active>.expand-stub::before, .toc .nav>li.in>.expand-stub::before, .toc .nav>li.in.active>.expand-stub::before, .toc .nav>li.filtered>.expand-stub::before { - content: "▾"; -} - -.toc .nav>li>.expand-stub::before, .toc .nav>li.active>.expand-stub::before { - content: "▸"; -} - -.affix ul ul>li>a:before { - content: "|"; -} - -.breadcrumb { - background-color: var(--color-background-subnav); -} - -.breadcrumb .label.label-primary { - background: #444; - border-radius: 0; - font-weight: normal; - font-size: 100%; -} - -#breadcrumb .breadcrumb>li a { - border-radius: 0; - font-weight: normal; - font-size: 85%; - display: inline; - padding: 0 .6em 0; - line-height: 1; - text-align: center; - white-space: nowrap; - vertical-align: baseline; - color: var(--color-breadcrumb); -} - -#breadcrumb .breadcrumb>li a:hover { - color: var(--color-foreground); - transition: all ease 0.25s; -} - -.breadcrumb>li+li:before { - content: "⯈"; - font-size: 75%; - color: var(--color-background-dark); - padding: 0; -} - -.light-theme .breadcrumb>li+li:before { - color: var(--color-foreground) - } - -.toc .level1>li { - font-weight: 600; - font-size: 130%; - padding-left: 5px; -} - -.footer { - border-top: none; - background-color: var(--color-background-dark); - padding: 15px 0; - font-size: 90%; -} - -.toc .nav>li>a:hover, .toc .nav>li>a:focus { - color: var(--color-toc-hover); - transition: all ease 0.1s; -} - -.form-control { - background-color: var(--color-background-subnav); - border: none; - border-radius: 0; - -webkit-box-shadow: none; - box-shadow: none; -} - -.form-control:focus { - border-color: #66afe9; - outline: 0; - -webkit-box-shadow: none; - box-shadow: none; -} - -input#search-query:focus { - color: var(--color-foreground); -} - -.table-bordered, .table-bordered>tbody>tr>td, .table-bordered>tbody>tr>th, .table-bordered>tfoot>tr>td, .table-bordered>tfoot>tr>th, .table-bordered>thead>tr>td, .table-bordered>thead>tr>th { - border: 1px solid var(--color-background-dark); -} - -.table-striped>tbody>tr:nth-of-type(odd) { - background-color: var(--color-background-table-alt); -} - -blockquote { - padding: 10px 20px; - margin: 0 0 10px; - font-size: 110%; - border-left: 5px solid var(--color-background-quote); - color: var(--color-background-quote); -} - -.pagination>.disabled>a, .pagination>.disabled>a:focus, .pagination>.disabled>a:hover, .pagination>.disabled>span, .pagination>.disabled>span:focus, .pagination>.disabled>span:hover { - background-color: var(--color-background-subnav); - border-color: var(--color-background-subnav); -} - -.breadcrumb>li, .pagination { - display: inline; -} - -.tabGroup a[role="tab"] { - border-bottom: 2px solid var(--color-background-dark); -} - -.tabGroup a[role="tab"][aria-selected="true"] { - color: var(--color-foreground); -} - -.tabGroup section[role="tabpanel"] { - border: 1px solid var(--color-background-dark); -} - -.sideaffix > div.contribution > ul > li > a.contribution-link:hover { - background-color: var(--color-background); -} - -.switch { - position: relative; - display: inline-block; - width: 40px; - height: 20px; -} - -.switch input { - opacity: 0; - width: 0; - height: 0; -} - -.slider { - position: absolute; - cursor: pointer; - top: 0; - left: 0; - right: 0; - bottom: 0; - background-color: #ccc; - -webkit-transition: .4s; - transition: .4s; -} - -.slider:before { - position: absolute; - content: ""; - height: 14px; - width: 14px; - left: 4px; - bottom: 3px; - background-color: white; - -webkit-transition: .4s; - transition: .4s; -} - -input:checked + .slider { - background-color: #337ab7; -} - -input:focus + .slider { - box-shadow: 0 0 1px #337ab7; -} - -input:checked + .slider:before { - -webkit-transform: translateX(19px); - -ms-transform: translateX(19px); - transform: translateX(19px); -} - -/* Rounded sliders */ -.slider.round { - border-radius: 20px; -} - -.slider.round:before { - border-radius: 50%; -} -.toggle-mode .icon { - display: inline-block; -} - -.toggle-mode .icon i { - font-style: normal; - font-size: 17px; - display: inline-block; - padding-right: 7px; - padding-left: 7px; - vertical-align: middle; -} - -@media (min-width: 1600px) { - .container { - width: 100%; - } - .sidefilter { - width: 18%; - } - .sidetoc { - width: 18%; - } - .article.grid-right { - margin-left: 19%; - } - .sideaffix { - width: 11.5%; - } - .affix ul>li.active>a { - white-space: initial; - } - .affix ul>li>a { - width: 99%; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - } -} \ No newline at end of file diff --git a/docs/template/darkfx/styles/toggle-theme.js b/docs/template/darkfx/styles/toggle-theme.js deleted file mode 100644 index f2ea5f5f..00000000 --- a/docs/template/darkfx/styles/toggle-theme.js +++ /dev/null @@ -1,35 +0,0 @@ -const sw = document.getElementById("switch-style"), sw_mobile = document.getElementById("switch-style-m"), b = document.body; -if (b) { - function toggleTheme(target, dark) { - target.classList.toggle("dark-theme", dark) - target.classList.toggle("light-theme", !dark) - } - - function switchEventListener() { - toggleTheme(b, this.checked); - if (window.localStorage) { - this.checked ? localStorage.setItem("theme", "dark-theme") : localStorage.setItem("theme", "light-theme") - } - } - - var isDarkTheme = !window.localStorage || !window.localStorage.getItem("theme") || window.localStorage && localStorage.getItem("theme") === "dark-theme"; - - if(sw && sw_mobile){ - sw.checked = isDarkTheme; - sw_mobile.checked = isDarkTheme; - - sw.addEventListener("change", switchEventListener); - sw_mobile.addEventListener("change", switchEventListener); - - // sync state between switches - sw.addEventListener("change", function() { - sw_mobile.checked = this.checked; - }); - - sw_mobile.addEventListener("change", function() { - sw.checked = this.checked; - }); - } - - toggleTheme(b, isDarkTheme); -} \ No newline at end of file diff --git a/docs/template/no_inherited_members/partials/class.header.tmpl.partial b/docs/template/no_inherited_members/partials/class.header.tmpl.partial deleted file mode 100644 index 3ca2c8b3..00000000 --- a/docs/template/no_inherited_members/partials/class.header.tmpl.partial +++ /dev/null @@ -1,104 +0,0 @@ -{{!Copyright (c) Microsoft. All rights reserved. Licensed under the MIT license. See LICENSE file in the project root for full license information.}} - -

{{>partials/title}}

-
{{{summary}}}
-
{{{conceptual}}}
-{{#inClass}} -
-
{{__global.inheritance}}
- {{#inheritance}} -
{{{specName.0.value}}}
- {{/inheritance}} -
{{name.0.value}}
- {{#derivedClasses}} -
{{{specName.0.value}}}
- {{/derivedClasses}} -
-{{/inClass}} -{{#implements.0}} -
-
{{__global.implements}}
-{{/implements.0}} -{{#implements}} -
{{{specName.0.value}}}
-{{/implements}} -{{#implements.0}} -
-{{/implements.0}} -
{{__global.namespace}}: {{{namespace.specName.0.value}}}
-
{{__global.assembly}}: {{assemblies.0}}.dll
-
{{__global.syntax}}
-
-
{{syntax.content.0.value}}
-
-{{#syntax.parameters.0}} -
{{__global.parameters}}
- - - - - - - - - -{{/syntax.parameters.0}} -{{#syntax.parameters}} - - - - - -{{/syntax.parameters}} -{{#syntax.parameters.0}} - -
{{__global.type}}{{__global.name}}{{__global.description}}
{{{type.specName.0.value}}}{{{id}}}{{{description}}}
-{{/syntax.parameters.0}} -{{#syntax.return}} -
{{__global.returns}}
- - - - - - - - - - - - - -
{{__global.type}}{{__global.description}}
{{{type.specName.0.value}}}{{{description}}}
-{{/syntax.return}} -{{#syntax.typeParameters.0}} -
{{__global.typeParameters}}
- - - - - - - - -{{/syntax.typeParameters.0}} -{{#syntax.typeParameters}} - - - - -{{/syntax.typeParameters}} -{{#syntax.typeParameters.0}} - -
{{__global.name}}{{__global.description}}
{{{id}}}{{{description}}}
-{{/syntax.typeParameters.0}} -{{#remarks}} -
{{__global.remarks}}
-
{{{remarks}}}
-{{/remarks}} -{{#example.0}} -
{{__global.examples}}
-{{/example.0}} -{{#example}} -{{{.}}} -{{/example}} diff --git a/docs/toc.yml b/docs/toc.yml index baaba530..4d8c91dc 100644 --- a/docs/toc.yml +++ b/docs/toc.yml @@ -1,8 +1,11 @@ - name: Home href: index.md -- name: Wiki +- name: Modding Wiki href: wiki/ homepage: wiki/index.md -- name: API Documentation +- name: Inscryption API Documentation href: api/ - homepage: api/index.md \ No newline at end of file + homepage: api/index.md +- name: Inscryption Community Patch Documentation + href: community/ + homepage: community/index.md \ No newline at end of file