@@ -14,67 +14,103 @@ onready var oGridDataCheckBox4 = Nodelist.list["oGridDataCheckBox4"]
14
14
onready var oGridDataCheckBox5 = Nodelist .list ["oGridDataCheckBox5" ]
15
15
onready var oGridDataCheckBox6 = Nodelist .list ["oGridDataCheckBox6" ]
16
16
onready var oGridDataCheckBox7 = Nodelist .list ["oGridDataCheckBox7" ]
17
+ onready var oGridDataWindow = Nodelist .list ["oGridDataWindow" ]
18
+ onready var oCamera2D = Nodelist .list ["oCamera2D" ]
17
19
18
20
onready var tilemap_data = {
19
- "Wibble" : {
20
- "extension" : ".wib" ,
21
- "node" : oDataWibble
22
- },
23
- "Liquid" : {
24
- "extension" : ".wlb" ,
25
- "node" : oDataLiquid
26
- },
27
- "Slab" : {
28
- "extension" : ".slb" ,
29
- "node" : oDataSlab
30
- },
31
- "Ownership" : {
32
- "extension" : ".own" ,
33
- "node" : oDataOwnership
34
- },
35
- "ColumnPositions" : {
36
- "extension" : ".dat" ,
37
- "node" : oDataClmPos
38
- },
39
- "CustomSlabs" : {
40
- "extension" : ".une" ,
41
- "node" : oDataCustomSlab
42
- },
43
- "Style" : {
44
- "extension" : ".slx" ,
45
- "node" : oDataSlx
46
- }
21
+ "Wibble" : {"extension" : ".wib" , "grid_type" : "SUBTILE" , "node" : oDataWibble },
22
+ "Liquid" : {"extension" : ".wlb" , "grid_type" : "TILE" , "node" : oDataLiquid },
23
+ "Slab" : {"extension" : ".slb" , "grid_type" : "TILE" , "node" : oDataSlab },
24
+ "Ownership" : {"extension" : ".own" , "grid_type" : "TILE" , "node" : oDataOwnership },
25
+ "Column Positions" : {"extension" : ".dat" , "grid_type" : "SUBTILE" , "node" : oDataClmPos },
26
+ "Custom Slabs" : {"extension" : ".une" , "grid_type" : "TILE" , "node" : oDataCustomSlab },
27
+ "Style" : {"extension" : ".slx" , "grid_type" : "TILE" , "node" : oDataSlx }
47
28
}
48
29
49
- var tileDrawDist = 96 # Example value, adjust as needed
30
+ var currentlySelected = ""
31
+
50
32
var dynamic_font = DynamicFont .new () # Initialize DynamicFont
51
33
52
34
func _ready ():
35
+ set_process (false )
53
36
dynamic_font .font_data = preload ("res://Theme/ClassicConsole.ttf" )
54
37
dynamic_font .size = 36
55
38
56
- oGridDataCheckBox1 .connect ("pressed" , self , "_on_checkbox" , ["Slab" ])
57
- oGridDataCheckBox2 .connect ("pressed" , self , "_on_checkbox" , ["Ownership" ])
58
- oGridDataCheckBox3 .connect ("pressed" , self , "_on_checkbox" , ["Column Positions" ])
59
- oGridDataCheckBox4 .connect ("pressed" , self , "_on_checkbox" , ["Wibble" ])
60
- oGridDataCheckBox5 .connect ("pressed" , self , "_on_checkbox" , ["Liquid" ])
61
- oGridDataCheckBox6 .connect ("pressed" , self , "_on_checkbox" , ["Style" ])
62
- oGridDataCheckBox7 .connect ("pressed" , self , "_on_checkbox" , ["Custom Slabs" ])
39
+ oGridDataCheckBox1 .connect ("pressed" , self , "_on_checkbox" , [oGridDataCheckBox1 ,"Slab" ])
40
+ oGridDataCheckBox2 .connect ("pressed" , self , "_on_checkbox" , [oGridDataCheckBox2 ,"Ownership" ])
41
+ oGridDataCheckBox3 .connect ("pressed" , self , "_on_checkbox" , [oGridDataCheckBox3 ,"Column Positions" ])
42
+ oGridDataCheckBox4 .connect ("pressed" , self , "_on_checkbox" , [oGridDataCheckBox4 ,"Wibble" ])
43
+ oGridDataCheckBox5 .connect ("pressed" , self , "_on_checkbox" , [oGridDataCheckBox5 ,"Liquid" ])
44
+ oGridDataCheckBox6 .connect ("pressed" , self , "_on_checkbox" , [oGridDataCheckBox6 ,"Style" ])
45
+ oGridDataCheckBox7 .connect ("pressed" , self , "_on_checkbox" , [oGridDataCheckBox7 ,"Custom Slabs" ])
46
+
47
+ func _on_checkbox (checkboxNodeThatWasPressed , pressedString ):
48
+ for i in [oGridDataCheckBox1 , oGridDataCheckBox2 , oGridDataCheckBox3 , oGridDataCheckBox4 , oGridDataCheckBox5 , oGridDataCheckBox6 , oGridDataCheckBox7 ]:
49
+ i .add_color_override ("font_color" , Color ("40ffffff" ))
50
+ checkboxNodeThatWasPressed .add_color_override ("font_color" , Color ("40ffffff" ))
51
+
52
+ currentlySelected = pressedString
53
+
54
+
55
+ func _on_GridDataWindow_visibility_changed ():
56
+ if is_instance_valid (oGridDataWindow ) == false : return
57
+ if oGridDataWindow .visible == true :
58
+ set_process (true )
59
+ yield (get_tree (),'idle_frame' )
60
+ oGridDataWindow .rect_position .x = 0
61
+ else :
62
+ update ()
63
+ set_process (false )
63
64
64
- func _on_checkbox (aaa ):
65
- print (aaa )
65
+ var frame_counter = 0 # Initialize a frame counter
66
+
67
+ func _process (delta ):
68
+ frame_counter += 1 # Increment the frame counter each frame
69
+ if frame_counter >= 30 : # Check if 30 frames have passed
70
+ update () # Call the update function to redraw the screen
71
+ frame_counter = 0 # Reset the frame counter
66
72
67
73
func _draw ():
68
- return
69
- if is_instance_valid (oDataWibble ) == false : return
74
+ if currentlySelected == "" or oGridDataWindow .visible == false :
75
+ return
76
+
77
+ var node = tilemap_data [currentlySelected ]["node" ]
78
+ var grid_type = tilemap_data [currentlySelected ]["grid_type" ]
79
+ var value
80
+ var pos
81
+ var factor
82
+ if grid_type == "TILE" :
83
+ factor = 1
84
+ else :
85
+ factor = 3
86
+ var tileDrawDist = 96 / factor
87
+ if currentlySelected == "Column Positions" :
88
+ dynamic_font .size = 18
89
+ else :
90
+ dynamic_font .size = 36
91
+
92
+ var half_tileDrawDist = tileDrawDist * 0.5
93
+ if currentlySelected == "Style" : oDataSlx .slxImgData .lock ()
70
94
71
- var node = tilemap_data ["Slab" ]["node" ]
95
+ var offsetTilePos = Vector2 (half_tileDrawDist , half_tileDrawDist )
96
+ if currentlySelected == "Wibble" :
97
+ offsetTilePos = Vector2 (0 ,0 )
72
98
73
- for x in range (M .xSize ):
74
- for y in range (M .ySize ):
75
- var value = node .get_cell (x ,y )
99
+ var viewport_size = get_viewport_rect ().size
100
+ var screen_start = oCamera2D .get_camera_screen_center () - (viewport_size * 0.5 ) * oCamera2D .zoom
101
+ var screen_end = oCamera2D .get_camera_screen_center () + (viewport_size * 0.5 ) * oCamera2D .zoom
102
+
103
+ for x in range (max (0 , floor (screen_start .x / tileDrawDist )), min (M .xSize * factor , ceil (screen_end .x / tileDrawDist ))):
104
+ for y in range (max (0 , floor (screen_start .y / tileDrawDist )), min (M .ySize * factor , ceil (screen_end .y / tileDrawDist ))):
105
+ if currentlySelected == "Style" :
106
+ value = oDataSlx .slxImgData .get_pixel (x ,y ).r8
107
+ else :
108
+ value = node .get_cell (x ,y )
76
109
var string = str (value )
77
- var pos = Vector2 (x * tileDrawDist , y * tileDrawDist ) + Vector2 (tileDrawDist * 0.5 , tileDrawDist * 0.5 )
78
- pos .x -= dynamic_font .get_string_size (string ).x * 0.5 # Center string
79
- pos .y += dynamic_font .get_string_size (string ).y * 0.25
110
+
111
+ pos = Vector2 (x * tileDrawDist , y * tileDrawDist ) + offsetTilePos
112
+ var stringSize = dynamic_font .get_string_size (string )
113
+ pos += Vector2 (- stringSize .x * 0.5 , stringSize .y * 0.25 ) # Center string
80
114
draw_string (dynamic_font , pos , string , Color (1 , 1 , 1 , 1 ))
115
+
116
+ if currentlySelected == "Style" : oDataSlx .slxImgData .unlock ()
0 commit comments