Files
escape-from-funcraft-client/tacz/daffas/assets/daffas_arsenal/scripts/migraine3d_state_machine.lua
T
2026-07-23 16:35:06 +05:00

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