This commit is contained in:
2ManyProjects 2025-03-04 11:12:44 -06:00
parent b4db4afd5f
commit 104e607cc7
2 changed files with 7 additions and 27 deletions

View file

@ -170,7 +170,6 @@ func generate_map():
if from_valid and to_valid:
valid_connections.append(conn)
# Return the generated map
return {
"nodes": valid_nodes,
"connections": valid_connections,
@ -178,14 +177,11 @@ func generate_map():
"seed": _rng.seed
}
# Get a node type based on level - more shops and events in middle levels
func _get_random_room_type(level, total_levels):
# Chance of special rooms based on level
var boss_chance = 0.1 + (level / float(total_levels) * 0.1) # Higher chance in later levels
var shop_chance = 0.1 + (level / float(total_levels) * 0.05) # Higher chance in later levels
var boss_chance = 0.1 + (level / float(total_levels) * 0.1)
var shop_chance = 0.1 + (level / float(total_levels) * 0.05)
var event_chance = 0.05
# Last non-final level should have more bosses
if level == total_levels - 2:
boss_chance += 0.3
@ -200,14 +196,12 @@ func _get_random_room_type(level, total_levels):
else:
return RoomType.NORMAL
# Check if a node is connected as a destination in any connection
func _is_node_connected_to(node_id, connections):
for conn in connections:
if conn.to == node_id:
return true
return false
# Get a unique ID for a new node
func _get_next_id():
var id = _next_id
_next_id += 1

View file

@ -183,24 +183,20 @@ func display_map():
min_y = min(min_y, y_pos)
max_y = max(max_y, y_pos)
# Add padding to container size
var map_width = max_x - min_x + NODE_SIZE.x * 2 + SCROLL_PADDING_LEFT + SCROLL_PADDING_RIGHT
var map_height = max_y - min_y + NODE_SIZE.y * 2 + SCROLL_PADDING_TOP + SCROLL_PADDING_BOTTOM
map_container.custom_minimum_size = Vector2(map_width, map_height)
# Create a padding node at the top
var top_padding = Control.new()
top_padding.custom_minimum_size = Vector2(map_width, SCROLL_PADDING_TOP)
top_padding.position = Vector2(0, 0)
map_container.add_child(top_padding)
# Create a padding node at the bottom
var bottom_padding = Control.new()
bottom_padding.custom_minimum_size = Vector2(map_width, SCROLL_PADDING_BOTTOM)
bottom_padding.position = Vector2(0, map_height - SCROLL_PADDING_BOTTOM)
map_container.add_child(bottom_padding)
# Create padding nodes for left and right
var left_padding = Control.new()
left_padding.custom_minimum_size = Vector2(SCROLL_PADDING_LEFT, map_height)
left_padding.position = Vector2(0, 0)
@ -211,10 +207,6 @@ func display_map():
right_padding.position = Vector2(map_width - SCROLL_PADDING_RIGHT, 0)
map_container.add_child(right_padding)
# Draw connections first (so they're behind nodes)
# Modify your display_map function to use the curved connections
# Replace your loop that draws connections with this:
# Draw connections first (so they're behind nodes)
for connection in map_connections:
@ -309,7 +301,6 @@ func highlight_current_node(button):
button.add_theme_stylebox_override("normal", style)
func _on_node_pressed(node_data):
# Check if the node is accessible from current node
if is_node_accessible(node_data):
# Update current node
current_node = node_data
@ -326,7 +317,6 @@ func traversed_node(node_data):
traversed_map.append(node_data.id)
func is_node_accessible(node_data):
# If no current node, only starting node is accessible
if current_node == null:
return node_data.type == RoomType.STARTING
@ -351,7 +341,6 @@ func draw_curved_connection(from_node, to_node):
elif traversed_map.has(to_node.id) and (traversed_map.has(from_node.id) || from_node.id == 0):
line.default_color = LINE_COLOR_SELECTED
# Calculate start and end positions with padding adjustments
var start_pos = from_node.position * Vector2(NODE_SPACING_X, NODE_SPACING_Y) + Vector2(SCROLL_PADDING_LEFT, SCROLL_PADDING_TOP)
var end_pos = to_node.position * Vector2(NODE_SPACING_X, NODE_SPACING_Y) + Vector2(SCROLL_PADDING_LEFT, SCROLL_PADDING_TOP)
@ -360,7 +349,6 @@ func draw_curved_connection(from_node, to_node):
# If nodes are on different levels (y positions)
if from_node.position.y != to_node.position.y:
# Calculate control points for a curve
var mid_y = (start_pos.y + end_pos.y) / 2
var control_offset = NODE_SPACING_Y * 0.5 * (1 + abs(from_node.position.x - to_node.position.x) * 0.2)
@ -399,7 +387,6 @@ func draw_curved_connection(from_node, to_node):
map_container.add_child(line)
connection_lines.append(line)
# Helper function for cubic bezier curve calculation
func cubic_bezier(p0: Vector2, p1: Vector2, p2: Vector2, p3: Vector2, t: float) -> Vector2:
var q0 = p0.lerp(p1, t)
var q1 = p1.lerp(p2, t)
@ -410,7 +397,6 @@ func cubic_bezier(p0: Vector2, p1: Vector2, p2: Vector2, p3: Vector2, t: float)
return r0.lerp(r1, t)
# Helper function for quadratic bezier curve calculation
func quadratic_bezier(p0: Vector2, p1: Vector2, p2: Vector2, t: float) -> Vector2:
var q0 = p0.lerp(p1, t)
var q1 = p1.lerp(p2, t)