add two-column feature with "@wrap" key to pay table

screen, to match pay lines screen.
Make 5-reel machine use it
master
Vanessa Dannenberg 2018-09-15 12:25:03 -04:00
parent bd04e3b212
commit 82bf98b475
4 changed files with 70 additions and 45 deletions

View File

@ -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

View File

@ -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

View File

@ -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.

View File

@ -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