def initialise(self, seed=None): """\ Minisec """ dbconn.use(self.game) trans = dbconn.begin() try: MinisecRuleset.initialise(self) reader = csv.DictReader(open(os.path.join(self.files, "resources.csv"), "r")) for row in reader: r = Resource() for name, cell in row.iteritems(): if cell is '': continue setattr(r, name, convert(getattr(Resource.table.c, name), cell)) pprint.pprint(r.__dict__) r.insert() reader = csv.DictReader(open(os.path.join(self.files, "categories.csv"), "r")) for row in reader: c = Category() for name, cell in row.iteritems(): setattr(c, name, cell) pprint.pprint(c.__dict__) c.insert() # Create the properties that a design might have p = Property() p.categories = [Category.byname('Misc')] p.name = "speed" p.displayname = "Speed" p.desc = "The maximum number of parsecs the ship can move each turn." p.calculate = """\ (lambda (design bits) (let ((n (apply + bits))) (cons n (string-append (number->string (/ n 1000000)) " kpcs")))) """ p.insert() p = Property() p.categories = [Category.byname('Production')] p.name = "cost" p.displayname = "Cost" p.desc = "The number of components needed to build the ship" p.calculate = """\ (lambda (design bits) (let ((n (apply + bits))) (cons n (string-append (number->string n) " turns")) ) ) """ p.insert() p = Property() p.categories = [Category.byname('Combat')] p.name = "hp" p.displayname = "Hit Points" p.desc = "The amount of damage the ship can take." p.calculate = """\ (lambda (design bits) (let ((n (apply + bits))) (cons n (string-append (number->string n) " HP")))) """ p.insert() p = Property() p.categories = [Category.byname('Combat')] p.name = "backup-damage" p.displayname = "Backup Damage" p.desc = "The amount of damage that the ship will do when using it's backup weapon. (IE When it draws a battle round.)" p.calculate = """\ (lambda (design bits) (let ((n (apply + bits))) (cons n (string-append (number->string n) " HP")))) """ p.insert() p = Property() p.categories = [Category.byname('Combat')] p.name = "primary-damage" p.displayname = "Primary Damage" p.desc = "The amount of damage that the ship will do when using it's primary weapon. (IE When it wins a battle round.)" p.calculate = """\ (lambda (design bits) (let ((n (apply + bits))) (cons n (string-append (number->string n) " HP")))) """ p.insert() p = Property() p.categories = [Category.byname('Misc')] p.name = "escape" p.displayname = "Escape Chance" p.desc = "The chance the ship has of escaping from battle." p.calculate = """\ (lambda (design bits) (let ((n (apply + bits))) (cons n (string-append (number->string (* n 100)) " %")))) """ p.insert() p = Property() p.categories = [Category.byname('Misc')] p.name = "colonise" p.displayname = "Can Colonise Planets" p.desc = "Can the ship colonise planets/" p.calculate = """\ (lambda (design bits) (let ((n (apply + bits))) (cons n (if (> n 1) "Yes" "No")))) """ p.insert() c = Component() c.categories = [Category.byname('Combat')] c.name = "Missile" c.desc = "Missile which does 1HP of damage." c.properties = {} c.properties[Property.byname('primary-damage')] = None c.insert() c = Component() c.categories = [Category.byname('Combat')] c.name = "Laser" c.desc = "Lasers which do 1HP of damage." c.properties = {} c.properties[Property.byname('backup-damage')] = """(lambda (design) 0.25)""" c.insert() c = Component() c.categories = [Category.byname('Combat')] c.name = "Armor Plate" c.desc = "Armor Plate which absorbes 1HP of damage." c.properties = {} c.properties[Property.byname('hp')] = None c.insert() c = Component() c.categories = [Category.byname('Misc')] c.name = "Colonisation Pod" c.desc = "A part which allows a ship to colonise a planet." c.properties = {} c.properties[Property.byname('colonise')] = None c.insert() c = Component() c.categories = [Category.byname('Misc')] c.name = "Escape Thrusters" c.desc = "A part which allows a ship to escape combat." c.properties = {} c.properties[Property.byname('escape')] = """(lambda (design) 0.25)""" c.insert() c = Component() c.categories = [Category.byname('Misc')] c.name = "Primary Engine" c.desc = "A part which allows a ship to move through space." c.properties = {} c.properties[Property.byname('speed')] = """(lambda (design) 1000000)""" c.insert() d = Design() d.name = "Scout" d.desc = "A fast light ship with advanced sensors." d.owner = -1 d.categories = [Category.byname('Misc')] d.components = [] d.components.append((Component.byname('Escape Thrusters'), 4)) d.components.append((Component.byname('Armor Plate'), 2)) d.components.append((Component.byname('Primary Engine'), 5)) d.insert() d = Design() d.name = "Frigate" d.desc = "A general purpose ship with weapons and ability to colonise new planets." d.owner = -1 d.categories = [Category.byname('Misc')] d.components = [] d.components.append((Component.byname('Armor Plate'), 4)) d.components.append((Component.byname('Primary Engine'), 2)) d.components.append((Component.byname('Colonisation Pod'), 1)) d.components.append((Component.byname('Missile'), 2)) d.insert() d = Design() d.name = "Battleship" d.desc = "A heavy ship who's main purpose is to blow up other ships." d.owner = -1 d.categories = [Category.byname('Misc')] d.components = [] d.components.append((Component.byname('Armor Plate'), 6)) d.components.append((Component.byname('Primary Engine'), 3)) d.components.append((Component.byname('Missile'), 3)) d.components.append((Component.byname('Laser'), 4)) d.insert() trans.commit() except: trans.rollback() raise # FIXME: Need to populate the database with the MiniSec design stuff, # - Firepower # - Armor/HP # - Speed # - Sensors (scouts ability to disappear).... pass
def initialise(self, seed=None): """\ Minisec """ dbconn.use(self.game) trans = dbconn.begin() try: MinisecRuleset.initialise(self) reader = csv.DictReader( open(os.path.join(self.files, "resources.csv"), "r")) for row in reader: r = Resource() for name, cell in row.iteritems(): if cell is '': continue setattr(r, name, convert(getattr(Resource.table.c, name), cell)) pprint.pprint(r.__dict__) r.insert() reader = csv.DictReader( open(os.path.join(self.files, "categories.csv"), "r")) for row in reader: c = Category() for name, cell in row.iteritems(): setattr(c, name, cell) pprint.pprint(c.__dict__) c.insert() # Create the properties that a design might have p = Property() p.categories = [Category.byname('Misc')] p.name = "speed" p.displayname = "Speed" p.desc = "The maximum number of parsecs the ship can move each turn." p.calculate = """\ (lambda (design bits) (let ((n (apply + bits))) (cons n (string-append (number->string (/ n 1000000)) " kpcs")))) """ p.insert() p = Property() p.categories = [Category.byname('Production')] p.name = "cost" p.displayname = "Cost" p.desc = "The number of components needed to build the ship" p.calculate = """\ (lambda (design bits) (let ((n (apply + bits))) (cons n (string-append (number->string n) " turns")) ) ) """ p.insert() p = Property() p.categories = [Category.byname('Combat')] p.name = "hp" p.displayname = "Hit Points" p.desc = "The amount of damage the ship can take." p.calculate = """\ (lambda (design bits) (let ((n (apply + bits))) (cons n (string-append (number->string n) " HP")))) """ p.insert() p = Property() p.categories = [Category.byname('Combat')] p.name = "backup-damage" p.displayname = "Backup Damage" p.desc = "The amount of damage that the ship will do when using it's backup weapon. (IE When it draws a battle round.)" p.calculate = """\ (lambda (design bits) (let ((n (apply + bits))) (cons n (string-append (number->string n) " HP")))) """ p.insert() p = Property() p.categories = [Category.byname('Combat')] p.name = "primary-damage" p.displayname = "Primary Damage" p.desc = "The amount of damage that the ship will do when using it's primary weapon. (IE When it wins a battle round.)" p.calculate = """\ (lambda (design bits) (let ((n (apply + bits))) (cons n (string-append (number->string n) " HP")))) """ p.insert() p = Property() p.categories = [Category.byname('Misc')] p.name = "escape" p.displayname = "Escape Chance" p.desc = "The chance the ship has of escaping from battle." p.calculate = """\ (lambda (design bits) (let ((n (apply + bits))) (cons n (string-append (number->string (* n 100)) " %")))) """ p.insert() p = Property() p.categories = [Category.byname('Misc')] p.name = "colonise" p.displayname = "Can Colonise Planets" p.desc = "Can the ship colonise planets/" p.calculate = """\ (lambda (design bits) (let ((n (apply + bits))) (cons n (if (> n 1) "Yes" "No")))) """ p.insert() c = Component() c.categories = [Category.byname('Combat')] c.name = "Missile" c.desc = "Missile which does 1HP of damage." c.properties = {} c.properties[Property.byname('primary-damage')] = None c.insert() c = Component() c.categories = [Category.byname('Combat')] c.name = "Laser" c.desc = "Lasers which do 1HP of damage." c.properties = {} c.properties[Property.byname( 'backup-damage')] = """(lambda (design) 0.25)""" c.insert() c = Component() c.categories = [Category.byname('Combat')] c.name = "Armor Plate" c.desc = "Armor Plate which absorbes 1HP of damage." c.properties = {} c.properties[Property.byname('hp')] = None c.insert() c = Component() c.categories = [Category.byname('Misc')] c.name = "Colonisation Pod" c.desc = "A part which allows a ship to colonise a planet." c.properties = {} c.properties[Property.byname('colonise')] = None c.insert() c = Component() c.categories = [Category.byname('Misc')] c.name = "Escape Thrusters" c.desc = "A part which allows a ship to escape combat." c.properties = {} c.properties[Property.byname( 'escape')] = """(lambda (design) 0.25)""" c.insert() c = Component() c.categories = [Category.byname('Misc')] c.name = "Primary Engine" c.desc = "A part which allows a ship to move through space." c.properties = {} c.properties[Property.byname( 'speed')] = """(lambda (design) 1000000)""" c.insert() d = Design() d.name = "Scout" d.desc = "A fast light ship with advanced sensors." d.owner = -1 d.categories = [Category.byname('Misc')] d.components = [] d.components.append((Component.byname('Escape Thrusters'), 4)) d.components.append((Component.byname('Armor Plate'), 2)) d.components.append((Component.byname('Primary Engine'), 5)) d.insert() d = Design() d.name = "Frigate" d.desc = "A general purpose ship with weapons and ability to colonise new planets." d.owner = -1 d.categories = [Category.byname('Misc')] d.components = [] d.components.append((Component.byname('Armor Plate'), 4)) d.components.append((Component.byname('Primary Engine'), 2)) d.components.append((Component.byname('Colonisation Pod'), 1)) d.components.append((Component.byname('Missile'), 2)) d.insert() d = Design() d.name = "Battleship" d.desc = "A heavy ship who's main purpose is to blow up other ships." d.owner = -1 d.categories = [Category.byname('Misc')] d.components = [] d.components.append((Component.byname('Armor Plate'), 6)) d.components.append((Component.byname('Primary Engine'), 3)) d.components.append((Component.byname('Missile'), 3)) d.components.append((Component.byname('Laser'), 4)) d.insert() trans.commit() except: trans.rollback() raise # FIXME: Need to populate the database with the MiniSec design stuff, # - Firepower # - Armor/HP # - Speed # - Sensors (scouts ability to disappear).... pass
def initialise(self, seed=None): """\ TIM Trader """ trans = dbconn.begin() try: RulesetBase.initialise(self) # Need to create the top level universe object... universe = Object(type='tp.server.rules.base.objects.Universe') universe.id = 0 universe.name = "The Universe" universe.size = SIZE universe.parent = 0 universe.posx = 0 universe.posy = 0 universe.turn = 0 universe.insert() # Create all the resources, they consist of, # - One resource for each resource specified in resources.csv # - One resource for each factory specified in prodcon.csv reader = csv.DictReader( open(os.path.join(self.files, "resources.csv"), "r")) for row in reader: if row['namesingular'] is '': continue r = Resource() for name, cell in row.iteritems(): if cell is '': continue try: setattr(r, name, convert(getattr(Resource.table.c, name), cell)) except AttributeError, e: # FIXME: These shouldn't really occur... pass r.transportable = bool(row['transportable']) r.insert() import ProducersConsumers for factory in ProducersConsumers.loadfile( os.path.join(self.files, "prodcon.csv")): # FIXME: Make these auto generated resources much nicer... # Ignore the special case factories which are also goods. try: r = Resource(Resource.byname(factory.name)) r.desc += "\n" except NoSuch: r = Resource() r.namesingular = factory.name r.nameplural = factory.name r.desc = "" r.weight = 1000 r.size = 1000 r.desc += "Converts" for product in factory.products: # FIXME: Should also display if usage of this resource is required to grow.... r.desc += "\n\t%s -> %s" % product r.products = factory.products r.save() trans.commit()
def initialise(self, seed=None): """\ TIM Trader """ trans = dbconn.begin() try: RulesetBase.initialise(self) # Need to create the top level universe object... universe = Object(type='tp.server.rules.base.objects.Universe') universe.id = 0 universe.name = "The Universe" universe.size = SIZE universe.parent = 0 universe.posx = 0 universe.posy = 0 universe.turn = 0 universe.insert() # Create all the resources, they consist of, # - One resource for each resource specified in resources.csv # - One resource for each factory specified in prodcon.csv reader = csv.DictReader(open(os.path.join(self.files, "resources.csv"), "r")) for row in reader: if row['namesingular'] is '': continue r = Resource() for name, cell in row.iteritems(): if cell is '': continue try: setattr(r, name, convert(getattr(Resource.table.c, name), cell)) except AttributeError, e: # FIXME: These shouldn't really occur... pass r.transportable = bool(row['transportable']) r.insert() import ProducersConsumers for factory in ProducersConsumers.loadfile(os.path.join(self.files, "prodcon.csv")): # FIXME: Make these auto generated resources much nicer... # Ignore the special case factories which are also goods. try: r = Resource(Resource.byname(factory.name)) r.desc += "\n" except NoSuch: r = Resource() r.namesingular = factory.name r.nameplural = factory.name r.desc = "" r.weight = 1000 r.size = 1000 r.desc += "Converts" for product in factory.products: # FIXME: Should also display if usage of this resource is required to grow.... r.desc += "\n\t%s -> %s" % product r.products = factory.products r.save() trans.commit()