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:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user