48 lines
1.1 KiB
GDScript
48 lines
1.1 KiB
GDScript
@tool
|
|
|
|
extends Node2D
|
|
class_name TileRenderer
|
|
|
|
@export var base_color: Color = Color.SPRING_GREEN
|
|
@export var top_color: Color = Color.WEB_GREEN
|
|
|
|
var drawbox: Rect2
|
|
var drawbox_top: Rect2
|
|
var tile_transform: TileTransform
|
|
var grid: Grid
|
|
var text_pos: Vector2
|
|
|
|
func _ready():
|
|
tile_transform = Util.find_parent_type(self, TileTransform)
|
|
grid = Util.find_parent_type(self, Grid)
|
|
|
|
func _process(_delta):
|
|
queue_redraw()
|
|
|
|
func _draw():
|
|
_update_drawbox()
|
|
draw_rect(drawbox, base_color, true)
|
|
draw_rect(drawbox_top, top_color, true)
|
|
draw_string(ThemeDB.fallback_font, text_pos, "House", HORIZONTAL_ALIGNMENT_CENTER, drawbox_top.size.x, 12)
|
|
|
|
|
|
func _update_drawbox():
|
|
|
|
var size = self.tile_transform.size * (self.grid.cell_size if self.grid != null else 100)
|
|
var box = Rect2(size / -2.0, size)
|
|
|
|
if not is_node_ready():
|
|
return
|
|
|
|
self.drawbox = box
|
|
self.drawbox_top = Rect2(
|
|
drawbox.position.x + 2.0,
|
|
drawbox.position.y + drawbox.size.y - 18.0,
|
|
drawbox.size.x - 4.0,
|
|
16.0
|
|
)
|
|
# drawbox_top.size.y = 16
|
|
text_pos = drawbox_top.position
|
|
text_pos.y += drawbox_top.size.y - 3
|
|
|