-
Posts
13,723 -
Joined
-
Last visited
-
Days Won
388
Content Type
Profiles
Forums
Articles
Downloads
Gallery
Blogs
Everything posted by Jason Carr
-
Yes, custom fonts will require either a custom DLL as many themes have done previously, or the new easier solution. The two required views for Big Box themes are the text list views for both the platforms/filters and games. The main reason for this is that they are always used; filters other than platforms always use the text list filters view, and the game details menu always uses the text list games view. I don't see any issues with the theme editor/generator (in fact I'm very glad you're working on it). It's important for themes to be unique and hold value on their own, but from what I've seen of your app, it certainly seems flexible enough to allow for a whole bunch of very unique themes.
-
Including Custom Fonts without Custom DLLs
Jason Carr replied to Jason Carr's topic in Custom Theme Tutorials
Thank you @wallmachine. Can you zip up and PM me the theme? -
The new form to upload LaunchBox, Big Box, and Startup themes to be included in the new themes manager is now available here: https://www.launchbox-app.com/themes You'll need to be logged in to the forums before clicking that link, or you'll be prompted to log in first. As stated on the submission page, here are the rules for theme submissions: Themes must be completely stable and not cause any stability issues Themes must work out of the box and not require any additional installation steps Themes must not be missing important features for usability (such as missing a button to show the main menu in LaunchBox themes) Themes must not be missing required views (such as the game details view for Big Box themes) Themes must be developed by yourself and must be significantly different from other themes Sufficient screenshots of the theme are required (including all relevant views for Big Box themes) The submission process should be straightforward, but it will take some time as you'll need screenshots for each view that your theme uses (for Big Box themes at least). The new screenshot functionality that is available in the latest beta of Big Box should help with this; you can simply press the Print Screen key while you're in Big Box and screenshots will show up in the LaunchBox\Screenshots folder, named with the active theme and view so that it's easy to keep track of them all. Once you submit a theme, it will need to be approved by ETA Prime and I. I'll be focusing on testing and approving themes here before the 9.6 official release so that we can get as many themes up there as possible for the public release. Editing existing themes metadata and screenshots will not need approval, but any time a new theme zip file is uploaded, it will have to go through the approval process. If you are concerned with themes not being allowed to "require any additional installation steps", please note that DLLs should no longer require unblocking using the new themes manager, and we've also made it easier to get fonts working without installation or custom DLLs here: There may be a hitch or two yet with the custom font solution, but I'll make sure that everything is working with that before the official release. No issues have been identified and everything is working properly with the new custom font solution (updated 2019-03-20). Thank you all so very much for all the amazing themes. I'm calling you guys out one more time here so that everyone is aware that the theme uploader is available. Sorry for the multiple callouts as of late. @faeran @Mr. RetroLust @RetroHumanoid @wallmachine @eatkinola @bbweiners @keltoigael @Jack. @y2guru @whoozwah @SNAK3ATER @Rincewind @CriticalCid @shro2016 @broskiplays @Grila @NJDave71 @Hexxxer @PhillsDoodles @Zombeaver @Omen @Cookz718 @viking @OrochiMishima @nosh @ea4492 @Maddoc1007 @vsilvalopes @damageinc86 @walter10h @skainlurmis @Scottad @Nyny77 @Sithel @Akezhar @Thanos Reigns
-
Yes, animated gifs are supported, though they do require special syntax. I know the syntax is here on the forums somewhere, but I'd have to search for it. You could certainly use XAML to load up a separate GIF image for each game.
-
@gogoplata I'm guessing it somehow has to do with the data in your collection. If you can please zip up and PM me your LaunchBox\Data folder, I'll take a look to see if I can figure out what's causing it. I assume you're running LaunchBox 9.5?
-
What it's supposed to do is jump to whatever image is being displayed on the game in the boxes view, and that one is not always first. Is it at least displaying the image that is displayed in the boxes view?
-
Planning on taking a look at it here soon. Per #1, the nice thing about the installer is that DLLs should no longer need to be unblocked, so you shouldn't have to worry about that. Under normal circumstances, Windows only does that when files are downloaded directly from the browser and then extracted with the built-in zip utility. Per #2, I will be announcing the theme uploader web form very soon (just later today).
-
Beta 7 is out now as well with a new way to include fonts in custom themes without having to create a custom DLL, or requiring the user to install them manually: This was important, because all themes that are approved for including in the theme manager are not allowed to require the user to have to run through any manual installation steps.
-
Hello all, my latest goal was to figure out a solution for theme developers for all three types of themes to be able to include custom fonts without having to create a custom plugin/DLL or requiring the end user to manually install them. Microsoft really made it way more of a pain than it should have been, so I was struggling with it for hours, but I finally have a good solution. Unfortunately it did require changes to the LaunchBox codebase, so this solution will only work going forward, for LaunchBox/Big Box 9.6-beta-7 and later. Previously it was not possible to automatically include custom fonts in startup themes, as plugins are not currently supported. This solution will allow you to use custom fonts in startup themes without requiring the user to manually install them, and this solution can be used for LaunchBox and Big Box themes as well (it's also now the recommended method). Here's an example of a TextBlock with a custom font: <TextBlock FontFamily="LAUNCHBOX_ROOT_FOLDER/Startup Themes/ExampleTheme/Blazed.ttf#Blazed" /> Obviously, only the FontFamily property is important here. It always starts with "LAUNCHBOX_ROOT_FOLDER", as LaunchBox and Big Box will automatically replace this with the LaunchBox folder, wherever it is located. This part was necessary because of Microsoft's bugs/security workarounds, none of which make sense, but it's impossible to load a font from a relative path in XAML without including it in a project or DLL, so LaunchBox just replaces this part with the full path to the LaunchBox folder. In the above case, the "LaunchBox\Startup Themes\ExampleTheme\Blazed.ttf" font will be used for that TextBlock element. Note the "#Blazed" portion at the end however; unfortunately you also have to include the pound sign, followed by the name of the font. You can find the name of the font by simply double-clicking the font file in Windows, and the name of the font will be displayed at the top of the Font Viewer application, next to "Font name:". I'm not sure why this is necessary, but it's another requirement in order to get the fonts working properly. Next, let's take a look at an example with a space in the font file and/or the font name: <TextBlock FontFamily="LAUNCHBOX_ROOT_FOLDER/Startup Themes/ExampleTheme/Hearty Script.ttf#Hearty Script" /> Simply putting it in as expected with spaces does work, so that should not be a concern. Let me know if anyone runs into any issues. I will say that I did find one font that just refused to work with WPF period, so if you can't seem to make it work, do try another font. Unfortunately it seems there are some fonts out there that are either just poorly made or incompatible with WPF for one reason or another. Thanks again all. Calling you all out here so that everyone is aware of this new feature. @faeran @Mr. RetroLust @RetroHumanoid @wallmachine @eatkinola @bbweiners @keltoigael @Jack. @y2guru @whoozwah @SNAK3ATER @Rincewind @CriticalCid @shro2016 @broskiplays @Grila @NJDave71 @Hexxxer @PhillsDoodles @Zombeaver @Omen @Cookz718 @viking @OrochiMishima @nosh @ea4492 @Maddoc1007 @vsilvalopes @damageinc86 @walter10h @skainlurmis @Scottad @Nyny77 @Sithel @Akezhar @Thanos Reigns
-
Creating a Startup Theme with Video Support
Jason Carr replied to Jason Carr's topic in Custom Theme Tutorials
FYI all, @Retro808 discovered an issue where the video hitches up and doesn't play properly in the startup themes. I am able to reproduce as well on my slower machines. I have it on my plate to dive in to see if there's anything I can do to fix it. -
Creating a Startup Theme with Video Support
Jason Carr replied to Jason Carr's topic in Custom Theme Tutorials
Sorry it took me a bit to respond, Retro. -
Here's an example of using the on-screen keyboard: ShowOnScreenKeyboard("default text", resultingText => MessageBox.Show(resultingText)); That should show the on-screen keyboard, and then show a message box with what the user types. I've used an inline code format above, but you can also create a method with a string parameter, and then put the method name in for the second parameter instead if you wish.
-
The images in wheels are cached and compressed based on the user's CoverFlow image quality setting in Big Box, so you probably just need to increase that. There's already a decent solution for custom fonts available (see @Retro808's link above), but I'm going to work on a simpler solution that works for startup themes as well.
-
I just created a new forum section for "Custom Theme Tutorials" with the above tutorial in it. If anyone wants to, feel free to create some tutorials there.
-
Sorry for the delay on this @Retro808, but I have a full solution for everything here finally:
-
Creating a Startup Theme with Video Support
Jason Carr replied to Jason Carr's topic in Custom Theme Tutorials
Alright, finally, here's a full solution for prioritized videos using the PrioritizedPathSelector control that was just integrated into LaunchBox in version 9.6-beta-6. Keep in mind that you will need at least version 9.6-beta-6 for this solution to work. Previously the PrioritizedPathSelector control was available in a plugin, but for version 9.6-beta-6, it was integrated directly into LaunchBox/Big Box for use in the startup themes. Here's our example: <UserControl xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:controls="clr-namespace:Unbroken.LaunchBox.Wpf.Controls;assembly=Unbroken.LaunchBox.Wpf" mc:Ignorable="d" d:DesignHeight="562" d:DesignWidth="1000" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" FocusVisualStyle="{x:Null}" BorderThickness="0" Margin="0" Padding="0" Background="#000"> <Canvas Name="Canvas"> <controls:PrioritizedPathSelector x:Name="VideoFileName" FolderPath="StartupThemes\VideoExampleTheme\Videos" FileExtension=".mp4" Priority1FileName="{Binding KnownPlatformOrPlaylistTitle}" Priority2FileName="{Binding Platform.NestedName}" Priority3FileName="{Binding SelectedGame.Platform}" Priority4FileName="_Default" /> <controls:VideoControl VideoPath="{Binding PrioritizedFilePath, ElementName=VideoFileName}" StretchVideo="true" CenterVideo="false" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Height="{Binding ElementName=Canvas, Path=ActualHeight}" Width="{Binding ElementName=Canvas, Path=ActualWidth}" /> </Canvas> </UserControl> This time, instead of using a TextBlock element for binding in the background, we use the new PrioritizedPathSelector control. It's also available in the same "Unbroken.LaunchBox.Wpf.Controls" namespace that the VideoControl is in, so we can use the same xmlns tag for this control as with the VideoControl. However, do keep in mind that there are a couple of different namespaces that the VideoControl is available in (for backwards compatibility reasons), so double-check that the xmlns:controls line in the file you're working with matches the above line exactly. The PrioritizedPathSelector element above specifies the Name of the element (used by the ElementName property of the VideoPath binding), the FolderPath, the FileExtension, and several prioritized file name properties. Usage should be fairly obvious, but let's talk through the four prioritized file names. There are a total of 5 prioritized file name properties available in the control, of which we are using four. The Priority1FileName is currently bound to KnownPlatformOrPlaylistTitle, which is the same binding that we were using previously. It contains some logic in the LaunchBox/Big Box backend to attempt to spit out an actual platform or arcade playlist name, instead of a nested playlist like "Nintendo Entertainment System All Games", for example. The Priority2FileName property is then used if the Priority1FileName file is not found. It attempts to use a file name that matches the "Nested Name" of the current platform or playlist. For example, "Nintendo Entertainment System All Games" would simply return "All Games". The Priority3FileName jumps straight to the name of the platform itself for the launching game, regardless of which list the game is launching from, which is a good fallback if the first two options are not found. Finally, the Priority4FileName property simply reverts to the "_Default.mp4" video file if no platform-specific video file is found. That pretty much sums it up; let me know if anything isn't working or if you have any questions. -
Creating a Startup Theme with Video Support
Jason Carr replied to Jason Carr's topic in Custom Theme Tutorials
Next, let's look at using bindings for dynamic video paths. Let's say you want to use different videos for each platform. Something like this would work in your Default.xaml file for the startup theme: <UserControl xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:controls="clr-namespace:Unbroken.LaunchBox.Wpf.Controls;assembly=Unbroken.LaunchBox.Wpf" mc:Ignorable="d" d:DesignHeight="562" d:DesignWidth="1000" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" FocusVisualStyle="{x:Null}" BorderThickness="0" Margin="0" Padding="0" Background="#000"> <Canvas Name="Canvas"> <TextBlock x:Name="VideoFileName" Visibility="Collapsed"> <TextBlock.Text> <MultiBinding StringFormat="{}pack://siteoforigin:,,,/StartupThemes/VideoExampleTheme/Videos/{0}.mp4"> <Binding Path="KnownPlatformOrPlaylistTitle" /> </MultiBinding> </TextBlock.Text> </TextBlock> <controls:VideoControl VideoPath="{Binding Text, ElementName=VideoFileName}" StretchVideo="true" CenterVideo="false" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Height="{Binding ElementName=Canvas, Path=ActualHeight}" Width="{Binding ElementName=Canvas, Path=ActualWidth}" /> </Canvas> </UserControl> The only changes here are that we've added the TextBlock element and changed the VideoPath property of the VideoControl element to bind to the text in that TextBlock element. The TextBlock's visibility is set to Collapsed, which means that it will not show up at all and also won't take up any space; it's simply used for binding purposes behind the scenes. We use the MultiBinding in the TextBlock.Text element to replace the "{0}" portion of the StringFormat value with the "KnownPlatformOrPlaylistTitle" binding, which basically returns the active platform. Thus the value that is used for the VideoPath will be the full path to the platform-specific video file. Keep in mind that we have *not* specified a FallbackValue in the VideoPath binding. You may have seen some themes that do something similar to the above, but add a FallbackValue like this: VideoPath="{Binding Text, ElementName=VideoFileName, FallbackValue='pack://siteoforigin:,,,/StartupThemes/VideoExampleTheme/Videos/_Default.mp4'}" You might assume that the "_Default.mp4" video file will be used if the platform video file does not exist, but unfortunately that does not work, despite some themes suggesting that it does. The reason this doesn't work is because nothing in the XAML is checking to see if the platform video file exists or not, and the XAML doesn't care, so whether the file exists or not, the platform-specific video file will be returned, and the FallbackValue will never be used. I'm not sure of exactly when and where the FallbackValue is used, but I would guess that most likely it's used if the KnownPlatformOrPlaylistTitle binding turns out to be NULL. So naturally, the next step of the puzzle is figuring out how to prioritize bindings and use a default video if a platform video does not exist. A solution for that is coming in the next post. -
Hello all, there's been some recent discussion on attempting to create a startup theme with videos, so I thought I'd chime in with some solutions. Adding a video to a startup theme is actually rather easy, as it's the same as with Big Box themes. Here's an example "Default.xaml" file with a video: <UserControl xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:controls="clr-namespace:Unbroken.LaunchBox.Wpf.Controls;assembly=Unbroken.LaunchBox.Wpf" mc:Ignorable="d" d:DesignHeight="562" d:DesignWidth="1000" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" FocusVisualStyle="{x:Null}" BorderThickness="0" Margin="0" Padding="0" Background="#000"> <Canvas Name="Canvas"> <controls:VideoControl VideoPath="pack://siteoforigin:,,,/StartupThemes/VideoExampleTheme/Videos/_Default.mp4" StretchVideo="true" CenterVideo="false" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Height="{Binding ElementName=Canvas, Path=ActualHeight}" Width="{Binding ElementName=Canvas, Path=ActualWidth}" /> </Canvas> </UserControl> Keep in mind that you need the xmlns:controls line near the top in order to use the VideoControl tag. Other than that, it's all in that VideoControl tag, and it will play the "LaunchBox\StartupThemes\VideoExampleTheme\Videos\_Default.mp4" video file full-screen. It will also work for both Windows Media Player and VLC. I'll be adding some subsequent posts in this topic for more involved solutions shortly, but I wanted to post a simple solution first.
-
@RULLUR @gillfigno@hotmail.com Let me know if you're still seeing that music issue with beta 6.
-
Beta 6 is out now with the following: - Improvement: Added three new properties to the Game object in order to better support theme developers: BindableVideoPath, BindableThemeVideoPath, and BindableThemeVideoOrVideoPath. These new properties can be used as a binding in the VideoControl for custom themes. - Improvement: Integrated the PrioritizedPathSelector control that was previously available as a custom plugin into Big Box, specifically for startup themes. A tutorial will be available on the forums shortly. - Fixed: In some situations, the new game startup screens were causing game music to play in the background while a game is running
-
Thank you @Cauptain and @alexposad; I have these packages integrated for the next beta. My apologies for the delay here. @Cauptain Unfortunately I don't plan on translating those particular items due to technical issues/restrictions; the names of the platform categories can certainly be changed by the end user though. Also I can manually change the name of the language; what did you want me to change it to? @alexposad I've changed the language name there. I've also increased the width of the Add button a bit, but it will only be changed in the default theme unfortunately. Thanks again guys; the new beta should be out soon.
-
Thanks for doing that testing; that's kind of what I figured. Of course what this means is that it's not a conflict or a LaunchBox issue at all; it's some sort of odd glitch with Cemu, so it should be reported to the Cemu developers.