diff --git a/api.py b/api.py
index e2f1959..968028e 100644
--- a/api.py
+++ b/api.py
@@ -14,7 +14,7 @@ class WorldState():
self.fissures = self.ws.get('fissures')
self.invasions = self.ws.get('invasions')
- self.sorties = self.ws.get('sorties')
+ self.sorties = self.ws.get('sortie')
self.archon_hunt = self.ws.get('archonHunt')
self.arbitration = self.ws.get('arbitration')
self.alerts = self.ws.get('alerts')
diff --git a/extra_widgets.py b/extra_widgets.py
index aa039d9..2403811 100644
--- a/extra_widgets.py
+++ b/extra_widgets.py
@@ -1,6 +1,9 @@
from PyQt5 import QtWidgets, QtGui, QtCore
from datetime import datetime, timedelta
+import time
+
+utcoffset = time.time() - time.mktime(time.gmtime())
class Fissure(QtWidgets.QWidget):
def __init__(self, parent, fissure_info = {}, i = 0):
@@ -52,17 +55,18 @@ class Fissure(QtWidgets.QWidget):
def update_gui(self):
try:
self.FissureTier.setText(f"{self.fissure_info['tier']} - T{self.fissure_info['tierNum']}")
- self.update_timer(self)
+ self.update_timer()
self.FissureNode.setText(f"{self.fissure_info['node']}")
self.FissureType.setText(f"{'Steel Path' if self.fissure_info['isHard'] else ('Storm' if self.fissure_info['isStorm'] else '')}")
except:
pass
- def udpdate_timer(self):
- eta = datetime.strptime(self.fissure_info['expiry'], '%Y-%m-%dT%H:%M:%SZ') - datetime.now()
- eta -= timedelta(microseconds=eta.microseconds)
-
- self.FissureTimer.setText(f"{eta.seconds // 3600}h {(eta.seconds // 60) % 60}m {eta.seconds % 60}s")
+ def update_timer(self):
+ eta = round(time.mktime(time.strptime(self.fissure_info['expiry'], '%Y-%m-%dT%H:%M:%S.%fZ')) - time.time() + utcoffset)
+ if eta >= 0:
+ self.FissureTimer.setText(f"{str(eta // 3600) + 'h' if eta // 3600 > 0 else ''} {(eta // 60) % 60}m {eta % 60}s")
+ else:
+ self.FissureTimer.setText("Expired")
class Invasion(QtWidgets.QWidget):
@@ -110,11 +114,12 @@ class Invasion(QtWidgets.QWidget):
def update_gui(self):
try:
- faction_colors = {'Gineer': 'red', 'Corpus': 'blue', 'Infested': 'green'}
+ faction_colors = {'Grineer': 'red', 'Corpus': 'blue', 'Infested': 'green'}
self.Reward1.setText(f"{self.invasion_info['attackerReward']['itemString']}")
self.Reward2.setText(f"{self.invasion_info['defenderReward']['itemString']}")
self.InvasionProgress.setStyleSheet(f'QProgressBar {{background-color:{faction_colors.get(self.invasion_info["defendingFaction"])};border-color:red; border:0px}}\nQProgressBar::chunk {{background-color:{faction_colors.get(self.invasion_info["attackingFaction"])};}}')
- except:
+ self.update_progress()
+ except KeyError:
pass
def update_progress(self):
@@ -164,9 +169,11 @@ class Alert(QtWidgets.QWidget):
pass
def update_timer(self):
- eta = datetime.strptime(self.alert_info['expiry'], '%Y-%m-%dT%H:%M:%SZ') - datetime.now()
- eta -= deltatime(microseconds=eta.microseconds)
- self.AlertTimer.setText(f'{eta.days}d {eta.seconds // 3600}h {(eta.seconds // 60) % 60}m {eta.seconds % 60}s')
+ eta = round(time.mktime(time.strptime(self.alert_info['expiry'], '%Y-%m-%dT%H:%M:%S.%fZ')) - time.time() + utcoffset)
+ if eta > 0:
+ self.AlertTimer.setText(f'{str(eta // 86400) + "d " if eta // 86400 > 0 else ""}{str((eta // 3600) % 24) + "h" if eta // 3600 > 0 else ""} {(eta // 60) % 60}m {eta % 60}s')
+ else:
+ self.AlertTimer.setText('Expired')
class BaroItem(QtWidgets.QWidget):
def __init__(self, parent, item_info = {}, i = 0):
@@ -239,9 +246,11 @@ class Event(QtWidgets.QWidget):
pass
def update_timer(self):
- eta = datetime.strptime(self.event_info['expiry'], '%Y-%m-%dT%H:%M:%SZ') - datetime.now()
- eta -= deltatime(microseconds=eta.microseconds)
- self.EventTimer.setText(f'{eta.days}d {eta.seconds // 3600}h {(eta.seconds // 60) % 60}m {eta.seconds % 60}s')
+ eta = round(time.mktime(time.strptime(self.event_info['expiry'], '%Y-%m-%dT%H:%M:%S.%fZ')) - time.time() + utcoffset)
+ if eta > 0:
+ self.EventTimer.setText(f'{str(eta // 86400) + "d " if eta // 86400 > 0 else ""}{(eta // 3600) % 24}h')
+ else:
+ self.EventTimer.setText('Expired')
class NewsBlurb(QtWidgets.QWidget):
def __init__(self, parent, news_info = {}, i = 0):
@@ -293,10 +302,9 @@ class NewsBlurb(QtWidgets.QWidget):
pass
def update_timer(self):
- eta = datetime.strptime(self.news_info['expiry'], '%Y-%m-%dT%H:%M:%SZ') - datetime.now()
- eta -= deltatime(microseconds=eta.microseconds)
- if abs(eta.days) >= 1:
- self.NewsBlurbRelTimer.setText(f'{"Starts in " if eta.days > 0 else ""}{abs(eta.days)}')
+ eta = round(time.mktime(time.strptime(self.news_info['date'], '%Y-%m-%dT%H:%M:%S.%fZ')) - time.time() + utcoffset)
+ if abs(eta) // 86400 >= 1:
+ self.NewsBlurbRelTimer.setText(f'{"Starts in " if eta // 86400 > 0 else ""}{abs(eta) // 86400}d')
else:
- self.NewsBlurbRelTimer.setText(f'{"Starts in " if eta.seconds > 0 else ""}{abs(eta.seconds) // 3600}h {(abs(eta.seconds) // 60) % 60}m')
+ self.NewsBlurbRelTimer.setText(f'{"Starts in " if eta > 0 else ""}{(abs(eta) // 3600) % 24}h {(abs(eta) // 60) % 60}m')
diff --git a/gui_base.py b/gui_base.py
index 3d0d305..6dfe587 100644
--- a/gui_base.py
+++ b/gui_base.py
@@ -14,7 +14,7 @@ from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
- MainWindow.resize(1136, 890)
+ MainWindow.resize(1155, 877)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.verticalLayout_18 = QtWidgets.QVBoxLayout(self.centralwidget)
@@ -71,7 +71,7 @@ class Ui_MainWindow(object):
self.gridLayout_2.setObjectName("gridLayout_2")
self.WeeklyResetTimeDayStr = QtWidgets.QLabel(self.WeeklyTimer)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
- sizePolicy.setHorizontalStretch(1)
+ sizePolicy.setHorizontalStretch(2)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.WeeklyResetTimeDayStr.sizePolicy().hasHeightForWidth())
self.WeeklyResetTimeDayStr.setSizePolicy(sizePolicy)
@@ -85,7 +85,7 @@ class Ui_MainWindow(object):
self.gridLayout_2.addWidget(self.WeeklyResetTimeDayStr, 1, 0, 1, 1)
self.WeeklyResetTimeStr = QtWidgets.QLabel(self.WeeklyTimer)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
- sizePolicy.setHorizontalStretch(2)
+ sizePolicy.setHorizontalStretch(3)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.WeeklyResetTimeStr.sizePolicy().hasHeightForWidth())
self.WeeklyResetTimeStr.setSizePolicy(sizePolicy)
@@ -151,7 +151,7 @@ class Ui_MainWindow(object):
self.scrollArea.setWidgetResizable(True)
self.scrollArea.setObjectName("scrollArea")
self.scrollAreaWidgetContents = QtWidgets.QWidget()
- self.scrollAreaWidgetContents.setGeometry(QtCore.QRect(0, 0, 240, 457))
+ self.scrollAreaWidgetContents.setGeometry(QtCore.QRect(0, 0, 244, 449))
self.scrollAreaWidgetContents.setObjectName("scrollAreaWidgetContents")
self.verticalLayout_6 = QtWidgets.QVBoxLayout(self.scrollAreaWidgetContents)
self.verticalLayout_6.setObjectName("verticalLayout_6")
@@ -186,7 +186,7 @@ class Ui_MainWindow(object):
self.scrollArea_2.setWidgetResizable(True)
self.scrollArea_2.setObjectName("scrollArea_2")
self.scrollAreaWidgetContents_2 = QtWidgets.QWidget()
- self.scrollAreaWidgetContents_2.setGeometry(QtCore.QRect(0, 0, 239, 457))
+ self.scrollAreaWidgetContents_2.setGeometry(QtCore.QRect(0, 0, 245, 449))
self.scrollAreaWidgetContents_2.setObjectName("scrollAreaWidgetContents_2")
self.verticalLayout_8 = QtWidgets.QVBoxLayout(self.scrollAreaWidgetContents_2)
self.verticalLayout_8.setObjectName("verticalLayout_8")
@@ -260,11 +260,11 @@ class Ui_MainWindow(object):
self.SortieM2.setWordWrap(True)
self.SortieM2.setObjectName("SortieM2")
self.gridLayout_5.addWidget(self.SortieM2, 1, 0, 1, 1)
- self.SrotieM2Mod = QtWidgets.QLabel(self.widget)
- self.SrotieM2Mod.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
- self.SrotieM2Mod.setWordWrap(True)
- self.SrotieM2Mod.setObjectName("SrotieM2Mod")
- self.gridLayout_5.addWidget(self.SrotieM2Mod, 1, 1, 1, 1)
+ self.SortieM2Mod = QtWidgets.QLabel(self.widget)
+ self.SortieM2Mod.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
+ self.SortieM2Mod.setWordWrap(True)
+ self.SortieM2Mod.setObjectName("SortieM2Mod")
+ self.gridLayout_5.addWidget(self.SortieM2Mod, 1, 1, 1, 1)
self.SortieM3 = QtWidgets.QLabel(self.widget)
self.SortieM3.setObjectName("SortieM3")
self.gridLayout_5.addWidget(self.SortieM3, 2, 0, 1, 1)
@@ -287,15 +287,6 @@ class Ui_MainWindow(object):
self.ArchonHuntStr.setAlignment(QtCore.Qt.AlignCenter)
self.ArchonHuntStr.setObjectName("ArchonHuntStr")
self.verticalLayout_11.addWidget(self.ArchonHuntStr)
- self.ArchonHuntTimer = QtWidgets.QLabel(self.ArchonHunt)
- font = QtGui.QFont()
- font.setPointSize(12)
- font.setBold(True)
- font.setWeight(75)
- self.ArchonHuntTimer.setFont(font)
- self.ArchonHuntTimer.setAlignment(QtCore.Qt.AlignCenter)
- self.ArchonHuntTimer.setObjectName("ArchonHuntTimer")
- self.verticalLayout_11.addWidget(self.ArchonHuntTimer)
self.widget_2 = QtWidgets.QWidget(self.ArchonHunt)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Expanding)
sizePolicy.setHorizontalStretch(0)
@@ -365,14 +356,14 @@ class Ui_MainWindow(object):
self.ArbitrationMT.setFont(font)
self.ArbitrationMT.setObjectName("ArbitrationMT")
self.horizontalLayout_4.addWidget(self.ArbitrationMT)
- self.ArbitrationTimer = QtWidgets.QLabel(self.ArbitrationData)
+ self.ArbitrationFaction = QtWidgets.QLabel(self.ArbitrationData)
font = QtGui.QFont()
font.setBold(True)
font.setWeight(75)
- self.ArbitrationTimer.setFont(font)
- self.ArbitrationTimer.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
- self.ArbitrationTimer.setObjectName("ArbitrationTimer")
- self.horizontalLayout_4.addWidget(self.ArbitrationTimer)
+ self.ArbitrationFaction.setFont(font)
+ self.ArbitrationFaction.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
+ self.ArbitrationFaction.setObjectName("ArbitrationFaction")
+ self.horizontalLayout_4.addWidget(self.ArbitrationFaction)
self.stackedWidget.addWidget(self.ArbitrationData)
self.verticalLayout_14.addWidget(self.stackedWidget)
self.verticalLayout_13.addWidget(self.Arbitration)
@@ -393,7 +384,7 @@ class Ui_MainWindow(object):
self.scrollArea_3.setWidgetResizable(True)
self.scrollArea_3.setObjectName("scrollArea_3")
self.scrollAreaWidgetContents_3 = QtWidgets.QWidget()
- self.scrollAreaWidgetContents_3.setGeometry(QtCore.QRect(0, 0, 221, 313))
+ self.scrollAreaWidgetContents_3.setGeometry(QtCore.QRect(0, 0, 226, 307))
self.scrollAreaWidgetContents_3.setObjectName("scrollAreaWidgetContents_3")
self.verticalLayout_16 = QtWidgets.QVBoxLayout(self.scrollAreaWidgetContents_3)
self.verticalLayout_16.setObjectName("verticalLayout_16")
@@ -655,10 +646,10 @@ class Ui_MainWindow(object):
self.Elite2Name.setAlignment(QtCore.Qt.AlignBottom|QtCore.Qt.AlignHCenter)
self.Elite2Name.setObjectName("Elite2Name")
self.verticalLayout_27.addWidget(self.Elite2Name)
- self.Elite3Desc = QtWidgets.QLabel(self.NightwaveElite2)
- self.Elite3Desc.setAlignment(QtCore.Qt.AlignHCenter|QtCore.Qt.AlignTop)
- self.Elite3Desc.setObjectName("Elite3Desc")
- self.verticalLayout_27.addWidget(self.Elite3Desc)
+ self.Elite2Desc = QtWidgets.QLabel(self.NightwaveElite2)
+ self.Elite2Desc.setAlignment(QtCore.Qt.AlignHCenter|QtCore.Qt.AlignTop)
+ self.Elite2Desc.setObjectName("Elite2Desc")
+ self.verticalLayout_27.addWidget(self.Elite2Desc)
self.horizontalLayout_9.addWidget(self.NightwaveElite2)
self.gridLayout_8.addWidget(self.widget_4, 1, 0, 1, 1)
self.stackedWidget_3.addWidget(self.NightwaveData)
@@ -685,7 +676,7 @@ class Ui_MainWindow(object):
self.scrollArea_4.setWidgetResizable(True)
self.scrollArea_4.setObjectName("scrollArea_4")
self.scrollAreaWidgetContents_4 = QtWidgets.QWidget()
- self.scrollAreaWidgetContents_4.setGeometry(QtCore.QRect(0, 0, 518, 743))
+ self.scrollAreaWidgetContents_4.setGeometry(QtCore.QRect(0, 0, 528, 730))
self.scrollAreaWidgetContents_4.setObjectName("scrollAreaWidgetContents_4")
self.verticalLayout_31 = QtWidgets.QVBoxLayout(self.scrollAreaWidgetContents_4)
self.verticalLayout_31.setObjectName("verticalLayout_31")
@@ -720,7 +711,7 @@ class Ui_MainWindow(object):
self.scrollArea_5.setWidgetResizable(True)
self.scrollArea_5.setObjectName("scrollArea_5")
self.scrollAreaWidgetContents_5 = QtWidgets.QWidget()
- self.scrollAreaWidgetContents_5.setGeometry(QtCore.QRect(0, 0, 518, 743))
+ self.scrollAreaWidgetContents_5.setGeometry(QtCore.QRect(0, 0, 527, 730))
self.scrollAreaWidgetContents_5.setObjectName("scrollAreaWidgetContents_5")
self.verticalLayout_33 = QtWidgets.QVBoxLayout(self.scrollAreaWidgetContents_5)
self.verticalLayout_33.setObjectName("verticalLayout_33")
@@ -766,18 +757,17 @@ class Ui_MainWindow(object):
self.SortieM1.setText(_translate("MainWindow", "Exterminate"))
self.SortieM1Mod.setText(_translate("MainWindow", "Energy Reduction"))
self.SortieM2.setText(_translate("MainWindow", "Sabotage"))
- self.SrotieM2Mod.setText(_translate("MainWindow", "Enemy Elemental Enhancements"))
+ self.SortieM2Mod.setText(_translate("MainWindow", "Enemy Elemental Enhancements"))
self.SortieM3.setText(_translate("MainWindow", "Assasination"))
self.SortieM3Mod.setText(_translate("MainWindow", "Sniper Only"))
self.ArchonHuntStr.setText(_translate("MainWindow", "Archon Hunt: Amar"))
- self.ArchonHuntTimer.setText(_translate("MainWindow", "9d 9h 19m 8s"))
self.ArchonHuntM1.setText(_translate("MainWindow", "Sabotage"))
self.ArchonHuntM2.setText(_translate("MainWindow", "Survival"))
self.ArchonHuntM3.setText(_translate("MainWindow", "Assasinate"))
self.label_6.setText(_translate("MainWindow", "Arbitration"))
self.label_8.setText(_translate("MainWindow", "Arbitration not available"))
self.ArbitrationMT.setText(_translate("MainWindow", "Defection"))
- self.ArbitrationTimer.setText(_translate("MainWindow", "55m 14s"))
+ self.ArbitrationFaction.setText(_translate("MainWindow", "Infested"))
self.label_9.setText(_translate("MainWindow", "Alerts"))
self.tabWidget.setTabText(self.tabWidget.indexOf(self.Timers), _translate("MainWindow", "Timers"))
self.label_10.setText(_translate("MainWindow", "Baro not here"))
@@ -802,7 +792,7 @@ class Ui_MainWindow(object):
self.Elite1Name.setText(_translate("MainWindow", "Agent"))
self.Elite1Desc.setText(_translate("MainWindow", "Complete a Mission"))
self.Elite2Name.setText(_translate("MainWindow", "Agent"))
- self.Elite3Desc.setText(_translate("MainWindow", "Complete a Mission"))
+ self.Elite2Desc.setText(_translate("MainWindow", "Complete a Mission"))
self.tabWidget.setTabText(self.tabWidget.indexOf(self.Nightwave), _translate("MainWindow", "Nightwave"))
self.label_12.setText(_translate("MainWindow", "Events"))
self.label_18.setText(_translate("MainWindow", "News"))
diff --git a/gui_base.ui b/gui_base.ui
index 349f46f..1514591 100644
--- a/gui_base.ui
+++ b/gui_base.ui
@@ -6,8 +6,8 @@
0
0
- 1136
- 890
+ 1155
+ 877
@@ -91,7 +91,7 @@
- 1
+ 2
0
@@ -114,7 +114,7 @@
- 2
+ 3
0
@@ -223,8 +223,8 @@
0
0
- 240
- 457
+ 244
+ 449
@@ -281,8 +281,8 @@
0
0
- 239
- 457
+ 245
+ 449
@@ -398,7 +398,7 @@
-
-
+
Enemy Elemental Enhancements
@@ -452,23 +452,6 @@
- -
-
-
-
- 12
- 75
- true
-
-
-
- 9d 9h 19m 8s
-
-
- Qt::AlignCenter
-
-
-
-
@@ -578,7 +561,7 @@
-
-
+
75
@@ -586,7 +569,7 @@
- 55m 14s
+ Infested
Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
@@ -629,8 +612,8 @@
0
0
- 221
- 313
+ 226
+ 307
@@ -1070,7 +1053,7 @@
-
-
+
Complete a Mission
@@ -1125,8 +1108,8 @@
0
0
- 518
- 743
+ 528
+ 730
@@ -1183,8 +1166,8 @@
0
0
- 518
- 743
+ 527
+ 730
diff --git a/main.py b/main.py
index 8091757..a0fb258 100644
--- a/main.py
+++ b/main.py
@@ -3,6 +3,7 @@ from api import WorldState
from extra_widgets import *
from PyQt5.QtWidgets import QApplication, QMessageBox
+from PyQt5.QtCore import QTimer
import sys
@@ -14,34 +15,118 @@ class App(GUI):
while self.ws.ws == {}:
self.network_error()
sys.exit(1)
- del self.Fissure, self.Invasion, self.Alert, self.BaroItem, self.Event, self.NewsBlurb
+ [widget.setParent(None) for widget in [self.Fissure, self.Invasion, self.Alert, self.BaroItem, self.Event, self.NewsBlurb]]
+
+ self.timers_timer = QTimer(self)
+ self.timers_timer.timeout.connect(self.update_timers)
+ self.timers_timer.start(1000)
+
+ self.ws_update_timer = QTimer(self)
+ self.ws_update_timer.timeout.connect(self.update_world_state)
+ self.ws_update_timer.start(1000 * 60 * 5)
+
self.redraw_content()
+ def redraw_content(self):
+ self.redraw_content_dynamic()
+ self.redraw_content_static()
- def redraw_content(self):
- self.redraw_content_dynamic()
+ def redraw_content_dynamic(self):
+ self.Fissure_list = [Fissure(self.scrollAreaWidgetContents, fissure_info, fissure_i) for (fissure_i, fissure_info) in enumerate(self.ws.fissures)]
+ [self.verticalLayout_6.addWidget(i) for i in self.Fissure_list]
- def redraw_content_dynamic(self):
- self.Fissure_list = [Fissure(self.scrollAreaWidgetContents, fissure_info, fissure_i) for (fissure_i, fissure_info) in enumerate(self.ws.fissures)]
- [self.verticalLayout_6.addWidget(i) for i in self.Fissure_list]
- self.Invasion_list = [Invasion(self.scrollAreaWidgetContents_2, invasion_info, invasion_i) for (invasion_i, invasion_info) in enumerate(self.ws.invasions)]
- [self.verticalLayout_8.addWidget(i) for i in self.Invasion_list]
- self.Alert_list = [Alert(self.scrollAreaWidgetContents_3, alerta_info, alert_i) for (alert_i, alert_info) in enumerate(self.ws.alerts)]
- [self.verticalLayout_16.addWidget(i) for i in self.Alert_list]
- if len(self.ws.baro_items) == 0:
- self.stackedWidget_2.setCurrentIndex(0)
- else:
- self.stackedWidget_2.setCurrentIndex(1)
- self.baro_items_list = [BaroItem(self.BaroData, item_info, item_i) for (item_i, item_info) in enumerate(self.ws.baro_items)]
- [self.gridLayout_6.addWidget(i, index // 7, index % 7, 1, 1) for (index, i) in enumerate(self.baro_items_list)]
- self.events_list = [Event(self.scrollAreaWidgetContents_4, event_info, event_i) for (event_i, event_info) in enumerate(self.ws.events)]
- [self.verticalLayout_31.addWidget(i) for i in self.events_list]
- self.newsblurb_list = [NewsBlurb(self.scrollAreaWidgetContents_5, newsblurb_info, newsblurb_i) for (newsblurb_i, newsblurb_info) in enumerate(self.ws.news)]
- [self.verticalLayout_33.addWidget(i) for i in self.newsblurb_list]
+ self.Invasion_list = [Invasion(self.scrollAreaWidgetContents_2, invasion_info, invasion_i) for (invasion_i, invasion_info) in enumerate(self.ws.invasions)]
+ [self.verticalLayout_8.addWidget(i) for i in self.Invasion_list]
- def redraw_content_static(self):
- pass
-
+ self.Alert_list = [Alert(self.scrollAreaWidgetContents_3, alert_info, alert_i) for (alert_i, alert_info) in enumerate(self.ws.alerts)]
+ [self.verticalLayout_16.addWidget(i) for i in self.Alert_list]
+
+ if len(self.ws.baro_items) == 0:
+ self.stackedWidget_2.setCurrentIndex(0)
+ else:
+ self.stackedWidget_2.setCurrentIndex(1)
+ self.baro_items_list = [BaroItem(self.BaroData, item_info, item_i) for (item_i, item_info) in enumerate(self.ws.baro_items)]
+ [self.gridLayout_6.addWidget(i, index // 7, index % 7, 1, 1) for (index, i) in enumerate(self.baro_items_list)]
+
+ self.events_list = [Event(self.scrollAreaWidgetContents_4, event_info, event_i) for (event_i, event_info) in enumerate(self.ws.events)]
+ [self.verticalLayout_31.addWidget(i) for i in self.events_list]
+
+ self.newsblurb_list = [NewsBlurb(self.scrollAreaWidgetContents_5, newsblurb_info, newsblurb_i) for (newsblurb_i, newsblurb_info) in enumerate(self.ws.news)]
+ [self.verticalLayout_33.addWidget(i) for i in self.newsblurb_list]
+
+ def redraw_content_static(self):
+ for i in range(1, 4):
+ getattr(self, 'SortieM'+str(i)).setText(self.ws.sorties['variants'][i - 1]['missionType'])
+ getattr(self, 'SortieM' + str(i) + 'Mod').setText(self.ws.sorties['variants'][i-1]['modifier'])
+
+ self.ArchonHuntStr.setText('Archon Hunt: ' + self.ws.archon_hunt['boss'])
+ for i in range(1, 4):
+ getattr(self, 'ArchonHuntM' + str(i)).setText(self.ws.archon_hunt['missions'][i - 1]['type'])
+
+ if not self.ws.arbitration:
+ self.stackedWidget.setCurrentIndex(0)
+ else:
+ self.stackedWidget.setCurrentIndex(1)
+ self.ArbitrationMT.setText(self.ws.arbitration['type'])
+ self.ArbitrationFaction.setText(self.ws.arbitration['enemy'])
+
+ daily_i = 1
+ weekly_i = 1
+ elite_i = 1
+ if self.ws.nightwave:
+ self.stackedWidget_3.setCurrentIndex(1)
+ for challenge in self.ws.nightwave['activeChallenges']:
+ if challenge.get('isDaily'):
+ challenge_type = 'Daily'
+ challenge_i = daily_i
+ daily_i += 1
+ elif challenge.get('isElite'):
+ challenge_type = 'Elite'
+ challenge_i = weekly_i
+ weekly_i += 1
+ else:
+ challenge_type = 'Weekly'
+ challenge_i = elite_i
+ elite_i += 1
+ getattr(self, challenge_type + str(challenge_i) + 'Name').setText(challenge['title'])
+ getattr(self, challenge_type + str(challenge_i) + 'Desc').setText(challenge['desc'])
+ else:
+ self.stackedWidget_3.setCurrentIndex(0)
+
+ def update_timers(self):
+ [i.update_timer() for i in self.Fissure_list]
+ [i.update_progress() for i in self.Invasion_list]
+ [i.update_timer() for i in self.Alert_list]
+ [i.update_timer() for i in self.events_list]
+ [i.update_timer() for i in self.newsblurb_list]
+
+ sortie_eta = round(time.mktime(time.strptime(self.ws.sorties['expiry'], '%Y-%m-%dT%H:%M:%S.%fZ')) - time.mktime(time.gmtime()))
+ if sortie_eta >= 0:
+ self.SortieResetTimer.setText(f'{str(sortie_eta // 3600) + "h " if sortie_eta // 3600 > 0 else ""}{(sortie_eta // 60) % 60}m {sortie_eta % 60}s')
+ else:
+ self.SortieResetTimer.setText('Expired')
+
+ weekly_eta = round(time.mktime(time.strptime('1970-1-1T00:00:00.000Z', '%Y-%m-%dT%H:%M:%S.%fZ')) - time.mktime(time.gmtime()) - 3 * 86400) % (7 * 86400)
+ self.WeeklyResetTimeDayStr.setText(str(weekly_eta // 86400) + 'd')
+ self.WeeklyResetTimeStr.setText(f'{(weekly_eta // 3600) % 24}h {(weekly_eta // 60) % 60}m {weekly_eta % 60}s')
+
+ bounty_eta = round(time.mktime(time.strptime('1970-1-1T00:00:00.000Z', '%Y-%m-%dT%H:%M:%S.%fZ')) - time.mktime(time.gmtime()) + 120) % (9000)
+ self.BountyTimeStr.setText(f'{bounty_eta // 3600}h {(bounty_eta // 60) % 60}m {bounty_eta % 60}s')
+
+ baro_eta = round(time.mktime(time.strptime('1970-1-1T00:00:00.000Z', '%Y-%m-%dT%H:%M:%S.%fZ')) - time.mktime(time.gmtime()) + (10*86400 + 13 * 3600)) % (14 * 86400)
+ if baro_eta >= 2 * 86400:
+ self.BaroStateStr.setText('Baro Arrives in:')
+ baro_eta = baro_eta - 2 * 86400
+ else:
+ self.BaroStateStr.setText('Baro Leaves in:')
+ self.BaroTimeStr.setText(f'{str(baro_eta // 86400) + "d " if baro_eta // 86400 > 0 else ""}{(baro_eta // 3600) % 24}h {(baro_eta // 60) % 60}m {baro_eta % 60}s')
+
+
+ def update_world_state(self):
+ if self.ws.get_ws():
+ self.redraw_content()
+ else:
+ self.network_error()
def network_error(self):
msg = QMessageBox()