extends CanvasLayer var player var drawer var sprite var label var cell_left var cell_top var cell_right var cell_bottom var cell_width var cell_height var center_x_min var center_x_max var center_y_min var center_y_max func _ready(): player = get_tree().get_root().get_node("scene/player") var svc = PanelContainer.new() svc.anchor_left = 1.0 svc.anchor_top = 1.0 svc.anchor_right = 1.0 svc.anchor_bottom = 1.0 svc.offset_left = -320.0 svc.offset_top = -320.0 svc.offset_right = -64.0 svc.offset_bottom = -64.0 svc.clip_contents = true add_child(svc) var background_color = Color.WHITE var world_env = get_tree().get_root().get_node("scene/WorldEnvironment") if world_env != null and world_env.environment != null: if world_env.environment.background_mode == Environment.BG_COLOR: background_color = world_env.environment.background_color elif ( world_env.environment.background_mode == Environment.BG_SKY and world_env.environment.sky != null and world_env.environment.sky.sky_material != null ): var sky = world_env.environment.sky.sky_material if sky is PhysicalSkyMaterial: background_color = sky.ground_color elif sky is ProceduralSkyMaterial: background_color = sky.sky_top_color var stylebox = StyleBoxFlat.new() stylebox.bg_color = Color(background_color, 0.6) svc.add_theme_stylebox_override("panel", stylebox) drawer = Node2D.new() svc.add_child(drawer) var gridmap = get_tree().get_root().get_node("scene/GridMap") if gridmap == null: visible = false return cell_left = 0 cell_top = 0 cell_right = 0 cell_bottom = 0 for pos in gridmap.get_used_cells(): if pos.x < cell_left: cell_left = pos.x if pos.x > cell_right: cell_right = pos.x if pos.z < cell_top: cell_top = pos.z if pos.z > cell_bottom: cell_bottom = pos.z cell_width = cell_right - cell_left + 1 cell_height = cell_bottom - cell_top + 1 var rendered = _renderMap(gridmap) var image_texture = ImageTexture.create_from_image(rendered) sprite = Sprite2D.new() sprite.texture = image_texture sprite.texture_filter = CanvasItem.TEXTURE_FILTER_NEAREST sprite.scale = Vector2(2, 2) sprite.centered = false drawer.add_child(sprite) label = Label.new() label.theme = preload("res://assets/themes/baseUI.tres") label.add_theme_font_size_override("font_size", 32) label.text = "@" drawer.add_child(label) #var local_tl = gridmap.map_to_local(Vector3i(cell_left, 0, cell_top)) #var global_tl = gridmap.to_global(local_tl) #var local_br = gridmap.map_to_local(Vector3i(cell_right, 0, cell_bottom)) #var global_br = gridmap.to_global(local_br) center_x_min = 0 center_x_max = cell_width - 128 center_y_min = 0 center_y_max = cell_height - 128 if center_x_max < center_x_min: center_x_min = (center_x_min + center_x_max) / 2 center_x_max = center_x_min if center_y_max < center_y_min: center_y_min = (center_y_min + center_y_max) / 2 center_y_max = center_y_min func _process(_delta): if visible == false: return drawer.position.x = clamp(player.position.x - cell_left - 64, center_x_min, center_x_max) * -2 drawer.position.y = clamp(player.position.z - cell_top - 64, center_y_min, center_y_max) * -2 label.position.x = (player.position.x - cell_left) * 2 - 16 label.position.y = (player.position.z - cell_top) * 2 - 16 func _renderMap(gridmap): var ap = global.get_node("Archipelago") var heights = {} var rendered = Image.create_empty(cell_width, cell_height, false, Image.FORMAT_RGBA8) rendered.fill(Color.TRANSPARENT) var meshes_node = get_tree().get_root().get_node("scene/Meshes") if meshes_node != null: _renderMeshNode(ap, gridmap, meshes_node, rendered) for pos in gridmap.get_used_cells(): var in_plane = Vector2i(pos.x, pos.z) if in_plane in heights and heights[in_plane] > pos.y: continue heights[in_plane] = pos.y var cell_item = gridmap.get_cell_item(pos) var mesh = gridmap.mesh_library.get_item_mesh(cell_item) var material = mesh.surface_get_material(0) var color = ap.color_by_material_path.get(material.resource_path, Color.TRANSPARENT) rendered.set_pixel(pos.x - cell_left, pos.z - cell_top, color) return rendered func _renderMeshNode(ap, gridmap, mesh, rendered): if mesh is MeshInstance3D: var local_tl = gridmap.map_to_local(Vector3i(cell_left, 0, cell_top)) var global_tl = gridmap.to_global(local_tl) var mesh_material = mesh.get_surface_override_material(0) if mesh_material != null: var mesh_color = ap.color_by_material_path.get( mesh_material.resource_path, Color.TRANSPARENT ) for y in range( max(mesh.position.z - mesh.scale.z / 2 - global_tl.z, 0), min(mesh.position.z + mesh.scale.z / 2 - global_tl.z, cell_height) ): for x in range( max(mesh.position.x - mesh.scale.x / 2 - global_tl.x, 0), min(mesh.position.x + mesh.scale.x / 2 - global_tl.x, cell_width) ): rendered.set_pixel(x, y, mesh_color) for child in mesh.get_children(): _renderMeshNode(ap, gridmap, child, rendered) ed */ .highlight .ge { font-style: italic } /* Generic.Emph */ .highlight .ges { font-weight: bold; font-style: italic } /* Generic.EmphStrong */ .highlight .gr { color: #aa0000 } /* Generic.Error */ .highlight .gh { color: #333333 } /* Generic.Heading */ .highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */ .highlight .go { color: #888888 } /* Generic.Output */ .highlight .gp { color: #555555 } /* Generic.Prompt */ .highlight .gs { font-weight: bold } /* Generic.Strong */ .highlight .gu { color: #666666 } /* Generic.Subheading */ .highlight .gt { color: #aa0000 } /* Generic.Traceback */ .highlight .kc { color: #008800; font-weight: bold } /* Keyword.Constant */ .highlight .kd { color: #008800; font-weight: bold } /* Keyword.Declaration */ .highlight .kn { color: #008800; font-weight: bold } /* Keyword.Namespace */ .highlight .kp { color: #008800 } /* Keyword.Pseudo */ .highlight .kr { color: #008800; font-weight: bold } /* Keyword.Reserved */ .highlight .kt { color: #888888; font-weight: bold } /* Keyword.Type */ .highlight .m { color: #0000DD; font-weight: bold } /* Literal.Number */ .highlight .s { color: #dd2200; background-color: #fff0f0 } /* Literal.String */ .highlight .na { color: #336699 } /* Name.Attribute */ .highlight .nb { color: #003388 } /* Name.Builtin */ .highlight .nc { color: #bb0066; font-weight: bold } /* Name.Class */ .highlight .no { color: #003366; font-weight: bold } /* Name.Constant */ .highlight .nd { color: #555555 } /* Name.Decorator */ .highlight .ne { color: #bb0066; font-weight: bold } /* Name.Exception */ .highlight .nf { color: #0066bb; font-weight: bold } /* Name.Function */ .highlight .nl { color: #336699; font-style: italic } /* Name.Label */ .highlight .nn { color: #bb0066; font-weight: bold } /* Name.Namespace */ .highlight .py { color: #336699; font-weight: bold } /* Name.Property */ .highlight .nt { color: #bb0066; font-weight: bold } /* Name.Tag */ .highlight .nv { color: #336699 } /* Name.Variable */ .highlight .ow { color: #008800 } /* Operator.Word */ .highlight .w { color: #bbbbbb } /* Text.Whitespace */ .highlight .mb { color: #0000DD; font-weight: bold } /* Literal.Number.Bin */ .highlight .mf { color: #0000DD; font-weight: bold } /* Literal.Number.Float */ .highlight .mh { color: #0000DD; font-weight: bold } /* Literal.Number.Hex */ .highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */ .highlight .mo { color: #0000DD; font-weight: bold } /* Literal.Number.Oct */ .highlight .sa { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Affix */ .highlight .sb { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Backtick */ .highlight .sc { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Char */ .highlight .dl { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Delimiter */ .highlight .sd { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Doc */ .highlight .s2 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Double */ .highlight .se { color: #0044dd; background-color: #fff0f0 } /* Literal.String.Escape */ .highlight .sh { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Heredoc */ .highlight .si { color: #3333bb; background-color: #fff0f0 } /* Literal.String.Interpol */ .highlight .sx { color: #22bb22; background-color: #f0fff0 } /* Literal.String.Other */ .highlight .sr { color: #008800; background-color: #fff0ff } /* Literal.String.Regex */ .highlight .s1 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Single */ .highlight .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */ .highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */ .highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */ .highlight .vc { color: #336699 } /* Name.Variable.Class */ .highlight .vg { color: #dd7700 } /* Name.Variable.Global */ .highlight .vi { color: #3333bb } /* Name.Variable.Instance */ .highlight .vm { color: #336699 } /* Name.Variable.Magic */ .highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */
{
  "default-registry": {
    "kind": "git",
    "baseline": "70a7abe262134f51393f02966e80789a2305ce6f",
    "repository": "https://github.com/microsoft/vcpkg"
  },
  "registries": [
    {
      "kind": "artifact",
      "location": "https://github.com/microsoft/vcpkg-ce-catalog/archive/refs/heads/main.zip",
      "name": "microsoft"
    }
  ]
}