Skip to content

Commit

Permalink
feat: moving through map
Browse files Browse the repository at this point in the history
  • Loading branch information
tylercchase committed Jul 25, 2024
1 parent 3bd4128 commit bb1c825
Show file tree
Hide file tree
Showing 5 changed files with 44 additions and 34 deletions.
42 changes: 26 additions & 16 deletions godot/scenes/map/map.gd
Original file line number Diff line number Diff line change
@@ -1,28 +1,29 @@
extends Control

@export var map_scale: float = 1.0
@export var distance_apart: float = 1.0
@export var total_nodes:int = 12
@export_subgroup("Spawn pools")
@export var enemy_spawn_zones: Array[EnemySpawnZone] = []
@export_subgroup("Packed Scenes")
@export var combat_area: PackedScene
@export var treasure_room: PackedScene
@export var shop: PackedScene

@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 = {}

var map_nodes = {}
@onready var map_node_container: Control = %MapNodeContainer
# Called when the node enters the scene tree for the first time.
func _ready() -> void:
if State.map_data:
pass
# already exists
else:
var data: MapData = generate(30,total_nodes,12)
State.map_data = data
load_map(State.map_data)

func load_map(map_data: MapData) -> void:

map_nodes = {}
for child in map_node_container.get_children():
child.queue_free()

Expand All @@ -40,16 +41,24 @@ func load_map(map_data: MapData) -> void:
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)
current_node.enable() # just to get the styling right
if current_node.children:
for child in current_node.children:
child.enable()
var index: int = 0
for thing in map_nodes.keys():
if map_nodes[thing] == child:
index = thing
break
child.pressed.connect(_on_map_node_pressed.bind(index))

func _on_map_node_pressed(index: int) -> void:
print('Pressed ' + str(index))
State.current_map_node = index
load_map(State.map_data)

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,total_nodes,12)
State.map_data = data
load_map(State.map_data)

func _on_enemy_button_pressed():

func _on_enemy_button_pressed() -> void:
var enemy_encounter_button: CombatNode = %EnemyEncounterButton
var encounter: EnemySpawnEntry = enemy_encounter_button.spawn_zone.get_encounter()
print(encounter.enemies[0].name)
Expand Down Expand Up @@ -124,3 +133,4 @@ func generate(plane_len: int, node_count: int, path_count: int) -> MapData:
var data: MapData = MapData.new()
data.set_paths(paths, points)
return data

24 changes: 9 additions & 15 deletions godot/scenes/map/map.tscn
Original file line number Diff line number Diff line change
Expand Up @@ -15,32 +15,26 @@ grow_vertical = 2
size_flags_horizontal = 3
size_flags_vertical = 3
script = ExtResource("1_gg7d2")
combat_area = ExtResource("2_05utw")
map_node = ExtResource("3_q65q5")
map_scale = 18.425
distance_apart = 7.44
combat_area = ExtResource("2_05utw")
map_node = ExtResource("3_q65q5")

[node name="ColorRect" type="ColorRect" parent="."]
layout_mode = 2
offset_right = 1519.0
offset_bottom = 658.0
size_flags_horizontal = 3
size_flags_vertical = 3
color = Color(0.330086, 0.496596, 0.251939, 1)

[node name="ScrollContainer" type="ScrollContainer" parent="."]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
size_flags_horizontal = 3
size_flags_vertical = 3
vertical_scroll_mode = 2
color = Color(0.14902, 0.0509804, 0.203922, 1)

[node name="MapNodeContainer" type="Control" parent="ScrollContainer"]
[node name="MapNodeContainer" type="Control" parent="."]
unique_name_in_owner = true
layout_mode = 2
anchors_preset = 0
offset_left = 51.0
offset_top = 54.0
offset_right = 890.0
offset_bottom = 571.0
size_flags_horizontal = 3
size_flags_vertical = 3
10 changes: 7 additions & 3 deletions godot/scenes/map/nodes/map_node.gd
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
class_name MapNode
extends Control

signal pressed

const margin = 16

var children: Array = []
Expand All @@ -10,15 +12,17 @@ enum MAP_ICON {COMBAT, ELITE, MYSTERY, SHOP, BOSS, CAMPFIRE, CURRENT}

@export var button: Button

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

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

func enable() -> void:
button.disabled = false
button.pressed.connect(pressed.emit)

func _draw():
for child in children:
Expand Down
1 change: 1 addition & 0 deletions godot/scenes/map/nodes/map_node.tscn
Original file line number Diff line number Diff line change
Expand Up @@ -18,5 +18,6 @@ offset_left = -16.0
offset_top = -16.0
offset_right = 16.0
offset_bottom = 16.0
disabled = true
icon = ExtResource("2_amxkw")
expand_icon = true
1 change: 1 addition & 0 deletions godot/singletons/State.gd
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,5 @@ var player_deck : Array[Ingredient] = [load("res://scenes/ingredient_block/resou

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

0 comments on commit bb1c825

Please sign in to comment.