Attract-Mode Support Forum
Attract-Mode Support => Themes => Topic started by: liquid8d on June 04, 2017, 05:42:28 PM
-
For a couple weeks I have been posting my progress on this in the scripting area but it's getting closer to real-world usage so I thought I would share here:
I have developed AMBuilder, an online Attract Mode layout builder. It is still a WIP, but it is pretty functional at minimum to the point of playing around and getting ideas.
Features:
- full drag and drop design of AM layout
- includes standard AM objects (text, image, artwork, list, clone, surface)
- drag and drop upload for custom images and included fonts
- included joystick/buttons media and arcade font
- embedded sprite sites to help with using subimg sprites
- save/resume session
- view generated code
- download a complete, ready to run layout zip file containing all resources. Drop this in your AM layouts folder and select it in your display options
- zip files created with AMBuilder can be dropped right into the layout area to load them
Aspect support is touchy right now, but in the future it will be very simple to design your layout and make sure it looks great in all aspects and resolutions ;)
You can try it out here:
http://goodiesfor.me/attractmode/builder
You are welcome (and encouraged!) to share your zip files here, so we can all try the layouts you create! Please do keep in mind copyrights and rights usage when it pertains to included images and fonts.
In that spirit, I attached a layout that I just created in about 5 mins. Just download the attached zip, go to the site and drop the zip file right into the layout area t o check it out. When you are ready to build your own, hit the Clear button and start adding objects from the side menu
Please give it a shot and let me know what you think!
The code for this project is available here:
https://github.com/liquid8d/am-builder
If you are interested in helping, feel free to submit issues on the github site or PM me if you want to do more.
(http://i.imgur.com/a5CVvWol.png)
-
Very cool. Great job!
Where is the romlist and artwork coming from? Are these just the defaults you have on the web server?
-
So I can understand this... I just go online and use this tool... create my layout and it gives me a zipped theme?
If so, as a Mac user, this is great... most of the cooler home brew programs are Windows only IME and I don't run bootcamp. This is a game changer and something to be proud of... cannot wait to experiment. Thank you!
-
Very cool. Great job!
Where is the romlist and artwork coming from? Are these just the defaults you have on the web server?
Yes, I added some fake data that it's using :) I'll add some more soon and/or look for local data.
So I can understand this... I just go online and use this tool... create my layout and it gives me a zipped theme?
Correct.. it's just for designing, though. You'll take the zip and put it in the AM layout folder and choose it in AM display settings.
-
If so, as a Mac user, this is great... most of the cooler home brew programs are Windows only
I just use Textmate on a Mac to make AttractMode layouts & changes. Obviously if you're not into programming much, it would be a lot more daunting than using a GUI like this. As for AttractMode itself, it's available on a Mac. If I recall, you have to right click on the app and "show package contents" to add or change layouts.
-
Thanks this is the best thing i will test
-
Hello,
i just gave a try to your app, it is working very well congratulations for the time and the GUI which is nice and user friendly !
I now have some questions :)
- To set up a background, you have to create a surface first is that right ? otherwise the background is not displayed when using the theme.
- When you select HD 16/9, i am guessing i have a resolution of 1920x1080 but it seems despite i try to set it in the layout res, i cannot get that size, so the display is shrinked once in AM.
- I have not understood how zorder was working. i tried to set text over another text, but despite the zorder, i cannot get it to display on screen in AM despite i see it in the app GUI.
- Finally, i used a font i uploaded, but despite i see it well in the app GUI, i dont have it working in AM. is there a step to perform to have it, like including it into the zip resources or something ?
Thanks again for this great work !
Update : I just realised i had used the font in your app, but forgotten to install it into my system. Once done it works perfectly ! :)
-
Thanks for the feedback!
To do a background, you don't need to use a surface and can just use any image including just the default pixel.png by setting the color. You may have had an issue with the zorder, which confused me as well. The default is sets all objects to -1 zorder, which means to create the objects in the order you add them to the layout. That's what it *should* do, but there could be bugs. Though if you do modify zorders to force it, use a different one for each object to ensure they are drawn in the order you expect (higher number draws on top).
Right now, 16x9 is actually using a resolution of 1024x576. The idea was to design for the lowest resolution of that aspect and scale it up. That may not all be fully implemented, and I'll be working on what aspects/resolutions should be available soon. I think for now you could probably just design your 16x9 layout, then set the layout width and height to 1920x1080 and preserve_aspect_ratio to true under the Layout settings and that should work.
As for fonts, at least on Windows I think they should work without needing to install them. Let me know if your on a different OS.
-
On the RPi you don't need to install them either. Just need to be included in the theme.
Don't recall on the Mac though.
-
On the RPi you don't need to install them either. Just need to be included in the theme.
Don't recall on the Mac though.
They don't need to be in a specific folder or anything, right? I store them in a resources/ folder in the zip... but maybe it's a problem reading fonts from a zip or perhaps how the font is specified ( i.e. obj.font = 'MyFont' )? I know it works for me on Windows without installing them.
-
Can you explain what the page size is for?
I'm really struggling to get a vertical 600x800 layout working - any tips?
-
Can you explain what the page size is for?
I'm really struggling to get a vertical 600x800 layout working - any tips?
That is my fault! I didn't realize/forgot it is always defaulting to Standard 4x3 settings, so yeah it will definitely come out screwed up. I'll have a fix up later tonight to correct this. I'm also correcting my screwed up 16x9 resolution :)
If you mean the page size setting in Layouts, that is to set the number of entries to jump each time the "Next Page" or "Previous Page" button is pressed.
-
how do i set this up for my ....
Aspect Ratio. 5:4 " 1280 x 1024" Screen.
if not can you please add it ? this is what im using for my barcade thanks ....
their are a few themes i would like to redo in this scale...
-
how do i set this up for my ....
Aspect Ratio. 5:4 " 1280 x 1024" Screen.
if not can you please add it ? this is what im using for my barcade thanks ....
their are a few themes i would like to redo in this scale...
I will.. I'm still trying to determine what aspects should be included and how to handle additional custom aspects/resolutions. Is there a term for 5:4 - would anyone bother with 4:5? :P That should probably do it for common aspects, no?
I want to keep it is simple as possible to support as many aspects as possible. That's why I'd like to veer away from tons of resolutions - just scale larger/smaller for like-aspects. But I will also at some point add custom configurations as well.
-
There are a few ways I could see to handle resolutions dynamically:
scale to fill 100% (warping)
Scale up to height align left (content might letterbox on right or overflow right)
Scale up to width align top Of screen bottom might letterbox or overflow
Scale up to height align center (overflow or letterboxing on sides)
Scale up to width align vertical center (overflow or letterboxing on top/bottom)
Most of those could be pretty easy to handle with functions for handling x,y, width and height calculations based on a setting
-
Well, technically fe.layout.preserve_aspect_ratio already does that part. It will fit and letterbox based on your ScreenWidth/ScreenHeight and layout.width and layout.height settings. That's just a matter of if you should design a layout at the highest possible resolution and scale down, or the lowest possible and scale up. Ideally though, the purpose of designing in all aspects is you make sure your layout works with all of them, so no modifications needed :)
I'm more thinking about in the designer - should the creator be able to create any specific resolution they care about, then pick and choose the best fit for the users screen? Or force the designer to design at all aspects.. and non-matching would just use preserve_aspect_ratio. Or, perhaps when you select, say, 16x9 - you choose what resolution to design that aspect in?
-
My main point which I wasn't really clear about is that there are 5 basic scaling modes that would be pretty common, and it's probably best to leave it to the end user as to which they want to use.
The designer will at a baseline design to meet what they see to be the primary use case for themselves or the "client" (friend, compatriot, random web person they imagine using their stuff) first. Beyond that everything else is a nice-to-have. For the cases where the layout isn't thought out for the other cases, it's probably best left to the end user to decide how they want things to scale. Some might want it stretched full screen (damn the aspect ratio). Others fine with letter boxing. I personally loathe stretching, but in setting up a Pi for my buddy he wanted my Ol-Room style 4x3 layouts just stretched for his 16:9, rather than me setting up something else that actually fits correctly.
Some of the scaling also depends on whether the "live area" of content is tied to the positioning of background images or not making things much more complex to think about... in that sometimes parts would be appropriate to stretch and sometimes not.
Anyway, I obviously haven't thought it all through completely. :-) but I have been thinking about it in the context of making my own themes more flexible... and how I plan to approach it.
-
Cool. :o
-
Liquid8d-
Awesome work as always - where do you find the time :p
I think your preserve_aspect_ratio should work well enough for most 4x3, 16x9, and 5x4 layouts using a bottom up approach. Creating layouts in 640x480 or 800x600 then scaling up to 1080p probably works for a majority of the users.
Heck, I am still doing fill to screen manually in my layouts like robospin - which I assume your preserve_aspect does without the extra coding needed for defining coordinates with x and y etc... Should I switch?
But having precise ratios "if there is such a thing" is not a bad thing either especially for those OCD people out there. I think 4:3 is probably the most used followed by, 16:9, 5:3, 5:4, then 16:10.
-
Thanks for the feedback!
To do a background, you don't need to use a surface and can just use any image including just the default pixel.png by setting the color. You may have had an issue with the zorder, which confused me as well. The default is sets all objects to -1 zorder, which means to create the objects in the order you add them to the layout. That's what it *should* do, but there could be bugs. Though if you do modify zorders to force it, use a different one for each object to ensure they are drawn in the order you expect (higher number draws on top).
Right now, 16x9 is actually using a resolution of 1024x576. The idea was to design for the lowest resolution of that aspect and scale it up. That may not all be fully implemented, and I'll be working on what aspects/resolutions should be available soon. I think for now you could probably just design your 16x9 layout, then set the layout width and height to 1920x1080 and preserve_aspect_ratio to true under the Layout settings and that should work.
As for fonts, at least on Windows I think they should work without needing to install them. Let me know if your on a different OS.
Hello,
Abt windows font needing to be installed i think it is the case, as when i had not installed it i had default fonts, then as soon as i double clicked it to install it it worked perfectly.
I would suggest (i know it is easy to say and less when it is abt to implement it :)), that you could maybe use the sort of elements treeview to sort them according to a hierarchy.
I mean the ones you want to be in background you set them in first position (with something like + - buttons) and this way the zorder would be more pictured, as the different elements position in the treeview would show also the zorder position. i hope it makes sense, i m not even sure i can reread myself well :D.
Thank you !
-
I'm not sure on the font thing, because I know for sure I used some fonts that I did not install and they worked fine. I'll have to look into it further.
As for ordering, that sounds about right. Once I implement re-ordering objects, i'll revisit how to handle zorder :) It might be a few days before I get to do some more work on it..
-
Would there ever be an option to use a selector a bit like the nes mini themes people are making? Update I found that there is a default theme called Grid that shows off what I am talking about .
-
Would there ever be an option to use a selector a bit like the nes mini themes people are making? Update I found that there is a default theme called Grid that shows off what I am talking about .
Yes, possibly. Once I get the standard objects all working correctly, I can start adding other "objects" like a selector.
-
Would there ever be an option to use a selector a bit like the nes mini themes people are making? Update I found that there is a default theme called Grid that shows off what I am talking about .
Yes, possibly. Once I get the standard objects all working correctly, I can start adding other "objects" like a selector.
Nice can't wait :D I have a lot of theme ideas and without you they would be a nightmare to make. Keep up the amazing work
-
Could someone do a tutorial video on how to use this? i can't figure it out.
-
Could someone do a tutorial video on how to use this? i can't figure it out.
I am confused too. Maybe if there was a guide on what terms correspond with what objects?
-
If you can somehow include the new list module http://forum.attractmode.org/index.php?topic=1945.0 by ArcadeBliss into your design I think it would be great.
-
It's probably still gonna be a bit before I get this going any further - adding some additional modules is definitely a next step. It should be easy enough to get added though - at least initially with no live preview, since I'd have to "emulate" how it works in AM in the designer.
We've opened up some discussion, so I'm hoping this leads to some exciting new modules that can be used in the designer - including ArcadeBliss' fantastic work in that one.
-
How do i import my own back ground image? Never mind i figured it out. But hows do i get my 4:3 aspect ratio to 1024x768 in stead of 640x480?
-
Just played with this a bit, and what a great tool!
However, I have 2 questions at this point...
1) Is there a way to make a 4K res layout with AMbuilder? The one I made only displays in the upper left corner of my screen.
2) How do I display videos? I tried using the Art tool, and checking video related boxes, but I'm just seeing normal artwork in the actual layout.
-
liquid8d
I cannot thank you enough for this. I have tried several other layout apps and IMO, nothing has worked as well as this.
Thanks!
-
this is outstand. thank you so much. :)
-
I am playing around with AMbuilder, so far i am not very good at it.
Is there, or could you create some kind of tutorial.
I am trying to adapt my old Wahcade layouts to work with Attract mode.
-
I don't think he is working on this anymore :(MO
-
I am starting to get the hang of it.
I just adapted my first layout, looks promising.
-
just a heads up maybe its just me but the layouts i have made with am builder work great for a few months then they start to crash AM. dont know why and questions i have asked on here have gone unanswered... maybe it wont happen to you but it does happen to me. just a info bit. its a great app but he doesnt update it or answer any questions on it. good luck hope it works for you.
maybe im doing something wrong. idk... lol...
-
I am starting to get the hang of it.
I just adapted my first layout, looks promising.
When you say adapted , do you mean you can load in already made themes...i've just come across atract mode and it looks like it does everything i want
so i would like to learn the theming process... i've probably done themes for every other FE there is and never stuck with them
-
hey can anyone tell me how to show more than just one wheel when scrolling through the game list i want to have 3-5 showing like a listbox but with wheel art horizontally
-
I want so much to love this program. But no matter what I change, the net result is a menu window that only occupies the top left 1/4 of my screen.
I've tried varying resolutions, height, width. Nothing changes.
Has anyone made this program work properly? It seems like it's.....almost great. But I'm missing something.
Any help - hints, suggestions, sample files made with this, etc, greatly appreciated.
-
it was never finished......plus when you short hand it, is way less code, and makes cents..
-
It would be nice if someone would do a YouTube video tutorial on how to create a simple layout then we wouldn't need this program. Any one like to make a tutorial for us?
-
Great program but incomplete IMHO (or maybe I didn't understand something).
For some reason the outpout layout is tiny and sticks to the top left of the screen.
(https://www.cdlab.it/am.jpg)
I couldn't find any way to centre it and zoom it to make it occupy the whole screen while maintaining the aspect ratio.
I have a normal 40 inch TV and I want a 4:3 layout like Attrac-Man for example.
Has anyone succeeded?
Here is my layout.nut
///////////////////////////////////////
// Generated with AMBuilder 1.0
// https://github.com/liquid8d/am-builder
///////////////////////////////////////
//layout configuration
//fe.layout.width = 640
//fe.layout.height = 480
fe.layout.preserve_aspect_ratio = true
fe.layout.font = "Arial"
fe.layout.base_rotation = RotateScreen.None
fe.layout.toggle_rotation = RotateScreen.None
fe.layout.page_size = 10
// Stored Object Properties
local props = {"Standard (4x3)":{"AMImage1":{"x":0,"y":0,"width":640,"height":480,"visible":true,"rotation":0,"zorder":-1,"file_name":"stars.gif","preserve_aspect_ratio":false,"video_flags":0,"video_playing":false,"smooth":true,"trigger":Transition.ToNewSelection,"red":255,"green":255,"blue":255,"alpha":255,"origin_x":0,"origin_y":0,"subimg_x":0,"subimg_y":0,"subimg_width":0,"subimg_height":0,"skew_x":0,"skew_y":0,"pinch_x":0,"pinch_y":0,"index_offset":0,"filter_offset":0,"shader":""},"AMArtwork2":{"x":120,"y":0,"width":390,"height":300,"visible":true,"rotation":0,"zorder":-1,"file_name":"snap","preserve_aspect_ratio":true,"video_flags":0,"video_playing":false,"smooth":true,"trigger":Transition.ToNewSelection,"red":255,"green":255,"blue":255,"alpha":255,"origin_x":0,"origin_y":0,"subimg_x":0,"subimg_y":0,"subimg_width":0,"subimg_height":0,"skew_x":0,"skew_y":0,"pinch_x":0,"pinch_y":0,"index_offset":0,"filter_offset":0,"shader":""},"AMListBox3":{"x":120,"y":300,"width":390,"height":180,"visible":true,"rotation":0,"zorder":-1,"format_string":"[Title]","font":"Emulogic","charsize":12,"align":Align.Centre,"style":0,"rows":11,"red":255,"green":255,"blue":255,"alpha":255,"bg_red":0,"bg_green":0,"bg_blue":0,"bg_alpha":0,"sel_red":255,"sel_green":255,"sel_blue":0,"sel_alpha":255,"sel_style":0,"selbg_red":0,"selbg_green":0,"selbg_blue":255,"selbg_alpha":255,"shader":""}},"Standard Vert (3x4)":{"AMImage1":{"x":0,"y":0,"width":640,"height":480,"visible":true,"rotation":0,"zorder":-1,"file_name":"stars.gif","preserve_aspect_ratio":false,"video_flags":0,"video_playing":false,"smooth":true,"trigger":Transition.ToNewSelection,"red":255,"green":255,"blue":255,"alpha":255,"origin_x":0,"origin_y":0,"subimg_x":0,"subimg_y":0,"subimg_width":0,"subimg_height":0,"skew_x":0,"skew_y":0,"pinch_x":0,"pinch_y":0,"index_offset":0,"filter_offset":0,"shader":""},"AMArtwork2":{"x":120,"y":0,"width":390,"height":300,"visible":true,"rotation":0,"zorder":-1,"file_name":"snap","preserve_aspect_ratio":true,"video_flags":0,"video_playing":false,"smooth":true,"trigger":Transition.ToNewSelection,"red":255,"green":255,"blue":255,"alpha":255,"origin_x":0,"origin_y":0,"subimg_x":0,"subimg_y":0,"subimg_width":0,"subimg_height":0,"skew_x":0,"skew_y":0,"pinch_x":0,"pinch_y":0,"index_offset":0,"filter_offset":0,"shader":""},"AMListBox3":{"x":120,"y":300,"width":390,"height":180,"visible":true,"rotation":0,"zorder":-1,"format_string":"[Title]","font":"Emulogic","charsize":12,"align":Align.Centre,"style":0,"rows":11,"red":255,"green":255,"blue":255,"alpha":255,"bg_red":0,"bg_green":0,"bg_blue":0,"bg_alpha":0,"sel_red":255,"sel_green":255,"sel_blue":0,"sel_alpha":255,"sel_style":0,"selbg_red":0,"selbg_green":0,"selbg_blue":255,"selbg_alpha":255,"shader":""}},"SXGA (5x4)":{"AMImage1":{"x":0,"y":0,"width":640,"height":480,"visible":true,"rotation":0,"zorder":-1,"file_name":"stars.gif","preserve_aspect_ratio":false,"video_flags":0,"video_playing":false,"smooth":true,"trigger":Transition.ToNewSelection,"red":255,"green":255,"blue":255,"alpha":255,"origin_x":0,"origin_y":0,"subimg_x":0,"subimg_y":0,"subimg_width":0,"subimg_height":0,"skew_x":0,"skew_y":0,"pinch_x":0,"pinch_y":0,"index_offset":0,"filter_offset":0,"shader":""},"AMArtwork2":{"x":120,"y":0,"width":390,"height":300,"visible":true,"rotation":0,"zorder":-1,"file_name":"snap","preserve_aspect_ratio":true,"video_flags":0,"video_playing":false,"smooth":true,"trigger":Transition.ToNewSelection,"red":255,"green":255,"blue":255,"alpha":255,"origin_x":0,"origin_y":0,"subimg_x":0,"subimg_y":0,"subimg_width":0,"subimg_height":0,"skew_x":0,"skew_y":0,"pinch_x":0,"pinch_y":0,"index_offset":0,"filter_offset":0,"shader":""},"AMListBox3":{"x":120,"y":300,"width":390,"height":180,"visible":true,"rotation":0,"zorder":-1,"format_string":"[Title]","font":"Emulogic","charsize":12,"align":Align.Centre,"style":0,"rows":11,"red":255,"green":255,"blue":255,"alpha":255,"bg_red":0,"bg_green":0,"bg_blue":0,"bg_alpha":0,"sel_red":255,"sel_green":255,"sel_blue":0,"sel_alpha":255,"sel_style":0,"selbg_red":0,"selbg_green":0,"selbg_blue":255,"selbg_alpha":255,"shader":""}},"Wide (16x10)":{"AMImage1":{"x":0,"y":0,"width":640,"height":480,"visible":true,"rotation":0,"zorder":-1,"file_name":"stars.gif","preserve_aspect_ratio":false,"video_flags":0,"video_playing":false,"smooth":true,"trigger":Transition.ToNewSelection,"red":255,"green":255,"blue":255,"alpha":255,"origin_x":0,"origin_y":0,"subimg_x":0,"subimg_y":0,"subimg_width":0,"subimg_height":0,"skew_x":0,"skew_y":0,"pinch_x":0,"pinch_y":0,"index_offset":0,"filter_offset":0,"shader":""},"AMArtwork2":{"x":120,"y":0,"width":390,"height":300,"visible":true,"rotation":0,"zorder":-1,"file_name":"snap","preserve_aspect_ratio":true,"video_flags":0,"video_playing":false,"smooth":true,"trigger":Transition.ToNewSelection,"red":255,"green":255,"blue":255,"alpha":255,"origin_x":0,"origin_y":0,"subimg_x":0,"subimg_y":0,"subimg_width":0,"subimg_height":0,"skew_x":0,"skew_y":0,"pinch_x":0,"pinch_y":0,"index_offset":0,"filter_offset":0,"shader":""},"AMListBox3":{"x":120,"y":300,"width":390,"height":180,"visible":true,"rotation":0,"zorder":-1,"format_string":"[Title]","font":"Emulogic","charsize":12,"align":Align.Centre,"style":0,"rows":11,"red":255,"green":255,"blue":255,"alpha":255,"bg_red":0,"bg_green":0,"bg_blue":0,"bg_alpha":0,"sel_red":255,"sel_green":255,"sel_blue":0,"sel_alpha":255,"sel_style":0,"selbg_red":0,"selbg_green":0,"selbg_blue":255,"selbg_alpha":255,"shader":""}},"Wide Vert (10x16)":{"AMImage1":{"x":0,"y":0,"width":640,"height":480,"visible":true,"rotation":0,"zorder":-1,"file_name":"stars.gif","preserve_aspect_ratio":false,"video_flags":0,"video_playing":false,"smooth":true,"trigger":Transition.ToNewSelection,"red":255,"green":255,"blue":255,"alpha":255,"origin_x":0,"origin_y":0,"subimg_x":0,"subimg_y":0,"subimg_width":0,"subimg_height":0,"skew_x":0,"skew_y":0,"pinch_x":0,"pinch_y":0,"index_offset":0,"filter_offset":0,"shader":""},"AMArtwork2":{"x":120,"y":0,"width":390,"height":300,"visible":true,"rotation":0,"zorder":-1,"file_name":"snap","preserve_aspect_ratio":true,"video_flags":0,"video_playing":false,"smooth":true,"trigger":Transition.ToNewSelection,"red":255,"green":255,"blue":255,"alpha":255,"origin_x":0,"origin_y":0,"subimg_x":0,"subimg_y":0,"subimg_width":0,"subimg_height":0,"skew_x":0,"skew_y":0,"pinch_x":0,"pinch_y":0,"index_offset":0,"filter_offset":0,"shader":""},"AMListBox3":{"x":120,"y":300,"width":390,"height":180,"visible":true,"rotation":0,"zorder":-1,"format_string":"[Title]","font":"Emulogic","charsize":12,"align":Align.Centre,"style":0,"rows":11,"red":255,"green":255,"blue":255,"alpha":255,"bg_red":0,"bg_green":0,"bg_blue":0,"bg_alpha":0,"sel_red":255,"sel_green":255,"sel_blue":0,"sel_alpha":255,"sel_style":0,"selbg_red":0,"selbg_green":0,"selbg_blue":255,"selbg_alpha":255,"shader":""}},"HD (16x9)":{"AMImage1":{"x":0,"y":0,"width":640,"height":480,"visible":true,"rotation":0,"zorder":-1,"file_name":"stars.gif","preserve_aspect_ratio":false,"video_flags":0,"video_playing":false,"smooth":true,"trigger":Transition.ToNewSelection,"red":255,"green":255,"blue":255,"alpha":255,"origin_x":0,"origin_y":0,"subimg_x":0,"subimg_y":0,"subimg_width":0,"subimg_height":0,"skew_x":0,"skew_y":0,"pinch_x":0,"pinch_y":0,"index_offset":0,"filter_offset":0,"shader":""},"AMArtwork2":{"x":120,"y":0,"width":390,"height":300,"visible":true,"rotation":0,"zorder":-1,"file_name":"snap","preserve_aspect_ratio":true,"video_flags":0,"video_playing":false,"smooth":true,"trigger":Transition.ToNewSelection,"red":255,"green":255,"blue":255,"alpha":255,"origin_x":0,"origin_y":0,"subimg_x":0,"subimg_y":0,"subimg_width":0,"subimg_height":0,"skew_x":0,"skew_y":0,"pinch_x":0,"pinch_y":0,"index_offset":0,"filter_offset":0,"shader":""},"AMListBox3":{"x":120,"y":300,"width":390,"height":180,"visible":true,"rotation":0,"zorder":-1,"format_string":"[Title]","font":"Emulogic","charsize":12,"align":Align.Centre,"style":0,"rows":11,"red":255,"green":255,"blue":255,"alpha":255,"bg_red":0,"bg_green":0,"bg_blue":0,"bg_alpha":0,"sel_red":255,"sel_green":255,"sel_blue":0,"sel_alpha":255,"sel_style":0,"selbg_red":0,"selbg_green":0,"selbg_blue":255,"selbg_alpha":255,"shader":""}},"HD Vert (9x16)":{"AMImage1":{"x":0,"y":0,"width":640,"height":480,"visible":true,"rotation":0,"zorder":-1,"file_name":"stars.gif","preserve_aspect_ratio":false,"video_flags":0,"video_playing":false,"smooth":true,"trigger":Transition.ToNewSelection,"red":255,"green":255,"blue":255,"alpha":255,"origin_x":0,"origin_y":0,"subimg_x":0,"subimg_y":0,"subimg_width":0,"subimg_height":0,"skew_x":0,"skew_y":0,"pinch_x":0,"pinch_y":0,"index_offset":0,"filter_offset":0,"shader":""},"AMArtwork2":{"x":120,"y":0,"width":390,"height":300,"visible":true,"rotation":0,"zorder":-1,"file_name":"snap","preserve_aspect_ratio":true,"video_flags":0,"video_playing":false,"smooth":true,"trigger":Transition.ToNewSelection,"red":255,"green":255,"blue":255,"alpha":255,"origin_x":0,"origin_y":0,"subimg_x":0,"subimg_y":0,"subimg_width":0,"subimg_height":0,"skew_x":0,"skew_y":0,"pinch_x":0,"pinch_y":0,"index_offset":0,"filter_offset":0,"shader":""},"AMListBox3":{"x":120,"y":300,"width":390,"height":180,"visible":true,"rotation":0,"zorder":-1,"format_string":"[Title]","font":"Emulogic","charsize":12,"align":Align.Centre,"style":0,"rows":11,"red":255,"green":255,"blue":255,"alpha":255,"bg_red":0,"bg_green":0,"bg_blue":0,"bg_alpha":0,"sel_red":255,"sel_green":255,"sel_blue":0,"sel_alpha":255,"sel_style":0,"selbg_red":0,"selbg_green":0,"selbg_blue":255,"selbg_alpha":255,"shader":""}}}
// Find correct aspect
function findAspect( ratio ) {
if ( ratio == 1.77778 ) return "HD (16x9)"
else if ( ratio == 1.6 ) return "Wide (16x10)"
else if ( ratio == 1.33333 ) return "Standard (4x3)"
else if ( ratio == 1.25 ) return "SXGA (5x4)"
else if ( ratio == 0.625 ) return "Wide Vert (10x16)"
else if ( ratio == 0.5625 ) return "HD Vert (9x16)"
else if ( ratio == 0.75 ) return "Standard Vert (3x4)"
//use default aspect
print("Unrecognized or missing aspect, using default: Standard (4x3)")
return "Standard (4x3)"
}
local aspects = ["Standard (4x3)","Standard Vert (3x4)","SXGA (5x4)","Wide (16x10)","Wide Vert (10x16)","HD (16x9)","HD Vert (9x16)"]
local aspect = findAspect( ScreenWidth / ( ScreenHeight * 1.0 ) )
print( "Layout Aspect: " + aspect + "\n ")
// Create AM Objects
local AMImage1 = fe.add_image( "resources/" + props[aspect]["AMImage1"].file_name, -1, -1, 1, 1)
foreach( key, val in props[aspect]["AMImage1"] )
if ( key != "file_name" && key != "subimg_width" && key != "subimg_height" && key != "zorder" && key != "shader" )
try { AMImage1[key] = val } catch(e) { print("error setting property: " + key + "\n" ) }
local AMArtwork2 = fe.add_artwork( props[aspect]["AMArtwork2"].file_name, -1, -1, 1, 1)
foreach( key, val in props[aspect]["AMArtwork2"] )
if ( key != "file_name" && key != "subimg_width" && key != "subimg_height" && key != "zorder" && key != "shader" )
try { AMArtwork2[key] = val } catch(e) { print("error setting property: " + key + "\n" ) }
local AMListBox3 = fe.add_listbox( -1, -1, 1, 1)
foreach( key, val in props[aspect]["AMListBox3"] )
if ( key != "zorder" && key != "shader" )
try { AMListBox3[key] = val } catch(e) { print("error setting property: " + key + "\n" ) }
// Begin Triggers
/*
local triggers = [triggers]
fe.add_transition_callback(this, "on_transition")
fe.add_ticks_callback(this, "on_tick")
function on_transition( ttype, var, ttime ) {
return false
}
function on_tick( ttime ) {
}
*/
thats my wanted behaviour
(https://www.cdlab.it/wanted.jpg)
with font Emulogic.TTF
Thanks