@overwolf/overwolf-api-ts
Version:
utilities and wrappers for common Overwolf API tasks
55 lines (45 loc) • 1.63 kB
text/typescript
import { OWListener, OWListenerDelegate } from "./ow-listener";
export interface OWGameListenerDelegate extends OWListenerDelegate {
onGameStarted?(info: overwolf.games.RunningGameInfo);
onGameEnded?(info: overwolf.games.RunningGameInfo);
}
export class OWGameListener extends OWListener<OWGameListenerDelegate> {
constructor(delegate: OWGameListenerDelegate) {
super(delegate);
}
public start(): void {
super.start();
overwolf.games.onGameInfoUpdated.addListener(this.onGameInfoUpdated);
overwolf.games.getRunningGameInfo(this.onRunningGameInfo);
}
public stop(): void {
overwolf.games.onGameInfoUpdated.removeListener(this.onGameInfoUpdated);
}
private onGameInfoUpdated = (update: overwolf.games.GameInfoUpdatedEvent): void => {
if (!update || !update.gameInfo) {
return;
}
if (!update.runningChanged && !update.gameChanged) {
return;
}
if (update.reason.includes(overwolf.games.enums.GameInfoChangeReason.GameLaunched)) {
if (this._delegate.onGameStarted) {
this._delegate.onGameStarted(update.gameInfo)
}
} else if (update.reason.includes(overwolf.games.enums.GameInfoChangeReason.GameTerminated)) {
if (this._delegate.onGameEnded) {
this._delegate.onGameEnded(update.gameInfo)
}
}
}
private onRunningGameInfo = (info: overwolf.games.RunningGameInfo): void => {
if (!info) {
return;
}
if (info.isRunning) {
if (this._delegate.onGameStarted) {
this._delegate.onGameStarted(info)
}
}
}
}