camelCase -> snake_case
This commit is contained in:
parent
4920224034
commit
cb1c76cd2d
82
board.lua
82
board.lua
|
@ -30,17 +30,17 @@ function Board.new()
|
||||||
tiles = split(t)
|
tiles = split(t)
|
||||||
end,
|
end,
|
||||||
|
|
||||||
getTile = function(self, idx)
|
get_tile = function(self, idx)
|
||||||
return tiles[idx]
|
return tiles[idx]
|
||||||
end,
|
end,
|
||||||
|
|
||||||
-- returns a COPY of the tiles array
|
-- returns a COPY of the tiles array
|
||||||
getTilesCopy = function(self)
|
get_tiles_copy = function(self)
|
||||||
return copy(tiles)
|
return copy(tiles)
|
||||||
end,
|
end,
|
||||||
|
|
||||||
-- overwrites the whole tiles array
|
-- overwrites the whole tiles array
|
||||||
setTiles = function(self, newtiles)
|
set_tiles = function(self, newtiles)
|
||||||
assert(#newtiles == #tiles, "New tiles array must have a length of " .. #tiles)
|
assert(#newtiles == #tiles, "New tiles array must have a length of " .. #tiles)
|
||||||
tiles = copy(newtiles)
|
tiles = copy(newtiles)
|
||||||
end,
|
end,
|
||||||
|
@ -59,11 +59,11 @@ function Board.new()
|
||||||
margin + (y-1)*tile_width + (y-1)*(padding+1)
|
margin + (y-1)*tile_width + (y-1)*(padding+1)
|
||||||
end,
|
end,
|
||||||
|
|
||||||
getSize = function(self)
|
get_size = function(self)
|
||||||
return width
|
return width
|
||||||
end,
|
end,
|
||||||
|
|
||||||
getTileWidth = function(self)
|
get_tile_width = function(self)
|
||||||
return tile_width
|
return tile_width
|
||||||
end,
|
end,
|
||||||
|
|
||||||
|
@ -75,7 +75,7 @@ function Board.new()
|
||||||
tiles[idx] = color
|
tiles[idx] = color
|
||||||
end,
|
end,
|
||||||
|
|
||||||
getRows = function(self)
|
get_rows = function(self)
|
||||||
local ret = {}
|
local ret = {}
|
||||||
for i = 1, width do
|
for i = 1, width do
|
||||||
add(ret, slice(tiles, ((i - 1) * width) + 1, i * width))
|
add(ret, slice(tiles, ((i - 1) * width) + 1, i * width))
|
||||||
|
@ -83,21 +83,21 @@ function Board.new()
|
||||||
return ret
|
return ret
|
||||||
end,
|
end,
|
||||||
|
|
||||||
getCols = function(self)
|
get_cols = function(self)
|
||||||
local ret = {}
|
local ret = {}
|
||||||
local rows = self.getRows(self)
|
local rows = self.get_rows(self)
|
||||||
for i = 1, width do
|
for i = 1, width do
|
||||||
add(ret, map(rows, function(v) return v[i] end))
|
add(ret, map(rows, function(v) return v[i] end))
|
||||||
end
|
end
|
||||||
return ret
|
return ret
|
||||||
end,
|
end,
|
||||||
|
|
||||||
isComplete = function(self)
|
is_complete = function(self)
|
||||||
return count(tiles, 0) == 0
|
return count(tiles, 0) == 0
|
||||||
end,
|
end,
|
||||||
|
|
||||||
isValid = function(self)
|
is_valid = function(self)
|
||||||
local rows = self:getRows()
|
local rows = self:get_rows()
|
||||||
for y,row in ipairs(rows) do
|
for y,row in ipairs(rows) do
|
||||||
-- check count
|
-- check count
|
||||||
if count(row, BLUE) ~= count(row, YELLOW) then
|
if count(row, BLUE) ~= count(row, YELLOW) then
|
||||||
|
@ -112,13 +112,13 @@ function Board.new()
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
-- check triples
|
-- check triples
|
||||||
if self:countConsecutives(row) > 2 then
|
if self:count_consecutives(row) > 2 then
|
||||||
if (debug) printh("triples")
|
if (debug) printh("triples")
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
local cols = self:getCols()
|
local cols = self:get_cols()
|
||||||
for col in all(cols) do
|
for col in all(cols) do
|
||||||
-- check count
|
-- check count
|
||||||
if count(col, BLUE) ~= count(col, YELLOW) then
|
if count(col, BLUE) ~= count(col, YELLOW) then
|
||||||
|
@ -133,7 +133,7 @@ function Board.new()
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
-- check triples
|
-- check triples
|
||||||
if self:countConsecutives(col) > 2 then
|
if self:count_consecutives(col) > 2 then
|
||||||
if (debug) printh("triples")
|
if (debug) printh("triples")
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
|
@ -141,7 +141,7 @@ function Board.new()
|
||||||
return true
|
return true
|
||||||
end,
|
end,
|
||||||
|
|
||||||
countConsecutives = function(self, line)
|
count_consecutives = function(self, line)
|
||||||
local count = 0
|
local count = 0
|
||||||
local last = 0
|
local last = 0
|
||||||
for v in all(line) do
|
for v in all(line) do
|
||||||
|
@ -158,7 +158,7 @@ function Board.new()
|
||||||
--
|
--
|
||||||
-- Returns the index of a random zero tile
|
-- Returns the index of a random zero tile
|
||||||
--
|
--
|
||||||
getRandomZero = function(self)
|
get_random_zero = function(self)
|
||||||
assert(count(tiles, 0) > 0, "No zero left")
|
assert(count(tiles, 0) > 0, "No zero left")
|
||||||
local zeroes = filter(tiles, function(v) return v == 0 end, true)
|
local zeroes = filter(tiles, function(v) return v == 0 end, true)
|
||||||
local z = {}
|
local z = {}
|
||||||
|
@ -171,7 +171,7 @@ function Board.new()
|
||||||
--
|
--
|
||||||
-- Returns the index of a random non-zero tile
|
-- Returns the index of a random non-zero tile
|
||||||
--
|
--
|
||||||
getRandomNonZero = function(self)
|
get_random_non_zero = function(self)
|
||||||
assert(count(tiles, 0) < #tiles, "All zeroes")
|
assert(count(tiles, 0) < #tiles, "All zeroes")
|
||||||
local numbers = filter(tiles, function(v) return v ~= 0 end, true)
|
local numbers = filter(tiles, function(v) return v ~= 0 end, true)
|
||||||
local z = {}
|
local z = {}
|
||||||
|
@ -192,24 +192,24 @@ function Board.new()
|
||||||
-- Solves 1 step of the board
|
-- Solves 1 step of the board
|
||||||
-- Returns "valid" if it solved it without guessing
|
-- Returns "valid" if it solved it without guessing
|
||||||
-- Returns "invalid" if the board cannot be solved
|
-- Returns "invalid" if the board cannot be solved
|
||||||
solveStep = function(self, random)
|
solve_step = function(self, random)
|
||||||
local zeroes = count(tiles, 0)
|
local zeroes = count(tiles, 0)
|
||||||
self:surroundDoubles()
|
self:surround_doubles()
|
||||||
self:splitTriples()
|
self:split_triples()
|
||||||
self:fillLines()
|
self:fill_lines()
|
||||||
self:noIdenticalLines()
|
self:no_identical_lines()
|
||||||
local changed = zeroes ~= count(tiles, 0)
|
local changed = zeroes ~= count(tiles, 0)
|
||||||
if not changed and random and not self:isComplete() then
|
if not changed and random and not self:is_complete() then
|
||||||
-- Set a random color
|
-- Set a random color
|
||||||
local z = self:getRandomZero()
|
local z = self:get_random_zero()
|
||||||
self:fill(z, rnd({BLUE, YELLOW}))
|
self:fill(z, rnd({BLUE, YELLOW}))
|
||||||
if (debug) printh("!!!!!!!!!!!!!!!!! RANDOM FILL AT " .. z)
|
if (debug) printh("!!!!!!!!!!!!!!!!! RANDOM FILL AT " .. z)
|
||||||
return "invalid"
|
return "invalid"
|
||||||
end
|
end
|
||||||
return (changed or self:isComplete()) and "valid" or "invalid"
|
return (changed or self:is_complete()) and "valid" or "invalid"
|
||||||
end,
|
end,
|
||||||
|
|
||||||
surroundDoubles = function(self)
|
surround_doubles = function(self)
|
||||||
for idx,v in ipairs(tiles) do
|
for idx,v in ipairs(tiles) do
|
||||||
local x,y = self:idx_xy(idx)
|
local x,y = self:idx_xy(idx)
|
||||||
if v == 0 then
|
if v == 0 then
|
||||||
|
@ -245,7 +245,7 @@ function Board.new()
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
|
|
||||||
splitTriples = function(self)
|
split_triples = function(self)
|
||||||
for idx, col in ipairs(tiles) do
|
for idx, col in ipairs(tiles) do
|
||||||
local x,y = self:idx_xy(idx)
|
local x,y = self:idx_xy(idx)
|
||||||
if col == 0 then
|
if col == 0 then
|
||||||
|
@ -273,17 +273,17 @@ function Board.new()
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
|
|
||||||
fillLines = function(self)
|
fill_lines = function(self)
|
||||||
local rows = self:getRows()
|
local rows = self:get_rows()
|
||||||
local cols = self:getCols()
|
local cols = self:get_cols()
|
||||||
|
|
||||||
-- rows
|
-- rows
|
||||||
for y,row in ipairs(rows) do
|
for y,row in ipairs(rows) do
|
||||||
local a = count(row, BLUE)
|
local a = count(row, BLUE)
|
||||||
local b = count(row, YELLOW)
|
local b = count(row, YELLOW)
|
||||||
if a ~= b then
|
if a ~= b then
|
||||||
if a == width/2 then self:fillRow(y, YELLOW) end
|
if a == width/2 then self:fill_row(y, YELLOW) end
|
||||||
if b == width/2 then self:fillRow(y, BLUE) end
|
if b == width/2 then self:fill_row(y, BLUE) end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -292,35 +292,35 @@ function Board.new()
|
||||||
local a = count(col, BLUE)
|
local a = count(col, BLUE)
|
||||||
local b = count(col, YELLOW)
|
local b = count(col, YELLOW)
|
||||||
if a ~= b then
|
if a ~= b then
|
||||||
if a == width/2 then self:fillCol(x, YELLOW) end
|
if a == width/2 then self:fill_col(x, YELLOW) end
|
||||||
if b == width/2 then self:fillCol(x, BLUE) end
|
if b == width/2 then self:fill_col(x, BLUE) end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
|
|
||||||
fillRow = function(self, y, color)
|
fill_row = function(self, y, color)
|
||||||
if (debug) printh("Filling line " .. y .. " in " .. (color == BLUE and "blue" or "yellow"))
|
if (debug) printh("Filling line " .. y .. " in " .. (color == BLUE and "blue" or "yellow"))
|
||||||
local idx = self:xy_idx(1, y)
|
local idx = self:xy_idx(1, y)
|
||||||
for i = idx, (idx+width-1) do
|
for i = idx, (idx+width-1) do
|
||||||
if self:getTile(i) == 0 then
|
if self:get_tile(i) == 0 then
|
||||||
self:fill(i, color)
|
self:fill(i, color)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
|
|
||||||
fillCol = function(self, x, color)
|
fill_col = function(self, x, color)
|
||||||
if (debug) printh("Filling column " .. x .. " in " .. (color == BLUE and "blue" or "yellow"))
|
if (debug) printh("Filling column " .. x .. " in " .. (color == BLUE and "blue" or "yellow"))
|
||||||
local idx = self:xy_idx(x, 1)
|
local idx = self:xy_idx(x, 1)
|
||||||
for i = idx, #tiles, width do
|
for i = idx, #tiles, width do
|
||||||
if self:getTile(i) == 0 then
|
if self:get_tile(i) == 0 then
|
||||||
self:fill(i, color)
|
self:fill(i, color)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
|
|
||||||
noIdenticalLines = function(self)
|
no_identical_lines = function(self)
|
||||||
-- columns
|
-- columns
|
||||||
local cols = self:getCols()
|
local cols = self:get_cols()
|
||||||
for x,col in ipairs(cols) do
|
for x,col in ipairs(cols) do
|
||||||
if count(col, 0) == 2 and count(col, BLUE) == count(col, YELLOW) then
|
if count(col, 0) == 2 and count(col, BLUE) == count(col, YELLOW) then
|
||||||
local y1, y2 = unpack(find(col, 0))
|
local y1, y2 = unpack(find(col, 0))
|
||||||
|
@ -353,7 +353,7 @@ function Board.new()
|
||||||
end
|
end
|
||||||
|
|
||||||
-- rows
|
-- rows
|
||||||
local rows = self:getRows()
|
local rows = self:get_rows()
|
||||||
for y,row in ipairs(rows) do
|
for y,row in ipairs(rows) do
|
||||||
if count(row, 0) == 2 and count(row, BLUE) == count(row, YELLOW) then
|
if count(row, 0) == 2 and count(row, BLUE) == count(row, YELLOW) then
|
||||||
local x1, x2 = unpack(find(row, 0))
|
local x1, x2 = unpack(find(row, 0))
|
||||||
|
|
20
main.lua
20
main.lua
|
@ -13,11 +13,11 @@ local LEFT,RIGHT,UP,DOWN,BTN_O,BTN_X = 0,1,2,3,4,5
|
||||||
-- Utils
|
-- Utils
|
||||||
--
|
--
|
||||||
|
|
||||||
function customFont()
|
function custom_font()
|
||||||
poke(0x5f58,0x81)
|
poke(0x5f58,0x81)
|
||||||
end
|
end
|
||||||
|
|
||||||
function standardFont(font)
|
function standard_font(font)
|
||||||
poke(0x5f58,0x80)
|
poke(0x5f58,0x80)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -118,7 +118,7 @@ end
|
||||||
-- end
|
-- end
|
||||||
|
|
||||||
|
|
||||||
function setState(state, ...)
|
function set_state(state, ...)
|
||||||
local args = {...}
|
local args = {...}
|
||||||
if gs and gs._leave then gs._leave() end
|
if gs and gs._leave then gs._leave() end
|
||||||
gs = state
|
gs = state
|
||||||
|
@ -137,24 +137,24 @@ function _init()
|
||||||
mouse_x = 0
|
mouse_x = 0
|
||||||
mouse_y = 0
|
mouse_y = 0
|
||||||
|
|
||||||
frameCount = 0
|
frame_count = 0
|
||||||
|
|
||||||
states = {
|
states = {
|
||||||
rules = stateRules(),
|
rules = state_rules(),
|
||||||
menu = stateMenu(),
|
menu = state_menu(),
|
||||||
game = stateGame()
|
game = state_game()
|
||||||
}
|
}
|
||||||
|
|
||||||
setState(states.game)
|
set_state(states.game)
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
function _update60()
|
function _update60()
|
||||||
frameCount += 1
|
frame_count += 1
|
||||||
_coresolve()
|
_coresolve()
|
||||||
gs._update()
|
gs._update()
|
||||||
-- if not create then
|
-- if not create then
|
||||||
-- board:solveStep()
|
-- board:solve_step()
|
||||||
-- end
|
-- end
|
||||||
|
|
||||||
-- mouse
|
-- mouse
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
function stateGame()
|
function state_game()
|
||||||
local board = Board.new()
|
local board = Board.new()
|
||||||
|
|
||||||
local selectedId = 1
|
local selected_id = 1
|
||||||
|
|
||||||
local function drawSelectedTile()
|
local function drawSelectedTile()
|
||||||
local x, y = board:draw_coords(selectedId)
|
local x, y = board:draw_coords(selected_id)
|
||||||
local w = board:getTileWidth()
|
local w = board:get_tile_width()
|
||||||
rect2(x-1, y-1, w+2, w+2, 6)
|
rect2(x-1, y-1, w+2, w+2, 6)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -15,43 +15,43 @@ function stateGame()
|
||||||
repeat
|
repeat
|
||||||
board:reset()
|
board:reset()
|
||||||
repeat
|
repeat
|
||||||
board:solveStep(true)
|
board:solve_step(true)
|
||||||
yield()
|
yield()
|
||||||
until board:isComplete()
|
until board:is_complete()
|
||||||
until board:isValid()
|
until board:is_valid()
|
||||||
|
|
||||||
printh("b: " .. time())
|
printh("b: " .. time())
|
||||||
-- Remove tiles until randomness is unavoidable
|
-- Remove tiles until randomness is unavoidable
|
||||||
local previous = {board:getTilesCopy()} -- initial state
|
local previous = {board:get_tiles_copy()} -- initial state
|
||||||
local i = 0
|
local i = 0
|
||||||
while true do
|
while true do
|
||||||
board:setTiles(previous[#previous])
|
board:set_tiles(previous[#previous])
|
||||||
-- remove a random tile
|
-- remove a random tile
|
||||||
repeat
|
repeat
|
||||||
i += 1
|
i += 1
|
||||||
until i == 100 or board:getTilesCopy()[i] ~= 0
|
until i == 100 or board:get_tiles_copy()[i] ~= 0
|
||||||
if i == 100 then
|
if i == 100 then
|
||||||
break
|
break
|
||||||
end
|
end
|
||||||
|
|
||||||
board:fill(i, 0)
|
board:fill(i, 0)
|
||||||
add(previous, board:getTilesCopy())
|
add(previous, board:get_tiles_copy())
|
||||||
|
|
||||||
-- try to solve the board
|
-- try to solve the board
|
||||||
local solved = ""
|
local solved = ""
|
||||||
yield()
|
yield()
|
||||||
repeat
|
repeat
|
||||||
solved = board:solveStep()
|
solved = board:solve_step()
|
||||||
until board:isComplete() or solved == "invalid"
|
until board:is_complete() or solved == "invalid"
|
||||||
if solved == "invalid" then
|
if solved == "invalid" then
|
||||||
deli(previous)
|
deli(previous)
|
||||||
end
|
end
|
||||||
end -- end while
|
end -- end while
|
||||||
printh("c: " .. time())
|
printh("c: " .. time())
|
||||||
|
|
||||||
board:setTiles(previous[#previous])
|
board:set_tiles(previous[#previous])
|
||||||
printh(board:tostring())
|
printh(board:tostring())
|
||||||
printh(count(board:getTilesCopy(), 0).." zeroes")
|
printh(count(board:get_tiles_copy(), 0).." zeroes")
|
||||||
end
|
end
|
||||||
|
|
||||||
local function _enter()
|
local function _enter()
|
||||||
|
@ -65,8 +65,8 @@ function stateGame()
|
||||||
end
|
end
|
||||||
|
|
||||||
local function _update()
|
local function _update()
|
||||||
local size = board:getSize()
|
local size = board:get_size()
|
||||||
local x, y = board:idx_xy(selectedId)
|
local x, y = board:idx_xy(selected_id)
|
||||||
if btnp(UP) then
|
if btnp(UP) then
|
||||||
y -= 1
|
y -= 1
|
||||||
elseif btnp(DOWN) then
|
elseif btnp(DOWN) then
|
||||||
|
@ -80,7 +80,7 @@ function stateGame()
|
||||||
if (x>size) x=1
|
if (x>size) x=1
|
||||||
if (y<1) y=size
|
if (y<1) y=size
|
||||||
if (y>size) y=1
|
if (y>size) y=1
|
||||||
selectedId = board:xy_idx(x, y)
|
selected_id = board:xy_idx(x, y)
|
||||||
end
|
end
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
|
|
@ -1,21 +1,21 @@
|
||||||
function stateMenu()
|
function state_menu()
|
||||||
local selected = 1
|
local selected = 1
|
||||||
|
|
||||||
local function onBtnDraw(btn)
|
local function on_btn_draw(btn)
|
||||||
if selected == btn.data.i then
|
if selected == btn.data.i then
|
||||||
btn.color = 7
|
btn.color = 7
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
local buttons = {
|
local buttons = {
|
||||||
makeButton({x=10, y=10, w=30, text="play", data={i=1},
|
make_button({x=10, y=10, w=30, text="play", data={i=1},
|
||||||
onClick=function() setState(states.game) end,
|
on_click=function() set_state(states.game) end,
|
||||||
onHover=function(btn) btn.color = 7 selected = 1 end,
|
on_hover=function(btn) btn.color = 7 selected = 1 end,
|
||||||
onDraw=onBtnDraw}),
|
on_draw=on_btn_draw}),
|
||||||
makeButton({x=10, y=20, w=30, text="rules", data={i=2},
|
make_button({x=10, y=20, w=30, text="rules", data={i=2},
|
||||||
onClick=function() setState(states.rules) end,
|
on_click=function() set_state(states.rules) end,
|
||||||
onHover=function(btn) btn.color = 7 selected = 2 end,
|
on_hover=function(btn) btn.color = 7 selected = 2 end,
|
||||||
onDraw=onBtnDraw})
|
on_draw=on_btn_draw})
|
||||||
}
|
}
|
||||||
|
|
||||||
local function _enter()
|
local function _enter()
|
||||||
|
@ -35,7 +35,7 @@ function stateMenu()
|
||||||
elseif btnp(DOWN) then
|
elseif btnp(DOWN) then
|
||||||
selected += 1
|
selected += 1
|
||||||
elseif btnp(BTN_O) then
|
elseif btnp(BTN_O) then
|
||||||
buttons[selected]:onClick()
|
buttons[selected]:on_click()
|
||||||
end
|
end
|
||||||
selected = mid(1, selected, #buttons)
|
selected = mid(1, selected, #buttons)
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
function stateRules()
|
function state_rules()
|
||||||
|
|
||||||
local fade = split"0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,4,9,10,9,4,2,1"
|
local fade = split"0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,4,9,10,9,4,2,1"
|
||||||
local color = 1
|
local color = 1
|
||||||
|
@ -7,17 +7,17 @@ function stateRules()
|
||||||
rect2(x,y,w,h,fade[color])
|
rect2(x,y,w,h,fade[color])
|
||||||
end
|
end
|
||||||
|
|
||||||
local function goBack()
|
local function go_back()
|
||||||
setState(states.menu)
|
set_state(states.menu)
|
||||||
end
|
end
|
||||||
|
|
||||||
local btnBack = makeButton({x=1, y=118, w=30, h=7, text="❎menu", color=8,
|
local btn_back = make_button({x=1, y=118, w=30, h=7, text="❎menu", color=8,
|
||||||
onClick=function() goBack() end,
|
on_click=function() go_back() end,
|
||||||
onHover=function(btn) btn.color = 7 end})
|
on_hover=function(btn) btn.color = 7 end})
|
||||||
|
|
||||||
return {
|
return {
|
||||||
_update=function()
|
_update=function()
|
||||||
if frameCount%8==0 then
|
if frame_count%8==0 then
|
||||||
color += 1
|
color += 1
|
||||||
end
|
end
|
||||||
if color>#fade then
|
if color>#fade then
|
||||||
|
@ -26,14 +26,14 @@ function stateRules()
|
||||||
|
|
||||||
-- Back to the menu
|
-- Back to the menu
|
||||||
if btnp(BTN_X) then
|
if btnp(BTN_X) then
|
||||||
goBack()
|
go_back()
|
||||||
end
|
end
|
||||||
|
|
||||||
btnBack:update()
|
btn_back:update()
|
||||||
end,
|
end,
|
||||||
|
|
||||||
_draw=function()
|
_draw=function()
|
||||||
customFont()
|
custom_font()
|
||||||
|
|
||||||
print("1) yOU CAN'T HAVE MORE THAN\n TWO (2) CONSECUTIVE TILES\n OF THE SAME COLOR", 2,2, 7)
|
print("1) yOU CAN'T HAVE MORE THAN\n TWO (2) CONSECUTIVE TILES\n OF THE SAME COLOR", 2,2, 7)
|
||||||
local x = 14
|
local x = 14
|
||||||
|
@ -80,7 +80,7 @@ function stateRules()
|
||||||
|
|
||||||
--------------
|
--------------
|
||||||
|
|
||||||
btnBack:draw()
|
btn_back:draw()
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
end
|
end
|
18
ui.lua
18
ui.lua
|
@ -1,4 +1,4 @@
|
||||||
function makeButton(options)
|
function make_button(options)
|
||||||
local state = 0 -- 0 = normal, 1 = hovered, 2 = pressed
|
local state = 0 -- 0 = normal, 1 = hovered, 2 = pressed
|
||||||
return {
|
return {
|
||||||
x = options.x,
|
x = options.x,
|
||||||
|
@ -7,16 +7,16 @@ function makeButton(options)
|
||||||
h = options.h or 6,
|
h = options.h or 6,
|
||||||
data = options.data,
|
data = options.data,
|
||||||
text = options.text,
|
text = options.text,
|
||||||
onClick = options.onClick,
|
on_click = options.on_click,
|
||||||
onHover = options.onHover,
|
on_hover = options.on_hover,
|
||||||
onDraw = options.onDraw,
|
on_draw = options.on_draw,
|
||||||
ogColor = options.color or 5,
|
ogColor = options.color or 5,
|
||||||
color = options.color or 5,
|
color = options.color or 5,
|
||||||
|
|
||||||
draw=function(self, selected)
|
draw=function(self, selected)
|
||||||
standardFont()
|
standard_font()
|
||||||
-- rect2(self.x, self.y, self.w, self.h, 8)
|
-- rect2(self.x, self.y, self.w, self.h, 8)
|
||||||
if self.onDraw then self.onDraw(self) end
|
if self.on_draw then self.on_draw(self) end
|
||||||
print(self.text, self.x+1, self.y+1, self.color)
|
print(self.text, self.x+1, self.y+1, self.color)
|
||||||
end,
|
end,
|
||||||
|
|
||||||
|
@ -24,13 +24,13 @@ function makeButton(options)
|
||||||
self.color = self.ogColor
|
self.color = self.ogColor
|
||||||
if mouse_x >= self.x and mouse_x <= self.x + self.w and
|
if mouse_x >= self.x and mouse_x <= self.x + self.w and
|
||||||
mouse_y >= self.y and mouse_y <= self.y + self.h then
|
mouse_y >= self.y and mouse_y <= self.y + self.h then
|
||||||
if stat(34)&1 == 0 and state == 2 and self.onClick then
|
if stat(34)&1 == 0 and state == 2 and self.on_click then
|
||||||
self.onClick(self)
|
self.on_click(self)
|
||||||
end
|
end
|
||||||
if stat(34)&1 == 1 then
|
if stat(34)&1 == 1 then
|
||||||
state = 2
|
state = 2
|
||||||
else
|
else
|
||||||
if self.onHover then self.onHover(self) end
|
if self.on_hover then self.on_hover(self) end
|
||||||
state = 1
|
state = 1
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
|
|
Loading…
Reference in New Issue
Block a user