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'