mirror of
https://github.com/SashLilac/cambridge.git
synced 2024-11-16 15:59:02 -06:00
05230ac046
- Uses BG previously from the input config screen, which has gotten a new BG - Minor tweak on the input config screen to display all inputs names regardless of if they are bound or not - Added Mod1 function to `funcs.lua`, may be useful again sometime - Added game settings * Manual locking (per gamemode, per ruleset, on harddrop or on softdrop) * Piece colours (per ruleset, TTC or Arika) * World Reverse toggle - Moved the discordRPC `libs/` directory, as it's a third party library - Edited the `discordRPC.lua` file to look for the dll at the right place regardless of how you run the game (until we fuse it that is) This should have probably been done in several commits, sorry about that
146 lines
3.8 KiB
Lua
146 lines
3.8 KiB
Lua
function love.load()
|
|
discordRPC = require("libs.discordRPC")
|
|
discordRPC.appId = "599778517789573120"
|
|
|
|
function discordRPC.ready(userId, username, discriminator, avatar)
|
|
print(string.format("Discord: ready (%s, %s, %s, %s)", userId, username, discriminator, avatar))
|
|
end
|
|
|
|
function discordRPC.disconnected(errorCode, message)
|
|
print(string.format("Discord: disconnected (%d: %s)", errorCode, message))
|
|
end
|
|
|
|
function discordRPC.errored(errorCode, message)
|
|
print(string.format("Discord: error (%d: %s)", errorCode, message))
|
|
end
|
|
|
|
function discordRPC.joinGame(joinSecret)
|
|
print(string.format("Discord: join (%s)", joinSecret))
|
|
end
|
|
|
|
function discordRPC.spectateGame(spectateSecret)
|
|
print(string.format("Discord: spectate (%s)", spectateSecret))
|
|
end
|
|
|
|
function discordRPC.joinRequest(userId, username, discriminator, avatar)
|
|
print(string.format("Discord: join request (%s, %s, %s, %s)", userId, username, discriminator, avatar))
|
|
discordRPC.respond(userId, "yes")
|
|
end
|
|
|
|
discordRPC.initialize(discordRPC.appId, true)
|
|
local now = os.time(os.date("*t"))
|
|
presence = {
|
|
startTimestamp = now,
|
|
details = "Loading game...",
|
|
state = "",
|
|
largeImageKey = "icon2",
|
|
largeImageText = "Original game by Joe Zeng",
|
|
smallImageKey = "",
|
|
smallImageText = ""
|
|
}
|
|
|
|
math.randomseed(os.time())
|
|
highscores = {}
|
|
require "load.graphics"
|
|
require "load.fonts"
|
|
require "load.sounds"
|
|
require "load.bgm"
|
|
require "load.save"
|
|
loadSave()
|
|
require "scene"
|
|
config["side_next"] = false
|
|
config["reverse_rotate"] = true
|
|
config["fullscreen"] = false
|
|
|
|
love.window.setMode(love.graphics.getWidth(), love.graphics.getHeight(), {resizable = true});
|
|
|
|
if not config.input then
|
|
config.input = {}
|
|
scene = InputConfigScene()
|
|
else
|
|
if not config.gamesettings then config.gamesettings = {} end
|
|
for _, option in ipairs(GameConfigScene.options) do
|
|
if not config.gamesettings[option[1]] then
|
|
config.gamesettings[option[1]] = 1
|
|
end
|
|
end
|
|
if config.current_mode then current_mode = config.current_mode end
|
|
if config.current_ruleset then current_ruleset = config.current_ruleset end
|
|
scene = TitleScene()
|
|
end
|
|
end
|
|
|
|
local TARGET_FPS = 60
|
|
local SAMPLE_SIZE = 60
|
|
|
|
local rolling_samples = {}
|
|
local rolling_total = 0
|
|
local average_n = 0
|
|
local frame = 0
|
|
|
|
function getSmoothedDt(dt)
|
|
rolling_total = rolling_total + dt
|
|
frame = frame + 1
|
|
if frame > SAMPLE_SIZE then frame = frame - SAMPLE_SIZE end
|
|
if average_n == SAMPLE_SIZE then
|
|
rolling_total = rolling_total - rolling_samples[frame]
|
|
else
|
|
average_n = average_n + 1
|
|
end
|
|
rolling_samples[frame] = dt
|
|
return rolling_total / average_n
|
|
end
|
|
|
|
local update_time = 0.52
|
|
|
|
function love.update(dt)
|
|
processBGMFadeout(dt)
|
|
local old_update_time = update_time
|
|
update_time = update_time + getSmoothedDt(dt) * TARGET_FPS
|
|
updates = 0
|
|
while (update_time >= 1.02) do
|
|
scene:update()
|
|
updates = updates + 1
|
|
update_time = update_time - 1
|
|
end
|
|
if math.abs(update_time - old_update_time) < 0.02 then
|
|
update_time = old_update_time
|
|
end
|
|
end
|
|
|
|
function love.draw()
|
|
love.graphics.push()
|
|
|
|
-- get offset matrix
|
|
love.graphics.setDefaultFilter("linear", "nearest")
|
|
local width = love.graphics.getWidth()
|
|
local height = love.graphics.getHeight()
|
|
local scale_factor = math.min(width / 640, height / 480)
|
|
love.graphics.translate(
|
|
(width - scale_factor * 640) / 2,
|
|
(height - scale_factor * 480) / 2
|
|
)
|
|
love.graphics.scale(scale_factor)
|
|
|
|
scene:render()
|
|
love.graphics.pop()
|
|
end
|
|
|
|
function love.keypressed(key, scancode, isrepeat)
|
|
-- global hotkeys
|
|
if scancode == "f4" then
|
|
config["fullscreen"] = not config["fullscreen"]
|
|
love.window.setFullscreen(config["fullscreen"])
|
|
else
|
|
scene:onKeyPress({key=key, scancode=scancode, isRepeat=isrepeat})
|
|
end
|
|
end
|
|
|
|
function love.focus(f)
|
|
if f then
|
|
resumeBGM()
|
|
else
|
|
pauseBGM()
|
|
end
|
|
end
|