Пример #1
0
 def __init__(self):
     super().__init__();
     self._type_name = Assemblage.TYPE_NAME;
     self.resource_list = Resource_Node();
     self.process_list = Key_List();
     self.reset();
Пример #2
0
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;