def populate(self, seed, system_min, system_max, planet_min, planet_max): """\ --populate <game> <random seed> <min systems> <max systems> <min planets> <max planets> Populate a universe with a number of systems and planets. The number of systems in the universe is dictated by min/max systems. The number of planets per system is dictated by min/max planets. """ # Convert arguments to integers seed, system_min, system_max, planet_min, planet_max = ( int(seed), int(system_min), int(system_max), int(planet_min), int(planet_max)) dbconn.use(self.game) trans = dbconn.begin() try: RulesetBase.populate(self, seed) r = Resource(Resource.byname('Ship Parts Factory')) # FIXME: Assuming that the Universe and the Galaxy exist. r = random.Random() r.seed(seed) # Create the actual systems and planets. for i in range(0, r.randint(system_min, system_max)): pos = r.randint(SIZE * -1, SIZE) * 1000, r.randint( SIZE * -1, SIZE) * 1000, r.randint(SIZE * -1, SIZE) * 1000 # Add system system = Object(type='tp.server.rules.base.objects.System') system.name = "System %s" % i system.size = r.randint(800000, 2000000) system.posx = pos[0] system.posy = pos[1] system.insert() ReparentOne(system) system.save() print "Created system (%s) with the id: %i" % (system.name, system.id) # In each system create a number of planets for j in range(0, r.randint(planet_min, planet_max)): planet = Object( type='tp.server.rules.timtrader.objects.Planet') planet.name = "Planet %i in %s" % (j, system.name) planet.size = r.randint(1000, 10000) planet.parent = system.id planet.posx = pos[0] + r.randint(1, 100) * 1000 planet.posy = pos[1] + r.randint(1, 100) * 1000 planet.insert() print "Created planet (%s) with the id: %i" % (planet.name, planet.id) # FIXME: Add minerals Iron, Uranium mine = False for mineral in minerals: # Does this planet have this mineral if r.random() * 100 > mineral.probability: # Add a smattering of minerals planet.resources_add(id, r.randint(0, mineral.density), Planet.MINEABLE) mine = True # Add a mine to each planet which has minerals if mine: planet.resources_add(Resource.byname('Mine'), 1, Planet.ACCESSABLE) # FIXME: Add growing resources for grow in growing: if r.random() * 100 > grow.probability: # Add a smattering of breeding grounds planet.resources_add(Resource.byname(''), 1, Planet.ACCESSABLE) # Add a smattering of the same stocks planet.resources_add(Resource.byname(''), r.randint(0, grow.density), Planet.MINEABLE) # Add 1 fishery/slaughter house to each location # FIXME: Add a other industries in random locations for factory in factories: pass # FIXME: Add a bunch of cities planet.save() trans.commit() except: trans.rollback() raise
def populate(self, seed, system_min, system_max, planet_min, planet_max): """\ --populate <game> <random seed> <min systems> <max systems> <min planets> <max planets> Populate a universe with a number of systems and planets. The number of systems in the universe is dictated by min/max systems. The number of planets per system is dictated by min/max planets. """ # Convert arguments to integers seed, system_min, system_max, planet_min, planet_max = (int(seed), int(system_min), int(system_max), int(planet_min), int(planet_max)) dbconn.use(self.game) trans = dbconn.begin() try: RulesetBase.populate(self, seed) r = Resource(Resource.byname('Ship Parts Factory')) # FIXME: Assuming that the Universe and the Galaxy exist. r = random.Random() r.seed(seed) # Create the actual systems and planets. for i in range(0, r.randint(system_min, system_max)): pos = r.randint(SIZE*-1, SIZE)*1000, r.randint(SIZE*-1, SIZE)*1000, r.randint(SIZE*-1, SIZE)*1000 # Add system system = Object(type='tp.server.rules.base.objects.System') system.name = "System %s" % i system.size = r.randint(800000, 2000000) system.posx = pos[0] system.posy = pos[1] system.insert() ReparentOne(system) system.save() print "Created system (%s) with the id: %i" % (system.name, system.id) # In each system create a number of planets for j in range(0, r.randint(planet_min, planet_max)): planet = Object(type='tp.server.rules.timtrader.objects.Planet') planet.name = "Planet %i in %s" % (j, system.name) planet.size = r.randint(1000, 10000) planet.parent = system.id planet.posx = pos[0]+r.randint(1,100)*1000 planet.posy = pos[1]+r.randint(1,100)*1000 planet.insert() print "Created planet (%s) with the id: %i" % (planet.name, planet.id) # FIXME: Add minerals Iron, Uranium mine = False for mineral in minerals: # Does this planet have this mineral if r.random()*100 > mineral.probability: # Add a smattering of minerals planet.resources_add(id, r.randint(0, mineral.density), Planet.MINEABLE) mine = True # Add a mine to each planet which has minerals if mine: planet.resources_add(Resource.byname('Mine'), 1, Planet.ACCESSABLE) # FIXME: Add growing resources for grow in growing: if r.random()*100 > grow.probability: # Add a smattering of breeding grounds planet.resources_add(Resource.byname(''), 1, Planet.ACCESSABLE) # Add a smattering of the same stocks planet.resources_add(Resource.byname(''), r.randint(0, grow.density), Planet.MINEABLE) # Add 1 fishery/slaughter house to each location # FIXME: Add a other industries in random locations for factory in factories: pass # FIXME: Add a bunch of cities planet.save() trans.commit() except: trans.rollback() raise