def __init__(self, flavour, width, height, rank, filler=ft.grass, road=ft.road, break_road=10, room_placer=None): ms_start = libtcod.sys_elapsed_milli() self.flavour = flavour self.width = width self.height = height #city rank - larger cities have laarger ranks self.rank = rank self.filler = filler self.road = road #at what step road should begin to deform self.break_road = break_road self._map = [[filler() for x in xrange(0, width)] for y in xrange(0, height)] ms_end = libtcod.sys_elapsed_milli() print 'Filled in ' + str(ms_end - ms_start) + ' ms' self.roadminy, self.roadmaxy = height, 0 #method for placing generated rooms self.room_placer = room_placer
def __init__(self, flavour, width, height, rank, filler=ft.grass, road=ft.road, break_road=10, room_placer=None): ms_start = libtcod.sys_elapsed_milli() self.flavour = flavour self.width = width self.height = height #city rank - larger cities have laarger ranks self.rank = rank self.filler=filler self.road=road #at what step road should begin to deform self.break_road = break_road self._map = [[filler() for x in xrange(0, width)] for y in xrange(0,height)] ms_end = libtcod.sys_elapsed_milli() print 'Filled in '+ str(ms_end - ms_start) + ' ms' self.roadminy, self.roadmaxy=height,0 #method for placing generated rooms self.room_placer = room_placer
def generate_road(self): ms_start = libtcod.sys_elapsed_milli() _h = self.height / 3 road_y = randrange(_h - util.roll(1, 10), _h + util.roll(1, 10)) len_no_break = randrange(self.break_road / 2, self.break_road) old_road_y = road_y delta = 0 if self.rank > self.RANK_CITY: delta = 1 for x in xrange(0, self.width): len_no_break -= 1 if len_no_break <= 0: len_no_break = randrange(self.break_road / 2, self.break_road) y_delta = util.roll(1, 3) #nope, try another turn if y_delta == 1: len_no_break = 1 elif y_delta == 2: old_road_y, road_y = road_y, util.cap_lower( road_y - 1, 0, 0) delta = -1 else: old_road_y, road_y = road_y, util.cap( road_y + 1, self.height) delta = 1 self.roadminy = min(self.roadminy, road_y) self.roadmaxy = max(self.roadmaxy, road_y) if old_road_y != road_y: self._map[old_road_y][x] = self.road() self._map[road_y][x] = self.road() old_road_y = road_y else: self._map[road_y][x] = self.road() if self.rank >= self.RANK_CITY: self._map[road_y + delta][x] = self.road() ms_end = libtcod.sys_elapsed_milli() print 'generated in ' + str(ms_end - ms_start) + ' ms'
def generate_road(self): ms_start = libtcod.sys_elapsed_milli() _h = self.height / 3 road_y = randrange(_h - util.roll(1, 10), _h + util.roll(1, 10)) len_no_break = randrange(self.break_road / 2, self.break_road) old_road_y = road_y delta = 0 if self.rank > self.RANK_CITY: delta = 1 for x in xrange(0, self.width): len_no_break -= 1 if len_no_break <= 0: len_no_break = randrange(self.break_road / 2, self.break_road) y_delta = util.roll(1, 3) #nope, try another turn if y_delta == 1: len_no_break = 1 elif y_delta == 2: old_road_y, road_y = road_y, util.cap_lower(road_y - 1, 0, 0) delta = -1 else: old_road_y, road_y = road_y, util.cap(road_y + 1, self.height) delta = 1 self.roadminy = min(self.roadminy, road_y) self.roadmaxy = max(self.roadmaxy, road_y) if old_road_y != road_y: self._map[old_road_y][x] = self.road() self._map[road_y][x] = self.road() old_road_y = road_y else: self._map[road_y][x] = self.road() if self.rank >= self.RANK_CITY: self._map[road_y + delta][x] = self.road() ms_end = libtcod.sys_elapsed_milli() print 'generated in ' + str(ms_end - ms_start) + ' ms'