Attract-Mode Support Forum
Attract-Mode Support => Themes => Topic started by: ArcadeBliss on October 27, 2017, 09:41:49 PM
-
What is this - Updated 11/28/2017
Conveyor Helper is a module that simplifies the use of the conveyor to make complicated game lists for your layout.
Main Features
- Create Vertical, Horizontal, Coverflow or Spinwheel lists - easy configuration options
- Use Game item design templates or completely customize your own
- Text fallback function – if artwork is not available show a text object with the name of the game
- Favorite game indicators – fully configurable
- Add standard image or a colored backgrounds , gloss overlays, and borders for all game items
- Customize the included template's text size and color
- Customize the included template's shown artwork
- Fade Gamelist after navigating to a new game
- Add a separate image or a colored background for the currently selected game
- progressively fade game items that are further away from the selected game item
- progressively scale the game item's size bigger or smaller as they are further away from the selected game item
- Comprehensive Readme and layout examples
How to Install and Use
- Extract the “zip” to the root of your AM folder.
- A new module and layout will be created in “layouts\conveyor_helper” and “modules\conveyor_helper”
- From your layout:
- Load the module: fe.load_module("conveyor_helper")
- Create a gamelist object: local yourGameListObject = MyGameList()
- Configure the gamelist – use built-in or custom templates
- Show the game list: yourGameListObject.show()
The layout has 4 examples: a vertical, horizontal, spinwheel, and spinwheel effects list - using template and customized game items
Thanks!
- to verion for planting the idea to make this module
- to the person I shamelessly ripped the favorite graphic
- to all that will give feedback to make this module even better
Resources
- Module and Example layout download zip: https://drive.google.com/file/d/0B6SHVZjz_r1fOUVTUmktUWF5blU/view?usp=sharing&resourcekey=0-sS24ZLQXLoW6GaNEgdzMzA (https://drive.google.com/file/d/0B6SHVZjz_r1fOUVTUmktUWF5blU/view?usp=sharing&resourcekey=0-sS24ZLQXLoW6GaNEgdzMzA)
- ReadMe: https://drive.google.com/file/d/0B6SHVZjz_r1feFFtUmZQNDlabWc/view?usp=sharing&resourcekey=0-3YfzSTD7ONeKj33G9bFajA (https://drive.google.com/file/d/0B6SHVZjz_r1feFFtUmZQNDlabWc/view?usp=sharing&resourcekey=0-3YfzSTD7ONeKj33G9bFajA)
- Video of the included examples: https://youtu.be/DZ-tMeU9B7A (https://youtu.be/DZ-tMeU9B7A)
- All Configuration Code Items:
// ----------- General List Options -----------
type = ch.Spinwheel; // OPTIONS: ch.Coverflow / ch.Spinwheel / ch.Linear_Vertical / ch.Linear_Horizontal
bend.direction = ch.Right; // OPTIONS: ch.Left / ch.Right
bend.gl_radius = fe.layout.height / 2; // OPTIONS: radius of the spinwheel in pixels
x = fe.layout.width / 2; // OPTIONS: top left x-coordinate if gamelist is linear or the center x-coordinate if a spinwheel or coverflow
y = fe.layout.height / 2; // OPTIONS: top left y-coordinate if gamelist is linear or the center y-coordinate if a spinwheel or coverflow
width = 270; // OPTIONS: linear game list total width in pixels
height = 0; // OPTIONS: linear list's height in pixels
ms_speed = 150; // OPTIONS: in milliseconds, sets the speed of the conveyor
fade_after_nav = 30; // OPTIONS: 0-255 Fades the entire gamelist after navigation to this value. set to 255 to disable fading
fade_delay = 5000; // the amount of time in milliseconds before the fade should start
fade_speed = 1; // the mulitplier controlling the speed of the fade
fade_selected = false; // OPTIONS: TRUE/FALSE fade selected game if gamelist fading is active
// ----------- Spinwheel options -----------
spinwheel.shape = 180; // OPTIONS: shape of the spinwheel arc in degrees eg: 270, 180, 360
spinwheel.rotate_items = true; // OPTIONS: true / false - Rotate the items along the spinwheel arc
spinwheel.startDegree = 90; // The degree on a circle to start drawing the spinwheel. From left to right 0= left, 90 = top, 180 = right, 270= bottom
spinwheel.effects.x = 1.00; // a number that changes the spinwheel algorithm to create cool effects
spinwheel.effects.y = 1.00; // a number that changes the spinwheel algorithm to create cool effects
// ----------- Linear List options -----------
linear.padding = 6; // the amount of padding in pixels between each gamelist item
// ----------- List Item Options -----------
item.contentTemplate = ch.Artwork_or_Text; // OPTIONS: ch.Artwork / ch.Text / ch.Artwork_and_Text / ch.Artwork_or_Text / ch.Flyer_and_Artwork / ch.Custom
item.count = 12; // OPTIONS: Total number of gamelist items to display
item.sizeScaling.low = 0.20; // OPTIONS: 0-100 Scaling size percentage to use for the item furthest from the selected item
item.sizeScaling.high = 0.80; // OPTIONS: 0-100 Scaling size percentage to use for item closest to the selected item
item.sizeScaling.currentlySelected = 1.0; // OPTIONS: 0-100 Scaling size percentage to use for the currently selected item
item.alphaScaling.low = 60; // OPTIONS: 0-100 Scaling size percentage to use for the item furthest from the selected item
item.alphaScaling.high = 210; // OPTIONS: 0-100 Scaling size percentage to use for item closest to the selected item
item.alphaScaling.currentlySelected = 255; // OPTIONS: 0-100 Scaling size percentage to use for the currently selected item
item.height = 500; // OPTIONS: Height of each gameList item in pixels before scaling - dynamic with linear vertical lists
item.width = 270 ; // OPTIONS: Width of each gameList item in pixels before scaling - dynamic with linear horizontal lists
item.margin.left = 10; // OPTION: bounding box left margin size for all images and text
item.margin.right = 10; // OPTION: bounding box right margin size for all images and text
item.margin.top = 10; // OPTION: bounding box top margin size for all images and text
item.margin.bottom = 10; // OPTION: bounding box bottom margin size for all images and text
// ----------- List Item Content: borders / backgrounds / gloss / colors -----------
item.toggle.backgroundColor = false; // if set to "TRUE" the game item background can be colored (use item.normal.color)
item.toggle.backgroundFile = false; // if set to "TRUE" the game item will use a file as the background (file: item_backgroundFile.png)
item.toggle.selectedBackgroundColor = false; // if set to "TRUE" the selected game item background can be colored (use item.currentlySelected.color)
item.toggle.selectedBackgroundFile = false; // if set to "TRUE" the selected game item will use a file as the background (file: item_selectedBackgroundFile.png)
item.toggle.glossOverlay = false; // if set to "TRUE" will overlay the game item with a gloss file (file: item_glossOverlay.png)
item.toggle.borderOverlay = false; // if set to "TRUE" will overlay the game item with a boarder file (file: item_borderOverlay.png)
item.normal.color.red = 128; // OPTIONS: background red color channel 0 - 255
item.normal.color.green = 0; // OPTIONS: background green color channel 0 - 255
item.normal.color.blue = 128; // OPTIONS: background blue color channel 0 - 255
item.currentlySelected.color.red=0; // OPTIONS: background red color channel 0 - 255
item.currentlySelected.color.green=128; // OPTIONS: background green color channel 0 - 255
item.currentlySelected.color.blue=128; // OPTIONS: background blue color channel 0 - 255
// ----------- List Item Content: Text -----------
text.message = "[Title]";
text.alignment = Align.Centre; // OPTIONS:left/right/center
text.normal.font = "Arial";
text.normal.size = 16; // OPTIONS: text font size for every gameList item
text.normal.color.red = 255; // OPTIONS: text font red color channel 0 - 255
text.normal.color.green = 255; // OPTIONS: text font green color channel 0 - 255
text.normal.color.blue = 128; // OPTIONS: text font blue color channel 0 - 255
text.currentlySelected.font = "Arial";
text.currentlySelected.size = 18; // OPTIONS: text font size for every gameList item
text.currentlySelected.color.red = 255; // OPTIONS: text font red color channel 0 - 255
text.currentlySelected.color.green = 255; // OPTIONS: text font green color channel 0 - 255
text.currentlySelected.color.blue = 128; // OPTIONS: text font blue color channel 0 - 255
// ----------- List Item Content: User Defined Artwork -----------
artwork.type = "wheel"; // OPTIONS: name of the artwork to use for the conveyour
artwork.type2 = "snap"; // OPTIONS: name of the artwork to use for the conveyour setting "Flyer_and_Artwork"
artwork.preserveAspect = false; // OPTIONS: true / false
// add_favoriteImage(path,x,y,width,height); // add a favorite image to the game item.
// ------------ Options when creating custom gameitem objects -------------
gi_textFallback = false; // When true, the game item will show the game name when no artwork is available
text_fallback_index = -1; // Only adjust if not working correctly. Set the index of the text object that should be shown when gi_textFallback=true
artwork_test_index = -1; // Only adjust if not working correctly. Set the index of the fe.image object which is to be tested when gi_textFallback = true
Change Log
2017.11.28
- [FEATURE]: added ch.Coverflow for coverflow lists and a new demo layout as an example
- [BUGFIX]: setting fade_afte_nav nolonger results in an endless loop
- [CHANGE]: refactored setLinearStops() (again) and LinearSlotItem.on_progress() to match lessons learned with setSpinWheelStops all list types not work almost exactly the same simplifying code
- [CHANGE]: spinwheel gamelist items are now centered in the middle
- [CHANGE]: moved origin settings to setOriginSettings() based upon gamelist type and bend direction
2017.11.19
- [FEATURE]: added the ability to fade the wheel after navigating use: fade_after_nav, fade_delay, fade_selected and fade_speed
- [FEATURE]: added the ability to change the navigation speed of the gamelist see: ms_speed
- [BUGFIX]: corrected vertical lists text scrolling in the wrong direction
- [BUGFIX]: fixed fading of the fallback text object in setSlotItemClass()
- [BUGFIX]: Ensure correct game is selected when item.count is an even number see: "sel_game_offset"
- [CHANGE]: refactored setLinearStops to match lessons learned with setSpinWheelStops
2017.11.15
- [BUGFIX]: Vertical lists now sort alphabetically from A to Z instead of Z to A - Thanks to BadFurDay for reporting this
- [CHANGE]: Updated all Demo Spinwheel layouts to start drawing from 90deg thus centering the selected item in the middle of the screen.
2017.11.14
- [BUGFIX]: Spinwheel now sorts alphabetically from A to Z instead of Z to A
2017.11.10
- [CHANGE]: moved the text from text only list out of the surface. Changes in: LinerSlotItem.constructor(), MyGameList.show(), setGameItemContent(), setSlotItemClass()
- [FEATURE]: added config item "text.word_wrap"
- [BUGFIX]: Spinwheel fixes. Selected game centered by default when selecting an odd number of items. Animation optimized
-
Welcome. You are the best.
Out of topic. Could you help to develop a virtual keyboard searching plugin like as "ArcadeBliss Cab Edition Theme"? Thanks :)
-
Would you like add display game name in the module? Thanks
-
Welcome. You are the best.
Out of topic. Could you help to develop a virtual keyboard searching plugin like as "ArcadeBliss Cab Edition Theme"? Thanks :)
My next project will be to complete the eye theme. After that I will so the plugin
-
Would you like add display game name in the module? Thanks
The text you circled is just a graphic border that I used for my own layouts. You can change the border graphic to be anything you want. If you want the graphic border to be dynamic, you would need to create a custom game item. See the layout - horzintal.nut for a custom game item example.
-
Here is an example with code to achieve a round conveyor:
// Include the converyour helper module
fe.load_module("conveyor_helper");
/*
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Spinwheel Demo
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
A Spinwheel List with all valid options
Omitted options will use the defaults
*/
// initialize the game list
local spinList = MyGameList();
// Configure spinlist options
// ----------- General List Options -----------
spinList.type = ch.Spinwheel; // OPTIONS: ch.Spinwheel / ch.Linear_Vertical / ch.Linear_Horizontal
spinList.bend.direction = ch.Right; // OPTIONS: ch.Left / ch.Right
spinList.bend.gl_radius = fe.layout.height / 2 -200; // OPTIONS: radius of the spinwheel in pixels
spinList.x = fe.layout.width / 2; // OPTIONS: top left x-coordinate if gamelist is linear or the center x-coordinate if a spinwheel
spinList.y = fe.layout.height / 2; // OPTIONS: top left y-coordinate if gamelist is linear or the center y-coordinate if a spinList
spinList.width = 270; // OPTIONS: linear game list total width in pixels
spinList.height = 0; // OPTIONS: linear list's height in pixels
// ----------- Spinwheel options -----------
spinList.spinwheel.shape = 360; // OPTIONS: shape of the spinwheel arc in degrees eg: 270, 180, 360
spinList.spinwheel.rotate_items = true; // OPTIONS: true / false - Rotate the items along the spinwheel arc
spinList.spinwheel.startDegree = 210; // The degree on a circle to start drawing the spinwheel. From left to right 0= left, 90 = top, 180 = right, 270= bottom
spinList.spinwheel.effects.x = 1.00; // a number that changes the spinwheel algorithm to create cool effects Default is 1
spinList.spinwheel.effects.y = 1.00; // a number that changes the spinList algorithm to create cool effects Default is 1
// ----------- List Item Options -----------
spinList.item.contentTemplate = ch.Artwork; // OPTIONS: ch.Artwork / ch.Text / ch.Artwork_and_Text / ch.Artwork_or_Text / ch.Flyer_and_Artwork
spinList.item.count = 12; // OPTIONS: Total number of gamelist items to display
spinList.item.sizeScaling.low = 1.00; // OPTIONS: 0-100 Scaling size percentage to use for the item furthest from the selected item
spinList.item.sizeScaling.high = 1.00; // OPTIONS: 0-100 Scaling size percentage to use for item closest to the selected item
spinList.item.sizeScaling.currentlySelected = 1.6; // OPTIONS: 0-100 Scaling size percentage to use for the currently selected item
spinList.item.alphaScaling.low = 150; // OPTIONS: 0-100 Scaling size percentage to use for the item furthest from the selected item
spinList.item.alphaScaling.high = 230; // OPTIONS: 0-100 Scaling size percentage to use for item closest to the selected item
spinList.item.alphaScaling.currentlySelected = 255;// OPTIONS: 0-100 Scaling size percentage to use for the currently selected item
spinList.item.height = 120; // OPTIONS: Height of each gameList item in pixels before scaling - dynamic with linear vertical lists
spinList.item.width = 270; // OPTIONS: Width of each gameList item in pixels before scaling - dynamic with linear horizontal lists
spinList.item.margin.left = 15; // OPTION: bounding box left margin size for all images and text
spinList.item.margin.right = 15; // OPTION: bounding box right margin size for all images and text
spinList.item.margin.top = 10; // OPTION: bounding box top margin size for all images and text
spinList.item.margin.bottom = 15; // OPTION: bounding box bottom margin size for all images and text
// ----------- List Item Content: borders / backgrounds / gloss / colors -----------
spinList.item.toggle.backgroundColor = false; // if set to "TRUE" the game item background can be colored (use item.normal.color)
spinList.item.toggle.backgroundFile = false; // if set to "TRUE" the game item will use a file as the background (file: item_backgroundFile.png)
spinList.item.toggle.selectedBackgroundColor = true; // if set to "TRUE" the selected game item background can be colored (use item.currentlySelected.color)
spinList.item.toggle.selectedBackgroundFile = false; // if set to "TRUE" the selected game item will use a file as the background (file: item_selectedBackgroundFile.png)
spinList.item.toggle.glossOverlay = false; // if set to "TRUE" will overlay the game item with a gloss file (file: item_glossOverlay.png)
spinList.item.toggle.borderOverlay = false; // if set to "TRUE" will overlay the game item with a boarder file (file: item_borderOverlay.png)
spinList.item.normal.color.red = 128; // OPTIONS: background red color channel 0 - 255
spinList.item.normal.color.green = 0; // OPTIONS: background green color channel 0 - 255
spinList.item.normal.color.blue = 128; // OPTIONS: background blue color channel 0 - 255
spinList.item.currentlySelected.color.red=0; // OPTIONS: background red color channel 0 - 255
spinList.item.currentlySelected.color.green=128; // OPTIONS: background green color channel 0 - 255
spinList.item.currentlySelected.color.blue=128; // OPTIONS: background blue color channel 0 - 255
// ----------- List Item Content: Text -----------
spinList.text.message = "[Title]";
spinList.text.alignment = Align.Centre; // OPTIONS:left/right/center
spinList.text.normal.font = "Arial Black";
spinList.text.normal.size = 16; // OPTIONS: text font size for every gameList item
spinList.text.normal.color.red = 255; // OPTIONS: text font red color channel 0 - 255
spinList.text.normal.color.green = 255; // OPTIONS: text font green color channel 0 - 255
spinList.text.normal.color.blue = 128; // OPTIONS: text font blue color channel 0 - 255
spinList.text.currentlySelected.font = "Arial";
spinList.text.currentlySelected.size = 18; // OPTIONS: text font size for every gameList item
spinList.text.currentlySelected.color.red = 128; // OPTIONS: text font red color channel 0 - 255
spinList.text.currentlySelected.color.green = 255; // OPTIONS: text font green color channel 0 - 255
spinList.text.currentlySelected.color.blue = 128; // OPTIONS: text font blue color channel 0 - 255
// ----------- List Item Content: User Defined Artwork -----------
spinList.artwork.type = "wheel"; // OPTIONS: name of the artwork to use for the conveyour
spinList.artwork.type2 = "snap"; // OPTIONS: name of the artwork to use for the conveyour setting "Flyer_and_Artwork"
spinList.artwork.preserveAspect = false; // OPTIONS: true / false
spinList.add_favoriteImage(fe.script_dir + "favorite.png",spinList.item.width -30,0,30,25);
if (spinList.item.contentTemplate == ch.Custom)
{
// Configure custom gameitem
local object = spinList;
local temp = null;
local x = 0
local y = 0
local w = object.item.width
local h = object.item.height
temp = object.add_customGameItemContent("artwork", "snap", x+w*0.40 ,y ,w*0.6 ,h * 0.80 );
temp.preserve_aspect_ratio = object.artwork.preserveAspect;
temp.trigger = Transition.EndNavigation;
temp = object.add_customGameItemContent("text", "[Title]", x, h*0.85, w, h * 0.2);
temp.font = object.text.normal.font;
temp.charsize = object.text.normal.size;
temp.align = object.text.alignment;
temp.set_rgb(object.text.normal.color.red, object.text.normal.color.green, object.text.normal.color.blue);
temp = object.add_customGameItemContent("artwork","wheel", x ,y ,w*0.35 ,h * 0.80 );
temp.preserve_aspect_ratio = object.artwork.preserveAspect;
temp.trigger = Transition.EndNavigation;
object.gi_textFallback = true;
}
// show the spinwheel list
spinList.show()
local w = fe.layout.width
local h = fe.layout.height
// show a video of the game and set the shader
local temp = fe.add_artwork( "snap", w,h, 640,480);
temp.preserve_aspect_ratio = true;
temp.origin_x = 320;
temp.origin_y = 240;
temp.x = w /2;
temp.y = h /2;
temp.trigger = Transition.EndNavigation;
local sh = fe.add_shader( Shader.VertexAndFragment, "shaders/crt.vert", "shaders/crt.frag" );
sh.set_param( "rubyInputSize", 400, 300 );
sh.set_param( "rubyOutputSize", ScreenWidth, ScreenHeight );
sh.set_param( "rubyTextureSize", 320, 240 );
sh.set_texture_param("rubyTexture");
temp.shader = sh;
//add tvframe to the video
temp = fe.add_image("TVframe.png",w,h, 640,480);
temp.preserve_aspect_ratio = true;
temp.origin_x = 320;
temp.origin_y = 240;
temp.x = w /2;
temp.y = h /2;
-
Here is a vertical list using only text for the game names
// Include the converyour helper module
fe.load_module("conveyor_helper");
/*
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Vertical List Demo
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
A vertical List with all valid options
Omitted options will use the defaults
*/
// initialize the vertical list
local vList = MyGameList();
// ----------- General List Options -----------
vList.type = ch.Linear_Vertical; // OPTIONS: ch.Spinwheel / ch.Linear_Vertical / ch.Linear_Horizontal
vList.bend.direction = ch.Right; // OPTIONS: ch.Left / ch.Right
vList.x = 0; // OPTIONS: top left x-coordinate if gamelist is linear or the center x-coordinate if a spinwheel
vList.y = -120; // OPTIONS: top left y-coordinate if gamelist is linear or the center y-coordinate if a spinwheel
vList.width = fe.layout.width; // OPTIONS: linear game list total width in pixels
vList.height = fe.layout.height+120*2; // OPTIONS: linear list's height in pixels
// ----------- Linear List options -----------
vList.linear.padding = 5; // the amount of padding in pixels between each gamelist item
// ----------- List Item Options -----------
vList.item.contentTemplate = ch.Text; // OPTIONS: ch.Artwork / ch.Text / ch.Artwork_and_Text / ch.Artwork_or_Text / ch.Flyer_and_Artwork
vList.item.count = 21; // OPTIONS: Total number of gamelist items to display
vList.item.sizeScaling.low = 0.60; // OPTIONS: 0-100 Scaling size percentage to use for the item furthest from the selected item
vList.item.sizeScaling.high = 0.80; // OPTIONS: 0-100 Scaling size percentage to use for item closest to the selected item
vList.item.sizeScaling.currentlySelected = 1.00; // OPTIONS: 0-100 Scaling size percentage to use for the currently selected item
vList.item.alphaScaling.low = 150; // OPTIONS: 0-100 Scaling size percentage to use for the item furthest from the selected item
vList.item.alphaScaling.high = 255; // OPTIONS: 0-100 Scaling size percentage to use for item closest to the selected item
vList.item.alphaScaling.currentlySelected = 255; // OPTIONS: 0-100 Scaling size percentage to use for the currently selected item
vList.item.height = 40; // OPTIONS: Height of each gameList item in pixels before scaling - dynamic with linear vertical lists
vList.item.width = 600; // OPTIONS: Width of each gameList item in pixels before scaling - dynamic with linear horizontal lists
vList.item.margin.left = 0; // OPTION: bounding box left margin size for all images and text
vList.item.margin.right = 0; // OPTION: bounding box right margin size for all images and text
vList.item.margin.top = 0; // OPTION: bounding box top margin size for all images and text
vList.item.margin.bottom = 0; // OPTION: bounding box bottom margin size for all images and text
// ----------- List Item Content: borders / backgrounds / gloss / colors -----------
vList.item.toggle.backgroundColor = true; // if set to "TRUE" the game item background can be colored (use item.normal.color)
vList.item.toggle.backgroundFile = false; // if set to "TRUE" the game item will use a file as the background (file: item_backgroundFile.png)
vList.item.toggle.selectedBackgroundColor = true; // if set to "TRUE" the selected game item background can be colored (use item.currentlySelected.color)
vList.item.toggle.selectedBackgroundFile = false; // if set to "TRUE" the selected game item will use a file as the background (file: item_selectedBackgroundFile.png)
vList.item.toggle.glossOverlay = false; // if set to "TRUE" will overlay the game item with a gloss file (file: item_glossOverlay.png)
vList.item.toggle.borderOverlay = false; // if set to "TRUE" will overlay the game item with a boarder file (file: item_borderOverlay.png)
vList.item.normal.color.red = 0; // OPTIONS: background red color channel 0 - 255
vList.item.normal.color.green = 0; // OPTIONS: background green color channel 0 - 255
vList.item.normal.color.blue = 255; // OPTIONS: background blue color channel 0 - 255
vList.item.currentlySelected.color.red=255; // OPTIONS: background red color channel 0 - 255
vList.item.currentlySelected.color.green=0; // OPTIONS: background green color channel 0 - 255
vList.item.currentlySelected.color.blue=0; // OPTIONS: background blue color channel 0 - 255
// ----------- List Item Content: Text -----------
vList.text.message = "[Title]";
vList.text.alignment = Align.Centre; // OPTIONS:left/right/center
vList.text.normal.font = "Arial";
vList.text.normal.size = 24; // OPTIONS: text font size for every gameList item
vList.text.normal.color.red = 255; // OPTIONS: text font red color channel 0 - 255
vList.text.normal.color.green = 255; // OPTIONS: text font green color channel 0 - 255
vList.text.normal.color.blue = 255; // OPTIONS: text font blue color channel 0 - 255
vList.text.currentlySelected.font = "Arial";
vList.text.currentlySelected.size = 18; // OPTIONS: text font size for every gameList item
vList.text.currentlySelected.color.red = 128; // OPTIONS: text font red color channel 0 - 255
vList.text.currentlySelected.color.green = 255; // OPTIONS: text font green color channel 0 - 255
vList.text.currentlySelected.color.blue = 128; // OPTIONS: text font blue color channel 0 - 255
// ----------- List Item Content: User Defined Artwork -----------
vList.artwork.type = "wheel"; // OPTIONS: name of the artwork to use for the conveyour
vList.artwork.type2 = "snap"; // OPTIONS: name of the artwork to use for the conveyour setting "Flyer_and_Artwork"
vList.artwork.preserveAspect = false; // OPTIONS: true / false
vList.add_favoriteImage(fe.script_dir + "favorite.png",vList.item.width -30,0,30,25);
// show the vertical list
vList.show();
local w = fe.layout.width
local h = fe.layout.height
// show a video of the game and set the shader
local temp = fe.add_artwork( "snap", w,h, 400,300);
temp.preserve_aspect_ratio = true;
temp.origin_x = 200;
temp.origin_y = 150;
temp.x = w /2;
temp.y = h /2;
temp.trigger = Transition.EndNavigation;
local sh = fe.add_shader( Shader.VertexAndFragment, "shaders/crt.vert", "shaders/crt.frag" );
sh.set_param( "rubyInputSize", 400, 300 );
sh.set_param( "rubyOutputSize", ScreenWidth, ScreenHeight );
sh.set_param( "rubyTextureSize", 320, 240 );
sh.set_texture_param("rubyTexture");
temp.shader = sh;
//Show wheel artwork
local temp = fe.add_artwork( "wheel", w,h, 400,0);
temp.preserve_aspect_ratio = true;
temp.origin_x = 200;
temp.x = w /2;
temp.y = h /2 + 150;
temp.trigger = Transition.EndNavigation;
//add tvframe to the video
temp = fe.add_image("TVframe.png",w,h, 400,300);
temp.preserve_aspect_ratio = true;
temp.origin_x = 200;
temp.origin_y = 150;
temp.x = w /2;
temp.y = h /2;
-
this, is some great work....this will help me in some great new themes...thank you
will be testing tonight.
-
Thanks for creating this.
I'm glad to see that my ENDLESS list of features to implement didn't scare you after all :D
-
Awesome!!! Thanks.
-
had to take a break because of life issues. The Eye is on its way
-
I'm trying to suss this out myself but struggling, any chance you get get the conveyor to appear like the robospin conveyor? e.g.
(http://i.imgur.com/qOsTWaa.jpg?1)
Also any chance to add the option to fade out the wheel? I also really like the idea, if possible, to fade out all the wheel except the one highlighted, if it could have those two options would be sweet. :)
-
I'm trying to suss this out myself but struggling, any chance you get get the conveyor to appear like the robospin conveyor? e.g.
(http://i.imgur.com/qOsTWaa.jpg?1)
Edit: Something else I'm noticing as a difference between this and the robospin/standard conveyor is that the list goes the wrong way and means the buttons seem back to front. Anyway to reverse this?
Also any chance to add the option to fade out the wheel? I also really like the idea, if possible, to fade out all the wheel except the one highlighted, if it could have those two options would be sweet. :)
-
yes i noticed this to,, you can go up ,, then down , but you hold the key,, and it zooms up ..both dir.
other than that...tit's
-
I'm trying to suss this out myself but struggling, any chance you get get the conveyor to appear like the robospin conveyor? e.g.
(http://i.imgur.com/qOsTWaa.jpg?1)
Also any chance to add the option to fade out the wheel? I also really like the idea, if possible, to fade out all the wheel except the one highlighted, if it could have those two options would be sweet. :)
This is possible. Just use the following settings:
item.alphaScaling.low = 60; // OPTIONS: 0-100 Scaling size percentage to use for the item furthest from the selected item
item.alphaScaling.high = 60; // OPTIONS: 0-100 Scaling size percentage to use for item closest to the selected item
item.alphaScaling.currentlySelected = 255; // OPTIONS: 0-100 Scaling size percentage to use for the currently selected item
-
well i have to chime in once moor just to say you have done an amazing job,,
you have made it 2-easy..
after fiddling for a bought an 15 min was able to update my fry theme, and the wheel is what it needed!
just throw my wheel.nut in any theme you want, and call it from the layout "fe.do_nut("wheel.nut");"
here is what it looks like adding it quickly and switching Right to Left, and screen placement, easy thanks to
you....peace
youtube = https://youtu.be/tell2dGGosw (https://youtu.be/tell2dGGosw)
haven't even got to the grafix yet that will be fun,
-
I'm trying to suss this out myself but struggling, any chance you get get the conveyor to appear like the robospin conveyor? e.g.
Also any chance to add the option to fade out the wheel? I also really like the idea, if possible, to fade out all the wheel except the one highlighted, if it could have those two options would be sweet. :)
This is possible. Just use the following settings:
item.alphaScaling.low = 60; // OPTIONS: 0-100 Scaling size percentage to use for the item furthest from the selected item
item.alphaScaling.high = 60; // OPTIONS: 0-100 Scaling size percentage to use for item closest to the selected item
item.alphaScaling.currentlySelected = 255; // OPTIONS: 0-100 Scaling size percentage to use for the currently selected item
Sweet, I've got the wheel looking very similar to the robospin, just wondering about the possibility of reversing the order and the way the wheel spins to match how the robospin works. Also any chance on getting the wheels to fade? I have code that works with the robospin wheel but I'm guessing won't work on this.
Edit: In case it helps here is the code:
//for fading of the wheel
first_tick <- 0;
stop_fading <- true;
wheel_fade_ms <- 0;
try { wheel_fade_ms = my_config["wheel_fade_ms"].tointeger(); } catch ( e ) { }
//Wheel fading
if ( wheel_fade_ms > 0 )
{
function wheel_fade_transition( ttype, var, ttime )
{
if ( ttype == Transition.ToNewSelection || ttype == Transition.ToNewList )
first_tick = -1;
}
fe.add_transition_callback( "wheel_fade_transition" );
function wheel_alpha( ttime )
{
if (first_tick == -1)
stop_fading = false;
if ( !stop_fading )
{
local elapsed = 0;
if (first_tick > 0)
elapsed = ttime - first_tick;
local count = conveyor.m_objs.len();
for (local i=0; i < count; i++)
{
if ( elapsed > wheel_fade_ms)
conveyor.m_objs.alpha = 0;
else
//uses hardcoded default alpha values does not use wheel_a
//4 = middle one -> full alpha others use 80
if (i == 4)
conveyor.m_objs.alpha = (255 * (wheel_fade_ms - elapsed)) / wheel_fade_ms;
else
conveyor.m_objs.alpha = (80 * (wheel_fade_ms - elapsed)) / wheel_fade_ms;
}
if ( elapsed > wheel_fade_ms)
{
//So we don't keep doing the loop above when all values have 0 alpha
stop_fading = true;
}
if (first_tick == -1)
first_tick = ttime;
}
}
fe.add_ticks_callback( "wheel_alpha" );
}
-
possible bug ,, anyone that could test ..thanks
when running the module. my animation is now not running ok in some themes weird .
it will kick in after going up or down a bunch, and just stick..
ill show you.... thanks
you tube..= https://youtu.be/cdXZWTrMW_o (https://youtu.be/cdXZWTrMW_o)
allmost forgot im talking abought the little pointy hand anime
local flx = fe.layout.width;
local fly = fe.layout.height;
local flw = fe.layout.width;
local flh = fe.layout.height;
fe.load_module("animate");
local rarrow = fe.add_image("images/cursor.png", flx*0.999, fly*0.500, flw*0.045, flh*0.045 );
local rarrow_move_cfg = {
when =Transition.ToNewSelection ,
property = "x",
start = flx*1.970,
end = flx*0.945,
time = 600,
//loop=true,
}
animation.add( PropertyAnimation( rarrow, rarrow_move_cfg ) );
-
Send me you layout so I can try something if that is ok?
-
FIXed......
thanks,,https://youtu.be/RH1o7JX_-Uk (https://youtu.be/RH1o7JX_-Uk)
ok,,,ill pm you right now .....
also Happy Halloween ;D
update... it's not the module... for some reason running the anima through donuts ,,it dont like
so now iv moved the code back to the original layout and killed the donut..and now its working..
fe.do_nut("wheel.nut");
local rarrow = fe.add_image("images/cursor.png", flx*0.999, fly*0.500, flw*0.045, flh*0.045 );
local rarrow_move_cfg = {
when =Transition.ToNewSelection ,
property = "x",
start = flx*1.970,
end = flx*0.945,
time = 600,
//loop=true,
}
animation.add( PropertyAnimation( rarrow, rarrow_move_cfg ) );
//fe.do_nut("scripts/finger.nut");
sorry for the false alarm, and for the offer of help!
-
my pleasure
-
Is there anyway to change the order of the games and the direction the wheel scrolls? Both are currently the opposite to how the robospin wheel would work. Thanks.
-
I need you to elaborate what you mean:
- if you are using a spinwheel and you want to change the direction the wheel flows. it can be done with these commands:
spinList.type = ch.Spinwheel; // OPTIONS: ch.Spinwheel / ch.Linear_Vertical / ch.Linear_Horizontal
spinList.bend.direction = ch.Right; // OPTIONS: ch.Left / ch.Right
spinList.bend.gl_radius = fe.layout.height * 0.3; // OPTIONS: radius of the spinwheel in pixels
spinList.x = fe.layout.width / 2; // OPTIONS: top left x-coordinate if gamelist is linear or the center x-coordinate if a spinwheel
spinList.y = fe.layout.height / 2; // OPTIONS: top left y-coordinate if gamelist is linear or the center y-coordinate if a spinList
spinList.width = 270; // OPTIONS: linear game list total width in pixels
spinList.height = 0; // OPTIONS: linear list's height in pixels
// ----------- Spinwheel options -----------
spinList.spinwheel.shape = 180; // OPTIONS: shape of the spinwheel arc in degrees eg: 270, 180, 360
spinList.spinwheel.rotate_items = true; // OPTIONS: true / false - Rotate the items along the spinwheel arc
spinList.spinwheel.startDegree = 90; // The degree on a circle to start drawing the spinwheel. From left to right 0= left, 90 = top, 180 = right, 270= bottom
spinList.spinwheel.effects.x = 1.00; // a number that changes the spinwheel algorithm to create cool effects Default is 1
spinList.spinwheel.effects.y = 1.00; // a number that changes the spinList algorithm to create cool effects Default is 1
spinList.bend.direction - will change the direction the wheel is drawn...
[/size]spinList.spinwheel.shape - will control the arc of the wheel. If you need something more specific, just let me know what you need and I will have a look.
-
I need you to elaborate what you mean:
I'll try what you've suggested but I'll also try explain what I mean:
So the robospin wheel lists the items like so:
ZY
ZZ
AA <
AB
AC
If I push the down button it moves to this:
ZZ
AA
AB <
AC
AD
Your wheel lists the items like this:
AC
AB
AA <
ZZ
ZY
And if you push down it moves to this:
AD
AC
AB <
AA
ZZ
When I actually explain it out this way, the down button moves the wheel in the right way down the list (AA to AB) but the order of the wheel just needs reversing/flipping. Hope this makes sense, if not I'll try take pictures/videos of what I mean. Thanks for your help.
Edit: Just to note as I think this might be effecting this, it happens with the option spinList.bend.direction = ch.Left;
-
So, this is what I have with the following settings:
//Wheel
// initialize the game list
local spinList = MyGameList();
// Configure spinlist options
// ----------- General List Options -----------
spinList.type = ch.Spinwheel; // OPTIONS: ch.Spinwheel / ch.Linear_Vertical / ch.Linear_Horizontal
spinList.bend.direction = ch.Left; // OPTIONS: ch.Left / ch.Right
spinList.bend.gl_radius = fe.layout.height / 1; // OPTIONS: radius of the spinwheel in pixels
spinList.x = fe.layout.width / 0.69; // OPTIONS: top left x-coordinate if gamelist is linear or the center x-coordinate if a spinwheel
spinList.y = fe.layout.height / 1.88; // OPTIONS: top left y-coordinate if gamelist is linear or the center y-coordinate if a spinList
spinList.width = 270; // OPTIONS: linear game list total width in pixels
spinList.height = 0; // OPTIONS: linear list's height in pixels
// ----------- Spinwheel options -----------
spinList.spinwheel.shape = 180; // OPTIONS: shape of the spinwheel arc in degrees eg: 270, 180, 360
spinList.spinwheel.rotate_items = true; // OPTIONS: true / false - Rotate the items along the spinwheel arc
spinList.spinwheel.startDegree = 82.8; // The degree on a circle to start drawing the spinwheel. From left to right 0= left, 90 = top, 180 = right, 270= bottom
spinList.spinwheel.effects.x = 1.00; // a number that changes the spinwheel algorithm to create cool effects Default is 1
spinList.spinwheel.effects.y = 1.00; // a number that changes the spinList algorithm to create cool effects Default is 1
// ----------- List Item Options -----------
spinList.item.contentTemplate = ch.Artwork; // OPTIONS: ch.Artwork / ch.Text / ch.Artwork_and_Text / ch.Artwork_or_Text / ch.Flyer_and_Artwork
spinList.item.count = 24; // OPTIONS: Total number of gamelist items to display
spinList.item.sizeScaling.low = 0.80; // OPTIONS: 0-100 Scaling size percentage to use for the item furthest from the selected item
spinList.item.sizeScaling.high = 0.80; // OPTIONS: 0-100 Scaling size percentage to use for item closest to the selected item
spinList.item.sizeScaling.currentlySelected = 1.0; // OPTIONS: 0-100 Scaling size percentage to use for the currently selected item
spinList.item.alphaScaling.low = 60; // OPTIONS: 0-100 Scaling size percentage to use for the item furthest from the selected item
spinList.item.alphaScaling.high = 60; // OPTIONS: 0-100 Scaling size percentage to use for item closest to the selected item
spinList.item.alphaScaling.currentlySelected = 255;// OPTIONS: 0-100 Scaling size percentage to use for the currently selected item
spinList.item.height = 250; // OPTIONS: Height of each gameList item in pixels before scaling - dynamic with linear vertical lists
spinList.item.width = 500; // OPTIONS: Width of each gameList item in pixels before scaling - dynamic with linear horizontal lists
spinList.item.margin.left = 15; // OPTION: bounding box left margin size for all images and text
spinList.item.margin.right = 15; // OPTION: bounding box right margin size for all images and text
spinList.item.margin.top = 10; // OPTION: bounding box top margin size for all images and text
spinList.item.margin.bottom = 15; // OPTION: bounding box bottom margin size for all images and text
// ----------- List Item Content: Text -----------
spinList.text.message = "[Title]";
spinList.text.alignment = Align.Centre; // OPTIONS:left/right/center
spinList.text.normal.font = "Arial Black";
spinList.text.normal.size = 40; // OPTIONS: text font size for every gameList item
spinList.text.normal.color.red = 255; // OPTIONS: text font red color channel 0 - 255
spinList.text.normal.color.green = 255; // OPTIONS: text font green color channel 0 - 255
spinList.text.normal.color.blue = 128; // OPTIONS: text font blue color channel 0 - 255
spinList.text.currentlySelected.font = "Arial";
spinList.text.currentlySelected.size = 40; // OPTIONS: text font size for every gameList item
spinList.text.currentlySelected.color.red = 128; // OPTIONS: text font red color channel 0 - 255
spinList.text.currentlySelected.color.green = 255; // OPTIONS: text font green color channel 0 - 255
spinList.text.currentlySelected.color.blue = 128; // OPTIONS: text font blue color channel 0 - 255
// ----------- List Item Content: User Defined Artwork -----------
spinList.artwork.type = "wheel"; // OPTIONS: name of the artwork to use for the conveyour
spinList.artwork.preserveAspect = true; // OPTIONS: true / false
spinList.add_favoriteImage(fe.script_dir + "favourite.png",spinList.item.width -30,20,30,25);
if (spinList.item.contentTemplate == ch.Custom)
{
// Configure custom gameitem
local object = spinList;
local temp = null;
local x = 0
local y = 0
local w = object.item.width
local h = object.item.height
temp = object.add_customGameItemContent("artwork", x+w*0.40 ,y ,w*0.6 ,h * 0.80 );
temp.preserve_aspect_ratio = object.artwork.preserveAspect;
temp.trigger = Transition.EndNavigation;
temp = object.add_customGameItemContent("text", "[Title]", x, h*0.85, w, h * 0.2);
temp.font = object.text.normal.font;
temp.charsize = object.text.normal.size;
temp.align = object.text.alignment;
temp.set_rgb(object.text.normal.color.red, object.text.normal.color.green, object.text.normal.color.blue);
temp = object.add_customGameItemContent("artwork","wheel", x ,y ,w*0.35 ,h * 0.80 );
temp.preserve_aspect_ratio = object.artwork.preserveAspect;
temp.trigger = Transition.EndNavigation;
object.gi_textFallback = true;
}
// show the spinwheel list
spinList.show()
As you can see the list is on Assault Course and above it is Astro Attack. This game is the next one down in the list:
Artura (E);Artura (E);Amstrad CPC;;;;;;;;;;;;;;
Assault Course (E);Assault Course (E);Amstrad CPC;;;;;;;;;;;;;;
Astro Attack (E);Astro Attack (E);Amstrad CPC;;;;;;;;;;;;;;
...so it should be underneath Assault Course and Artura should be above it instead. Basically from top to bottom the games go from Z to A where on the robospin layouts it goes from top to bottom A to Z. I hope this makes sense, having a setting to swap this would be awesome as I wouldn't be surprised if some people prefer it this way.
-
OOOOhhhhhhhhh. The game list is in reverse alphabetical order when bend = ch.Left is active.
OK. I will have a look to see about changing this. Thanks for the detailed explanation. Stay
Edit: Ok I fixed it. Redownload it and let me know if this works for you.
-
OOOOhhhhhhhhh. The game list is in reverse alphabetical order when bend = ch.Left is active.
OK. I will have a look to see about changing this. Thanks for the detailed explanation. Stay
Edit: Ok I fixed it. Redownload it and let me know if this works for you.
It goes the right way but the game that is highlighted is actually the one below the one you're on. On the screenshot the game that will play, showing the title on the bottom bar and the right box art is Rick Dangerous but the wheel is highlighting Rick Dangerous 2.
-
Ok, I do not have this error. Please download the module again and see if the error is still there. Also, let me know if this happens in the demo layouts that I provided. It does not happen on my system. Also, please make sure you change this setting to 90: "spinList.spinwheel.startDegree = 82.8; "
-
this code should still work. you just need to prefix "conveyor.m_objs.alpha" with the variable of your game list e.g.: spinList.conveyor.m_objs.alpha
//for fading of the wheel
first_tick <- 0;
stop_fading <- true;
wheel_fade_ms <- 0;
try { wheel_fade_ms = my_config["wheel_fade_ms"].tointeger(); } catch ( e ) { }
//Wheel fading
if ( wheel_fade_ms > 0 )
{
function wheel_fade_transition( ttype, var, ttime )
{
if ( ttype == Transition.ToNewSelection || ttype == Transition.ToNewList )
first_tick = -1;
}
fe.add_transition_callback( "wheel_fade_transition" );
function wheel_alpha( ttime )
{
if (first_tick == -1)
stop_fading = false;
if ( !stop_fading )
{
local elapsed = 0;
if (first_tick > 0)
elapsed = ttime - first_tick;
local count = conveyor.m_objs.len();
for (local i=0; i < count; i++)
{
if ( elapsed > wheel_fade_ms)
conveyor.m_objs[i].alpha = 0;
else
//uses hardcoded default alpha values does not use wheel_a
//4 = middle one -> full alpha others use 80
if (i == 4)
conveyor.m_objs[i].alpha = (255 * (wheel_fade_ms - elapsed)) / wheel_fade_ms;
else
conveyor.m_objs[i].alpha = (80 * (wheel_fade_ms - elapsed)) / wheel_fade_ms;
}
if ( elapsed > wheel_fade_ms)
{
//So we don't keep doing the loop above when all values have 0 alpha
stop_fading = true;
}
if (first_tick == -1)
first_tick = ttime;
}
}
fe.add_ticks_callback( "wheel_alpha" );
}
-
I fixed the wrong game issue, I changed the "spinList.item.count = 24; // OPTIONS: Total number of gamelist items to display" to an odd number and it works just fine. I can't get the wheel fade to work though, might this be something you would be interested in adding to the module itself? Brilliant work btw, don't think I said that yet.
-
Thanks for the compliment. Let me know in what Layout you're using it in. I like to see some real world uses. Regarding the fade. You would like something like this setting correct?
after_nav_fade = 255// fades the entire gamelist to the entered alpha value after navigation endes. Changes back to item.alphascaling during navigation
This is not implemented but if it helps, I will look into it. I need to put out a bugfix regarding vertical lists with text names.
-
Thanks for the compliment. Let me know in what Layout you're using it in. I like to see some real world uses. Regarding the fade. You would like something like this setting correct?
after_nav_fade = 255// fades the entire gamelist to the entered alpha value after navigation endes. Changes back to item.alphascaling during navigation
This is not implemented but if it helps, I will look into it. I need to put out a bugfix regarding vertical lists with text names.
That would be what I'm after, would also love the option that the highlighted games wheel doesn't fade so you're left with only that wheel on screen once faded, that would be sweet. The fade script I was using had an option to select how long the fade would take which was quite useful too.
-
Thanks for the great module ArcadeBliss!
I see that your update fixed some issues including showing the correct (highlighted) game in the spinwheel layout. The other layouts (like vertical) still show an incorrect game, it's off by one selection (like the spinwheel layout was before the update).
-
Thanks for the great module ArcadeBliss!
I see that your update fixed some issues including showing the correct (highlighted) game in the spinwheel layout. The other layouts (like vertical) still show an incorrect game, it's off by one selection (like the spinwheel layout was before the update).
Changing this "spinList.item.count = 24; // OPTIONS: Total number of gamelist items to display" to an odd number seemed to fix that for me, at least with the arched wheel setting, might be worth a try maybe.
-
Thanks for the great module ArcadeBliss!
I see that your update fixed some issues including showing the correct (highlighted) game in the spinwheel layout. The other layouts (like vertical) still show an incorrect game, it's off by one selection (like the spinwheel layout was before the update).
Changing this "spinList.item.count = 24; // OPTIONS: Total number of gamelist items to display" to an odd number seemed to fix that for me, at least with the arched wheel setting, might be worth a try maybe.
Thanks for the tip, I did see it in your earlier post. Yes, changing from "vList.item.count = 8;" to "vList.item.count = 9;" fixes the vertical layout to display the correct game. I simply pointed this out in case AradeBliss wanted to correct the other layouts in the module so others don't have issues.
-
Thanks for the great module ArcadeBliss!
I see that your update fixed some issues including showing the correct (highlighted) game in the spinwheel layout. The other layouts (like vertical) still show an incorrect game, it's off by one selection (like the spinwheel layout was before the update).
Changing this "spinList.item.count = 24; // OPTIONS: Total number of gamelist items to display" to an odd number seemed to fix that for me, at least with the arched wheel setting, might be worth a try maybe.
Thanks for the tip, I did see it in your earlier post. Yes, changing from "vList.item.count = 8;" to "vList.item.count = 9;" fixes the vertical layout to display the correct game. I simply pointed this out in case AradeBliss wanted to correct the other layouts in the module so others don't have issues.
I see your point and I totally missed it tbh, with even numbers it should still highlight the correct game so suspect this will be a bug he wants to fix.
-
Yes it is a bug I want to fix. Thanks for testing. Here is what is coming in the next release
2017.11.19
- [FEATURE]: added the ability to fade the wheel after navigating use: fade_after_nav, fade_delay, fade_selected, and fade_speed
- [FEATURE]: added the ability to change the navigation speed of the gamelist see: ms_speed
- [BUGFIX]: corrected vertical lists text scrolling in the wrong direction
- [BUGFIX]: fixed fading of the fallback text object in setSlotItemClass()
- [BUGFIX]: Ensure correct game is selected when item.count is an even number see: "sel_game_offset"
- [CHANGE]: refactored setLinearStops to match lessons learned with setSpinWheelStops
-
Thanks for the compliment. Let me know in what Layout you're using it in. I like to see some real world uses. Regarding the fade. You would like something like this setting correct?
after_nav_fade = 255// fades the entire gamelist to the entered alpha value after navigation endes. Changes back to item.alphascaling during navigation
This is not implemented but if it helps, I will look into it. I need to put out a bugfix regarding vertical lists with text names.
That would be what I'm after, would also love the option that the highlighted games wheel doesn't fade so you're left with only that wheel on screen once faded, that would be sweet. The fade script I was using had an option to select how long the fade would take which was quite useful too.
so I implemented this. To adjust how long it takes to fade I have add two options - the delay before the fade should begin, and the fade speed. The fade speed is a multiplier so you will need to play with it untill it is as slow or fast as you want.
Cheers.
-
Thanks for the compliment. Let me know in what Layout you're using it in. I like to see some real world uses. Regarding the fade. You would like something like this setting correct?
after_nav_fade = 255// fades the entire gamelist to the entered alpha value after navigation endes. Changes back to item.alphascaling during navigation
This is not implemented but if it helps, I will look into it. I need to put out a bugfix regarding vertical lists with text names.
That would be what I'm after, would also love the option that the highlighted games wheel doesn't fade so you're left with only that wheel on screen once faded, that would be sweet. The fade script I was using had an option to select how long the fade would take which was quite useful too.
so I implemented this. To adjust how long it takes to fade I have add two options - the delay before the fade should begin, and the fade speed. The fade speed is a multiplier so you will need to play with it untill it is as slow or fast as you want.
Cheers.
Great new but it isn't working for me, I've added the following code to the General List Options after updating the module and the wheel along with any code below it doesn't show:
spinList.ms_speed = 150; // OPTIONS: in milliseconds, sets the speed of the conveyor
spinList.fade_after_nav = 0; // OPTIONS: 0-255 Fades the entire gamelist after navigation to this value. set to 255 to disable fading
spinList.fade_delay = 5000; // the amount of time in milliseconds before the fade should start
spinList.fade_speed = 1; // the mulitplier controlling the speed of the fade
spinList.fade_selected = false; // OPTIONS: TRUE/FALSE fade selected game if gamelist fading is active
Something I'm doing wrong?
-
@ArcadeBliss - Did you update the original zip file in the first post? I don't see the changes you mention and the newest files in there are dated 11/15. Thanks.
-
@ArcadeBliss - Did you update the original zip file in the first post? I don't see the changes you mention and the newest files in there are dated 11/15. Thanks.
I sure did forget to attach it. When I get home, I'll reupload it.
-
uploaded a new version and added a new game list type: coverflow!
2017.11.28
- [FEATURE]: added ch.Coverflow for coverflow lists and a new demo layout as an example
- [BUGFIX]: setting fade_afte_nav nolonger results in an endless loop
- [CHANGE]: refactored setLinearStops() (again) and LinearSlotItem.on_progress() to match lessons learned with setSpinWheelStops all list types not work almost exactly the same simplifying code
- [CHANGE]: spinwheel gamelist items are now centered in the middle
- [CHANGE]: moved origin settings to setOriginSettings() based upon gamelist type and bend direction
-
The fade is working brilliant, thanks a lot for implementing it. One slight request with it though, would it be possible to have the fade start when the layout starts up alongside it fade after the navigation? This could maybe even be another option if people prefer the list to show when they start the layout.
-
The fade is working brilliant, thanks a lot for implementing it. One slight request with it though, would it be possible to have the fade start when the layout starts up alongside it fade after the navigation? This could maybe even be another option if people prefer the list to show when they start the layout.
I added this request to my list.
-
Q: im testing your new addon of coverflow, and im
getting this quick flash of the last position at the end of each transition.
i am on the latest am build, and plenty of power..
any idea what could be causing this? thanks
youtube = https://youtu.be/COGaVw5r-1c (https://youtu.be/COGaVw5r-1c)
-
turn off the fade and let me know your results.
-
cList.fade_selected = false;
or
cList.fade_selected = true;
is not making a difrence.
so then i slode it down a bit but same thing.."cList.ms_speed = 1250;"
but now it is easer to see..
youtube= https://youtu.be/8Z0pBCd99V4 (https://youtu.be/8Z0pBCd99V4)
if your not getting this ,, then it's got to be on my end
it would be nioce if more peaple were testing it to to get some feedback..but that will take some time.
-
this is what it looks like here: https://youtu.be/zNJ83-g52_4 (https://youtu.be/zNJ83-g52_4)
-
@jedione & ArcadeBliss - I see the delay/hesitation/flicker/flash that jedione describes when using coverflow on my under powered lower resolution laptop. Jedione if you make your "flyer" artwork unavailable, the default settings switch to text with a generic background which doesn't have the same issue. Maybe a resolution problem? Hope this helps.
@ArcadeBliss - Please provide a generic (unbranded) wheel frame. I see your point on branding your code but it would be nice for us non-artistic types to be able to use it on our cabinets. Maybe default your code to your branded frame but also include an unbranded frame we can choose via the layout.nut options or file renaming.
@ArcadeBliss - Anyway to tie this into the layout design project here http://forum.attractmode.org/index.php?topic=1729.0 ? It might be nice for non-coders.
@ArcadeBliss - Thanks for all of your work! It's great and I'm happy to see you active again on the forum.
-
Here are my answers:
@jedione & ArcadeBliss - I see the delay/hesitation/flicker/flash that jedione describes when using coverflow on my under powered lower resolution laptop. Jedione if you make your "flyer" artwork unavailable, the default settings switch to text with a generic background which doesn't have the same issue. Maybe a resolution problem? Hope this helps.
AB: OK
@ArcadeBliss - Please provide a generic (unbranded) wheel frame. I see your point on branding your code but it would be nice for us non-artistic types to be able to use it on our cabinets. Maybe default your code to your branded frame but also include an unbranded frame we can choose via the layout.nut options or file renaming.
AB: you can use anything you want. just put the appropiate named png in your layouts folder and converyor_helper will use it. Look at page 8 of the readme for all file names e.g. to change the bezel the name of the file to put in your layout folder is: file: item_borderOverlay.png)
@ArcadeBliss - Anyway to tie this into the layout design project here http://forum.attractmode.org/index.php?topic=1729.0 (http://forum.attractmode.org/index.php?topic=1729.0) ? It might be nice for non-coders.
AB: Liquid and I are already talking in the chat server. I am helping him where I can - but he is a much better coder than I
@ArcadeBliss - Thanks for all of your work! It's great and I'm happy to see you active again on the forum.
AB: Thanks! good to be back!
-
@jedione & ArcadeBliss - I see the delay/hesitation/flicker/flash that jedione describes when using coverflow on my under powered lower resolution laptop. Jedione if you make your "flyer" artwork unavailable, the default settings switch to text with a generic background which doesn't have the same issue. Maybe a resolution problem? Hope this helps.
I get this flicker of the previous wheel before it changes to the new one. From what I've noticed I think it is something in the fade doing this as it will only happen while the fade is still going. Once the fade is done and I move the wheel this doesn't happen. Also any update on getting the fade to work when the layout is loaded?
-
Messing with the next idea , create a "hyperspin-like" wheel who adds a diferent wheel background depending on wichi system is selected.
Also diferent fonts :D
Can this be done in some way?
This is what I made for sega genesis with the basic layout:
(https://i.imgur.com/IafTZxq.png)
(https://i.imgur.com/3x6IIYV.png)
Ok I get it :) I´ll post the code later
-
FWIW... I've made a couple layouts (geared toward low-res arcade machines) using the cover-flow option of this mod...
You can see the result here...
First is my 2nd Neo-Geo theme... I figured the cover-flow option would work GREAT for mini marquees... I think I was right...
https://youtu.be/97vCLhusGS4
Next I wanted to see how the performance was using video snaps... well, the results speaks for itself...
https://youtu.be/a8HSKWQr5zw
-
FWIW... I've made a couple layouts (geared toward low-res arcade machines) using the cover-flow option of this mod...
You can see the result here...
First is my 2nd Neo-Geo theme... I figured the cover-flow option would work GREAT for mini marquees... I think I was right...
https://youtu.be/97vCLhusGS4
Next I wanted to see how the performance was using video snaps... well, the results speaks for itself...
https://youtu.be/a8HSKWQr5zw
Love the neogeo theme , good job
UPDATE: Only can make the theme change the "Emulator" wheel background when I start the layout , this is what I made on the "conveyor_helper.nut"
Lines 1989 - 1990
filename = "fe.script_dir "+fe.game_info(Info.Emulator)+".png";
filename = (fileExist(filename)) ? filename : amPath + "modules/conveyour_helper/"+fe.game_info(Info.Emulator)+".png";
So I need to check this everty time I change from one emulator to another.
-
Anyone can help me to show "[Tittle]" always , not only when "artwork" "flyer" is missing?
(https://i.imgur.com/ThHRS55.png)
UPDATE: I found a solution
setup_items.surface.objects[key].visible = true; // hide the original text located in setup_items.surface.container
-
Hi,
The flicker happens when you change to next/previous game whilst the fade transition time is not sitll completed.
Is this a bug?
-
Hi,
The flicker happens when you change to next/previous game whilst the fade transition time is not sitll completed.
Is this a bug?
Well I do not know if it will be a bug or not, but it hurts the eyes.
It could not be fixed?
-
Hello everyone, I have a question, I want to leave my list of games upside down as in the picture, does anyone have any idea how to do it?
(http://i63.tinypic.com/iw2ff9.png)
help me please!
-
maybe, put it on it's one surface, then do a rotate of the surface like you can do with an image.
-
maybe, put it on it's one surface, then do a rotate of the surface like you can do with an image.
please talk about the code
-
When I use artwork type "snap", it selects the movie files within the same folder and not the static files. How do I force it to select the static files and not the movie files?
Thanks!
-
When I use artwork type "snap", it selects the movie files within the same folder and not the static files. How do I force it to select the static files and not the movie files?
Thanks!
AttractMode will always choose a video over an image when both are available unless the layout is written to change this default function. You can read about this in the "Artwork Selection Order" here https://github.com/mickelson/attract/blob/v2.4.0/Readme.md (https://github.com/mickelson/attract/blob/v2.4.0/Readme.md)
The solution is to store the static snaps in a separate folder. You can then just point to the folder with the static snaps. If you want to show your static images when videos aren't available then you can put the paths to both directories in your emulator.cfg file (separated by a semicolon).
Anther solution is to modify the layout.nut file to use logic to change the default AttractMode behavior.
-
Hmmm... the behavior I am looking for is on display in the SDArcade layout. Perhaps I'll poke around it to see how they do it...
I guess I COULD separate the snaps from the vids, but if I want to release this layout I can't expect others to do the same...
-
OK... I am using the ch.Coverflow option... and the videos are showing in all windows. This isn't a big problem except when exiting games... for some reason, the system decides to play the audio for all videos running at the same time. As soon as i move one spot, it kills the audio on all non selected videos and runs as normal...
My plan was to change the coverflow to snaps (non-video)... then after x number of seconds drop a video over the snap only in the center.
HOWEVER... inside the conveyor helper module I find this code...
// turn off video playing if the current game item is not the selected one. (test using the alpha channel for background selected image)
video_playing[video_status].call(this);
}
This is exactly what I am trying to do... how do I implement this?
NOTE: You're going to have to talk down to me... I am merely a hack when it comes to coding... but a semi-decent hack...
;)
-
Just a word @ArcadeBliss, thanks for this, its awsome :)
I'm not a dev, oh no, i will try to implemente to modify the robospin layout to fit my vertical build.
I will show you if i will arrived somewhere :)
And @Verion Too.
And for everyone who made Attract-mode and layout stuff. You made a great job guys. Thanks a lot.
-
Thank you for this awesome module.
I have noticed an issue / bug with it though:
The "item.toggle.BackgroundFile" setting will add a background to all wheel items, including the currently selected wheel item.
The "item.toggle.selectedBackgroundFile" will add a background to the currently selected wheel item, but also all other wheel items as well.
From how I read the descriptions, it is not suppose to work like this. In the above you should be able to set different background files, or for instance, have a background on only the currently selected wheel item.
Edit:
Same issue / bug happens with the background color options:
The "item.toggle.backgroundColor" setting will add a background to all wheel items, including the currently selected wheel item.
The "item.toggle.selectedBackgroundColor" will add a background to the currently selected wheel item, but also all other wheel items as well.
From how I read the descriptions, it is not suppose to work like this. In the above you should be able to set different background files, or for instance, have a background on only the currently selected wheel item.
I can't quite see where the problem is in the conveyor_helper.nut file though, or how one would go about fixing this?
The "selected wheel item" options are the ones that I would really like to use. I spent a few hours working on some nice background / border files that I have now found I can't use on only the currently selected wheel item.
I would also like to request that the vertical wheel gets an bend.direction = ch.Center (or Centre) setting option so that we could enlarge the selected wheel item whilst keeping the list centered instead of it bending off to the left or right.
Other errors in the documentation:
Scaling Size described as a percentage 0-100, when the setting is actually in decimal form so .50 being 50% or 2.00 being 200% (yes, you can go past 100 percent which is another error in documentation).
Alpha Scaling described as a percentage 0-100, when the setting is actually in alpha scale form so 255 being 100% visible or 130 being around 50% visible or 0 being completely transparent.
-
In regards to the background file usage on wheel list items, I am reading the area of the code where these are being applied.
It reads to me as if every list item is allocated two background files and the true / false parameter set by the user is only setting if they are *visible* or not.
function setGameItemContent()
{
/*
Create the configured gamelist item contents - text and artwork, borders, colors, etc.
Templates are defined here e.g. ch.Artwork_and_Text to determine how to do the gameitem setup
All images and settings are added to the object variables: runtime.surface.container,
runtime.surface.objects, and runtime.surface.objectTypes. These variables are passed to the conveyor slot
and used during the on_progress function.
!! Every GameItem contains two background images (1)the normal selected background and (2)the selected game background
This is a flawed setup because what is happening when you change the setting to *true*, is that the background file is visible on all items regardless of your intended preference.
The remainder of the code if anyone thinks there is a way to fix this?
*/
// ensure runtime.surface.container has the correct width and height;
setSurfaceContainer();
// configure margins for artwork and other items
local x = item.margin.left;
local y = item.margin.top;
local w = runtime.surface.container.width - item.margin.left - item.margin.right;
local h = runtime.surface.container.height - item.margin.top - item.margin.bottom;
local temp = null; // temp to configure item settings
local filename = null;
// Configure game item background and color
if (item.toggle.backgroundFile)
{
/*
add normal game item background file
and optionally colorize it
*/
filename = fe.script_dir + "item_backgroundFile.png";
filename = (fileExist(filename)) ? filename : amPath + "modules/conveyour_helper/item_backgroundFile.png";
temp = add_gameItemsContent("background",filename,x,y,w,h);
if (item.toggle.backgroundColor)
{
temp.red = item.normal.color.red;
temp.green = item.normal.color.green;
temp.blue = item.normal.color.blue;
}
} else {
/*
just add a blank background and color it
if a background file is not being used
*/
filename = amPath + "modules/conveyour_helper/ui_backgroundColor.png";
temp = add_gameItemsContent("background",filename,x,y,w,h);
temp.red = item.normal.color.red;
temp.green = item.normal.color.green;
temp.blue = item.normal.color.blue;
temp.visible = (item.toggle.backgroundColor);
}
// Configure selected game item background and color
if (item.toggle.selectedBackgroundFile)
{
/*
add selected game item background file
and optionally colorize it
*/
filename = fe.script_dir + "item_selectedBackgroundFile.png";
filename = (fileExist(filename)) ? filename : amPath + "modules/conveyour_helper/item_selectedBackgroundFile.png";
temp = add_gameItemsContent("selected",filename,x,y,w,h);
if (item.toggle.selectedBackgroundColor)
{
temp.red = item.currentlySelected.color.red;
temp.green = item.currentlySelected.color.green;
temp.blue = item.currentlySelected.color.blue;
}
} else {
/*
just add a blank background and color it
if a background file is not being used
*/
filename = amPath + "modules/conveyour_helper/ui_backgroundColor.png";
temp = add_gameItemsContent("selected",filename,x,y,w,h);
temp.red = item.currentlySelected.color.red;
temp.green = item.currentlySelected.color.green;
temp.blue = item.currentlySelected.color.blue;
temp.visible = (item.toggle.selectedBackgroundColor);
}