Skip to content

Commit

Permalink
feat: min distance between nodes and icon setup
Browse files Browse the repository at this point in the history
  • Loading branch information
tylercchase committed Jul 25, 2024
1 parent cb14e77 commit 3bd4128
Show file tree
Hide file tree
Showing 5 changed files with 28 additions and 10 deletions.
15 changes: 11 additions & 4 deletions godot/scenes/map/map.gd
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,8 @@ extends Control

@export var map_node: PackedScene
@export var map_scale = 1.0

@export var distance_apart: float = 1.0
@export var total_nodes = 12
var map_nodes = {}

@onready var map_node_container: Control = %MapNodeContainer
Expand All @@ -16,7 +17,7 @@ func _ready() -> void:
pass
# already exists
else:
var data: MapData = generate(30,20,12)
var data: MapData = generate(30,total_nodes,12)
State.map_data = data
load_map(State.map_data)

Expand All @@ -37,12 +38,14 @@ func load_map(map_data: MapData) -> void:
var index1 = path[i]
var index2 = path[i + 1]
map_nodes[index1].add_child_event(map_nodes[index2])
var current_node: MapNode = map_nodes[State.current_map_node]
current_node.set_type(MapNode.MAP_ICON.CURRENT)

func _input(event: InputEvent) -> void:
# just for testing out generating maps for now
if event is InputEventMouseButton:
if event.pressed:
var data: MapData = generate(30,20,12)
var data: MapData = generate(30,total_nodes,12)
State.map_data = data
load_map(State.map_data)

Expand Down Expand Up @@ -73,7 +76,11 @@ func generate(plane_len: int, node_count: int, path_count: int) -> MapData:
var dist_from_center = (point - center).length_squared()
# only accept points insode of a circle
var in_circle = dist_from_center <= plane_len * plane_len / 4
if not points.has(point) and in_circle:
var min_distance = INF
for thing in points:
if (point - thing).length_squared() < min_distance:
min_distance = (point - thing).length_squared()
if not points.has(point) and in_circle and min_distance > distance_apart:
points.append(point)
break

Expand Down
3 changes: 2 additions & 1 deletion godot/scenes/map/map.tscn
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,8 @@ size_flags_vertical = 3
script = ExtResource("1_gg7d2")
combat_area = ExtResource("2_05utw")
map_node = ExtResource("3_q65q5")
map_scale = 15.0
map_scale = 18.425
distance_apart = 7.44

[node name="ColorRect" type="ColorRect" parent="."]
layout_mode = 2
Expand Down
13 changes: 11 additions & 2 deletions godot/scenes/map/nodes/map_node.gd
Original file line number Diff line number Diff line change
@@ -1,17 +1,26 @@
class_name MapNode
extends Control

const margin = 16

var children: Array = []

@export_file("*.svg") var icons: Array[String] = []
enum MAP_ICON {COMBAT, ELITE, MYSTERY, SHOP, BOSS, CAMPFIRE, CURRENT}

@export var button: Button

func add_child_event(child):
if !children.has(child):
children.append(child)
queue_redraw()

func set_type(icon: MAP_ICON):
#
button.icon = ResourceLoader.load(icons[icon])


func _draw():
# draw_circle(Vector2.ZERO, 4, Color.WHITE_SMOKE)

for child in children:
var line = child.position - position
var normal = line.normalized()
Expand Down
4 changes: 3 additions & 1 deletion godot/scenes/map/nodes/map_node.tscn
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,14 @@
[ext_resource type="Script" path="res://scenes/map/nodes/map_node.gd" id="2_6jj6h"]
[ext_resource type="Texture2D" uid="uid://cegte5ghg5m4l" path="res://assets/kenney_assets/board_game_icons/skull.svg" id="2_amxkw"]

[node name="MapNode" type="Control"]
[node name="MapNode" type="Control" node_paths=PackedStringArray("button")]
layout_mode = 3
anchors_preset = 0
offset_right = 32.0
offset_bottom = 32.0
script = ExtResource("2_6jj6h")
icons = Array[String](["res://assets/kenney_assets/board_game_icons/sword.svg", "res://assets/kenney_assets/board_game_icons/skull.svg", "res://assets/kenney_assets/board_game_icons/rhombus_question.svg", "res://assets/kenney_assets/board_game_icons/dollar.svg", "res://assets/kenney_assets/board_game_icons/character.svg", "res://assets/kenney_assets/board_game_icons/campfire.svg", "res://assets/kenney_assets/board_game_icons/crown_a.svg"])
button = NodePath("Button")

[node name="Button" type="Button" parent="."]
layout_mode = 0
Expand Down
3 changes: 1 addition & 2 deletions godot/singletons/State.gd
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,7 @@ extends Node

var player_deck : Array[Ingredient] = [load("res://scenes/ingredient_block/resources/godot_single.tres"),load("res://scenes/ingredient_block/resources/l_block.tres")]

class MapState:
var position: Vector2

var map_data: MapData
var current_map_node: int = 0
var map_node_parameters: Dictionary = {}

0 comments on commit 3bd4128

Please sign in to comment.