Beispiel #1
0
    def load_from_map_file(self):
        layout_file = open(self.map_file)
        r = csv.reader(layout_file, delimiter=',')

        first_line = r.next()
        self.width = int(first_line[0])
        self.height = int(first_line[1])
        self.scenario_number = int(first_line[2])

        self.terrain_layer = Matrix(self.width, self.height)
        self.scenario_layer = [Matrix(self.width, self.height) for i in\
                               range(self.scenario_number)]

        y = 0
        for line in r:
            if len(line) == self.width:
                for x, value in enumerate(line):
                    self.terrain_layer[x, y] = self.terrain_tileset.\
                                               tiles[int(value)]
                y += 1
            if y >= self.height:
                break

        for i in xrange(self.scenario_number):
            y = 0
            for line in r:
                if len(line) == self.width:
                    for x, value in enumerate(line):
                        tile = self.scenario_tileset[i].tiles[int(value)]
                        self.scenario_layer[i][x, y] = tile
                    y += 1
                if y >= self.height:
                    break

        layout_file.close()
Beispiel #2
0
    def __init__(self,
                 width,
                 height,
                 width_in_cells,
                 height_in_cells,
                 visible=False,
                 focusable=False,
                 theme=None):
        Div.__init__(self, width, height, focusable, theme)
        self.visible = visible
        self.width_in_cells = width_in_cells
        self.height_in_cells = height_in_cells
        self.cell_width = self.width / self.width_in_cells
        self.cell_height = self.height / self.height_in_cells

        self.cells = Matrix(width_in_cells, height_in_cells)
        for y in xrange(height_in_cells):
            for x in xrange(width_in_cells):
                div = Div(self.cell_width,
                          self.cell_height,
                          focusable=False,
                          theme=self.theme)
                pos = (x * self.cell_width, y * self.cell_height)
                self.cells[x, y] = div
                self.add_widget(div, pos)
Beispiel #3
0
    def __init__(self, map_file, terrain_tileset_files,
                 scenario_tileset_files_list):
        """
        *Constructor:*

        Initialize the MapModel with a layout defined by *map_file* (a .map
        file).

        The terrain tileset is specified by *terrain_tileset_files*, which
        is a tuple (tileset image filename, tileset boundaries filename).
        Tileset image filename should be a bitmap file (.png typically)
        and tileset boundaries filename) should be a .bnd file.

        The scenario tilesets are specified by
        *scenario_tileset_files_list*, a list of tuples like the one passed
        as *terrain_tileset_files*. Each will correspond to a scenario
        layer.
        """
        Model.__init__(self)

        self.world = None
        self.id = None

        self.music = None

        # Set up party
        self.party = None
        self.party_avatar = None

        # Load file data
        self.map_file = map_file
        self.terrain_tileset_files = terrain_tileset_files
        self.scenario_tileset_files_list = scenario_tileset_files_list

        self.terrain_tileset = Tileset(self.terrain_tileset_files[0],
                                       self.terrain_tileset_files[1])
        self.scenario_tileset = [Tileset(i, j) for i, j in\
                                 self.scenario_tileset_files_list]

        self.load_from_map_file()

        # Set up local state
        self.local_state = None

        # Set up objects
        self.objects = []
        self.below_objects = []
        self.obstacle_objects = []
        self.above_objects = []
        self.updatable_objects = []
        self.object_layer = Matrix(self.width, self.height)
        for x in range(self.width):
            for y in range(self.height):
                self.object_layer[x, y] = ObjectCell()

        # Set up areas
        self.areas = []
        self.area_layer = Matrix(self.width, self.height)
        for x in range(self.width):
            for y in range(self.height):
                self.area_layer[x, y] = []

        # Set up context system
        self.pause_delay = 0
        self.contexts = []
Beispiel #4
0
    print m
    print


def test_get(x, y):
    try:
        value = m[x, y]
        print 'Getting', str(x) + ',', str(y), 'as', value
    except:
        print 'Error getting x=' + str(x), 'y=' + str(y)
    print m
    print


if __name__ == '__main__':
    m = Matrix(3, 4)

    test_set(1, 1, 'a')
    test_set(1, 2, 'b')
    test_set(0, 3, 'c')
    test_set(3, 2, 'd')

    test_get(0, 1)
    test_get(1, 1)
    test_get(2, 2)
    test_get(0, 3)
    test_get(3, 2)

    m.resize(100, 100)
    test_get(99, 99)