mirror of
https://github.com/JDM170/SaveWizard
synced 2025-04-20 22:30:42 +07:00
* Updated build.spec for PyInstaller build * Some code and typo fixes Signed-off-by: JDM170 <30170278+JDM170@users.noreply.github.com>
263 lines
12 KiB
Python
263 lines
12 KiB
Python
#!/usr/bin/python3
|
|
# -*- coding: utf-8 -*-
|
|
|
|
from PyQt5.QtCore import Qt
|
|
from PyQt5.QtWidgets import QDialog
|
|
from .form import Ui_SecondWindow
|
|
from util import *
|
|
from dataIO import dataIO
|
|
|
|
garages_stat = {
|
|
"Small": [1, 1],
|
|
"Medium": [2, 3],
|
|
"Big": [3, 5]
|
|
}
|
|
|
|
|
|
class SecondWindow(QDialog, Ui_SecondWindow):
|
|
def __init__(self, selected_game, owns_list, parent=None):
|
|
# Setup UI
|
|
QDialog.__init__(self, parent, flags=Qt.Window)
|
|
Ui_SecondWindow.__init__(self)
|
|
self.ui = Ui_SecondWindow()
|
|
self.ui.setupUi(self)
|
|
|
|
self.owns = owns_list # From main window
|
|
|
|
# Checking files
|
|
cfg_path = "configs/{}".format(selected_game)
|
|
dealers_path = "{}/dealers.json".format(cfg_path)
|
|
agencies_path = "{}/agencies.json".format(cfg_path)
|
|
if dataIO.is_valid_json(dealers_path) is False:
|
|
self.dealers = False
|
|
self.ui.dealer_edit.setEnabled(False)
|
|
self.ui.dealer_add.setEnabled(False)
|
|
self.ui.dealer_add_all.setEnabled(False)
|
|
show_message(QMessageBox.Warning, "Warning", "'dealers.json' from '{}' have errors or not found, dealers "
|
|
"editing has been disabled".format(selected_game))
|
|
else:
|
|
self.dealers = []
|
|
self.dealers_file = dataIO.load_json(dealers_path)
|
|
|
|
if dataIO.is_valid_json(agencies_path) is False:
|
|
self.agencies = False
|
|
self.ui.agency_edit.setEnabled(False)
|
|
self.ui.agency_add.setEnabled(False)
|
|
self.ui.agency_add_all.setEnabled(False)
|
|
show_message(QMessageBox.Warning, "Warning", "'agencies.json' from '{}' have errors or not found, agencies "
|
|
"editing has been disabled".format(selected_game))
|
|
else:
|
|
self.agencies = []
|
|
self.agencies_file = dataIO.load_json(agencies_path)
|
|
|
|
self.ui.garage_size.addItem("Small")
|
|
self.ui.garage_size.addItem("Medium")
|
|
self.ui.garage_size.addItem("Big")
|
|
|
|
# Dealers and agencies properties
|
|
self.da_array = {
|
|
self.ui.dealer_add: [self.ui.dealer_edit, "unlocked_dealers:", "Dealership", self.dealers,
|
|
self.check_dealers],
|
|
self.ui.agency_add: [self.ui.agency_edit, "unlocked_recruitments:", "Recruitment agency",
|
|
self.agencies, self.check_agencies],
|
|
}
|
|
|
|
# Connecting buttons
|
|
self.ui.garages_analyze.clicked.connect(self.check_garages)
|
|
self.ui.garage_add.clicked.connect(self.add_garage)
|
|
self.ui.garage_add_all.clicked.connect(self.add_all_garages)
|
|
self.ui.headquarter_change.clicked.connect(self.change_headquarter)
|
|
self.ui.city_add.clicked.connect(self.add_city)
|
|
self.ui.city_add_all.clicked.connect(self.add_all_cities)
|
|
self.ui.dealer_add.clicked.connect(self.da_clicked)
|
|
self.ui.dealer_add_all.clicked.connect(self.add_all_dealers)
|
|
self.ui.agency_add.clicked.connect(self.da_clicked)
|
|
self.ui.agency_add_all.clicked.connect(self.add_all_agencies)
|
|
|
|
if self.owns:
|
|
self.fill_list(self.dealers, self.dealers_file)
|
|
self.fill_list(self.agencies, self.agencies_file)
|
|
# Checking save-file
|
|
self.check_cities()
|
|
self.check_dealers()
|
|
self.check_agencies()
|
|
|
|
@staticmethod
|
|
def purchased_garages():
|
|
garages = []
|
|
for index in search_all_lines("garage : garage."):
|
|
city = match(r"garage : garage.(.+) {$", get_lines(index)).group(1)
|
|
if get_value(search_line("status:", start=index)) != "0":
|
|
garages.append(city)
|
|
return garages
|
|
|
|
@staticmethod
|
|
def all_cities():
|
|
cities = []
|
|
for line in get_array_items(search_line("companies:")):
|
|
city = match(r"company.volatile.[a-z0-9_]+[.]([a-z_]+)", line).group(1)
|
|
if city not in cities:
|
|
cities.append(city)
|
|
return cities
|
|
|
|
def fill_list(self, array, file):
|
|
if array is False:
|
|
return
|
|
for key in self.owns.keys():
|
|
if key not in file:
|
|
continue
|
|
for value in file[key]:
|
|
array.append(value)
|
|
|
|
def check_garage_size(self):
|
|
stat = garages_stat[self.ui.garage_size.currentText()]
|
|
return str(stat[0]), stat[1]
|
|
|
|
def check_garages(self):
|
|
self.ui.garages_text.clear()
|
|
garages = self.purchased_garages()
|
|
for garage in garages:
|
|
self.ui.garages_text.append(garage)
|
|
self.ui.garages_text.scrollToAnchor(garages[0])
|
|
|
|
def add_garage(self):
|
|
garage = self.ui.garage_edit.text().lower()
|
|
if garage is "":
|
|
show_message(QMessageBox.Critical, "Error", "Enter city name!")
|
|
return
|
|
self.ui.garage_edit.setText("")
|
|
reg_garage = "garage." + garage
|
|
current_status = search_line_in_unit("status:", reg_garage)
|
|
if get_value(current_status) == "0":
|
|
new_status, size = self.check_garage_size()
|
|
set_value(current_status, new_status)
|
|
vehicles_array = search_line_in_unit("vehicles:", reg_garage)
|
|
drivers_array = search_line_in_unit("drivers:", reg_garage)
|
|
for i in range(1, size+1):
|
|
add_array_value(vehicles_array, "null")
|
|
add_array_value(drivers_array+i, "null")
|
|
show_message(QMessageBox.Information, "Success", "Garage in \"{}\" successfully unlocked.".format(garage))
|
|
else:
|
|
show_message(QMessageBox.Critical, "Error", "Garage in \"{}\" already unlocked.".format(garage))
|
|
|
|
def add_all_garages(self):
|
|
new_status, size = self.check_garage_size()
|
|
for item in get_array_items(search_line("garages:")):
|
|
item = match(r"garage.(.+)$", item).group(1)
|
|
current_garage = search_line("garage : garage."+item+" {")
|
|
current_status = search_line("status:", start=current_garage)
|
|
if get_value(current_status) == "0":
|
|
set_value(current_status, new_status)
|
|
vehicles_array = search_line("vehicles:", start=current_garage)
|
|
drivers_array = search_line("drivers:", start=current_garage)
|
|
for i in range(1, size+1):
|
|
add_array_value(vehicles_array, "null")
|
|
add_array_value(drivers_array+i, "null")
|
|
show_message(QMessageBox.Information, "Success", "All garages successfully unlocked.")
|
|
|
|
def change_headquarter(self):
|
|
hq = self.ui.headquarter_edit.text().lower()
|
|
if hq is "":
|
|
show_message(QMessageBox.Critical, "Error", "Enter city name!")
|
|
return
|
|
if get_value(search_line("hq_city:")) == hq:
|
|
show_message(QMessageBox.Information, "Info", "Your headquarter is already in this city.")
|
|
elif hq not in self.purchased_garages():
|
|
show_message(QMessageBox.Critical, "Error", "You need a garage in \"{}\" to set headquarter.".format(hq))
|
|
else:
|
|
set_value(search_line("hq_city:"), hq)
|
|
show_message(QMessageBox.Information, "Success", "Headquarter successfully set to \"{}\".".format(hq))
|
|
|
|
def check_cities(self):
|
|
self.ui.headquarter_edit.setText(get_value(search_line("hq_city:")))
|
|
self.ui.cities_text.clear()
|
|
visited_cities = get_array_items(search_line("visited_cities:"))
|
|
if not visited_cities:
|
|
self.ui.cities_text.append("No cities visited yet.")
|
|
return
|
|
for city in visited_cities:
|
|
self.ui.cities_text.append(city)
|
|
self.ui.cities_text.scrollToAnchor(visited_cities[0])
|
|
|
|
def add_city(self):
|
|
city = self.ui.city_edit.text().lower()
|
|
if city is "":
|
|
show_message(QMessageBox.Critical, "Error", "Enter city name!")
|
|
return
|
|
self.ui.city_edit.setText("")
|
|
if city not in get_array_items(search_line("visited_cities:")):
|
|
add_array_value(search_line("visited_cities:"), city)
|
|
add_array_value(search_line("visited_cities_count:"), "1")
|
|
show_message(QMessageBox.Information, "Success", "City \"{}\" successfully visited.".format(city))
|
|
self.check_cities()
|
|
else:
|
|
show_message(QMessageBox.Critical, "Error", "You've already visited \"{}\".".format(city))
|
|
|
|
def add_all_cities(self):
|
|
visited_cities = get_array_items(search_line("visited_cities:"))
|
|
for city in self.all_cities():
|
|
if city not in visited_cities:
|
|
add_array_value(search_line("visited_cities:"), city)
|
|
add_array_value(search_line("visited_cities_count:"), "1")
|
|
show_message(QMessageBox.Information, "Success", "All cities successfully visited.")
|
|
self.check_cities()
|
|
|
|
def check_dealers(self):
|
|
self.ui.dealerships_text.clear()
|
|
visited_dealers = get_array_items(search_line("unlocked_dealers:"))
|
|
if not visited_dealers:
|
|
self.ui.dealerships_text.append("No dealerships unlocked yet.")
|
|
return
|
|
for dealer in visited_dealers:
|
|
self.ui.dealerships_text.append(dealer)
|
|
self.ui.dealerships_text.scrollToAnchor(visited_dealers[0])
|
|
|
|
def add_all_dealers(self):
|
|
all_cities = self.all_cities()
|
|
visited_dealers = get_array_items(search_line("unlocked_dealers:"))
|
|
for dealer in self.dealers:
|
|
if dealer in all_cities and dealer not in visited_dealers:
|
|
add_array_value(search_line("unlocked_dealers:"), dealer)
|
|
show_message(QMessageBox.Information, "Success", "All dealerships unlocked.")
|
|
self.check_dealers()
|
|
|
|
def check_agencies(self):
|
|
self.ui.agencies_text.clear()
|
|
visited_agencies = get_array_items(search_line("unlocked_recruitments:"))
|
|
if not visited_agencies:
|
|
self.ui.agencies_text.append("No recruitment agencies unlocked yet.")
|
|
return
|
|
for agency in visited_agencies:
|
|
self.ui.agencies_text.append(agency)
|
|
self.ui.agencies_text.scrollToAnchor(visited_agencies[0])
|
|
|
|
def add_all_agencies(self):
|
|
all_cities = self.all_cities()
|
|
visited_agencies = get_array_items(search_line("unlocked_recruitments:"))
|
|
for agency in self.agencies:
|
|
if agency in all_cities and agency not in visited_agencies:
|
|
add_array_value(search_line("unlocked_recruitments:"), agency)
|
|
show_message(QMessageBox.Information, "Success", "All recruitment agencies unlocked.")
|
|
self.check_agencies()
|
|
|
|
def da_clicked(self):
|
|
da_arr = self.da_array.get(self.sender())
|
|
if da_arr is None:
|
|
return
|
|
edit, file_var, message_var = da_arr[0], da_arr[1], da_arr[2]
|
|
city_element = edit.text().lower()
|
|
if not city_element:
|
|
show_message(QMessageBox.Critical, "Error", "Enter city name!")
|
|
return
|
|
edit.setText("")
|
|
if city_element not in da_arr[3]:
|
|
show_message(QMessageBox.Critical, "Error", "There is no {} in that city.".format(message_var.lower()))
|
|
elif city_element in get_array_items(search_line(file_var)):
|
|
show_message(QMessageBox.Information, "Info",
|
|
"{} in \"{}\" is already unlocked.".format(message_var, city_element))
|
|
else:
|
|
add_array_value(search_line(file_var), city_element)
|
|
show_message(QMessageBox.Information, "Success",
|
|
"{} in \"{}\" successfully unlocked.".format(message_var, city_element))
|
|
da_arr[4]()
|