Attract-Mode Support Forum

Attract-Mode Support => Themes => Topic started by: ArcadeBliss on October 27, 2017, 09:41:49 PM

Title: Conveyor_Helper Module for Themers: Updated - 11/28/2017
Post 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
How to Install and Use
The layout has 4 examples: a vertical, horizontal, spinwheel, and spinwheel effects list - using template and customized game items

Thanks!
Resources
Code: [Select]
      // ----------- 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
Code: [Select]

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

Title: Re: Conveyor_Helper Module for Themers
Post by: kent79 on October 27, 2017, 10:19:11 PM
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  :)
Title: Re: Conveyor_Helper Module for Themers
Post by: kent79 on October 27, 2017, 10:57:24 PM
Would you like add display game name in the module? Thanks
Title: Re: Conveyor_Helper Module for Themers
Post by: ArcadeBliss on October 28, 2017, 01:37:19 AM
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
Title: Re: Conveyor_Helper Module for Themers
Post by: ArcadeBliss on October 28, 2017, 01:39:11 AM
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.
Title: Re:Round Conveyor Example
Post by: ArcadeBliss on October 28, 2017, 03:59:02 AM
Here is an example with code to achieve a round conveyor:


Code: [Select]


// 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;
Title: Vertical list with only text example
Post by: ArcadeBliss on October 28, 2017, 04:12:54 AM
Here is a vertical list using only text for the game names


Code: [Select]


// 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;
Title: Re: Conveyor_Helper Module for Themers
Post by: jedione on October 28, 2017, 06:50:05 AM
this, is some great work....this will help me in some great new themes...thank you
will be testing tonight.
Title: Re: Conveyor_Helper Module for Themers
Post by: verion on October 28, 2017, 11:18:20 AM
Thanks for creating this.
I'm glad to see that my ENDLESS list of features to implement didn't scare you after all :D
Title: Re: Conveyor_Helper Module for Themers
Post by: qqplayer on October 28, 2017, 01:07:00 PM
Awesome!!! Thanks.
Title: Re: Conveyor_Helper Module for Themers
Post by: ArcadeBliss on October 29, 2017, 01:48:47 PM
had to take a break because of life issues. The Eye is on its way
Title: Re: Conveyor_Helper Module for Themers
Post by: BadFurDay on October 29, 2017, 04:12:29 PM
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.  :)
Title: Re: Conveyor_Helper Module for Themers
Post by: BadFurDay on October 29, 2017, 04:48:03 PM
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.  :)
Title: Re: Conveyor_Helper Module for Themers
Post by: jedione on October 29, 2017, 06:45:45 PM
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
Title: Re: Conveyor_Helper Module for Themers
Post by: ArcadeBliss on October 30, 2017, 12:07:52 AM
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

Title: Re: Conveyor_Helper Module for Themers
Post by: jedione on October 30, 2017, 12:23:38 PM
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,   

Title: Re: Conveyor_Helper Module for Themers
Post by: BadFurDay on October 30, 2017, 12:43:55 PM
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" );
}
Title: Re: Conveyor_Helper Module for Themers
Post by: jedione on October 30, 2017, 05:06:30 PM
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

Code: [Select]
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 ) );

Title: Re: Conveyor_Helper Module for Themers
Post by: ArcadeBliss on October 30, 2017, 09:34:57 PM
Send me you layout so I can try something if that is ok?
Title: Re: Conveyor_Helper Module for Themers
Post by: jedione on October 31, 2017, 07:29:31 AM
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!
Title: Re: Conveyor_Helper Module for Themers
Post by: ArcadeBliss on November 03, 2017, 01:23:28 AM
my pleasure
Title: Re: Conveyor_Helper Module for Themers
Post by: BadFurDay on November 11, 2017, 09:41:30 AM
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.
Title: Re: Conveyor_Helper Module for Themers
Post by: ArcadeBliss on November 13, 2017, 04:17:42 AM
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:


Code: [Select]

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.
Title: Re: Conveyor_Helper Module for Themers
Post by: BadFurDay on November 13, 2017, 02:07:13 PM
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;
Title: Re: Conveyor_Helper Module for Themers: Updated - 11/10/2017
Post by: BadFurDay on November 13, 2017, 04:13:40 PM
So, this is what I have with the following settings:


Quote
//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:

Quote
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.
Title: Re: Conveyor_Helper Module for Themers: Updated - 11/10/2017
Post by: ArcadeBliss on November 14, 2017, 05:17:31 AM
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.
Title: Re: Conveyor_Helper Module for Themers: Updated - 11/10/2017
Post by: BadFurDay on November 14, 2017, 01:59:34 PM
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.
Title: Re: Conveyor_Helper Module for Themers: Updated - 11/14/2017
Post by: ArcadeBliss on November 15, 2017, 01:31:33 AM
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; "
Title: Re: Conveyor_Helper Module for Themers: Updated - 11/15/2017
Post by: ArcadeBliss on November 15, 2017, 01:58:42 AM
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

Code: [Select]
//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" );
}
Title: Re: Conveyor_Helper Module for Themers: Updated - 11/15/2017
Post by: BadFurDay on November 15, 2017, 04:59:55 PM
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.
Title: Re: Conveyor_Helper Module for Themers: Updated - 11/15/2017
Post by: ArcadeBliss on November 17, 2017, 10:48:50 AM
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?


Code: [Select]
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.
Title: Re: Conveyor_Helper Module for Themers: Updated - 11/15/2017
Post by: BadFurDay on November 17, 2017, 12:34:44 PM
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?


Code: [Select]
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.
Title: Re: Conveyor_Helper Module for Themers: Updated - 11/15/2017
Post by: progets on November 17, 2017, 01:05:58 PM
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).
Title: Re: Conveyor_Helper Module for Themers: Updated - 11/15/2017
Post by: BadFurDay on November 17, 2017, 01:40:10 PM
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.
Title: Re: Conveyor_Helper Module for Themers: Updated - 11/15/2017
Post by: progets on November 17, 2017, 01:56:36 PM
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.
Title: Re: Conveyor_Helper Module for Themers: Updated - 11/15/2017
Post by: BadFurDay on November 17, 2017, 05:13:14 PM
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.
Title: Re: Conveyor_Helper Module for Themers: Updated - 11/15/2017
Post by: ArcadeBliss on November 19, 2017, 10:59:41 AM
Yes it is a bug I want to fix. Thanks for testing. Here is what is coming in the next release
Code: [Select]
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
Title: Re: Conveyor_Helper Module for Themers: Updated - 11/19/2017
Post by: ArcadeBliss on November 19, 2017, 11:51:59 AM
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?


Code: [Select]
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.


Title: Re: Conveyor_Helper Module for Themers: Updated - 11/19/2017
Post by: BadFurDay on November 19, 2017, 02:25:43 PM
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?


Code: [Select]
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?
Title: Re: Conveyor_Helper Module for Themers: Updated - 11/19/2017
Post by: progets on November 19, 2017, 09:38:13 PM
@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.
Title: Re: Conveyor_Helper Module for Themers: Updated - 11/19/2017
Post by: ArcadeBliss on November 24, 2017, 05:19:45 AM
@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.
Title: Re: Conveyor_Helper Module for Themers: Updated - 11/28/2017
Post by: ArcadeBliss on November 28, 2017, 08:00:38 PM
uploaded a new version and added a new game list type: coverflow!

Code: [Select]
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


Title: Re: Conveyor_Helper Module for Themers: Updated - 11/28/2017
Post by: BadFurDay on November 29, 2017, 11:13:06 AM
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.
Title: Re: Conveyor_Helper Module for Themers: Updated - 11/28/2017
Post by: ArcadeBliss on November 29, 2017, 12:12:46 PM
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.
Title: Re: Conveyor_Helper Module for Themers: Updated - 11/28/2017
Post by: jedione on November 30, 2017, 07:42:47 AM
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)
Title: Re: Conveyor_Helper Module for Themers: Updated - 11/28/2017
Post by: ArcadeBliss on November 30, 2017, 12:41:49 PM
turn off the fade and let me know your results.
Title: Re: Conveyor_Helper Module for Themers: Updated - 11/28/2017
Post by: jedione on November 30, 2017, 07:09:39 PM
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.
Title: Re: Conveyor_Helper Module for Themers: Updated - 11/28/2017
Post by: ArcadeBliss on November 30, 2017, 08:34:44 PM
this is what it looks like here: https://youtu.be/zNJ83-g52_4 (https://youtu.be/zNJ83-g52_4)
Title: Re: Conveyor_Helper Module for Themers: Updated - 11/28/2017
Post by: progets on December 01, 2017, 12:21:57 AM
@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.

Title: Re: Conveyor_Helper Module for Themers: Updated - 11/28/2017
Post by: ArcadeBliss on December 01, 2017, 02:50:44 AM
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!
Title: Re: Conveyor_Helper Module for Themers: Updated - 11/28/2017
Post by: BadFurDay on December 19, 2017, 02:53:30 PM
@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?
Title: Re: Conveyor_Helper Module for Themers: Updated - 11/28/2017
Post by: qqplayer on April 19, 2018, 12:57:55 PM
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
Title: Re: Conveyor_Helper Module for Themers: Updated - 11/28/2017
Post by: FrizzleFried on April 19, 2018, 01:24:04 PM
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




Title: Re: Conveyor_Helper Module for Themers: Updated - 11/28/2017
Post by: qqplayer on April 19, 2018, 01:40:27 PM
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

Code: [Select]
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.
Title: Re: Conveyor_Helper Module for Themers: Updated - 11/28/2017
Post by: qqplayer on May 13, 2018, 03:51:41 AM
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

Code: [Select]
setup_items.surface.objects[key].visible = true; // hide the original text located in setup_items.surface.container
Title: Re: Conveyor_Helper Module for Themers: Updated - 11/28/2017
Post by: joaopassarini on May 19, 2018, 08:09:21 AM
Hi,

The flicker happens when you change to next/previous game whilst the fade transition time is not sitll completed.
Is this a bug?
Title: Re: Conveyor_Helper Module for Themers: Updated - 11/28/2017
Post by: iOtero on June 08, 2018, 05:08:21 AM
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?
Title: Re: Conveyor_Helper Module for Themers: Updated - 11/28/2017
Post by: arthurvalenca on September 21, 2018, 11:46:24 AM
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!
Title: Re: Conveyor_Helper Module for Themers: Updated - 11/28/2017
Post by: jedione on September 21, 2018, 12:37:51 PM
maybe, put it on it's one surface, then do a rotate of the surface  like you can do with an image.
Title: Re: Conveyor_Helper Module for Themers: Updated - 11/28/2017
Post by: arthurvalenca on September 21, 2018, 01:05:46 PM
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
Title: Re: Conveyor_Helper Module for Themers: Updated - 11/28/2017
Post by: FrizzleFried on November 27, 2018, 07:46:28 PM
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!
Title: Re: Conveyor_Helper Module for Themers: Updated - 11/28/2017
Post by: progets on November 27, 2018, 08:27:12 PM
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.
Title: Re: Conveyor_Helper Module for Themers: Updated - 11/28/2017
Post by: FrizzleFried on November 28, 2018, 06:54:57 AM
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...
Title: Re: Conveyor_Helper Module for Themers: Updated - 11/28/2017
Post by: FrizzleFried on November 28, 2018, 08:11:41 AM
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...

Code: [Select]
// 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...

;)

Title: Re: Conveyor_Helper Module for Themers: Updated - 11/28/2017
Post by: wildpumpk1n on January 09, 2019, 09:30:07 AM
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.

Title: Re: Conveyor_Helper Module for Themers: Updated - 11/28/2017
Post by: jclampy69 on November 15, 2020, 04:23:12 AM
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.
Title: Re: Conveyor_Helper Module for Themers: Updated - 11/28/2017
Post by: jclampy69 on November 16, 2020, 06:34:09 PM
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.

Code: [Select]
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?

Code: [Select]
*/

// 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);
}