70 lines
2.2 KiB
Lua
70 lines
2.2 KiB
Lua
-- Track line pointers
|
|
local track_line_top = {value = 0}
|
|
local static_track_top = {value = 0}
|
|
local blending_track_top = {value = 0}
|
|
|
|
local function increment(obj)
|
|
obj.value = obj.value + 1
|
|
return obj.value - 1
|
|
end
|
|
|
|
-- Track line and track assignments
|
|
local STATIC_TRACK_LINE = increment(track_line_top)
|
|
local BASE_TRACK = increment(static_track_top)
|
|
local BOLT_CAUGHT_TRACK = increment(static_track_top)
|
|
local SAFETY_TRACK = increment(static_track_top)
|
|
local ADS_TRACK = increment(static_track_top)
|
|
local MAIN_TRACK = increment(static_track_top)
|
|
local AMMO_DISPLAY_TRACK = increment(static_track_top)
|
|
|
|
local GUN_KICK_TRACK_LINE = increment(track_line_top)
|
|
|
|
local BLENDING_TRACK_LINE = increment(track_line_top)
|
|
local MOVEMENT_TRACK = increment(blending_track_top)
|
|
local LOOP_TRACK = increment(blending_track_top)
|
|
|
|
-- ADS state handling
|
|
local lastADSState = nil
|
|
|
|
local function updateADSAnimation(context)
|
|
local aim = context:getAimingProgress()
|
|
local adsNow = (aim > 0.5)
|
|
|
|
if adsNow ~= lastADSState then
|
|
lastADSState = adsNow
|
|
local track = context:getTrack(STATIC_TRACK_LINE, ADS_TRACK)
|
|
if adsNow then
|
|
context:runAnimation("ads_in", track, false, PLAY_ONCE_HOLD, 0.1)
|
|
else
|
|
context:runAnimation("ads_out", track, false, PLAY_ONCE_HOLD, 0.1)
|
|
end
|
|
end
|
|
end
|
|
|
|
-- Export
|
|
local M = {
|
|
track_line_top = track_line_top,
|
|
STATIC_TRACK_LINE = STATIC_TRACK_LINE,
|
|
GUN_KICK_TRACK_LINE = GUN_KICK_TRACK_LINE,
|
|
BLENDING_TRACK_LINE = BLENDING_TRACK_LINE,
|
|
static_track_top = static_track_top,
|
|
BASE_TRACK = BASE_TRACK,
|
|
BOLT_CAUGHT_TRACK = BOLT_CAUGHT_TRACK,
|
|
SAFETY_TRACK = SAFETY_TRACK,
|
|
ADS_TRACK = ADS_TRACK,
|
|
MAIN_TRACK = MAIN_TRACK,
|
|
AMMO_DISPLAY_TRACK = AMMO_DISPLAY_TRACK,
|
|
blending_track_top = blending_track_top,
|
|
MOVEMENT_TRACK = MOVEMENT_TRACK,
|
|
LOOP_TRACK = LOOP_TRACK,
|
|
updateADSAnimation = updateADSAnimation
|
|
}
|
|
|
|
function M:initialize(context)
|
|
context:ensureTrackLineSize(track_line_top.value)
|
|
context:ensureTracksAmount(STATIC_TRACK_LINE, static_track_top.value)
|
|
context:ensureTracksAmount(BLENDING_TRACK_LINE, blending_track_top.value)
|
|
end
|
|
|
|
return M
|