Open-Terrarium/menu.lua

216 lines
6.3 KiB
Lua
Raw Normal View History

2017-06-19 02:46:07 -04:00
--menu animation and info
menu = {}
2017-06-20 02:58:58 -04:00
mx,my = 1,1
2017-06-19 02:46:07 -04:00
2017-07-10 05:02:38 -04:00
menutitle = {"O","p","e","n"," ","T","e","r","r","a","r","i","u","m"," ","0",".","0",".","1"}
menu_char = {}
for i, v in ipairs(menutitle) do
--print(i)
menu_char[i] = 0
end
print(menutitle[1])
2017-06-19 02:46:07 -04:00
menutimer = 0
2017-07-10 05:02:38 -04:00
characters = table.getn(menutitle)
2017-06-19 02:46:07 -04:00
pause = false
letter = 1
function menu.animate()
if pause == false then
menutimer = menutimer + 1
end
2017-07-10 05:02:38 -04:00
if menutimer > 10 then
--push up
menu_char[letter] = menu_char[letter] + 2
if menutimer >= 20 then
2017-06-19 02:46:07 -04:00
menutimer = 0
letter = letter + 1
2017-07-10 05:02:38 -04:00
--skip spaces
if menutitle[letter] == " " then
letter = letter + 1
end
if letter > characters then
2017-06-19 02:46:07 -04:00
letter = 1
end
end
2017-07-10 05:02:38 -04:00
elseif menutimer <= 10 then
--push down
menu_char[letter] = menu_char[letter] - 2
2017-06-19 02:46:07 -04:00
end
end
selected_chunkx,selected_chunky = 0,0
2017-06-19 02:46:07 -04:00
function menu.draw()
2017-06-20 02:58:58 -04:00
menu.cursor()
2017-07-24 05:20:44 -04:00
2017-07-10 05:02:38 -04:00
love.graphics.setFont(font)
2017-07-12 04:34:18 -04:00
love.graphics.setColor(0,0,120,255)
2017-07-10 05:07:15 -04:00
for i = 1,characters do
love.graphics.print(menutitle[i], screenwidth-260+(12*i)-2,screenheight-10+menu_char[i]+2 )
end
2017-07-10 05:02:38 -04:00
love.graphics.setColor(255,0,0,255)
for i = 1,characters do
love.graphics.print(menutitle[i], screenwidth-260+(12*i),screenheight-10+menu_char[i] )
end
2017-07-24 05:20:44 -04:00
if debugger == true then
love.graphics.setColor(255,255,255,255)
fpsGraph:draw()
memGraph:draw()
dtGraph:draw()
--redo this as a table
--love.graphics.setFont(fontbig)
--love.graphics.setColor(255,0,0,255)
--love.graphics.print("D", 400, menutitle.g)
--love.graphics.print("I", 440, menutitle.a)
--love.graphics.print("G", 480, menutitle.m)
--love.graphics.print("!", 520, menutitle.e)
local xxer = 600
--score debug
love.graphics.setFont(font)
love.graphics.setColor(255,255,255,255)
love.graphics.print("Score:"..tostring(score),xxer,12)
2017-06-20 02:16:21 -04:00
2017-07-24 05:20:44 -04:00
--debug mining
if player.mining == true then
love.graphics.setColor(255,0,0,255)
love.graphics.print("Mining", xxer,24)
love.graphics.setColor(128,128,128,255)
love.graphics.print("Placing", xxer+80,24)
elseif player.mining == false then
love.graphics.setColor(128,128,128,255)
love.graphics.print("Mining", xxer,24)
love.graphics.setColor(255,0,0,255)
love.graphics.print("Placing", xxer+80,24)
--love.graphics.print("PosX:"..player.playerx.." PosY:"..player.playery, 400,150)
end
--debug player's pos
love.graphics.setColor(255,255,255,255)
love.graphics.print("PosX:"..(player.playerx+(chunkx*map_max)).." PosY:"..((map_max-player.playery)+(chunky*map_max)), 5,5)
--debug mouse's pos
love.graphics.setColor(255,255,255,255)
love.graphics.print("MX:"..mx.." MY:"..my, xxer,36)
--debug selected item
love.graphics.setColor(255,255,255,255)
love.graphics.print("ITEM:", xxer,48) love.graphics.draw(texture_table[player.selected],xxer+60,45,0,0.8,0.8)
2017-07-09 19:51:07 -04:00
2017-07-24 05:20:44 -04:00
love.graphics.print("Chunkx:"..chunkx, xxer,60)
love.graphics.print("Chunky:"..chunky, xxer,72)
love.graphics.print("Current FPS:"..tostring(love.timer.getFPS( )), xxer, 84)
love.graphics.print("Intx:"..tostring(player.inertiax), xxer, 96)
love.graphics.print("Inty:"..tostring(player.inertiay), xxer, 108)
love.graphics.print("Deaths:"..tostring(deaths), xxer, 250)
2017-06-20 02:16:21 -04:00
end
2017-07-10 00:34:00 -04:00
2017-06-20 02:58:58 -04:00
end
function menu.cursor()
2017-07-24 04:51:33 -04:00
--interact with world
if crafting_open == false then
local x, y = love.mouse.getPosition( )
2017-07-18 04:13:16 -04:00
2017-07-24 04:51:33 -04:00
--love.graphics.circle( "fill", player_drawnx, player_drawny, 4 )
--local xx,yy = math.floor(x/scale),math.floor((y+3)/scale)
local xx,yy = ((x-player_drawnx)/scale)*scale,((y-player_drawny)/scale)*scale
2017-07-24 04:51:33 -04:00
mx,my = math.floor(player.playerx + (xx/scale)),math.floor(player.playery + (yy/scale))
2017-07-24 04:51:33 -04:00
--print(mx,my)
2017-07-24 04:51:33 -04:00
selected_chunkx,selected_chunky = chunkx,chunky
--only change and draw if in boundaries
if ((mx >= 1 and mx <= map_max) and (my >= 1 and my <= map_max)) and (math.abs(player.playerx-mx) <=5 and math.abs(player.playery-my) <=5) then
local draw_selection_x = player_drawnx+(mx*scale)-(player.playerx*scale)
local draw_selection_y = player_drawny+(my*scale)-(player.playery*scale)
love.graphics.rectangle("line",draw_selection_x, draw_selection_y, scale, scale )
if mine_process > 0 then
love.graphics.draw(mining_texture[math.ceil(mine_process)], draw_selection_x, draw_selection_y,0, scale/16, scale/16,0,0)
end
--reach outside of chunk
elseif (math.abs(player.playerx-mx) <=5 and math.abs(player.playery-my) <=5) then
--ocal chunkex,chunkey = math.floor(mx/map_max),math.floor(my/map_max)
--overreach x
if mx > map_max then
mx = mx - map_max
selected_chunkx = chunkx + 1
elseif mx < 1 then
mx = mx + map_max
selected_chunkx = chunkx - 1
else
--selected_chunkx = chunkx
end
--overreach y
if my < 1 then
my = my + map_max
selected_chunky = chunky + 1
--print("up")
elseif my > map_max then
my = my - map_max
selected_chunky = chunky - 1
--print("down")
else
--print("current")
--selected_chunky = chunky
end
--print("chunkey:"..chunkey.."|my:"..my)
--print(selected_chunkx, selected_chunky)
local draw_selection_x = player_drawnx+(mx*scale)+(map_max*scale*(selected_chunkx-chunkx))-(player.playerx*scale)
local draw_selection_y = player_drawny+(my*scale)+(map_max*scale*(chunky-selected_chunky))-(player.playery*scale)
love.graphics.rectangle("line", draw_selection_x, draw_selection_y, scale, scale )
if mine_process > 0 then
love.graphics.draw(mining_texture[math.ceil(mine_process)], draw_selection_x, draw_selection_y,0, scale/16, scale/16,0,0)
end
2017-07-17 04:13:06 -04:00
else
2017-07-24 04:51:33 -04:00
mx,my = -1,-1
end
2017-07-24 04:51:33 -04:00
if mine_process ~= 0 and (mx ~= old_mx or my ~= old_my) then
mine_process = 0
2017-07-18 03:28:12 -04:00
end
2017-07-24 04:51:33 -04:00
old_mx,old_my = mx,my
--interact with inventory
2017-06-20 02:58:58 -04:00
else
2017-07-24 04:51:33 -04:00
local x, y = love.mouse.getPosition( )
if x > crafting_x and x < crafting_x + (inventory_size*84) and y > crafting_y and y < crafting_y + (inventory_height*84) then
crafting_selection_x = math.ceil((x-crafting_x)/84)
crafting_selection_y = math.ceil((y-crafting_y)/84)
2017-07-25 02:10:03 -04:00
elseif x > craft_inv_x and x < craft_inv_x + (crafting.craft_size*84) and y > craft_inv_y and y < craft_inv_y + (crafting.craft_size*84) then
craft_inventory_selection_x = math.ceil((x-craft_inv_x)/84)
craft_inventory_selection_y = math.ceil((y-craft_inv_y)/84)
2017-07-24 04:51:33 -04:00
else
crafting_selection_x = -1
crafting_selection_y = -1
2017-07-25 02:10:03 -04:00
craft_inventory_selection_x = -1
craft_inventory_selection_y = -1
2017-07-24 04:51:33 -04:00
end
2017-07-18 23:53:53 -04:00
end
2017-06-20 02:58:58 -04:00
2017-06-19 02:46:07 -04:00
end