diff --git a/.gitignore b/.gitignore old mode 100644 new mode 100755 diff --git a/LICENSE b/LICENSE old mode 100644 new mode 100755 diff --git a/README.md b/README.md old mode 100644 new mode 100755 diff --git a/components/mainWindow.py b/components/mainWindow.py new file mode 100755 index 0000000..a5cc2f4 --- /dev/null +++ b/components/mainWindow.py @@ -0,0 +1,113 @@ +from PyQt6.QtWidgets import ( + QWidget, + QPushButton, + QVBoxLayout, + QHBoxLayout, +) + +from data.collectibles import collectibles + +class MainWindow(QWidget): + collectibles = {} + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + + # Set the window title + self.setWindowTitle('Y-Tracker') + self.collectibles = collectibles + + # Create & Edit Layout + layout = QVBoxLayout() + self.setLayout(layout) + + vLayout = QVBoxLayout() + hLayout = QHBoxLayout() + + layout.addLayout(hLayout) + layout.addLayout(vLayout) + + self.layout_dict = {} + self.label_dict = {} + self.button_dict = {} + + # Build the Inputs + for type in self.collectibles: + + if self.collectibles[type]['meta']['orient'] == 'horizontal': + self.layout_dict[type] = QHBoxLayout() + vLayout.addLayout(self.layout_dict[type]) + + else: + self.layout_dict[type] = QVBoxLayout() + hLayout.addLayout(self.layout_dict[type]) + + self.button_dict[type] = {} + + for item in self.collectibles[type]: + + if item != 'meta': + self.button_dict[type][item] = QPushButton() + self.button_dict[type][item].setObjectName(f'{type}-{item}') + + if self.collectibles[type]['meta']['type'] == 'bool': + self.button_dict[type][item].setText(self.collectibles[type][item]['name']) + + if self.collectibles[type][item]['value'] == False: + self.button_dict[type][item].setStyleSheet(""" + QPushButton#""" + self.button_dict[type][item].objectName() + """ { + color: #88FFFFFF + } + """) + + else: + self.button_dict[type][item].setStyleSheet(""" + QPushButton#""" + self.button_dict[type][item].objectName() + """ { + color: #FFFFFFFF + } + """) + + self.button_dict[type][item].clicked.connect(lambda state, x=[type, item]: boolButtonSelect(self, x[0], x[1])) + + elif self.collectibles[type]['meta']['type'] == 'int': + self.button_dict[type][item].setText(f'{self.collectibles[type][item]["name"]}: {self.collectibles[type][item]["value"]}') + self.button_dict[type][item].clicked.connect(lambda state, x=[type, item]: intButtonSelect(self, x[0], x[1])) + + elif self.collectibles[type]['meta']['type'] == 'list': + self.button_dict[type][item].setText(self.collectibles[type]['meta']['list'][self.collectibles[type][item]['value']]) + self.button_dict[type][item].clicked.connect(lambda state, x=[type, item]: listButtonSelect(self, x[0], x[1])) + + self.layout_dict[type].addWidget(self.button_dict[type][item]) + + # Add Events + def boolButtonSelect(self, type, item): + if self.collectibles[type][item]['value']: + self.collectibles[type][item]['value'] = False + self.button_dict[type][item].setStyleSheet(""" + QPushButton#""" + self.button_dict[type][item].objectName() + """ { + color: #88FFFFFF + } + """) + else: + self.collectibles[type][item]['value'] = True + self.button_dict[type][item].setStyleSheet(""" + QPushButton#""" + self.button_dict[type][item].objectName() + """ { + color: #FFFFFFFF + } + """) + + def intButtonSelect(self, type, item): + self.collectibles[type][item]['value'] = self.collectibles[type][item]['value'] + 1 + self.button_dict[type][item].setText(f'{self.collectibles[type][item]["name"]}: {self.collectibles[type][item]["value"]}') + + def listButtonSelect(self, type, item): + self.collectibles[type][item]['value'] = self.collectibles[type][item]['value'] + 1 + try: + self.button_dict[type][item].setText(self.collectibles[type]['meta']['list'][self.collectibles[type][item]['value']]) + except: + self.collectibles[type][item]['value'] = 0 + self.button_dict[type][item].setText(self.collectibles[type]['meta']['list'][self.collectibles[type][item]['value']]) + + # show the window + self.show() + diff --git a/data/collectibles.py b/data/collectibles.py new file mode 100755 index 0000000..f1536b2 --- /dev/null +++ b/data/collectibles.py @@ -0,0 +1,367 @@ + +collectibles = { + 'kongs': { + 'meta': { + 'orient': 'vertical', + 'type': 'bool', + }, + 'donkey': { + 'name': 'Donkey', + 'value': False, + }, + 'diddy': { + 'name': 'Diddy', + 'value': False, + }, + 'lanky': { + 'name': 'Lanky', + 'value': False, + }, + 'tiny': { + 'name': 'Tiny', + 'value': False, + }, + 'chunky': { + 'name': 'Chunky', + 'value': False, + }, + }, + 'guns': { + 'meta': { + 'orient': 'vertical', + 'type': 'bool', + }, + 'coconut-gun': { + 'name': 'Coconut Gun', + 'value': False, + }, + 'peanut-popgun': { + 'name': 'Peanut Popguns', + 'value': False, + }, + 'grape-shooter': { + 'name': 'Grape Shooter', + 'value': False, + }, + 'feather-bow': { + 'name': 'Feather Bow', + 'value': False, + }, + 'pineapple-launcher': { + 'name': 'Pineapple Launcher', + 'value': False, + }, + }, + 'instruments': { + 'meta': { + 'orient': 'vertical', + 'type': 'bool', + }, + 'bongos': { + 'name': 'Bongos', + 'value': False, + }, + 'guitar': { + 'name': 'Guitar', + 'value': False, + }, + 'trombone': { + 'name': 'Trombone', + 'value': False, + }, + 'saxaphone': { + 'name': 'Saxaphone', + 'value': False, + }, + 'triangle': { + 'name': 'Triangle', + 'value': False, + }, + }, + 'moves': { + 'meta': { + 'orient': 'vertical', + 'type': 'bool', + }, + 'gorilla-grab': { + 'name': 'Gorilla Grab', + 'value': False, + }, + 'chimpy-charge': { + 'name': 'Chimpy Charge', + 'value': False, + }, + 'orangstand': { + 'name': 'Orangstand', + 'value': False, + }, + 'ponytail-twirl': { + 'name': 'Ponytail Twirl', + 'value': False, + }, + 'primate-punch': { + 'name': 'Primate Punch', + 'value': False, + }, + }, + 'barrels': { + 'meta': { + 'orient': 'vertical', + 'type': 'bool', + }, + 'strong-kong': { + 'name': 'Strong Kong', + 'value': False, + }, + 'rocketbarrel-boost': { + 'name': 'Rocketbarrel Boost', + 'value': False, + }, + 'orangstand-sprint': { + 'name': 'Orangstand Sprint', + 'value': False, + }, + 'mini-monkey': { + 'name': 'Mini Monkey', + 'value': False, + }, + 'hunky-chunky': { + 'name': 'Hunky Chunky', + 'value': False, + }, + }, + 'pads': { + 'meta': { + 'orient': 'vertical', + 'type': 'bool', + }, + 'baboon-blast': { + 'name': 'Baboon Blast', + 'value': False, + }, + 'simian-spring': { + 'name': 'Simian Spring', + 'value': False, + }, + 'baboon-balloon': { + 'name': 'Baboon Balloon', + 'value': False, + }, + 'monkeyport': { + 'name': 'Monkeyport', + 'value': False, + }, + 'gorilla-gone': { + 'name': 'Gorilla Gone', + 'value': False, + }, + }, + 'shared_int': { + 'meta': { + 'orient': 'vertical', + 'type': 'int', + }, + 'slam': { + 'name': 'Slam', + 'value': 1, + }, + 'ammo-belt': { + 'name': 'Ammo Belt', + 'value': 1, + }, + 'instrument-upgrade': { + 'name': 'Instrument Upgrade', + 'value': 0, + }, + 'pearl': { + 'name': 'Pearl', + 'value': 0, + }, + }, + 'shared_bool': { + 'meta': { + 'orient': 'vertical', + 'type': 'bool', + }, + 'camera': { + 'name': 'Camera', + 'value': False, + }, + 'shockwave': { + 'name': 'Shockwave', + 'value': False, + }, + 'sniper-scope': { + 'name': 'Sniper Scope', + 'value': False, + }, + 'homing-ammo': { + 'name': 'Homing Ammo', + 'value': False, + }, + 'bean': { + 'name': 'Bean', + 'value': False, + }, + }, + 'level_costs': { + 'meta': { + 'orient': 'horizontal', + 'type': 'int', + }, + 'jungle-japes': { + 'name': 'Jungle Japes', + 'value': 0, + }, + 'angry-aztec': { + 'name': 'Angry Aztec', + 'value': 0, + }, + 'frantic-factory': { + 'name': 'Frantic Factory', + 'value': 0, + }, + 'gloomy-galleon': { + 'name': 'Gloomy Galleon', + 'value': 0, + }, + 'fungi-forest': { + 'name': 'Fungi Forest', + 'value': 0, + }, + 'crystal-caves': { + 'name': 'Crystal Caves', + 'value': 0, + }, + 'creepy-castle': { + 'name': 'Creepy Castle', + 'value': 0, + }, + 'hideout-helm': { + 'name': 'Hideout Helm', + 'value': 60, + }, + }, + 'level_order': { + 'meta': { + 'orient': 'horizontal', + 'type': 'list', + 'list': [ + 'Jungle Japes', + 'Angry Aztec', + 'Frantic Factory', + 'Gloomy Galleon', + 'Fungi Forest', + 'Crystal Caves', + 'Creepy Castle', + 'Hideout Helm', + ], + }, + 'jungle-japes': { + 'value': 0, + }, + 'angry-aztec': { + 'value': 0, + }, + 'frantic-factory': { + 'value': 0, + }, + 'gloomy-galleon': { + 'value': 0, + }, + 'fungi-forest': { + 'value': 0, + }, + 'crystal-caves': { + 'value': 0, + }, + 'creepy-castle': { + 'value': 0, + }, + 'hideout-helm': { + 'value': 0, + }, + }, + 'keys': { + 'meta': { + 'orient': 'horizontal', + 'type': 'bool', + }, + 'key-1': { + 'name': 'Key 1', + 'value': False, + }, + 'key-2': { + 'name': 'Key 2', + 'value': False, + }, + 'key-3': { + 'name': 'Key 3', + 'value': False, + }, + 'key-4': { + 'name': 'Key 4', + 'value': False, + }, + 'key-5': { + 'name': 'Key 5', + 'value': False, + }, + 'key-6': { + 'name': 'Key 6', + 'value': False, + }, + 'key-7': { + 'name': 'Key 7', + 'value': False, + }, + 'key-8': { + 'name': 'Key 8', + 'value': False, + }, + }, + 'collectibles': { + 'meta': { + 'orient': 'vertical', + 'type': 'int', + }, + 'golden-banana': { + 'name': 'Golden Banana', + 'value': 0, + }, + 'banana-fairy': { + 'name': 'Banana Fairy', + 'value': 0, + }, + 'banana-medal': { + 'name': 'Banana Medal', + 'value': 0, + }, + 'battle-crown': { + 'name': 'Battle Crown', + 'value': 0, + }, + }, + 'shopkeepers': { + 'meta': { + 'orient': 'vertical', + 'type': 'bool', + }, + 'cranky': { + 'name': 'Cranky', + 'value': False, + }, + 'funky': { + 'name': 'Funky', + 'value': False, + }, + 'candy': { + 'name': 'Candy', + 'value': False, + }, + 'snide': { + 'name': 'Snide', + 'value': False, + }, + }, +} \ No newline at end of file diff --git a/main.py b/main.py new file mode 100755 index 0000000..cb439b0 --- /dev/null +++ b/main.py @@ -0,0 +1,9 @@ +import sys +from PyQt6.QtWidgets import QApplication, QWidget +from components.mainWindow import MainWindow + +app = QApplication(sys.argv) + +window = MainWindow() + +sys.exit(app.exec())