Beispiel #1
0
def write_node(writer: BinaryWriter, node: Dict):
    writer.write_string(node["name"])
    writer.write_bool(node["heal"])
    writer.write_byte(node["node_type"])

    node_type = node["node_type"]

    if node_type == 0:
        pass

    elif node_type == 1:
        writer.write_byte(node["dock_index"])
        writer.write_uint(node["connected_area_asset_id"])
        writer.write_byte(node["connected_dock_index"])
        writer.write_byte(node["dock_type"])
        writer.write_byte(node["dock_weakness_index"])
        writer.write_byte(0)
        writer.write_byte(0)
        writer.write_byte(0)

    elif node_type == 2:
        writer.write_byte(node["pickup_index"])

    elif node_type == 3:
        writer.write_uint(node["destination_world_asset_id"])
        writer.write_uint(node["destination_area_asset_id"])
        writer.write_uint(node["teleporter_instance_id"])

    elif node_type == 4:
        writer.write_byte(node["event_index"])

    else:
        raise Exception("Unknown node type: {}".format(node_type))
Beispiel #2
0
def test_write():
    b = io.BytesIO()
    b_io = b  # type: BinaryIO
    writer = BinaryWriter(b_io)

    writer.write_string("foo")
    writer.write_byte(5)
    writer.write_short(1505)
    writer.write_bool(False)

    assert b.getvalue() == b"foo\x00\x05\x05\xe1\x00"
Beispiel #3
0
def write_dock_weakness(writer: BinaryWriter, item: Dict):
    writer.write_byte(item["index"])
    writer.write_string(item["name"])
    writer.write_bool(item["is_blast_door"])
    write_requirement_set(writer, item["requirement_set"])
Beispiel #4
0
def write_individual_requirement(writer: BinaryWriter, item: Dict):
    writer.write_byte(item["requirement_type"])
    writer.write_byte(item["requirement_index"])
    writer.write_short(item["amount"])
    writer.write_bool(item["negate"])