Browse Source

Fixed bug with multiply not carrying down the tree

Added shabang
master
Raphael Roberts 7 years ago
parent
commit
70ec4c206f
  1. 36
      total_cost.py

36
total_cost.py

@ -1,3 +1,4 @@
#/usr/bin/python
from json.decoder import JSONDecodeError
import json
import re
@ -21,9 +22,8 @@ def from_dict(d):
global ITEMS
ITEMS[name] = instance
def to_json():
global ITEMS
if ITEMS:
def to_json(init=False):
if not init:
ret = list(map(to_dict,ITEMS.values()))
with open('__cache__','w') as file:
json.dump(ret,file)
@ -124,23 +124,23 @@ class complex_item(item):
self.naive_complexity = False
return len(self.all_sub)
def get_raw_material_cost(self,ret = {}):
def get_raw_material_cost(self,numb=1,ret = {}):
for name,count in self.sub_components.items():
component = ITEMS[name]
if isinstance(component,raw_material):
prev = ret.get(name,0)
ret[name] = prev + count
ret[name] = prev + count*numb
elif isinstance(component,complex_item):
component.get_raw_material_cost(ret)
component.get_raw_material_cost(count*numb,ret)
return ret
def get_component_cost(self,ret = {}):
def get_component_cost(self,numb=1,ret = {}):
for name,count in self.sub_components.items():
component = ITEMS[name]
if isinstance(component,complex_item):
prev = ret.get(name,0)
ret[name] = prev + count
component.get_component_cost(ret)
ret[name] = prev + count*numb
component.get_component_cost(count*numb,ret)
return ret
def get_build_info(self):
@ -149,18 +149,22 @@ class complex_item(item):
build_order = component_view.items()
build_order = sorted(build_order,key = lambda item: ITEMS[item[0]].complexity)
return material_view,build_order
def main():
def main(args):
print(args)
import argparse
import os
parser = argparse.ArgumentParser()
parser.add_argument('query')
args = parser.parse_args(args)
if not os.path.exists('__cache__'):
to_json()
to_json(init=True)
try:
from_json()
except JSONDecodeError:
to_json()
to_json(init=True)
from_json()
name = sys.argv[1]
recursive_fill_in(name)
print(*ITEMS[name].get_build_info(),sep='\n')
recursive_fill_in(args.query)
print(*ITEMS[args.query].get_build_info(),sep='\n')
to_json()
if __name__ == "__main__":
main()
main(sys.argv[1:])
Loading…
Cancel
Save