summaryrefslogtreecommitdiff
path: root/src/main/status.ts
blob: d58ebc657bfbc6b355164a98d75cdebb0d67d35f (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
import { mainWindow } from "../main";
import { dialog } from "electron";

type STATUS = {
  progress: number;
  activity: string;
  ActivityIsError: boolean;
  playing: boolean;
  gameRunning: boolean;
  gameStatus: {
    server: string;
  };
};

const status: STATUS = {
  progress: null,
  activity: null,
  playing: false, //Is manaplus starting or started
  ActivityIsError: false,
  gameRunning: false,
  gameStatus: {
    server: "Launcher",
  },
};

export namespace Status {
  export function setGameRunning(value: boolean) {
    status.gameRunning = value;
    updateStatus();
  }
  export function setProgress(value: number) {
    status.progress = value;
    updateStatus();
  }
  export function removeProgress() {
    status.progress = null;
    updateStatus();
  }
  export function setActivity(value: string) {
    status.activity = value;
    status.ActivityIsError = false;
    updateStatus();
  }
  export function removeActivity() {
    status.activity = null;
    status.ActivityIsError = false;
    updateStatus();
  }
  export function showError(
    title: string,
    message: string,
    activityMsg: string = message
  ) {
    status.activity = activityMsg;
    status.ActivityIsError = true;
    updateStatus();
    setTimeout(() => {
      dialog.showErrorBox(title, message);
    }, 300);
  }
  export function setPlaying(playing: boolean) {
    status.playing = playing;
    updateStatus();
  }
  export function setGameStatus(gameStatus: { server: string }) {
    status.gameStatus = gameStatus;
    updateStatus();
  }
  export function getStatus(): STATUS {
    return status;
  }
}

function updateStatus() {
  if (mainWindow && mainWindow !== null) {
    if (status.progress == null || status.progress < 0)
      mainWindow.setProgressBar(-1);
    else if (status.progress > 100) mainWindow.setProgressBar(2);
    else mainWindow.setProgressBar(status.progress / 100);

    mainWindow.webContents.send("status-update", status);
  }
  EventEmitter.emit("status", status);
}

import * as events from "events";

class MyEmitter extends events {}

export const EventEmitter = new MyEmitter();