Skip to content

Commit 153735d

Browse files
committed
Added cube_spiral demo and rework method list.
1 parent c5644a9 commit 153735d

7 files changed

Lines changed: 112 additions & 22 deletions

File tree

.changeset/quick-beers-beg.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"hexagon-tile-map-layer": minor
3+
---
4+
5+
Added `cube_spiral` demo and rework method list.

addons/hexagon_tilemaplayer/demo/demo_methods.gd

Lines changed: 23 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -7,44 +7,50 @@ const CubeLinedraw = preload("uid://sh0b67wxk8us")
77
@onready var demo: DemoManager = %DemoManager
88
var current_method: Node
99

10-
const methods: Dictionary[String, GDScript] = {
10+
const neighbors: Dictionary[String, GDScript] = {
1111
"cube_neighbor": preload("uid://cykasr1p4xfed"),
1212
"cube_neighbors": preload("uid://x00gcujhimxg"),
1313
"cube_corner_neighbors": preload("uid://cau6opgjwiksw"),
1414
"cube_direction": preload("uid://cwjv67kxuu1li"),
15+
}
16+
const transform: Dictionary[String, GDScript] = {
1517
"cube_distance": preload("uid://croybbcw88our"),
16-
"cube_linedraw": preload("uid://sh0b67wxk8us"),
17-
"cube_range": preload("uid://b6cnoelqbw8uc"),
18-
"cube_intersect_ranges": preload("uid://dkugmb7vsjusc"),
1918
"cube_rotate": preload("uid://d4ndsqop2jy6n"),
2019
"cube_rotate_from": preload("uid://dnxp71qf1w3vg"),
2120
"cube_reflect": preload("uid://but5uj3o3qpac"),
2221
"cube_reflect_from": preload("uid://41shw4r5cyc0"),
22+
}
23+
const shapes: Dictionary[String, GDScript] = {
24+
"cube_linedraw": preload("uid://sh0b67wxk8us"),
2325
"cube_rect": preload("uid://y2lutl2c46b7"),
2426
"cube_rect_corners": preload("uid://bnw55cavqioss"),
2527
"cube_ring": preload("uid://cbsxeto3wkwua"),
28+
"cube_spiral": preload("uid://b72r41cv74ijm"),
29+
"cube_range": preload("uid://b6cnoelqbw8uc"),
30+
"cube_intersect_ranges": preload("uid://dkugmb7vsjusc"),
2631
}
2732

33+
const other_methods: Dictionary[String, GDScript] = {}
34+
2835

2936
func _ready() -> void:
3037
var root = create_item()
3138
root.set_text(0, "Methods")
32-
var default = "last"
33-
#hide_root = true
39+
hide_root = true
3440

35-
for method_name in methods.keys():
36-
var child = create_item(root)
37-
child.set_text(0, method_name)
38-
child.set_metadata(0, methods[method_name])
41+
add_methods(root, "Neighbors", neighbors)
42+
add_methods(root, "Transform", transform)
43+
add_methods(root, "Shapes", shapes)
3944

40-
if default is String and method_name == default:
41-
default = child
4245

43-
if default is String:
44-
var childs = root.get_children()
45-
childs.pop_back().select(0)
46-
else:
47-
default.select(0)
46+
func add_methods(root: TreeItem, label: String, methods: Dictionary[String, GDScript]):
47+
if methods.size() > 0:
48+
var methods_root = create_item(root)
49+
methods_root.set_text(0, label)
50+
for method_name in methods.keys():
51+
var child = create_item(methods_root)
52+
child.set_text(0, method_name)
53+
child.set_metadata(0, methods[method_name])
4854

4955

5056
func _on_item_selected() -> void:

addons/hexagon_tilemaplayer/demo/methods/cube_rect.gd

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,9 +56,9 @@ func _on_tile_changed() -> void:
5656
label.append_text("\t%s" % var_to_str(demo.tile_map.hovering_tile))
5757
label.pop()
5858
label.append_text(",\n")
59-
59+
6060
var axis: Vector3i.Axis
61-
61+
6262
if demo.tile_map.tile_set.tile_offset_axis == TileSet.TILE_OFFSET_AXIS_HORIZONTAL:
6363
axis = Vector3i.Axis.AXIS_Y
6464
label.append_text("\t[color=41F9BE]Vector3i[/color][color=BCE0FF].Axis.AXIS_Y[/color]\n")

addons/hexagon_tilemaplayer/demo/methods/cube_rect_corners.gd

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,9 +56,9 @@ func _on_tile_changed() -> void:
5656
label.append_text("\t%s" % var_to_str(demo.tile_map.hovering_tile))
5757
label.pop()
5858
label.append_text(",\n")
59-
59+
6060
var axis: Vector3i.Axis
61-
61+
6262
if demo.tile_map.tile_set.tile_offset_axis == TileSet.TILE_OFFSET_AXIS_HORIZONTAL:
6363
axis = Vector3i.Axis.AXIS_Y
6464
label.append_text("\t[color=41F9BE]Vector3i[/color][color=BCE0FF].Axis.AXIS_Y[/color]\n")

addons/hexagon_tilemaplayer/demo/methods/cube_ring.gd

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ func _on_tile_changed() -> void:
4848

4949
var distance = demo.tile_map.cube_distance(Vector3i.ZERO, demo.tile_map.hovering_tile)
5050
var points = demo.tile_map.cube_ring(Vector3i.ZERO, distance)
51-
51+
5252
label.push_color(Color.from_string("CBCDD0", Color.WHITE))
5353
label.append_text("[color=C45C6D]var[/color] rect = [color=57B2FF]cube_ring[/color](\n")
5454
label.push_color(Color.WHITE)
Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
extends Node
2+
3+
const DemoManager = preload("uid://c5t8k8u70hsgr")
4+
const DemoCamera = preload("uid://t5kjk00fsm7k")
5+
6+
var demo: DemoManager
7+
var line: Line2D
8+
9+
10+
func _init(_demo: DemoManager) -> void:
11+
demo = _demo
12+
line = Line2D.new()
13+
line.width = 10.0
14+
line.default_color = Color.BLUE
15+
line.z_index = 100
16+
demo.tile_map.add_child(line)
17+
18+
19+
func _enter_tree() -> void:
20+
demo.tile_map.hovering_changed.connect(_on_tile_changed)
21+
tree_exiting.connect(
22+
demo.tile_map.hovering_changed.disconnect.bind(_on_tile_changed), CONNECT_ONE_SHOT
23+
)
24+
25+
26+
func _exit_tree() -> void:
27+
line.queue_free()
28+
29+
30+
func _ready() -> void:
31+
demo.camera_2d.focus_tile(demo.tile_map.cube_to_local(Vector3i.ZERO))
32+
33+
if demo.tile_map.tile_set.tile_offset_axis == TileSet.TILE_OFFSET_AXIS_HORIZONTAL:
34+
demo.tile_map.hovering_tile = Vector3i(6, -3, -3)
35+
else:
36+
demo.tile_map.hovering_tile = Vector3i(5, -6, 1)
37+
38+
_on_tile_changed.call()
39+
40+
41+
func _on_tile_changed() -> void:
42+
if demo.tile_map.hovering_tile == null:
43+
return
44+
45+
var label = demo.sample_code
46+
label.clear()
47+
line.clear_points()
48+
49+
var distance = demo.tile_map.cube_distance(Vector3i.ZERO, demo.tile_map.hovering_tile)
50+
var points = demo.tile_map.cube_spiral(Vector3i.ZERO, distance)
51+
52+
label.push_color(Color.from_string("CBCDD0", Color.WHITE))
53+
label.append_text("[color=C45C6D]var[/color] rect = [color=57B2FF]cube_spiral[/color](\n")
54+
label.push_color(Color.WHITE)
55+
label.append_text("\tVector3i.ZERO")
56+
label.pop()
57+
label.append_text(",\n")
58+
label.push_color(demo.tile_map.SECONDARY_COLOR)
59+
label.append_text("\t%s\n" % distance)
60+
label.pop()
61+
label.append_text(")\n")
62+
label.append_text("[color=57B2FF]print[/color](rect.[color=57B2FF]size[/color]())")
63+
label.append_text("[color=gray] # %s[/color]\n" % points.size())
64+
label.append_text("[color=57B2FF]print[/color](rect)\n")
65+
66+
var tiles = demo.tile_map.show_range_with_gradient_color(points)
67+
68+
var point_count = points.size()
69+
for index in point_count:
70+
var tile = tiles[index]
71+
line.add_point(tile.position)
72+
label.push_color(tile.self_modulate)
73+
label.append_text("# %s" % var_to_str(points[index]))
74+
label.newline()
75+
label.pop()
76+
77+
label.pop_all()
78+
demo.tile_map.show_debug_tiles(point_count - 1)
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
uid://b72r41cv74ijm

0 commit comments

Comments
 (0)