Private
Public Access
1
0

Update version to 0.2.5, add train trip statistics option feature, and improve train state handling and null safety

This commit is contained in:
Jan Grießhaber
2026-01-04 12:36:25 +01:00
parent 4b10091d1a
commit 81e831a236
7 changed files with 50 additions and 10 deletions

View File

@@ -167,6 +167,7 @@ function onTrainStateChange(event)
if event.train.state == defines.train_state.wait_station then
if not train.station then return end
if train.station.unit_number == stat.lastStationUnitNumber then return end
stat.lastStationUnitNumber = stat.currentStationUnitNumber
@@ -198,12 +199,28 @@ function onTrainStateChange(event)
end
--log("inEvent")
end
--Checks if trip is still valid by checking of st
function isTripValid(trip,tripID,trainID)
if trip.startStation == nil
or trip.endStation==nil
or trip.startStation.valid == false
or trip.endStation.valid == false then
--One station is nil so we delete this trip
log("Deleting trip"..tripID)
storage.trainStats[trainID].trips[tripID] = nil
return false
end
--Stations are valid, so we true
return true
end
function GetTrainTripStats()
local tripParts = {}
local tripCount = 0
tripParts[#tripParts+1] = "---train-trips---\n"
for trainID,stats in pairs(storage.trainStats) do
for _,trip in pairs(stats.trips or {}) do
for tripIndex,trip in pairs(stats.trips or {}) do
if isTripValid(trip,tripIndex,trainID) then
tripParts[#tripParts+1] =
("%d:%s:%s:%s:%d"):format(
trainID,
@@ -211,9 +228,17 @@ function GetTrainTripStats()
trip.startStation.backer_name,
trip.endStation.backer_name,
trip.timeTaken)
tripCount = tripCount + 1
end
end
if #tripParts > 400 then
log("Sending at "..tripCount.." trips")
helpers.send_udp(udpAddress,table.concat(tripParts,"\n"),serverIndex)
tripParts = {}
end
end
return table.concat(tripParts,"\n")
log("Counted "..tripCount.." trips")
--return table.concat(tripParts,"\n")
end
function GetTrainStatistics()
@@ -255,10 +280,10 @@ function SendTrainStats()
returnParts[#returnParts+1] = GetTrainTotalKills()
returnParts[#returnParts+1] = GetTrainStates()
returnParts[#returnParts+1] = GetTrainStatistics()
helpers.send_udp(udpAddress,table.concat(returnParts,"\n"),serverIndex)
returnParts = {}
returnParts[#returnParts+1] = GetTrainsInDepot()
returnParts[#returnParts+1] = GetTrainTripStats()
if options.enableTrainTrips then
GetTrainTripStats()
end
log("Sending Train statistics")
helpers.send_udp(udpAddress,table.concat(returnParts,"\n"),serverIndex)
end