import os import csv import pickle from pprint import pprint try: from wget import download except ImportError as e: print('Error: Please install wget using "pip install wget"') exit(1) def data_download(buildings_file_name, debug=False): if 'data' not in os.listdir(): os.mkdir('data') os.chdir('data') if debug: print(os.listdir()) # Buildings download if f'{buildings_file_name[:-4]}.pickle' in os.listdir(): pickle.load(open(f'{buildings_file_name[:-4]}.pickle', 'rb')) elif buildings_file_name not in os.listdir(): if debug: print('Downloading building info...') download( 'https://docs.google.com/spreadsheets/d/16J269YAFTVy_IPuzGUXfV_4-Rplzk1LVk7YpsvDcEVY/export?format=tsv', buildings_file_name) if debug: print('Building info downloaded') else: print('Building info already downloaded, but not pickled') # Buildings tsv processing with open(buildings_file_name) as file: reader = csv.reader(file, delimiter='\t') # Changes delimiter to tab for .tsv files buildings = {} for row in reader: if row[0] != 'Building' and row[0] != '': temp = list(row) buildings[temp[0].lower()] = [row[i].lower() for i in range(1, len(row))] pickle.dump(buildings, open(f'{buildings_file_name[:-4]}.pickle', 'wb')) return buildings os.chdir('..') print('Downloading and processing buildings...') buildings = data_download('buildings.tsv') # In format {building_name: [brick, plank, rc, cu]} print('Buildings downloaded and processed') print() # Can't keep track of hours because it varies by building, and it would be such a pain to figure out total = [0, 0, 0, 0] # Number of [rc, bricks, planks, cu] needed for upgrade (total) running = True while running: print('What building do you want to upgrade?') buildings_keys = list(buildings.keys()) for i in range(len(buildings)): print(f'{i + 1}: {buildings_keys[i]}') i = int(input('Enter the number corresponding to the building:\n')) - 1 current_level = int(input('What is the current level of the building? Enter 0 if it is not built yet.\n')) target_level = int(input('What is the target level of the building?\n')) duplicate_buildings = int(input('How many identical buildings do you have to this one? (1 if this building is unique, 2 if there are 2 buildings like this, etc.)\n')) print() for j in range(current_level, target_level): if j == 0: temp = 1 else: temp = j total[0] += int(buildings[buildings_keys[i]][3]) * temp * duplicate_buildings total[1] += int(buildings[buildings_keys[i]][4]) * temp * duplicate_buildings total[2] += int(buildings[buildings_keys[i]][5]) * temp * duplicate_buildings total[3] += int(buildings[buildings_keys[i]][6]) * temp * duplicate_buildings print('Would you like to upgrade another building? (y/N)') if input().lower() != 'y': running = False print() print() print('Total resources needed:') print(f' Reinforced Concrete: {total[0]}') print(f' Bricks: {total[1]}') print(f' Planks: {total[2]}') print(f' Construction Units: {total[3]}')