Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement Plugin Lists #137

Open
18 tasks
Spartan322 opened this issue Oct 30, 2021 · 10 comments
Open
18 tasks

Implement Plugin Lists #137

Spartan322 opened this issue Oct 30, 2021 · 10 comments
Labels
Enhancement WIP Work In Progress

Comments

@Spartan322
Copy link
Collaborator

Spartan322 commented Oct 30, 2021

A plugin list should be accessible both from the main menu and while in game, it should include:

  • Name
  • Guid
  • Version
  • Load Order
    • Can change load order
      • Prompt for restart on load order change
      • Validate load order change

We could also implement a manner to include:

  • Displaying config path
    • Can open config file
  • Description
    • Can open links
  • Soft Dependencies
  • Hard Dependencies
  • Incompatibles
  • Whether it has an updater, in which case a separate check for updates and update button (for now will only apply to BepInEx.Hacknet, PathfinderAPI, and PathfinderUpdater)
  • Author(s) of the plugin (or Team responsible for the plugin)
  • Website(s) related to the plugin
    • Can open website

Any other suggestions for what the plugin should contain should be commented below.

@luky92
Copy link
Contributor

luky92 commented Oct 31, 2021

Ability to disable autoupdate just in case

@luky92
Copy link
Contributor

luky92 commented Oct 31, 2021

What functions does the plug-in hook to

@Spartan322
Copy link
Collaborator Author

Ability to disable autoupdate just in case

There will be no autoupdate with this feature, at most it will auto-check for updates on start, but will not update automatically, you must press the update button to do so. Even then it will require the PathfinderUpdater plugin.

What functions does the plug-in hook to

I am not sure what you mean. Do you mean to ask how a plugin could use the update and check for update feature? For a while into the future it will only apply to Pathfinder functionality run in this repo, BepInEx.Hacknet,PathfinderAPI, and PathfinderUpdater will be the only plugins that currently allow it. In the future I hope to open this to others after warning them about updates containing dangerous references (which the user will be able to disable) and validating the results as best we can. Plugins will be opt-in for that functionality however.

@luky92
Copy link
Contributor

luky92 commented Nov 3, 2021

No I mean a list of game functions that the plug-in overrides if possible

@Spartan322
Copy link
Collaborator Author

Spartan322 commented Nov 3, 2021

No I mean a list of game functions that the plug-in overrides if possible

There's no point to that since players won't know what those mean and they hold no relevance even if the player did know, they don't contribute anything to knowledge of the plugin's functionality. They don't even have relevance to compatibility because HarmonyX is designed explicitly to prevent that problem as much as possible. What point does it serve then?

@luky92
Copy link
Contributor

luky92 commented Nov 3, 2021 via email

@Spartan322
Copy link
Collaborator Author

Well I say that because in games where it happens it usually helps me to learn somewhat so it's sort of personal preference

We're not building systems to learn, everything here is to serve the purpose making the modder's work easier, (and hopefully to give the player capability to be informed about the mods they use) if something doesn't serve that purpose there's not reason to add it. If you want to learn Harmony or BepInEx, they have pretty decent documentation for the most part, if you mean to learn C#, modding with Harmony or BepInEx is the last thing you should be doing, honestly even modding a game is generally a bad methodology for initial learning.

@luky92
Copy link
Contributor

luky92 commented Nov 3, 2021 via email

@Spartan322
Copy link
Collaborator Author

Spartan322 commented Nov 3, 2021

Well I work as a C# Dev so it's about learning how to mod :)

This is offtopic. There is no reason to expect that from this project, and well beyond learning how to mod this project will not teach you how to mod other games, (and it most especially won't teach you good habits you'd need to learn either) no two games will have the same modding solutions even if they use the same systems.

@Arkhist Arkhist removed the Feature Bloat ew, why label Jan 29, 2022
Spartan322 added a commit that referenced this issue May 1, 2022
Added GUI.PluginListScreen for drawing the plugin list
	Adds Plugins button to Main Menu
	Draws plugins based on GUI.PluginInfo
	Needed to add SemanticVersion 2.0.0.0 to PathfinderAPI project
GUI.PluginInfo reads from BepInPlugin, Meta.PluginInfoAttribute, Meta.PluginWebsiteAttribute, BepInDependency, and BepInIncompatibility for plugin information
	Displays load order, is enabled, and allows displaying of plugin image (either set in PluginInfoAttribute.ImagePath or <plugin's guid>.<image extentsion>)
	Does not draw undefined/null elements
Added Event.Menu.DrawMainMenuButtonEvent for detecting and manipulating main menu button draw events.
Added Meta.PluginInfoAttribute for extra plugin metadata
Added Meta.PluginWebsiteAttribute for plugin website listing (is automatically sorted by key in PluginInfo)
Added PluginInfo and PluginWebsite attributes to PathfinderAPIPlugin
@Spartan322 Spartan322 added the WIP Work In Progress label May 1, 2022
@Spartan322 Spartan322 mentioned this issue May 1, 2022
19 tasks
@Spartan322
Copy link
Collaborator Author

Spartan322 commented May 1, 2022

#169 currently implements:

  • Name
  • Guid
  • Version
  • Load Order
    • Can change load order
      • Prompt for restart on load order change
      • Validate load order change
  • Displaying config path
    • Can open config file
  • Description
    • Can open links
  • Soft Dependencies
  • Hard Dependencies
  • Incompatibles
  • Whether it has an updater, in which case a separate check for updates and update button (for now will only apply to BepInEx.Hacknet, PathfinderAPI, and PathfinderUpdater)
  • Author(s) of the plugin (or Team responsible for the plugin)
  • Website(s) related to the plugin
    • Can open website
  • Plugin list scrolling

This is however crude as there is no text wrapping nor any actual scrolling implemented so there is no way to see offscreen information.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Enhancement WIP Work In Progress
Projects
None yet
Development

No branches or pull requests

3 participants