|
@@ -0,0 +1,125 @@
|
|
|
+"""Calculate production in different factories"""
|
|
|
+
|
|
|
+import json
|
|
|
+import copy
|
|
|
+
|
|
|
+
|
|
|
+from rival_regions_calc import Item, WorkProduction
|
|
|
+
|
|
|
+
|
|
|
+DEPARTMENTS = None
|
|
|
+with open('departments.json') as file:
|
|
|
+ DEPARTMENTS = json.load(file)
|
|
|
+
|
|
|
+PRICE = None
|
|
|
+with open('prices.json') as file:
|
|
|
+ PRICE = json.load(file)
|
|
|
+
|
|
|
+REGIONS = None
|
|
|
+with open('regions.json') as file:
|
|
|
+ REGIONS = json.load(file)
|
|
|
+
|
|
|
+RESOURCES = None
|
|
|
+with open('resources.json') as file:
|
|
|
+ RESOURCES = json.load(file)
|
|
|
+
|
|
|
+
|
|
|
+WP = WorkProduction()
|
|
|
+WP.user_level = 80
|
|
|
+WP.work_exp = 80000 + 200 * 250
|
|
|
+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[str(factory['region_id'])]['resources'][resource_name]
|
|
|
+ WP.wage_percentage = factory['wage_percentage']
|
|
|
+ WP.tax_rate = REGIONS[str(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']):
|
|
|
+ print('{}'.format(
|
|
|
+ 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():
|
|
|
+ factory = None
|
|
|
+ factory_id = None
|
|
|
+ for factory_id, factory in factories.items():
|
|
|
+ factory = factory
|
|
|
+ factory_id = factory_id
|
|
|
+
|
|
|
+ RESOURCES[resource_name][factory_id]['wage'] = calculate_wage(resource_name, factory)
|
|
|
+
|
|
|
+ for i in range(factory['level'], 221, 5):
|
|
|
+ new_factory_id = int(factory_id) + i - 150
|
|
|
+ new_factory = copy.copy(factory)
|
|
|
+ new_factory['level'] = i
|
|
|
+ new_factory['name'] = i
|
|
|
+ new_factory['wage'] = calculate_wage(resource_name, new_factory)
|
|
|
+ RESOURCES[resource_name][str(new_factory_id)] = new_factory
|
|
|
+
|
|
|
+ print_per_resource()
|
|
|
+ # print_all()
|
|
|
+ # print_factory_list()
|
|
|
+
|
|
|
+
|
|
|
+def print_json(json_text):
|
|
|
+ """Print data to console"""
|
|
|
+ print(json.dumps(json_text, sort_keys=True, indent=4))
|
|
|
+
|
|
|
+if __name__ == '__main__':
|
|
|
+ main()
|