def __init__(self): super().__init__(); self._type_name = Assemblage.TYPE_NAME; self.resource_list = Resource_Node(); self.process_list = Key_List(); self.reset();
class Assemblage(object): TYPE_NAME = "Assemblage Archetype" TABLE_NAME = "assemblage_archetype_list" # names for auto-loaded variables #NAME_X = #NAME_X = # archetype variables def __init__(self): super().__init__(); self._type_name = Assemblage.TYPE_NAME; self.resource_list = Resource_Node(); self.process_list = Key_List(); self.reset(); def __str__(self): return self.resource_list.get_contents_string(); def add_process( self, _process): if _process in self.process_list: self.process_list[ _process] = self.process_list[ _process]+ 1.0; else: self.process_list[ _process] = 1.0; return self; def set_process( self, _process, _quantity): self.process_list[ _process] = _quantity; return self; def reset( self): # repair condition: # hit points self.max_structure_points=100; self.cur_structure_points=self.max_structure_points; # contains all components self.resource_list.clear(); self.process_list.clear(); return; def update( self): return self.update_time(); def update_time( self, time_interval = 1.0): dt_s = time_interval; # units == seconds for proc, throttle in self.process_list.items(): for reskey, resqty in proc.cost_list.items(): self.resource_list.update( reskey, resqty*throttle*time_interval); return; # ====== ====== static class Methods # ====== ====== @staticmethod def run_debug(): a = Assemblage(); fac = Entry_Factory.get_factory(); print("Testing Assemblage Node"); print( str(a)); water_res = fac.get_entry_by_key("res", "water"); melt_proc = fac.get_proc("smelt_iron"); #melt_proc = fac.get_proc_by_key("melt_water_ice"); print(" proc: \n"+str(melt_proc)); if melt_proc == None: return None; a.add_process( melt_proc); a.add_process( melt_proc); #a.set_process( melt_proc, 0.4 ); print( str(a)); a.update_time(); print( str(a)); return;