ExperimentalGear/scripts/gameplay.lua

177 lines
4.1 KiB
Lua
Raw Normal View History

2021-07-25 20:10:06 +02:00
2021-08-12 21:26:31 +02:00
local VolforceWindow = require('components.volforceWindow')
local Dimensions = require 'common.dimensions';
do
local resx, resy = game.GetResolution();
Dimensions.updateResolution(resx / resy);
end
2021-08-12 21:26:31 +02:00
local Banner = require('gameplay.banner')
local CritLine = require('gameplay.crit_line')
local Console = require('gameplay.console')
2021-10-09 22:09:25 +02:00
local UserPanel = require('gameplay.user_panel')
local SongPanel = require('gameplay.song_panel')
2021-10-09 23:37:33 +02:00
local ScorePanel = require('gameplay.score_panel')
local Gauge = require('gameplay.gauge')
2021-09-05 11:50:30 +02:00
local Chain = require('gameplay.chain')
2021-10-01 21:32:20 +02:00
local LaserAlert = require('gameplay.laser_alert')
2021-07-25 20:10:06 +02:00
2022-04-27 00:12:14 +02:00
local HitFX = require 'gameplay.hitfx'
2022-05-14 10:54:17 +02:00
local EarlyLate = require 'gameplay.earlylate'
2022-04-27 00:12:14 +02:00
2021-10-28 12:17:20 +02:00
local TrackEnd = require('gameplay.track_end')
local json = require("common.json")
2022-04-27 00:12:14 +02:00
local showHitAnims = true;
local users = nil
2021-10-09 23:37:33 +02:00
local maxChain = 0;
2021-09-05 11:50:30 +02:00
local chain = 0;
2021-10-09 23:37:33 +02:00
local score = 0;
2021-09-05 11:50:30 +02:00
function render(deltaTime)
local resx, resy = game.GetResolution();
Dimensions.updateResolution(resx / resy);
2021-11-27 21:49:32 +01:00
Banner.render(deltaTime, users, gameplay.user_id);
2021-10-09 22:09:25 +02:00
2021-10-28 18:28:49 +02:00
UserPanel.render(deltaTime, score, gameplay.scoreReplays[1]);
2021-10-28 17:21:25 +02:00
SongPanel.render(deltaTime,
gameplay.bpm,
gameplay.hispeed,
gameplay.jacketPath,
gameplay.difficulty,
gameplay.level,
2021-10-28 17:40:15 +02:00
gameplay.progress,
gameplay.title,
gameplay.artist
2021-10-28 17:21:25 +02:00
);
2021-10-09 23:37:33 +02:00
ScorePanel.render(deltaTime, score, maxChain)
2021-10-09 22:09:25 +02:00
Gauge.render(
deltaTime,
gameplay.gauge.type,
gameplay.gauge.value,
(game.GetSkinSetting('_gaugeARS') == 1)
);
2021-09-05 15:22:48 +02:00
Chain.render(deltaTime, gameplay.comboState, chain, gameplay.critLine.x, gameplay.critLine.y);
2021-10-01 21:32:20 +02:00
LaserAlert.render(deltaTime);
2022-05-14 10:54:17 +02:00
EarlyLate.render(deltaTime)
2021-08-30 18:51:47 +02:00
end
function render_crit_base(deltaTime)
2022-05-16 10:32:41 +02:00
local cl = gameplay.critLine
CritLine.renderBase(deltaTime, cl.x, cl.y, -cl.rotation);
Console.render(deltaTime, cl.x, cl.y, -cl.rotation);
2021-07-25 20:10:06 +02:00
end
2021-08-30 18:51:47 +02:00
function render_crit_overlay(deltaTime)
2022-05-16 10:32:41 +02:00
local cl = gameplay.critLine
local centerX = cl.x
local centerY = cl.y
local rot = -cl.rotation
HitFX.renderButtons(deltaTime, centerX, centerY, rot);
HitFX.renderLasers(deltaTime, centerX, centerY, rot, cl.cursors);
CritLine.renderOverlay(deltaTime, centerX, centerY, rot, cl.cursors, gameplay.laserActive)
2021-07-25 20:10:06 +02:00
end
function render_intro(deltaTime)
return true
2021-08-30 18:22:21 +02:00
end
2021-07-25 20:10:06 +02:00
2021-10-28 12:17:20 +02:00
local outroTimer = 0;
function render_outro(deltaTime, clearState)
2021-10-28 17:21:25 +02:00
if (clearState == 0) then
return true, 0; -- Exit right away if user manually exited gameplay
end
TrackEnd.render(deltaTime, clearState);
2021-10-28 15:17:54 +02:00
2021-10-28 12:17:20 +02:00
outroTimer = outroTimer + deltaTime
2021-10-28 15:17:54 +02:00
return outroTimer > 4, 1 - outroTimer
2021-08-30 18:51:47 +02:00
end
function update_score(newScore)
2021-10-09 23:37:33 +02:00
score = newScore
if (score == 0) then
maxChain = 0;
end
2021-08-30 18:51:47 +02:00
end
function update_combo(newCombo)
2021-09-05 11:50:30 +02:00
chain = newCombo
Chain.onNewCombo();
2021-10-09 23:37:33 +02:00
if (chain > maxChain) then
maxChain = chain;
end
2021-08-30 18:51:47 +02:00
end
function near_hit(wasLate)
2021-08-30 18:51:47 +02:00
2021-08-30 18:22:21 +02:00
end
2021-08-30 18:51:47 +02:00
function button_hit(button, rating, delta)
2022-04-27 00:12:14 +02:00
if (showHitAnims) then
2022-04-27 02:45:37 +02:00
if (rating == 1) then
HitFX.TriggerAnimation("Near", button + 1)
2022-05-12 15:12:25 +02:00
elseif (rating == 2) then
2022-04-27 02:45:37 +02:00
HitFX.TriggerAnimation("Crit", button + 1)
end
2022-04-27 00:12:14 +02:00
end
2022-05-14 10:54:17 +02:00
if 0 < rating and rating < 3 then
EarlyLate.TriggerAnimation(rating, delta)
end
end
2021-08-30 18:51:47 +02:00
function laser_slam_hit(slamLength, startPos, endPost, index)
2022-04-27 00:12:14 +02:00
if (showHitAnims) then
end
end
2021-08-30 18:51:47 +02:00
function laser_alert(isRight)
2021-10-02 00:17:24 +02:00
LaserAlert.show(isRight)
2021-07-25 20:10:06 +02:00
end
function practice_start(mission_type, mission_threshold, mission_description)
2021-07-25 20:10:06 +02:00
end
function practice_end_run(playCount, successCount, isSuccessful, scoring)
2021-07-25 20:10:06 +02:00
end
2021-08-12 21:26:31 +02:00
function practice_end(playCount, successCount)
2021-07-25 20:10:06 +02:00
end
function init_tcp()
Tcp.SetTopicHandler("game.scoreboard", function(data)
users = {}
for i, u in ipairs(data.users) do
table.insert(users, u)
end
end)
end
-- Update the users in the scoreboard
function score_callback(response)
2022-04-27 00:12:14 +02:00
if response.status ~= 200 then
error()
return
end
local jsondata = json.decode(response.text)
users = {}
for i, u in ipairs(jsondata.users) do
table.insert(users, u)
end
end