From 82bf98b475b17328e6e90e721d6dd18f6ec06bef Mon Sep 17 00:00:00 2001 From: Vanessa Dannenberg Date: Sat, 15 Sep 2018 12:25:03 -0400 Subject: [PATCH] add two-column feature with "@wrap" key to pay table screen, to match pay lines screen. Make 5-reel machine use it --- README.txt | 18 ++++++----- minislots_engine/engine.lua | 44 ++++++++++++++------------ minislots_golden7s/init.lua | 3 +- minislots_golden7s_deluxe/init.lua | 50 ++++++++++++++++++++---------- 4 files changed, 70 insertions(+), 45 deletions(-) diff --git a/README.txt b/README.txt index 5f0e750..b53ba39 100644 --- a/README.txt +++ b/README.txt @@ -194,8 +194,8 @@ of five assorted [7], [77], and/or [777] symbols (it also has one for assorted [bar], [2bar], and/or [3bar] symbols). -The human-readable pay table: -============================= +The human-readable pay table and pay lines screen: +================================================== The format of the paytable_desc is pretty simple - it's a table of tables. :-) @@ -219,9 +219,9 @@ The special symbol "@X" tells the parser to insert a blank space equal to the size of a symbol - this is useful for making grids of symbols with some spaces left empty (as in a 3-out-of-5 reel match). -The parser doesn't have any text positioning commands yet, but some -rudimentary layout formatting can be accomplished by inserting blank lines or -chunks of whitespace between other items. +The parser doesn't have any text positioning commands yet, other than "@wrap" +(below), but some rudimentary layout formatting can be accomplished by +inserting blank lines or chunks of whitespace between items. For a layout with fairly large text/symbols as in the 3-reel demo machine, there's room for up to 19 lines, as long as the top line is not so long that @@ -240,9 +240,11 @@ on the line. The key for those is "@" followed by a number, a space, and another number (e.g. "@1 5"). These numbers indicate the first and last pay line images to display. -Lines are "printed" from top to bottom in a column toward the left side of the -form background, overflowing into a second column if necessary. You can force -an overflow into column 2 with "@wrap" (on its own). +On both screens, lines are "printed" from top to bottom in a column toward the +left side of the form background, overflowing into a second column if +necessary. You can force an overflow into column 2 by inserting a table entry +consisting of the string "@wrap" (in the case of the pay table, it must be on +a line by itself, and not inside an inner table the way the other items arespac). If paytable_desc or paylines_desc is not specified, then only the background, [X] button, and "Show Pay Lines" or "Show Pay Table" button will be displayed diff --git a/minislots_engine/engine.lua b/minislots_engine/engine.lua index 660046d..c7b24ac 100644 --- a/minislots_engine/engine.lua +++ b/minislots_engine/engine.lua @@ -1376,30 +1376,36 @@ function minislots.generate_paytable_form(def) local y = def.geometry.paytable_posy local sympadding = 0.05 + local column = def.geometry.paytable_column1 if def.paytable_desc then for _, line in ipairs(def.paytable_desc) do - local x = def.geometry.paytable_posx - for _, item in ipairs(line) do - if string.sub(item, 1, 1) == "@" then - if item == "@X" then - t[#t+1] = "image["..(x*horizscale)..","..(y*vertscale)..";".. - def.geometry.paytable_lineheight..","..def.geometry.paytable_lineheight.. - ";"..def.constants.emptyimg.."]" + if line == "@wrap" then + column = def.geometry.paytable_column2 + y = def.geometry.paytable_posy + else + local x = column + for _, item in ipairs(line) do + if string.sub(item, 1, 1) == "@" then + if item == "@X" then + t[#t+1] = "image["..(x*horizscale)..","..(y*vertscale)..";".. + def.geometry.paytable_lineheight..","..def.geometry.paytable_lineheight.. + ";"..def.constants.emptyimg.."]" + else + local sym = string.sub(item, 2) + local sympos = def.constants.symlookup["sym_"..sym] * -def.constants.reelsymsizey - (def.constants.reelsymsizey - def.constants.reelsymsizex)/2 + t[#t+1] = "image["..(x*horizscale)..","..(y*vertscale)..";".. + (def.geometry.paytable_lineheight-sympadding)..",".. + (def.geometry.paytable_lineheight-sympadding)..";".. + "[combine:"..def.constants.reelsymsizex.."x"..def.constants.reelsymsizex.. + ":0\\,"..sympos.."="..def.constants.symbolsstopped.."]" + end + x = x + def.geometry.paytable_lineheight else - local sym = string.sub(item, 2) - local sympos = def.constants.symlookup["sym_"..sym] * -def.constants.reelsymsizey - (def.constants.reelsymsizey - def.constants.reelsymsizex)/2 - t[#t+1] = "image["..(x*horizscale)..","..(y*vertscale)..";".. - (def.geometry.paytable_lineheight-sympadding)..",".. - (def.geometry.paytable_lineheight-sympadding)..";".. - "[combine:"..def.constants.reelsymsizex.."x"..def.constants.reelsymsizex.. - ":0\\,"..sympos.."="..def.constants.symbolsstopped.."]" + local szx = minislots.str_width_pix(item, "regular")*pix2iu*def.geometry.paytable_textheight + t[#t+1] = minislots.print_string(def, item, x*horizscale, (y+def.geometry.paytable_textshift)*vertscale, szx, def.geometry.paytable_textheight, "regular", "white") + x = x + szx end - x = x + def.geometry.paytable_lineheight - else - local szx = minislots.str_width_pix(item, "regular")*pix2iu*def.geometry.paytable_textheight - t[#t+1] = minislots.print_string(def, item, x*horizscale, (y+def.geometry.paytable_textshift)*vertscale, szx, def.geometry.paytable_textheight, "regular", "white") - x = x + szx end end y = y + def.geometry.paytable_lineheight diff --git a/minislots_golden7s/init.lua b/minislots_golden7s/init.lua index a4e33f9..f6e4084 100644 --- a/minislots_golden7s/init.lua +++ b/minislots_golden7s/init.lua @@ -189,7 +189,8 @@ minislots.register_machine({ cash_slot_cin_posx = 1.9, -- X/Y position within the "cash intake" form (uses the same size as cash_slot_cin_posy = 2.27, -- above) - paytable_posx = 0.6, -- where to put the first symbol/character in the paytable screen. + paytable_column1 = 0.6, -- position of left/right columns in the paytable screen. + paytable_column2 = 6.85, paytable_posy = 0.5, paytable_lineheight = 0.65, -- height of a pay table line. sets the Y spacing of the lines, and the -- X/Y size of reel symbols shown therein, minus a bit of padding. diff --git a/minislots_golden7s_deluxe/init.lua b/minislots_golden7s_deluxe/init.lua index af3b131..450b55c 100644 --- a/minislots_golden7s_deluxe/init.lua +++ b/minislots_golden7s_deluxe/init.lua @@ -123,39 +123,54 @@ minislots.register_machine({ }, paytable_desc = { - { "@lemon", "@lemon", "@X", "@X", "@X", " pays 1", " ", "@lemon", "@lemon", "@lemon", "@X", "@X", " pays 2" }, - { "@lemon", "@lemon", "@lemon", "@lemon", "@X", " pays 3", " ", "@lemon", "@lemon", "@lemon", "@lemon", "@lemon", " pays 5" }, + { "@lemon", "@lemon", "@X", "@X", "@X", " pays 1"} , + { "@lemon", "@lemon", "@lemon", "@X", "@X", " pays 2" }, + { "@lemon", "@lemon", "@lemon", "@lemon", "@X", " pays 3"}, + { "@lemon", "@lemon", "@lemon", "@lemon", "@lemon", " pays 5" }, - { "@melon", "@melon", "@melon", "@X", "@X", " pays 5", " ", "@melon", "@melon", "@melon", "@melon", "@X", " pays 6" }, + { "@melon", "@melon", "@melon", "@X", "@X", " pays 5"}, + { "@melon", "@melon", "@melon", "@melon", "@X", " pays 6" }, { "@melon", "@melon", "@melon", "@melon", "@melon", " pays 7" }, - { "@cherry", "@cherry", "@X", "@X", "@X", " pays 7", " ", "@cherry", "@cherry", "@cherry", "@X", "@X", " pays 8" }, - { "@cherry", "@cherry", "@cherry", "@cherry", "@X", " pays 9", " ", "@cherry", "@cherry", "@cherry", "@cherry", "@cherry", " pays 10" }, + { "@cherry", "@cherry", "@X", "@X", "@X", " pays 7" }, + { "@cherry", "@cherry", "@cherry", "@X", "@X", " pays 8" }, + { "@cherry", "@cherry", "@cherry", "@cherry", "@X", " pays 9" }, + { "@cherry", "@cherry", "@cherry", "@cherry", "@cherry", " pays 10" }, - { "@bell", "@bell", "@bell", "@X", "@X", " pays 10", " ", "@bell", "@bell", "@bell", "@bell", "@X", " pays 15" }, + { "@bell", "@bell", "@bell", "@X", "@X", " pays 10" }, + { "@bell", "@bell", "@bell", "@bell", "@X", " pays 15" }, { "@bell", "@bell", "@bell", "@bell", "@bell", " pays 20" }, - { "Any five mixed", "@bar", "/", "@2bar", "/", "@3bar", " pays 25" }, - { "@bar", "@bar", "@bar", "@X", "@X", " pays 30", " ", "@bar", "@bar", "@bar", "@bar", "@X", " pays 35" }, + { "Any five ", "@bar", "/", "@2bar", "/", "@3bar", " pays 25" }, + { "@bar", "@bar", "@bar", "@X", "@X", " pays 30" }, + { "@bar", "@bar", "@bar", "@bar", "@X", " pays 35" }, { "@bar", "@bar", "@bar", "@bar", "@bar", " pays 40" }, - { "@2bar", "@2bar", "@2bar", "@X", "@X", " pays 50", " ", "@2bar", "@2bar", "@2bar", "@2bar", "@X", " pays 55" }, + { "@2bar", "@2bar", "@2bar", "@X", "@X", " pays 50" }, + { "@2bar", "@2bar", "@2bar", "@2bar", "@X", " pays 55" }, { "@2bar", "@2bar", "@2bar", "@2bar", "@2bar", " pays 60" }, - { "@3bar", "@3bar", "@3bar", "@X", "@X", " pays 70", " ", "@3bar", "@3bar", "@3bar", "@3bar", "@X", " pays 73" }, + { "@wild", " matches any symbol except ", "@scatter", " ", "@bonus", " or ", "@jackpot" }, + { "All wins are multiplied by your line bet." }, + + "@wrap", + + { "@3bar", "@3bar", "@3bar", "@X", "@X", " pays 70" }, + { "@3bar", "@3bar", "@3bar", "@3bar", "@X", " pays 73" }, { "@3bar", "@3bar", "@3bar", "@3bar", "@3bar", " pays 75" }, - { "Any five mixed ", "@7", "/", "@77", "/", "@777", " pays 80" }, - { "@7", "@7", "@7", "@X", "@X", " pays 85", " ", "@7", "@7", "@7", "@7", "@X", " pays 88" }, + { "Any five ", "@7", "/", "@77", "/", "@777", " pays 80" }, + { "@7", "@7", "@7", "@X", "@X", " pays 85" }, + { "@7", "@7", "@7", "@7", "@X", " pays 88" }, { "@7", "@7", "@7", "@7", "@7", " pays 90" }, - { "@77", "@77", "@77", "@X", "@X", " pays 90", " ", "@77", "@77", "@77", "@77", "@X", " pays 95" }, + { "@77", "@77", "@77", "@X", "@X", " pays 90" }, + { "@77", "@77", "@77", "@77", "@X", " pays 95" }, { "@77", "@77", "@77", "@77", "@77", " pays 100" }, { "@777", "@777", "@777", "@777", "@777", " pays 150" }, { "@jackpot", "@jackpot", "@jackpot", "@jackpot", "@jackpot", " pays 300" }, - { "@wild", " matches any symbol except ", "@scatter", " ", "@bonus", " or ", "@jackpot" }, - { "All wins are multiplied by your line bet." } + }, paylines_desc = { "Paylines 1 - 3:", @@ -244,8 +259,9 @@ minislots.register_machine({ cash_slot_cin_posx = 1.9, -- X/Y position within the "cash intake" form (uses the same size as cash_slot_cin_posy = 2.27, -- above) - paytable_posx = 0.4, -- where to put the first symbol/character in the paytable screen. - paytable_posy = 0, + paytable_column1 = 0.65, -- position of left/right columns in the paytable screen. + paytable_column2 = 6.9, + paytable_posy = 0.25, paytable_lineheight = 0.5, -- height of a pay table line. sets the Y spacing of the lines, and the -- X/Y size of reel symbols shown therein, minus a bit of padding. paytable_textheight = 0.35, -- height of printed text within said line, which will be vert. centered