factories.py 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. """Calculate production in different factories"""
  2. import json
  3. from rival_regions_calc import Item, WorkProduction
  4. DEPARTMENTS = None
  5. with open('departments.json') as file:
  6. DEPARTMENTS = json.load(file)
  7. PRICE = None
  8. with open('prices.json') as file:
  9. PRICE = json.load(file)
  10. REGIONS = None
  11. with open('regions.json') as file:
  12. REGIONS = json.load(file)
  13. RESOURCES = None
  14. with open('resources.json') as file:
  15. RESOURCES = json.load(file)
  16. WP = WorkProduction()
  17. WP.user_level = 95
  18. WP.work_exp = 80000 + 200 * 350
  19. WP.nation_bonus = True
  20. WP.profit_share = 75
  21. def calculate_wage(resource_name, factory):
  22. """Calculate production"""
  23. if 'fixed_wage' in factory:
  24. return factory['fixed_wage']
  25. resource = Item(resource_name)
  26. WP.resource = resource
  27. WP.factory_level = factory['level']
  28. WP.department_bonus = DEPARTMENTS[resource_name]
  29. WP.resource_max = REGIONS[str(factory['region_id'])]['resources'][resource_name]
  30. WP.wage_percentage = factory['wage']
  31. WP.tax_rate = REGIONS[str(factory['region_id'])]['tax'][resource_name]
  32. WP.calculate()
  33. return WP.wage() * PRICE[resource_name]
  34. def all_factories():
  35. """return all factories"""
  36. factory_dict = {}
  37. for factories in RESOURCES.values():
  38. factory_dict.update(factories)
  39. return factory_dict
  40. def print_per_resource():
  41. """Print wages per resource"""
  42. for resource_name, factories in RESOURCES.items():
  43. print(resource_name)
  44. for factory in sorted(factories.values(), key=lambda k: k['wage'], reverse=True):
  45. print('{:30} {:>12}'.format(
  46. factory['name'],
  47. int(factory['wage']),
  48. ))
  49. def print_all():
  50. """Print wages per resource"""
  51. factory_dict = all_factories()
  52. print("total Wage %")
  53. print("———————————————————————————— ————— ———")
  54. sorted_factories = sorted(factory_dict.values(), key=lambda k: k['wage'], reverse=True)
  55. top_wage = sorted_factories[0]['wage']
  56. for factory in sorted_factories:
  57. print('{:28} {:>4,}kk {:>3}'.format(
  58. factory['name'],
  59. round(int(factory['wage'])/1000000),
  60. int(100 / top_wage * factory['wage']),
  61. ).replace(',', '.'))
  62. def print_factory_list():
  63. """print all factories"""
  64. for resource_name, factories in RESOURCES.items():
  65. print('[rr]{}[/rr]'.format(resource_name.capitalize()))
  66. for factory_id, factory in factories.items():
  67. print('[url=https://rivalregions.com/#factory/index/{}]Desktop[/url] [url=https://m.rivalregions.com/#factory/index/{}]Mobile[/url] {}, {} '.format(
  68. factory_id,
  69. factory_id,
  70. factory['name'],
  71. REGIONS[str(factory['region_id'])]['name'],
  72. ))
  73. def main():
  74. """Main function"""
  75. for resource_name, factories in RESOURCES.items():
  76. for factory_id, factory in factories.items():
  77. wage = calculate_wage(resource_name, factory)
  78. RESOURCES[resource_name][factory_id]['wage'] = wage
  79. # print_per_resource()
  80. print_all()
  81. # print_factory_list()
  82. if __name__ == '__main__':
  83. main()