mainMenu = Class{}
function mainMenu:butt(gameState, VIRTUAL_WIDTH, VIRTUAL_HEIGHT, buttons, sounds, location)
        if (gameState == 'editor')
            then
         ev_button_width = VIRTUAL_WIDTH * (1/72)
        ev_BUTTON_HEIGHT = VIRTUAL_WIDTH * (1/72)
        local margin = 16
        local hot = false
        local cursor_y = 0
        blockinput = false
        local total_height = (ev_BUTTON_HEIGHT + margin) * #buttons
        for i, button in ipairs(buttons) do 
            button.last = button.now
             ev_bx = (VIRTUAL_WIDTH*0.05) - (ev_button_width * 0.5)
             ev_by = (VIRTUAL_HEIGHT * 0.1) - (total_height * 0.5) + cursor_y
            local color = {255, 255, 255, 255}
            local mx, my = love.mouse.getPosition()
            mx = mx   
            my = my  
            mx = mx * DIFFERENCE_X
            my = my * DIFFERENCE_Y
            hot = (mx > ev_bx and mx < ev_bx + ev_button_width and my > ev_by and my < ev_by + ev_BUTTON_HEIGHT) and i
            if (hot == i) then 
                blockinput = blockinput or true
                color = {10, 10, 0, 255}
            end

                        button.now = love.keyboard.mouseWasReleased()

            if button.now and not button.last and hot == i then
                love.keyboard.mouseisReleased = false 
                love.graphics.setColor(0,0,0,1)
                love.graphics.rectangle("fill", 0, 0, VIRTUAL_WIDTH, VIRTUAL_HEIGHT)
                sounds['wallhit']:play()
             button.fn()
         end
            love.graphics.setColor(unpack(color))
            love.graphics.rectangle("fill", ev_bx,ev_by, ev_button_width, ev_BUTTON_HEIGHT)
            love.graphics.setColor(0, 0, 0, 255)
            local textW = smallfont:getWidth(button.text)
            local textH = smallfont:getHeight(button.text)
            love.graphics.print(button.text, smallfont, VIRTUAL_WIDTH*0.05 - textW*0.5, ev_by*0.9+textH*0.01)
            love.graphics.setColor(255, 255, 255, 255)
            cursor_y = cursor_y + (ev_BUTTON_HEIGHT + margin)
            
        end  
    else
        if location == 'middle' then 
            locationx = (VIRTUAL_WIDTH * 0.5)
            locationy = (VIRTUAL_HEIGHT* 0.5)
        elseif location == 'right' then 
            locationx = (VIRTUAL_WIDTH * 0.8)
            locationy = (VIRTUAL_HEIGHT* 0.5)
        elseif location == 'control' then
            locationx = (VIRTUAL_WIDTH * 0.2)
            locationy = (VIRTUAL_HEIGHT* 0.5)
        elseif location == "android" then 
            locationx = (VIRTUAL_WIDTH * 0.5)
            locationy = (10)
        end

            local ev_button_width = VIRTUAL_WIDTH * (1/3)
            local ev_BUTTON_HEIGHT = 50
            if location == "android" then 
                ev_button_width = 30
                ev_BUTTON_HEIGHT = 30
            end 
        local margin = 16
        local hot = false
        local cursor_y = 0
        local total_height = (ev_BUTTON_HEIGHT + margin) * #buttons
        local ev_bx, ev_by
        for i, button in ipairs(buttons) do 
            --print("Button")
            button.last = button.now
            if button.x ~= -1 then 
                ev_bx = button.x
            else 
                ev_bx = locationx - (ev_button_width * 0.5)
            end
            if (location == 'control') then 
                if string.sub(button.text, 1, 1) == '2' then 
                    ev_bx = (VIRTUAL_WIDTH*0.2) - (ev_button_width * 0.5)
                    ev_by = locationy - (total_height * 0.5) + cursor_y
                elseif string.sub(button.text, 1, 1) == '1' then 
                    ev_bx = (VIRTUAL_WIDTH*0.8) - (ev_button_width * 0.5)
                    ev_by = locationy - (total_height * 0.5) + cursor_y
                else 
                    ev_bx = (VIRTUAL_WIDTH*0.5) - (ev_button_width * 0.5)
                    ev_by = locationy - (total_height * 0.5) + cursor_y
                end
            elseif button.x > locationx - (ev_button_width * 0.5) then
                --print("moving from" .. button.x)
                if lowcpu then 
                    button.x = locationx - (ev_button_width * 0.5)
                else
                    button.x = button.x - 15
                end 
                --print("moving!" .. button.x)
                ev_by = locationy - (total_height * 0.5) + cursor_y 
            else 
                ev_by = locationy - (total_height * 0.5) + cursor_y
            end
            color = {255, 255, 255, 255}
            if (button.text == 'Play') and location == 'playercount' then color = {0/255, 255/255, 0/255, 255} 
            elseif (button.text == 'NUCLEAR MODE' and easternum > 10) then 
                color = {0,0,0,1}
            end
            local mx, my = love.mouse.getPosition()
            local mx = mx * DIFFERENCE_X
            local my = my * DIFFERENCE_Y
            local hot = (mx > ev_bx and mx < ev_bx + ev_button_width and my > ev_by and my < ev_by + ev_BUTTON_HEIGHT) and i
            if (hot == i) then 
                color = {10, 10, 0, 255}
            end
            --print(love.keyboard.mouseisReleased)

            button.now = love.keyboard.mouseisReleased
            if location == "android" then 
                button.now = love.mouse.isDown(1)
            end
            if button.now and hot == i then
                love.keyboard.mouseisReleased = false 
                love.graphics.setColor(0,0,0,1)
                love.graphics.rectangle("fill", 0, 0, VIRTUAL_WIDTH, VIRTUAL_HEIGHT)
                sounds['wallhit']:play() 
                if button.skipAnim then 
                    print("skipped anim")
                else 
                    for j, buttons in ipairs(buttons) do 
                        buttons.x = 1300 
                        print("making" .. j)
                    end
                end
                button.fn()
                break
            end
            love.graphics.setColor(unpack(color))
            love.graphics.rectangle("fill", ev_bx,ev_by, ev_button_width, ev_BUTTON_HEIGHT)
            print(ev_bx .. " " .. i)
            love.graphics.setColor(0, 0, 0, 255)
            local textW = smallfont:getWidth(button.text)
            local textH = smallfont:getHeight(button.text)
            if (location == 'control') then 
                if danger == button.text or danger2 == button.text then
                    love.graphics.setColor(1,0,0,1)
                else 
                    love.graphics.setColor(0,0,0,1)
                end 
                if (button.text == "1up") then 
                    love.graphics.print("P1 UP: " .. string.upper(p1control.up), smallfont, ev_bx + (ev_button_width * 0.1), ev_by+textH*0.5)
                elseif button.text == '2up' then 
                    love.graphics.print("P2 UP: " .. string.upper(p2control.up), smallfont, ev_bx + (ev_button_width * 0.1), ev_by+textH*0.5)
                elseif button.text == '1down' then 
                    love.graphics.print("P1 DOWN: " .. string.upper(p1control.down), smallfont, ev_bx + (ev_button_width * 0.1), ev_by+textH*0.5)
                elseif button.text == '2down' then 
                    love.graphics.print("P2 DOWN: " .. string.upper(p2control.down), smallfont, ev_bx + (ev_button_width * 0.1), ev_by+textH*0.5)
                elseif button.text == '1special' then 
                    love.graphics.print("P1 SPECIAL: " .. string.upper(p1control.super), smallfont, ev_bx + (ev_button_width * 0.1), ev_by+textH*0.5)
                elseif button.text == '2special' then 
                    love.graphics.print("P2 SPECIAL: " .. string.upper(p2control.super), smallfont, ev_bx + (ev_button_width * 0.1), ev_by+textH*0.5)
                elseif button.text == '1ct' then 
                    love.graphics.print("P1 COUNTER: " .. string.upper(p1control.counter), smallfont, ev_bx + (ev_button_width * 0.1), ev_by+textH*0.5)
                elseif button.text == '2ct' then 
                    love.graphics.print("P2 COUNTER: " .. string.upper(p2control.counter), smallfont, ev_bx + (ev_button_width * 0.1), ev_by+textH*0.5)
                else
                    love.graphics.print(button.text, smallfont, ev_bx + (ev_button_width * 0.1), ev_by+textH*0.5)
                end
                cursor_y = cursor_y + (ev_BUTTON_HEIGHT + margin)
            else
                if (button.text == '1v1') then 
                    love.graphics.print(playertext, smallfont,  ev_bx + ev_button_width*0.5 - textW*0.5, by+textH*0.5) 
                elseif button.text == 'snc' then 
                    if (nuckemodactive == 1) then
                        textW = smallfont:getWidth(synctext)
                        love.graphics.setColor(1,0,0,1)
                        love.graphics.print(synctext, smallfont, ev_bx + ev_button_width*0.5 - textW*0.5, ev_by+textH*0.5)
                        love.graphics.setColor(1,1,1,1)
                        love.graphics.print(synctext, smallfont, ev_bx + ev_button_width*0.5 - textW*0.5, ev_by+textH*0.5)
                        love.graphics.setColor(0,0,0,1) 
                    else
                        textW = smallfont:getWidth(synctext)
                        love.graphics.print(synctext, smallfont,  ev_bx + ev_button_width*0.5 - textW*0.5, ev_by+textH*0.5)
                    end
                elseif (button.text == 'ballCount') then 
                    local tempstr = "Ball Count: " .. maxBalls
                    textW = smallfont:getWidth(tempstr)
                    love.graphics.print("Ball Count: " .. maxBalls, smallfont,  ev_bx + ev_button_width*0.5 - textW*0.5, ev_by+textH*0.5)
                elseif (button.text == "Ball Speed: ") then 
                    if (nuckemodactive == 1) then 
                        love.graphics.setColor(1,0,0,1)
                        love.graphics.print("shaitan machina", smallfont,  ev_bx + ev_button_width*0.5 - textW*0.5, ev_by+textH*0.5)
                        love.graphics.setColor(1,1,1,1)
                        love.graphics.print("shaitan machina", smallfont,  ev_bx + ev_button_width*0.5 - textW*0.5, ev_by+textH*0.5)
                        love.graphics.setColor(0,0,0,1) 
                    else
                        textW = smallfont:getWidth(button.text .. ballSet)
                        love.graphics.print(button.text .. ballSet, smallfont, ev_bx + ev_button_width*0.5 - textW*0.5, ev_by+textH*0.5)
                    end
                elseif button.text == 'ptw' then 
                    local tempstr = "Points to Win: " .. ptw
                    textW = smallfont:getWidth(tempstr)
                    love.graphics.print("Points to Win: " .. ptw, smallfont, ev_bx + ev_button_width*0.5 - textW*0.5, ev_by+textH*0.5)
                elseif (button.text ==  'Silverblade') then 
                    local tempstr = "Difficulty: " .. prtext
                    textW = smallfont:getWidth(tempstr)
                    love.graphics.print("Difficulty: " .. prtext, smallfont,ev_bx + ev_button_width*0.5 - textW*0.5 , ev_by+textH*0.5) 
                else
                    love.graphics.print(button.text, smallfont, ev_bx + ev_button_width*0.5 - textW*0.5, ev_by+textH*0.5)
                end
                love.graphics.setColor(255, 255, 255, 255)
                cursor_y = cursor_y + (ev_BUTTON_HEIGHT + margin)
            end
        end         
    end
            
end
function mainMenu:addButton(text, fn)
    if isButtonAnimated == true then 
        print("Button shall be animated!")
        newButtonXVariable = 1290
    else 
        print("Button shall NOT be animated!")
        newButtonXVariable = -1
    end
    return {
        x = newButtonXVariable,
        text = text, 
        fn = fn,
        now = false,
        last = false
    }
end
function menuButtons()

local button_width = VIRTUAL_WIDTH * (1/3)
local BUTTON_HEIGHT = 50
local margin = 16
local hot = false
local cursor_y = 0
local total_height = (BUTTON_HEIGHT + margin) * #buttons
for i, button in ipairs(buttons) do 
button.last = button.now
local bx = (VIRTUAL_WIDTH*0.5) - (button_width * 0.5)
local by = (VIRTUAL_HEIGHT * 0.8) - (total_height * 0.5) + cursor_y
local color = {255, 255, 255, 255}
local mx, my = love.mouse.getPosition()
mx = mx   
my = my  
mx = mx * DIFFERENCE_X
my = my * DIFFERENCE_Y
hot = (mx > bx and mx < bx + button_width and my > by and my < by + BUTTON_HEIGHT) and i
if (hot == i) then 
    color = {10, 10, 0, 255}
end
button.now = love.keyboard.mouseWasReleased()
if button.now and not button.last and hot == i then 
    love.keyboard.mouseisReleased = false 
                    love.graphics.setColor(0,0,0,1)
    love.graphics.rectangle("fill", 0, 0, VIRTUAL_WIDTH, VIRTUAL_HEIGHT)
    sounds['wallhit']:play()
 button.fn()
end
love.graphics.setColor(unpack(color))
love.graphics.rectangle("fill", bx, by, button_width, BUTTON_HEIGHT)
love.graphics.setColor(0, 0, 0, 255)
local textW = smallfont:getWidth(button.text)
local textH = smallfont:getHeight(button.text)
love.graphics.print(button.text, smallfont, VIRTUAL_WIDTH*0.5 - textW*0.5, by+textH*0.5)
love.graphics.setColor(255, 255, 255, 255)
cursor_y = cursor_y + (BUTTON_HEIGHT + margin)

end
end