afk manager

This commit is contained in:
Nordup 2025-08-17 16:47:53 +07:00
parent 9598ec94f0
commit 99d7c51b5f
7 changed files with 112 additions and 5 deletions

View file

@ -100,3 +100,15 @@ func onboarding_finished(time_spend: float) -> Dictionary:
var event = base("onboarding_finished")
event.time_spend = time_spend
return event
# AFK
func enter_afk() -> Dictionary:
return base("enter_afk")
func leave_afk(time_spend: float) -> Dictionary:
var event = base("leave_afk")
event.time_spend = time_spend
return event

View file

@ -0,0 +1,19 @@
extends AnalyticsSender
class_name AnalyticsSenderAfk
var afk_started_tick: int
func start() -> void:
super.start()
AfkManager.state_changed.connect(send_afk_state_changed)
func send_afk_state_changed(is_afk: bool) -> void:
if is_afk:
afk_started_tick = Time.get_ticks_msec()
analytics.send_event(AnalyticsEvents.enter_afk())
else:
var time_spend = Analytics.get_delta_sec_from_tick(afk_started_tick)
analytics.send_event(AnalyticsEvents.leave_afk(time_spend))

View file

@ -2,6 +2,7 @@ extends AnalyticsSender
class_name AnalyticsSenderApp
const HEARTBEAT_DELAY = 60
var heartbeat_timer: Timer
@ -9,7 +10,9 @@ func start() -> void:
super.start()
analytics.send_event(AnalyticsEvents.app_open())
start_heartbeat()
AfkManager.state_changed.connect(on_state_changed)
# Send latest exit event
var json: String = DataSaver.get_string("analytics", "app_exit")
@ -26,12 +29,20 @@ func start_heartbeat() -> void:
func send_hearbeat() -> void:
var time_spend = Analytics.get_delta_sec_from_tick(0)
var time_spend = AfkManager.get_active_sec()
analytics.send_event(AnalyticsEvents.heartbeat(time_spend))
func on_state_changed(is_afk: bool) -> void:
if is_afk:
heartbeat_timer.stop()
return
heartbeat_timer.start(HEARTBEAT_DELAY)
func _exit_tree() -> void:
# Save to send on open
var time_spend = Analytics.get_delta_sec_from_tick(0)
var time_spend = AfkManager.get_active_sec()
var event = AnalyticsEvents.app_exit(time_spend)
DataSaver.set_value("analytics", "app_exit", JSON.stringify(event))