Exemplo n.º 1
0
    def write_to_project(self, resource_open):
        # Dump an additional YML with color0 data
        palette_settings = dict()
        log.debug("Writing palette settings")
        for i in range(0, 32):  # For each map tileset
            entry = dict()
            tileset = None
            for ts in self.tilesets:
                if ts.has_map_tileset(i):
                    tileset = ts
                    break

            palettes = tileset.get_palettes_by_map_tileset(i)
            palettes.sort()
            for (palette_id, palette) in palettes:
                entry[palette_id] = palette.settings_yml_rep()
            palette_settings[i] = entry

        with resource_open("map_palette_settings", "yml") as f:
            yml_str_rep = yml_dump(palette_settings, default_flow_style=False)
            yml_str_rep = convert_values_to_hex_repr(yml_str_rep, "Event Flag")
            f.write(yml_str_rep)

        # Dump the tilesets
        for i, tileset in enumerate(self.tilesets):
            log.debug("Writing tileset #{}".format(i))
            with resource_open("Tilesets/" + str(i).zfill(2), "fts") as f:
                tileset.to_file(f)
Exemplo n.º 2
0
    def to_yml_file(self, f, default_flow_style=False):
        yml_str_rep = yml_dump(self.to_yml_rep(), default_flow_style=default_flow_style)

        # Rewrite hexints in hexidecimal
        # The YAML parser does not offer this option, so this has to be done with a regex
        for hex_label in self.schema.yml_rep_hex_labels():
            yml_str_rep = convert_values_to_hex_repr(yml_str_rep, hex_label)

        f.write(yml_str_rep)
Exemplo n.º 3
0
    def to_yml_file(self, f, default_flow_style=False):
        yml_str_rep = yml_dump(self.to_yml_rep(),
                               default_flow_style=default_flow_style)

        # Rewrite hexints in hexidecimal
        # The YAML parser does not offer this option, so this has to be done with a regex
        for hex_label in self.schema.yml_rep_hex_labels():
            yml_str_rep = convert_values_to_hex_repr(yml_str_rep, hex_label)

        f.write(yml_str_rep)
Exemplo n.º 4
0
    def write_to_project(self, resourceOpener):
        out = dict()
        x = y = 0
        rowOut = dict()
        for entry in self.door_areas:
            if not entry:
                rowOut[x % 32] = None
            else:
                rowOut[x % 32] = [z.yml_rep() for z in entry]
            if (x % 32) == 31:
                # Start new row
                out[y] = rowOut
                x = 0
                y += 1
                rowOut = dict()
            else:
                x += 1

        with resourceOpener("map_doors", "yml", True) as f:
            s = yml_dump(out, default_flow_style=False)
            s = convert_values_to_hex_repr(yml_str_rep=s, key="Event Flag")
            f.write(s)
Exemplo n.º 5
0
    def write_to_project(self, resourceOpener):
        out = dict()
        x = y = 0
        rowOut = dict()
        for entry in self.door_areas:
            if not entry:
                rowOut[x % 32] = None
            else:
                rowOut[x % 32] = [z.yml_rep() for z in entry]
            if (x % 32) == 31:
                # Start new row
                out[y] = rowOut
                x = 0
                y += 1
                rowOut = dict()
            else:
                x += 1

        with resourceOpener("map_doors", "yml", True) as f:
            s = yml_dump(
                out,
                default_flow_style=False)
            s = convert_values_to_hex_repr(yml_str_rep=s, key="Event Flag")
            f.write(s)
Exemplo n.º 6
0
def test_convert_values_to_hex_repr():
    assert_equal(convert_values_to_hex_repr("ABC: 0", "ABC"), "ABC: 0x0")
    assert_equal(convert_values_to_hex_repr("ABC: 55", "ABC"), "ABC: 0x37")
    assert_equal(convert_values_to_hex_repr("ABC: 55", "ABCD"), "ABC: 55")
    assert_equal(convert_values_to_hex_repr("A:\n  - {ABC: 16}", "ABC"),
                 "A:\n  - {ABC: 0x10}")
Exemplo n.º 7
0
 def write_map_palette_settings(self, palette_settings, resource_open):
     with resource_open("map_palette_settings", "yml") as f:
         yml_str_rep = yml_dump(palette_settings, default_flow_style=False)
         yml_str_rep = convert_values_to_hex_repr(yml_str_rep, "Event Flag")
         f.write(yml_str_rep)
Exemplo n.º 8
0
    def upgrade_project(self, old_version, new_version, rom, resource_open_r, resource_open_w, resource_delete):
        if old_version == new_version:
            return
        elif old_version == 3:
            replace_field_in_yml(resource_name="item_configuration_table",
                                 resource_open_r=resource_open_r,
                                 resource_open_w=resource_open_w,
                                 key="Effect",
                                 new_key="Action")
            replace_field_in_yml(resource_name="psi_ability_table",
                                 resource_open_r=resource_open_r,
                                 resource_open_w=resource_open_w,
                                 key="Effect",
                                 new_key="Action")
            replace_field_in_yml(resource_name="psi_ability_table",
                                 resource_open_r=resource_open_r,
                                 resource_open_w=resource_open_w,
                                 key="PSI Name",
                                 value_map={0: None,
                                            1: 0,
                                            2: 1,
                                            3: 2,
                                            4: 3,
                                            5: 4,
                                            6: 5,
                                            7: 6,
                                            8: 7,
                                            9: 8,
                                            10: 9,
                                            11: 10,
                                            12: 11,
                                            13: 12,
                                            14: 13,
                                            15: 14,
                                            16: 15,
                                            17: 16})

            resource_delete("cmd_window_text")
            resource_delete("psi_anim_palettes")
            resource_delete("sound_stone_palette")

            self.upgrade_project(old_version=old_version + 1,
                                 new_version=new_version,
                                 rom=rom,
                                 resource_open_r=resource_open_r,
                                 resource_open_w=resource_open_w,
                                 resource_delete=resource_delete)
        elif old_version == 2:
            replace_field_in_yml(resource_name="timed_delivery_table",
                                 resource_open_r=resource_open_r,
                                 resource_open_w=resource_open_w,
                                 key="Suitable Area Text Pointer",
                                 new_key="Delivery Success Text Pointer")
            replace_field_in_yml(resource_name="timed_delivery_table",
                                 resource_open_r=resource_open_r,
                                 resource_open_w=resource_open_w,
                                 key="Unsuitable Area Text Pointer",
                                 new_key="Delivery Failure Text Pointer")

            with resource_open_r("timed_delivery_table", "yml") as f:
                out = yml_load(f)
                yml_str_rep = yml_dump(out, default_flow_style=False)

            yml_str_rep = convert_values_to_hex_repr(yml_str_rep, "Event Flag")

            with resource_open_w("timed_delivery_table", "yml") as f:
                f.write(yml_str_rep)

            self.upgrade_project(old_version=old_version + 1,
                                 new_version=new_version,
                                 rom=rom,
                                 resource_open_r=resource_open_r,
                                 resource_open_w=resource_open_w,
                                 resource_delete=resource_delete)
        elif old_version == 1:
            replace_field_in_yml(resource_name="psi_ability_table",
                                 resource_open_r=resource_open_r,
                                 resource_open_w=resource_open_w,
                                 key="Target",
                                 new_key="Usability Outside of Battle",
                                 value_map={"Nobody": "Other",
                                            "Enemies": "Unusable",
                                            "Allies": "Usable"})
            replace_field_in_yml(resource_name="battle_action_table",
                                 resource_open_r=resource_open_r,
                                 resource_open_w=resource_open_w,
                                 key="Direction",
                                 value_map={"Party": "Enemy",
                                            "Enemy": "Party"})

            self.upgrade_project(old_version=old_version + 1,
                                 new_version=new_version,
                                 rom=rom,
                                 resource_open_r=resource_open_r,
                                 resource_open_w=resource_open_w,
                                 resource_delete=resource_delete)
        else:
            self.upgrade_project(old_version + 1, new_version, rom, resource_open_r, resource_open_w, resource_delete)
Exemplo n.º 9
0
    def upgrade_project(self, old_version, new_version, rom, resource_open_r, resource_open_w, resource_delete):
        if old_version == new_version:
            return
        elif old_version == 3:
            replace_field_in_yml(resource_name="item_configuration_table",
                                 resource_open_r=resource_open_r,
                                 resource_open_w=resource_open_w,
                                 key="Effect",
                                 new_key="Action")
            replace_field_in_yml(resource_name="psi_ability_table",
                                 resource_open_r=resource_open_r,
                                 resource_open_w=resource_open_w,
                                 key="Effect",
                                 new_key="Action")
            replace_field_in_yml(resource_name="psi_ability_table",
                                 resource_open_r=resource_open_r,
                                 resource_open_w=resource_open_w,
                                 key="PSI Name",
                                 value_map={0: None,
                                            1: 0,
                                            2: 1,
                                            3: 2,
                                            4: 3,
                                            5: 4,
                                            6: 5,
                                            7: 6,
                                            8: 7,
                                            9: 8,
                                            10: 9,
                                            11: 10,
                                            12: 11,
                                            13: 12,
                                            14: 13,
                                            15: 14,
                                            16: 15,
                                            17: 16})

            resource_delete("cmd_window_text")
            resource_delete("psi_anim_palettes")
            resource_delete("sound_stone_palette")

            self.upgrade_project(old_version=old_version + 1,
                                 new_version=new_version,
                                 rom=rom,
                                 resource_open_r=resource_open_r,
                                 resource_open_w=resource_open_w,
                                 resource_delete=resource_delete)
        elif old_version == 2:
            replace_field_in_yml(resource_name="timed_delivery_table",
                                 resource_open_r=resource_open_r,
                                 resource_open_w=resource_open_w,
                                 key="Suitable Area Text Pointer",
                                 new_key="Delivery Success Text Pointer")
            replace_field_in_yml(resource_name="timed_delivery_table",
                                 resource_open_r=resource_open_r,
                                 resource_open_w=resource_open_w,
                                 key="Unsuitable Area Text Pointer",
                                 new_key="Delivery Failure Text Pointer")

            with resource_open_r("timed_delivery_table", "yml", True) as f:
                out = yml_load(f)
                yml_str_rep = yml_dump(out, default_flow_style=False)

            yml_str_rep = convert_values_to_hex_repr(yml_str_rep, "Event Flag")

            with resource_open_w("timed_delivery_table", "yml", True) as f:
                f.write(yml_str_rep)

            self.upgrade_project(old_version=old_version + 1,
                                 new_version=new_version,
                                 rom=rom,
                                 resource_open_r=resource_open_r,
                                 resource_open_w=resource_open_w,
                                 resource_delete=resource_delete)
        elif old_version == 1:
            replace_field_in_yml(resource_name="psi_ability_table",
                                 resource_open_r=resource_open_r,
                                 resource_open_w=resource_open_w,
                                 key="Target",
                                 new_key="Usability Outside of Battle",
                                 value_map={"Nobody": "Other",
                                            "Enemies": "Unusable",
                                            "Allies": "Usable"})
            replace_field_in_yml(resource_name="battle_action_table",
                                 resource_open_r=resource_open_r,
                                 resource_open_w=resource_open_w,
                                 key="Direction",
                                 value_map={"Party": "Enemy",
                                            "Enemy": "Party"})

            self.upgrade_project(old_version=old_version + 1,
                                 new_version=new_version,
                                 rom=rom,
                                 resource_open_r=resource_open_r,
                                 resource_open_w=resource_open_w,
                                 resource_delete=resource_delete)
        else:
            self.upgrade_project(old_version + 1, new_version, rom, resource_open_r, resource_open_w, resource_delete)
Exemplo n.º 10
0
def test_convert_values_to_hex_repr():
    assert_equal(convert_values_to_hex_repr("ABC: 0", "ABC"), "ABC: 0x0")
    assert_equal(convert_values_to_hex_repr("ABC: 55", "ABC"), "ABC: 0x37")
    assert_equal(convert_values_to_hex_repr("ABC: 55", "ABCD"), "ABC: 55")
    assert_equal(convert_values_to_hex_repr("A:\n  - {ABC: 16}", "ABC"), "A:\n  - {ABC: 0x10}")