‘blue’ is style variant for TextButton widget. The corresponding TextButton could be created with following code:
var textButton = new TextButton("blue");
New feature is supported in the UI Editor:
Added TextButton widget. Now Myra has 3 button widgets: TextButton(has only text), ImageButton(only image) and ordinary Button(can have both image and text). All of it are demonstrates on the AllWidgetsSample:
Simplification of Serialization System
Now serialization of properties having default values is omitted in both .ui saving/loading and ‘Export To C#’. Therefore .ui and generated .cs files became much smaller.
I’ve a question for everyone who uses Myra.
I am thinking about moving off MonoGame.Extended. Particulary that means Myra will stop using MGE’s BitmapFont and start to use MG’s SpriteFont. What do you think about this idea?
If that idea will be met with negativity or even with neutrality, I wont do it.
I have returned to my game project development after working for an extended time on another project.
I have successfully implemented the basic Myra-UI code for a master menu. However, how do I get my menu-bar to extend across the width of my game-screen?
Currently, I have only one master-menu master item with one sub-item in it, which I am planning on using on testing out some code for my hexagonal war-game map. Yet, the master-menu-bar only extends to the size of my single master-menu master-item.
I would like to have the menu-bar background extend across my game screen as it does in your sample code and the Myra-UI Editor.
I believe I may have found a tougher question for you regarding your Myra-UI…
I have successfully set up the basis for a menu-bar at the top of my game-screen with one master-item and one child item to this master item; the latter for the purpose of clearing selected hexagonal tiles of their highlighted borders. All of this is working quite nicely over my expanded, hexagonal map (for a war-game).
The issue I am running into is that when I make selections from the menu, I am finding that my application is also recording such selections as hexagonal selections that are being tracked in the “Update” method while being redrawn in the “Draw” method.
In other words, up to this point there is no distinction between selecting a menu-item and an underlying hexagonal tile behind the menu-bar and its drop-down menu-items.
I have tried setting a global variable based upon a menu-item selection and then testing it when the hexagonal tile selection tracking is being processed. This has worked up to a point to minimize the tiles that are being tracked for redrawing (which should not be tracked since I have selected from the menu-bar) but I would like to eliminate all of these unnecessary tiles that are being tracked as a result of menu-item selections.
Is there anything you can suggest that can indicate when the menu-bar is being selected as to when an actual tile is being selected?
Released Myra 0.6.1.
Since Myra got off Monogame.Extended I’ve returned support of FNA.
The documentation has been updated accordingly and now it describes ways of adding Myra to the FNA game: https://github.com/rds1983/Myra/wiki/Adding-Reference-to-Myra
im gunna be gone from home the next couple of days and cant really check it out, figured id post an ask here and see if i get a response:
Does the Myra UI lib have touch support(So the UI can be used in mobile games) and/or controller support?
Also when I am available next would you like me to create a VB code generator for you so your beautiful tool can reach a larger audience, id love to see this work become a mainstream tool its the best I’ve seen so far (Especially the UI editor gahd I hate UI by hand). – I ask as I have never been shy about translating stuff from C# to VB.net for the users who want it and VB users would drool over this tool
K im free to do stuff, finished my side projects (And am home) so Ima get started on converting the Exporter located in the UIEditor, to the best of your knowlege is there anywhere else for compatibility sake I should worry about converting?
Hey, I’ve looked in the example code for custom stylesheets and can’t figure out how to import them or use them. Have they been removed in 0.6 completely or did you just change how they work?
Also, is it possible to use Myra alongside MGE without any conflicts? (I use MonoGame.Extended for a lot of my project so I hope it has no conflicts)
Create ExporterVB based on ExporterCS. Actually If I had enough time, I’d try to create language-agnostic BaseExporter and made ExporterCS/ExporterVB it’s inheritors.
I changed how they work. Prior to 0.6 the Content Pipeline had been used, but it was removed afterwards. CustomUIStylesheetSample works, however it’s code may be slightly confusing as it uses multiple Myra utility classes which arent documented.
Basically it has following organization:
All custom stylesheet assets are stored as resources.
The custom stylesheet setting/loading code is this:
MyraEnvironment.Game = this;
// Create resource asset resolver
var assetResolver = new ResourceAssetResolver(GetType().Assembly, "Myra.Samples.CustomUIStylesheetSample.Resources.");
// Load image containing font & ui spritesheet
var colorBuffer = ColorBuffer.FromStream(assetResolver.Open("ui_stylesheet_image.png"));
colorBuffer.Process(true);
var texture = colorBuffer.CreateTexture2D();
// Load ui text atlas
var textureAtlas = TextureRegionAtlas.Load(assetResolver.ReadAsString("ui_stylesheet_atlas.atlas"),
s => texture);
// Load ui font(s)
var font = SpriteFontHelper.LoadFromFnt(assetResolver.ReadAsString("ui_font.fnt"),
textureAtlas["default"]);
// Load stylesheet
var stylesheet = Stylesheet.CreateFromSource(assetResolver.ReadAsString("ui_stylesheet.json"),
s => textureAtlas[s],
s => font);
Stylesheet.Current = stylesheet;
I’ve already documented what is ColorBuffer and SpriteFontHelper.
However rest of used utilities(TextureRegionAtlas and AssetResolver) arent documented yet.
But documentation for how-to load custom stylesheet has almost top priority in my list.
Also it’s important to note, that you dont need to copy the whole above code to make custom stylesheet loading.
The only function call there that matter is Stylesheet.CreateFromSource. It has following signature:
You’re free to feed it images/sprite fonts, that were loaded using any possible way(i.e. through Content Pipeline, or Texture2D.FromStream).
Again TextureRegion is not yet documented. However one could figure how it works looking at the code: https://github.com/rds1983/Myra/tree/master/Source/Myra/Graphics2D/TextureAtlases
Also, is it possible to use Myra alongside MGE without any conflicts? (I use MonoGame.Extended for a lot of my project so I hope it has no conflicts)
No, there shouldn’t be conflicts. There is some crossing functionality. I.e. both MGE and Myra have TextureAtlases. However classes naming are different. MGE’s classes are named TextureAtlas/TextureRegion2D/NinePatchRegion2D. While Myra’s classes are TextureRegionAtlas/TextureRegion/NinePatchRegion.
I’m having a small problem creating the stylesheet. It says I need Newtonsoft.Json 9.0.0.0 but you can’t get that on NuGet. Is this an error in the library or is it just a mistake on my part?
Added ability to the UI Editor to edit windows and dialogs. Following animation demonstrates creation of ColorChooserDialog:
Added new widget - FileDialog. It can work in 3 modes: OpenFile, SaveFile and ChooseFolder. Following animation demonstrates SaveFile:
FileDialog is part of Myra.Editor.dll (similar to Myra.dll, it could be installer either through NuGet or directly referenced from the distribution package).
Added transparency. Now Widget class has Opacity property which can take values from 0.0 to 1.0(default value is 1.0). If both container widget and its child have that property set then they are multiplied. I.e. if container opacity is 0.5 and its child opacity is 0.6. Then the child will be rendered with opacity 0.3.
Added yet another sample FantasyMapGenerator, which is slightly more complicated than rest of samples. It provides utility for generation of fantasy continents: