Skip to content

Commit be47db7

Browse files
committed
Light tweaks to GaeaGraph (added _get_unique_resources method), added duplicate_test (just a copy of generate_test for now).
1 parent 63152f8 commit be47db7

File tree

3 files changed

+42
-8
lines changed

3 files changed

+42
-8
lines changed

addons/gaea/resources/gaea_graph.gd

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -394,6 +394,13 @@ func _setup_local_to_scene() -> void:
394394
GaeaGraphMigration.migrate(self)
395395

396396
_resources.clear()
397+
var uniques = _get_unique_resources()
398+
for id in uniques.keys():
399+
_resources.set(id, uniques[id])
400+
401+
402+
func _get_unique_resources() -> Dictionary[Variant, GaeaNodeResource]:
403+
var uniques:Dictionary[Variant, GaeaNodeResource] = {}
397404
for id in _node_data.keys():
398405
var base_uid: String = get_node_data(id).get(&"uid", "")
399406
if base_uid.is_empty():
@@ -402,19 +409,16 @@ func _setup_local_to_scene() -> void:
402409
var resource: GaeaNodeResource = load(base_uid).new()
403410
if not resource is GaeaNodeResource:
404411
push_error("Something went wrong, the resource at %s is not a GaeaNodeResource" % base_uid)
405-
return
412+
return uniques
406413
resource._load_save_data(data)
407-
_resources.set(id, resource)
414+
uniques.set(id, resource)
415+
return uniques
408416

409417

410-
func _duplicate(subresources:bool = false) -> Resource:
418+
func _duplicate(_subresources:bool = false) -> Resource:
411419
var new_graph = GaeaGraph.new()
412-
var sub_map:Dictionary[GaeaNodeResource, GaeaNodeResource] = {}
413-
for sub in resources:
414-
var new_sub = sub.duplicate(true)
415-
sub_map[sub] = new_sub
416-
new_graph.resources.append(new_sub)
417420

421+
new_graph.resources = _get_unique_resources()
418422
new_graph.resource_uids = resource_uids.duplicate(true)
419423
new_graph.connections = connections.duplicate(true)
420424
new_graph.node_data = node_data.duplicate(true)
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
extends GdUnitTestSuite
2+
3+
4+
var first_grid: GaeaGrid
5+
6+
7+
8+
func test_has_generated() -> void:
9+
var scene = load("uid://di7u4f3idjdd").instantiate()
10+
var _runner := scene_runner(scene)
11+
await scene.test_generation()
12+
first_grid = scene.last_grid
13+
assert_dict(first_grid._grid).is_not_empty()
14+
15+
16+
func test_generations_match() -> void:
17+
var scene = load("uid://di7u4f3idjdd").instantiate()
18+
var _runner := scene_runner(scene)
19+
await scene.test_generation()
20+
var second_grid: GaeaGrid = scene.last_grid
21+
assert_bool(first_grid._grid.recursive_equal(second_grid._grid, 1)).is_true()
22+
23+
24+
func test_generations_dont_match() -> void:
25+
var scene = load("uid://di7u4f3idjdd").instantiate()
26+
var _runner := scene_runner(scene)
27+
await scene.test_generation(1)
28+
var second_grid: GaeaGrid = scene.last_grid
29+
assert_bool(first_grid._grid.recursive_equal(second_grid._grid, 1)).is_false()
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
uid://co0ygrly1vlwp

0 commit comments

Comments
 (0)