155 lines
4.8 KiB
Lua
155 lines
4.8 KiB
Lua
print("weeks")
|
|
local weeksMod = require("weeks")
|
|
print("loaded")
|
|
|
|
local weeks = weeksMod.weeks
|
|
local weekOrder = weeksMod.order
|
|
local backWeekOrder = {}
|
|
local orderIndex = 1
|
|
local evilorderIndex = 1
|
|
|
|
local weekImages = {}
|
|
local currentWeek = weekOrder[1]
|
|
local currentDifficultyIndex = 1
|
|
local currentDifficulty = weeks[weekOrder[1]].difficulties[1]
|
|
|
|
local selectShader = [[
|
|
extern int cur;
|
|
extern int num;
|
|
|
|
vec4 effect(vec4 color, Image texture, vec2 text_coor, vec2 screen_coor) {
|
|
vec4 realcolor = Texel(texture, text_coor);
|
|
|
|
if (cur == num) {
|
|
realcolor.r -= .1;
|
|
realcolor.g -= .1;
|
|
realcolor.b -= .1;
|
|
}
|
|
|
|
return realcolor;
|
|
}
|
|
]]
|
|
local weekShaders = {}
|
|
local diffImage
|
|
|
|
return function()
|
|
local state = {}
|
|
|
|
local function setup()
|
|
if not freaky:isPlaying() then
|
|
freaky:play()
|
|
end
|
|
|
|
local bg = Image("images/menuBG.png", 0)
|
|
bg.ui = false
|
|
bg.layer = -10
|
|
|
|
for index, week in next, weekOrder do
|
|
backWeekOrder[week] = index
|
|
end
|
|
|
|
for name, week in next, weeks do
|
|
weekImages[name] = Image(string.format("images/story/%s.png", week.icon))
|
|
weekImages[name].shader = love.graphics.newShader(selectShader)
|
|
weekImages[name].shader:send("cur", 1)
|
|
weekImages[name].shader:send("num", backWeekOrder[name])
|
|
weekShaders[#weekShaders+1] = weekImages[name].shader
|
|
|
|
weekImages[name].layer = 5
|
|
end
|
|
|
|
diffImage = Sprite("images/diff/diffList.png", "images/diff/diffList.json")
|
|
diffImage.layer = 10
|
|
diffImage:PlayAnimation(currentDifficulty, 24, true)
|
|
diffImage.position = Vector2(1000, 450)
|
|
|
|
|
|
local Recta = Rectangle(Vector2(0,0), Vector2(1280, 240), "fill", {0,0,0})
|
|
Recta.layer = 15
|
|
|
|
render.cameraPosition = Vector2(0,0)
|
|
render.cameraPosition = Vector2(0,0)
|
|
end
|
|
|
|
function state.update(dt)
|
|
for index, shader in next, weekShaders do
|
|
shader:send("cur", orderIndex)
|
|
end
|
|
render.updateSprites(dt)
|
|
|
|
evilorderIndex = Lerp(evilorderIndex, orderIndex, .05)
|
|
|
|
for week, weekname in next, weekOrder do
|
|
local weekImage = weekImages[weekname]
|
|
-- print(week, weekImage)
|
|
weekImage.position = Vector2(love.graphics:getWidth() / 2 - weekImage:getWidth() / 2, love.graphics:getHeight() / 1.5 - weekImage:getHeight() / 2 + (week - evilorderIndex) * 100)
|
|
end
|
|
end
|
|
|
|
function state.draw()
|
|
render.drawSprites()
|
|
render.drawUI()
|
|
end
|
|
|
|
function state.keypressed(key)
|
|
if key == "down" then
|
|
orderIndex, currentWeek = next(weekOrder, orderIndex)
|
|
print(orderIndex)
|
|
currentDifficultyIndex = 1
|
|
|
|
if not orderIndex then
|
|
orderIndex = 1
|
|
currentWeek = weekOrder[1]
|
|
end
|
|
|
|
currentDifficulty = weeks[currentWeek].difficulties[1]
|
|
diffImage:PlayAnimation(currentDifficulty, 24, true)
|
|
|
|
for index, shader in next, weekShaders do
|
|
shader:send("cur", orderIndex)
|
|
end
|
|
elseif key == "up" then
|
|
orderIndex = orderIndex - 1 > 0 and orderIndex - 1 or #weekOrder
|
|
currentWeek = weekOrder[orderIndex]
|
|
if not orderIndex then
|
|
orderIndex = 1
|
|
currentWeek = weekOrder[1]
|
|
end
|
|
currentDifficultyIndex = 1
|
|
currentDifficulty = weeks[currentWeek].difficulties[1]
|
|
diffImage:PlayAnimation(currentDifficulty, 24, true)
|
|
|
|
|
|
for index, shader in next, weekShaders do
|
|
shader:send("cur", orderIndex)
|
|
end
|
|
elseif key == "right" then
|
|
currentDifficultyIndex, currentDifficulty = next(weeks[currentWeek].difficulties, currentDifficultyIndex)
|
|
if not currentDifficultyIndex then
|
|
currentDifficultyIndex = 1
|
|
currentDifficulty = weeks[currentWeek].difficulties[1]
|
|
end
|
|
diffImage:PlayAnimation(currentDifficulty, 24, true)
|
|
elseif key == "return" then
|
|
freaky:stop()
|
|
gameMode = "storymode"
|
|
currentSong = 1
|
|
songOrder = weeks[currentWeek].songs
|
|
curChar = weeks[currentWeek].character
|
|
state.changeState("playstate", songOrder[currentSong], currentDifficulty)
|
|
elseif key == "escape" then
|
|
state.changeState("menustate")
|
|
end
|
|
end
|
|
|
|
function state.load()
|
|
love.window.setTitle("TaggedEngine: Week Menu")
|
|
|
|
if love.graphics:getHeight() ~= 720 then
|
|
love.window.setMode(1280, 720)
|
|
end
|
|
setup()
|
|
end
|
|
|
|
return state
|
|
end |