Jump to content
LaunchBox Community Forums

Nielk1

Members
  • Posts

    178
  • Joined

  • Last visited

Everything posted by Nielk1

  1. It looks like whoever wrote the plugin didn't account for HTTP errors yet, though I need to look at the source code of that plugin to know for sure if that's the issue, just guessing.
  2. Marked some items as completed, added some new items.
  3. The only thing I can think of is that the local CRC calculation for some reason differs for those files from the remote CRC. It's possible the remote CRC is incorrect if it's certain images, or it's possible the algorithm is failed. The reason it would be finding local duplicates however is that the local CRCs would all be generated with the same algorithm.
  4. I don't even know WPF and I'm coming in here like a wrecking ball and fixing things. Everyone who makes themes, USE FALLBACK VALUES! You'll have a far easier time seeing what you are doing in cases like this: <SolidColorBrush Color="Black" Opacity="{Binding BackgroundFade, FallbackValue=0.5}" /> Sounds like the theme projects might need their references refreshed. The references say "Specific Version: False" so I'm not sure why libraries needed to be re-added. It's possible that the libs were copied into the output folder when they really should be set for "Copy Local: False".
  5. @Maddoc1007 @Jason Carr Oh that's interesting. For some reason something it requires is in the Plugin dll. That's not a big issue, he just needs to update the theme projects that come with BB and make sure ppl know about that.
  6. @Maddoc1007 OK now THAT is the issue there in your screenshot I was talking to Jason about. I wish I could find a way to set an editor only render but I haven't found a way to to yet, so even once it's all working it will just be a bunch of ugly black boxes. At the very least though we can try to fix that ugly error box. @Jason Carr, here's how I fixed my custom control having that specific error (and make it show as a red box provided no other control that would be solid black at design time was in the way). You can use this type of branching in the constructor to do at least some minimal hacks to get it to render how you want in the editor. if (!System.ComponentModel.DesignerProperties.GetIsInDesignMode(this)) { InitializeComponent(); } else { this.Background = Brushes.Red; }
  7. @Maddoc1007 I can see BigBox is already in your list on the right as it should be, but it might be worth seeing if any of the other Metadata DLLs help. The way to browse is to click the 2nd browse button on the bottom of the window and find the DLL or exe file you want to try to add.
  8. @Maddoc1007 I had some issues like this but I resolved them all by adding references. I am having trouble re-creating the issue now though that I've seemingly 'fixed' it.
  9. LB and BB are set up fine. I'm writing my SteamContext so that if it's running in 32bit it passes through directly and if it's running in 64bit it uses my inter-process program. I had to specifically compile all my libraries as Any CPU so I could reference them in 64bit programs but write in a bunch of checks to prevent the native calls from concurring if it's running under 64bit. If I make any of my modules 32bit or 64bit only suddenly they won't work anymore on the other system architecture as LB/BB runs on the optimal mode. This sort of soft check with an interproc that is itself forced to 32bit only is my best method.
  10. I think this might be a different issue that manifests in a similar symptom. In this case it looks like his XAML editor is not seeing the object in its libraries. The issue I was reffering to witht he constructor fix is this one: @Maddoc1007 Make sure your reference to LaunchBox\Metadata\Unbroken.LaunchBox.Wpf.dll is working properly. You might need to throw in a reference to BigBox.exe if it's not present. You might even need LaunchBox.exe or some of the other DLLs in \Metadata\.
  11. I made this for my own uses but I figured I'd share. I put stuff like Steam under this.
  12. Welp, I have my "Install with Steam" plugin working mostly. The issue I'm having is that since the libraries I need to use are 32 bit in some cases I had to write an interprocess system using Named Pipes and JSON. Those darn Named Pipes like to get all sorts of screwed up for me. No one else will have any issue like that, it's just an issue I'm having that might influence some of my suggestions for plugin types.
  13. To start I'd like to just point out the reason this is a topic rather than a BitBucket entry is to allow for discussion of possibilities and suggestions. Once ideas are sufficiently hashed out they can be added to the BitBucket for proper tracking. I'll edit this topic opening to add items as needed. Plugin Types IMenuPlugin (Fulfilled by ISystemMenuItemPlugin) Plugin to put options in the top level menus of LaunchBox or the root of BigBox. An enum could be used to set what menu it appears in. IGameMenuItemPlugin (Existing) This plugin type already exists, but it could use a few new features. Specifically, a way to control if a menu item is visible or disabled in both BB and LB rather than the current behavior. Additionally, a method to place menu items under other menu items would be helpful. This could be done through string matching but it might be best to use a new property with a unique GUID in it to make hierarchy lookups very easy. Access to the MenuItem itself would solve any possible issues but also might not be easily possible given how there's two different menus. Sub-menus in BigBox could be a modal with a list, similar to the 'Add to Playlist' modal. IServicePlugin (Fulfilled by ISystemEventsPlugin) This type of plugin would have very limited interfaces with LaunchBox and BigBox. The purpose of this plugin type is to be informed of program startup and shutdown so singleton services may be constructed and destructed. Technically we can construct these singletons on demand when needed and let them sit around, but we can't ensure they are cleaned up properly without knowing that LB/BB wishes to close. An Interface explicitly for this purpose would allow for services to only be started if in the correct application (LB or BB) through a BigBoxInitalize() and LaunchBoxInitalize() function. IPlatformPlugin A virtualized platform that registers with the main interface at startup and allows for pure programmatic language. IDataImportPlugin A method to add a datasource to the existing metadata and image finding systems to make use of LB's background working threads. IBigBoxThemeElementPlugin (Existing) It would be nice if this interface could be added to the internal observer list if it is added to a view as a Resource instead of a control. Right now I need to add my data source as a dummy control for the events to fire. Functions Navigate(Section, Item) A navigate function would allow for jumping to a different section of the interface. Using such a tool one could add a menu option to a game such as "series" which would automatically jump to the view of that series with that game pre-selected. PluginHelper.BigBoxMainViewModel.ShowList<T>(List<T> items, Action(T) onFinished, string title = null) A basic list selector. You'd want to use the default(T) option as a response when no item is selected but instead the back binding is used. You could also make it explicitly use a List<string> with an action parameter of type int as the index of the selected item. In the case of the index based action parameter -1 would be triggered by selecting the back button. The title would be a TextBlock placed in the layout grid cell above the List (which is in the center) and set to center+bottom alignment. I've done this in my own View injection. PluginHelper.BigBoxMainViewModel.ShowQuestion(string question, MessageBoxButtons btn, Action(DialogResult) onFinished) This would mimmic WinForm dialog boxes. Using the WinForm dialog enum types is possible but customs might be better as it gives you more flexibility. With a custom set of types you could have ModalButtons.YesNoButtons and ModalButtons.YesNoBinding where the latter uses the forward and back bindings and the latter requires the user to actively position the selector over button Yes or button No. You could also use a horizontal list of button text strings and return the selected index. Pluginhelper.BigBoxMainViewModel.ShowNoticeModal(string message, Action(T) onFinished) Just a very basic model that shows a notice that is cleared by any button press, or possibly only a back button press, many options that could be pushed into the parameters. You could even make a setting to make it have a special style, such as "Notice", "Warning", "Error", or other that would adjust the colorizing of the modal. Pluginhelper.BigBoxMainViewModel.ShowCustomModal(ViewModel modelInstance, Action(modelInstance) onFinished) Give the user full control over the modal. The Action can be done with no parameters but passing the modal itself along might make it easier for the developer to implement checking of custom properties in that view. Properties IGame.ParentPlatform Possible method to avoid the wasted CPU cycles of performing IDataManager.GetPlatformByName(IGame.Platform). This is only worth doing if the data relation is already present in the application logic and it can be exposed. IDataManager.ApplicationType, IDataManager.IsBigBox, IDataManager.IsLaunchBox If we are in BigBox or LaunchBox. It might be worth making this an Enum rather than simply a having just IsBigBox and IsLaunchBox as you might have a 3rd application type in the future. LockedFlag (Fulfilled by IStateManager.IsBigBoxLocked) A method to see the locked flag to disable functionality if locked. General Image Filename Patterns A method to access the filename logic used in saving/reading images for Platforms and Games. I know the names can include the game name with some characters removed or replaced, or the game's ID, or some composite and thus it isn't clear what the algorithm in use is. LB Progress Bar Access Some sort of task manager that lets us trigger the progress bar for background tasks in LB. This would need some sort of collection so multiple tasks can be running at once. In that case you'd probably end up showing %*(1/Count) as the fill % or cycle items.BigBox Modals It would be nice to have a base class and system to use for BigBox modals. Right now, the only way I can find to do this is to add an IBigBoxThemeElementPlugin to the theme and somehow trigger it with the IGameMenuItemPlugin, but this is just an idea I've not even tested yet. In general IGameMenuItemPlugin lacks access to the host view for programmatic injection of controls so edited themes would be a must for full functionality. LocalDb wrapper Wrapper for functions in Unbroken.LaunchBox.Search.LocalDb allowing for searching the LocalDb and triggering it to update if it's out of date. I threw together a plugin using programmatic binding time version redirection to deal with issues, but that's way above what most people can do.
  14. @Jason Carr where do we put feature requests for plugin interfaces, the bitbucket? I am thinking a way to trigger navigation (go to a specific UI section such as series/seriesname or playlist/playlistname) would be a good idea. I'm starting a lot of little test plugins just to see what can be done so far. You'll probably also want a general service plugin in the future, but you will need to add a lot more thread safety for that to the core application.
  15. @Porl Hendy Exactly. I'll be creating some for sure. The development situation here is great for this too; Jason is a very active communicator and can implement missing functions plugins might need once those issues arise.
  16. A plugin is a code extension. Basically, LaunchBox/BigBox will ask plugins if they 'have anything to say' during certain events/actions. What events those are and what data the plugins are able to access determines what they can do.
  17. My first plugin idea is something to deal with Steam games being installed or not installed, either as some sort of dynamic and automated filter, indicator, and/or in UI display.
  18. Currently the Overlay works so long as I keep RocketLauncher out of the process stack Steam is in (if RL runs the proxy, it's all good, if the proxy runs RL, it isn't). I will try to solve this issue properly to avoid any issues with RL, I might find a way to solve it without any fun in RL scripts.
  19. The new app is a script engine with an plugin system to add new functionality. Plugins include items such as the LaunchBox module which can easily read the LaunchBox library files to find a game's additional information (such as the exact display name) and the Steam module which allows for launching arbitrary programs through Steam as well as requesting various information from Steam itself. The prototype works, but I've been using the underlying code work recently to gather data from Steam for the GamesDB rather than finish a releasable prototype version. It's also a smidgen slower than I would like. It's sort of like RocketLauncher in a way, but instead of keeping a list of ROMs and using scripts to determine what to do it keeps a list of scripts and you need to pass it a rom and a script ID to know what to do.
  20. Even with the new App you'd need to edit the AHK, though the instructions wouldn't be out of date.
  21. Basically, you need RocketLauncher to start the GameLaunchProxy instead of the proxy doing it. The program wasn't even originally designed for this, it was designed to load fonts into memory without installing them at game startup. All this Steam stuff was an afterthought. That's why I've been working on the newer program which is taking a long time.
  22. When I first used this I used Rocket Launcher and I had a video but it is ludicrously out of date. When this video was made the steamproxy.exe was still part of the core program and the logic was in its infancy. The actual proxy arguments have since changed, as has several other things, but the general "how" of the RocketLauncher portion might help you. https://www.youtube.com/watch?v=J4SPQiihnMs&t=1m48s RocketLauncher makes this a pain in the butt because of how it works (or rather doesn't) with the Steam overlay. It's also possible that by using this configuration some RL features like Bezels might not work. I'm not sure of a way to deal with RL's odd behavior with Steam because I haven't been able to figure out why it exhibits this behavior. As Cammel is the main user of this tool and he doesn't use RL it hasn't come up much.
  23. @The_Keeper86 Sorry for the delay in my reply. I've been working on a new version of this that works off scripts instead of hard coded logic and I ended up delaying it while spending weeks of time working on collecting Steam game data for the GamesDB when I stumbled on the poor situation that is Windows platform game coverage there. As I have not released my replacement for this program yet, I'll see what I can do to help you here. I might have to make a patch for the proxy depending on the nature of your issue. @cammelspit is ironically the most knowledgeable about the proxy even though I wrote it, but in this case I think I know your issue. If I recall correctly having the proxy run RocketLauncher for some reason blocks the overlay from reaching the game. Somehow RocketLauncher stands in the way. When I ran into this issue I had this setup: LaunchBox -> GameLaunchProxy -> Steam -> SteamProxy Shortcut -> RocketLauncher -> RetroArch. I got around this issue by doing this instead: LaunchBox -> RocketLauncher -> GameLaunchProxy -> Steam -> SteamProxy Shortcut -> RetroArch. In plain English, I went into RocketLauncher and cloned the AHK script for a given platform+emulator. Inside the script I manually added the GameLaunchProxy wrapper to the command the script would normally run (in my case, a command to start RetroArch with a specific ROM and n64 core). By doing this I moved RocketLauncher from between steamproxy.exe and RetroArch to between LaunchBox and GameLaunchProxy. (I also had to remove the signature from the script in RocketLauncher which marks it as unverified. I believe RocketLauncher must sign their scripts to ensure they are legitimate so users know they can trust the script not to "delete system32" or something.) Edit: IIRC I also gave Cammel a special version to fix a bug he had and I don't recall if I ever officially released that. My new tool that is still in development uses a better system, an undocumented feature in Steam called a "Temporary Shortcut" (at least for as long as Steam has that feature), so I might end up back-porting that logic to get you up and running smoothly if needed.
  24. @spycat Thanks much! I looked around the forum and I didn't catch that topic. I was looking for staff topic opening posts that would notify of the issue and wasn't digging into the topic comments. Is it safe to add new logos/data right now while this work is going on?
×
×
  • Create New...