Пример #1
0
 def load(self, data):
     for planet_dict in data.get('planets', {}):
         self.add(Planet.load(**planet_dict))
     self.missions = Missions.load(**data.get('missions', {'data': {}}))
     self.technologies = Technologies.load(**data.get('technologies', {}))
     self.plans = Technologies.load(**data.get('plans', {}))
     self.is_researching = data.get('is_researching', False)
Пример #2
0
 def load(self, data):
     for planet_dict in data.get('planets', {}):
         self.add(Planet.load(**planet_dict))
     self.missions = Missions.load(**data.get('missions', {'data': {}}))
     self.technologies = Technologies.load(
             **data.get('technologies', {}))
     self.plans = Technologies.load(**data.get('plans', {}))
     self.is_researching = data.get('is_researching', False)
Пример #3
0
 def __init__(self, data, capital=None, **kwargs):
     self.capital_coords = capital
     self.missions = kwargs.get('missions', Missions())
     self.technologies = kwargs.get('technologies', Technologies())
     self.plans = kwargs.get('plans', Technologies(data={}))
     super().__init__(data)
     PlannerMixin.__init__(self, 'technologies', 'plans')
     self.is_researching = False
Пример #4
0
class PlanetCollection(common.Collection):

    def __init__(self, capital=None, **kwargs):
        self.capital_coords = capital
        self.planets = {}
        self.missions = Missions()
        super(PlanetCollection, self).__init__(self.planets)

    def add(self, planet):
        self.planets[planet.position] = planet
        if self.capital_coords and self.capital_coords == planet.coords:
            planet.capital = True

    @property
    def colonies(self):
        return self.cond(capital=False)

    @property
    def idles(self):
        return self.cond(is_idle=True)

    @property
    def with_fleet(self):
        return self.cond(is_fleet_empty=False)

    @property
    def waiting(self):
        return self.cond(is_waiting=True)

    @property
    def capital(self):
        return self.cond(capital=True).first

    @property
    def fleet(self):
        fleet = Fleet()
        for planet in self:
            for ships in planet.fleet:
                fleet.add(ships=ships)
        return fleet

    @property
    def resources(self):
        res = resources.Resources()
        for planet in self:
            for res_type, amount in planet.resources.movable:
                res[res_type] += amount
        return res

    @property
    def waiting_for(self):
        waiting_for = {}
        for planet in self:
            waiting_for.update(planet.waiting_for)
        return waiting_for

    @property
    def cheapest(self):
        "return the planet with the cheapest construction of any type"
        cheapest = None
        for planet in self:
            if not cheapest:
                cheapest = planet
            elif planet.to_construct.cost.movable.total \
                    < cheapest.to_construct.cost.movable.total:
                cheapest = planet
        return cheapest

    def load(self, **kwargs):
        for planet_dict in kwargs.get('planets', {}):
            self.add(Planet.load(**planet_dict))
        self.missions = Missions.load(**kwargs['missions'])

    def dump(self):
        return {'planets': [planet.dump() for planet in self],
                'missions': self.missions.dump()}
Пример #5
0
 def load(self, **kwargs):
     for planet_dict in kwargs.get('planets', {}):
         self.add(Planet.load(**planet_dict))
     self.missions = Missions.load(**kwargs['missions'])
Пример #6
0
 def __init__(self, capital=None, **kwargs):
     self.capital_coords = capital
     self.planets = {}
     self.missions = Missions()
     super(PlanetCollection, self).__init__(self.planets)