test stats anche achievements
This commit is contained in:
@@ -1,5 +1,8 @@
|
||||
extends Path3D
|
||||
|
||||
const STEAM_DISTANCE_STAT: String = "stat_distance_km"
|
||||
const STEAM_DISTANCE_KM_PER_UNIT: float = 1#0.001
|
||||
|
||||
@export_group("Train")
|
||||
##train speed
|
||||
@export var train_speed: float = 6.0
|
||||
@@ -79,6 +82,7 @@ var tween_restart: Tween
|
||||
var environment_config: EnvironmentConfig
|
||||
var wagon_instances: Array[Node3D] = []
|
||||
var wagon_progress_offsets: Array[float] = []
|
||||
var _pending_steam_distance_km: float = 0.0
|
||||
|
||||
func _ready() -> void:
|
||||
randomize()
|
||||
@@ -328,6 +332,7 @@ func train_move(delta: float) -> void:
|
||||
|
||||
var current_speed = train_speed * stop_multiply
|
||||
train_progress += current_speed * delta
|
||||
_track_steam_distance(abs(current_speed) * delta)
|
||||
|
||||
if enable_stops and stop_offset.size() > 0:
|
||||
var target_offset = stop_offset[next_stop_index]
|
||||
@@ -385,6 +390,29 @@ func train_move(delta: float) -> void:
|
||||
train_instance.rotation.z += curve_roll
|
||||
train_instance.rotation.x += curve_pitch
|
||||
|
||||
#Calculate train distance for steam stats
|
||||
func _track_steam_distance(distance_units: float) -> void:
|
||||
if distance_units <= 0.0 or not SteamManager.is_on_steam:
|
||||
return
|
||||
|
||||
_pending_steam_distance_km += distance_units * STEAM_DISTANCE_KM_PER_UNIT
|
||||
var whole_km: int = int(floor(_pending_steam_distance_km))
|
||||
if whole_km <= 0:
|
||||
return
|
||||
|
||||
_pending_steam_distance_km -= float(whole_km)
|
||||
var total_distance_km: int = StatsManager.get_int(STEAM_DISTANCE_STAT) + whole_km
|
||||
StatsManager.set_int(STEAM_DISTANCE_STAT, total_distance_km)
|
||||
_check_distance_achievements(total_distance_km)
|
||||
StatsManager.store()
|
||||
|
||||
#Check achievements
|
||||
func _check_distance_achievements(total_distance_km: int) -> void:
|
||||
if total_distance_km >= 100:
|
||||
AchievementManager.unlock("ACH_DISTANCE_100")
|
||||
if total_distance_km >= 200:
|
||||
AchievementManager.unlock("ACH_DISTANCE_200")
|
||||
|
||||
func _execute_stop(go_forward: bool = true) -> void:
|
||||
stop_ongoing = true
|
||||
stop_multiply = 0.0
|
||||
|
||||
Reference in New Issue
Block a user