mod: try immediately outputting player logoff events

This commit is contained in:
Adam 2022-05-24 17:40:21 +02:00
parent 3416ae2758
commit 9278172412
2 changed files with 23 additions and 8 deletions

View file

@ -9,7 +9,8 @@
"engines": { "engines": {
"node": "~14.19.1" "node": "~14.19.1"
}, },
"devDependencies": {}, "devDependencies": {
},
"dependencies": { "dependencies": {
"lua-types": "^2.11.0", "lua-types": "^2.11.0",
"typescript-to-lua": "1.4.4", "typescript-to-lua": "1.4.4",
@ -17,7 +18,10 @@
"typescript": "4.6.2" "typescript": "4.6.2"
}, },
"license": "UNLICENSED", "license": "UNLICENSED",
"peerDependencies": {}, "peerDependencies": {
"optionalDependencies": {}, },
"bundledDependencies": [] "optionalDependencies": {
},
"bundledDependencies": [
]
} }

View file

@ -22,6 +22,7 @@ type PlayerUpdateEvent =
function playerUpdateThrottle( function playerUpdateThrottle(
event: PlayerUpdateEvent, event: PlayerUpdateEvent,
mutate: PlayerUpdater, mutate: PlayerUpdater,
expirationDurationTicks: uint | undefined = undefined,
) { ) {
const playerIndex = event.player_index const playerIndex = event.player_index
if (playerIndex == undefined) { if (playerIndex == undefined) {
@ -42,10 +43,20 @@ function playerUpdateThrottle(
data.events ??= {} data.events ??= {}
data.events[eventName] ??= [] data.events[eventName] ??= []
data.events[eventName].push(event.tick) data.events[eventName].push(event.tick)
} },
expirationDurationTicks
) )
} }
function playerUpdateImmediate(
event: PlayerUpdateEvent,
mutate: PlayerUpdater,
) {
playerUpdateThrottle(event, mutate, 0)
}
// function playerUpdateDebounce(playerIndex: uint, mutate: PlayerUpdater) { // function playerUpdateDebounce(playerIndex: uint, mutate: PlayerUpdater) {
// EventUpdatesManager.debounce<"PLAYER">( // EventUpdatesManager.debounce<"PLAYER">(
// {index: playerIndex, updateType: "PLAYER"}, // {index: playerIndex, updateType: "PLAYER"},
@ -151,7 +162,7 @@ function handleBannedEvent(event: OnPlayerBannedEvent | OnPlayerUnbannedEvent) {
script.on_event( script.on_event(
defines.events.on_player_kicked, defines.events.on_player_kicked,
(event: OnPlayerKickedEvent) => { (event: OnPlayerKickedEvent) => {
playerUpdateThrottle( playerUpdateImmediate(
event, event,
(player, data) => { (player, data) => {
data.kickedReason = event.reason ?? null data.kickedReason = event.reason ?? null
@ -170,7 +181,7 @@ for (const [name, disconnectId] of pairs(defines.disconnect_reason)) {
script.on_event( script.on_event(
defines.events.on_pre_player_left_game, defines.events.on_pre_player_left_game,
(event: OnPrePlayerLeftGameEvent) => { (event: OnPrePlayerLeftGameEvent) => {
playerUpdateThrottle( playerUpdateImmediate(
event, event,
(player, data) => { (player, data) => {
data.disconnectReason = disconnectReasons.get(event.reason) data.disconnectReason = disconnectReasons.get(event.reason)
@ -183,7 +194,7 @@ script.on_event(
script.on_event( script.on_event(
defines.events.on_player_removed, defines.events.on_player_removed,
(event: OnPlayerRemovedEvent) => { (event: OnPlayerRemovedEvent) => {
playerUpdateThrottle( playerUpdateImmediate(
event, event,
(player, data) => { (player, data) => {
data.isRemoved = true data.isRemoved = true