"""Calculate production in different factories""" from rival_regions_calc import Item, WorkProduction DEPARTMENTS = { 'oil': 1.5, 'gold': 0.4, 'diamond': 0.1, 'uranium': 0, 'ore': 0, } PRICE = { 'oil': 255, 'gold': 0, 'diamond': 1650000, 'uranium': 2300, 'ore': 235, } REGIONS = { 4001: { 'name': 'Northern Netherlands', 'resources': { 'gold': 379, 'oil': 223, 'ore': 247, # 'uranium': 2, 'uranium': 25, 'diamond': 5, }, 'tax': { 'gold': 15, 'oil': 15, 'ore': 15, 'uranium': 15, 'diamond': 15, }, }, 4002: { 'name': 'Eastern Netherlands', 'resources': { 'gold': 359, # 'oil': 266, 'oil': 371, 'ore': 250, 'uranium': 2, 'diamond': 2, }, 'tax': { 'gold': 15, 'oil': 2, 'ore': 15, 'uranium': 15, 'diamond': 15, }, }, 4003: { 'name': 'Western Netherlands', 'resources': { 'gold': 372, 'oil': 296, 'ore': 230, 'uranium': 2, 'diamond': 2, }, 'tax': { 'gold': 15, 'oil': 15, 'ore': 15, 'uranium': 15, 'diamond': 15, }, }, 4004: { 'name': 'Southern Netherlands', 'resources': { 'gold': 366, 'oil': 296, 'ore': 211, 'uranium': 2, 'diamond': 2, }, 'tax': { 'gold': 15, 'oil': 15, 'ore': 15, 'uranium': 15, 'diamond': 15, }, }, 4008: { 'name': 'Amsterdam', 'resources': { 'gold': 418, 'oil': 307, 'ore': 303, 'uranium': 4, 'diamond': 13, }, 'tax': { 'gold': 15, 'oil': 15, 'ore': 15, 'uranium': 15, 'diamond': 15, }, }, 4801: { 'name': 'Luxembourg', 'resources': { 'gold': 435, 'oil': 283, 'ore': 267, 'uranium': 2, 'diamond': 2, }, 'tax': { 'gold': 15, 'oil': 15, 'ore': 15, 'uranium': 15, 'diamond': 15, }, } } RESOURCES = { 'oil': { 45760: { 'name': 'OIL RAFINERY', 'level': 185, 'region_id': 4002, 'wage': 100, }, 32282: { 'name': 'OIL - Lorenzo Industries', 'level': 157, 'region_id': 4801, 'wage': 100, }, 59465: { 'name': 'Verenigde Nederlanden Oil', 'level': 144, 'region_id': 4003, 'wage': 99, }, 90420: { 'name': 'Shelby oil', 'level': 124, 'region_id': 4002, 'wage': 95, }, 61361: { 'name': 'Koninklijke Olie', 'level': 120, 'region_id': 4001, 'wage': 100, 'fixed_wage': 150500500, }, 60828: { 'name': 'Austins wegenolie', 'level': 117, 'region_id': 4008, 'wage': 100, 'fixed_wage': 130000000, }, }, 'ore': { 32145: { 'name': 'DS ore', 'level': 139, 'region_id': 4801, 'wage': 99, }, 48500: { 'name': 'Shelby ore', 'level': 138, 'region_id': 4004, 'wage': 95, }, 29239: { 'name': 'Nederlands Ore EN', 'level': 73, 'region_id': 4002, 'wage': 80, }, }, 'uranium': { 34997: { 'name': 'Quite a serious power plant!', 'level': 147, 'region_id': 4001, 'wage': 100, 'fixed_wage': 350000000, }, }, 'diamond': { 33263: { 'name': 'Shelby Diamonds #2', 'level': 148, 'region_id': 4008, 'wage': 95, }, 63317: { 'name': 'Vone I', 'level': 30, 'region_id': 4008, 'wage': 80, }, }, } WP = WorkProduction() WP.user_level = 95 WP.work_exp = 80000 + 200 * 350 WP.nation_bonus = True WP.profit_share = 75 def calculate_wage(resource_name, factory): """Calculate production""" if 'fixed_wage' in factory: return factory['fixed_wage'] resource = Item(resource_name) WP.resource = resource WP.factory_level = factory['level'] WP.department_bonus = DEPARTMENTS[resource_name] WP.resource_max = REGIONS[factory['region_id']]['resources'][resource_name] WP.wage_percentage = factory['wage'] WP.tax_rate = REGIONS[factory['region_id']]['tax'][resource_name] WP.calculate() return WP.wage() * PRICE[resource_name] def all_factories(): """return all factories""" factory_dict = {} for factories in RESOURCES.values(): factory_dict.update(factories) return factory_dict def print_per_resource(): """Print wages per resource""" for resource_name, factories in RESOURCES.items(): print(resource_name) for factory in sorted(factories.values(), key=lambda k: k['wage'], reverse=True): print('{:30} {:>12}'.format( factory['name'], int(factory['wage']), )) def print_all(): """Print wages per resource""" factory_dict = all_factories() print("total") sorted_factories = sorted(factory_dict.values(), key=lambda k: k['wage'], reverse=True) top_wage = sorted_factories[0]['wage'] for factory in sorted_factories: print('{:28} {:>11,} {:>3}'.format( factory['name'], int(factory['wage']), int(100 / top_wage * factory['wage']), ).replace(',', '.')) def print_factory_list(): """print all factories""" for resource_name, factories in RESOURCES.items(): print('[rr]{}[/rr]'.format(resource_name.capitalize())) for factory_id, factory in factories.items(): print('[url=https://rivalregions.com/#factory/index/{}]Desktop[/url] [url=https://m.rivalregions.com/#factory/index/{}]Mobile[/url] {}, {} '.format( factory_id, factory_id, factory['name'], REGIONS[factory['region_id']]['name'], )) def main(): """Main function""" for resource_name, factories in RESOURCES.items(): for factory_id, factory in factories.items(): wage = calculate_wage(resource_name, factory) RESOURCES[resource_name][factory_id]['wage'] = wage # print_per_resource() print_all() # print_factory_list() if __name__ == '__main__': main()