62 lines
2.3 KiB
GDScript
62 lines
2.3 KiB
GDScript
class_name ABGGuildDestinationSticker
|
|
extends Control
|
|
|
|
var kind := "contract"
|
|
|
|
|
|
func configure(value: String) -> Control:
|
|
kind = value
|
|
mouse_filter = Control.MOUSE_FILTER_IGNORE
|
|
queue_redraw()
|
|
return self
|
|
|
|
|
|
func _draw() -> void:
|
|
if kind == "market":
|
|
_draw_market()
|
|
else:
|
|
_draw_contract_board()
|
|
|
|
|
|
func _draw_contract_board() -> void:
|
|
var board := Rect2(Vector2(8.0, 7.0), Vector2(size.x - 16.0, size.y - 14.0))
|
|
draw_style_box(_style(Color("#8a6942"), Color("#d6b76c"), 2), board)
|
|
for index in range(3):
|
|
var note := Rect2(Vector2(14.0 + index * 11.0, 13.0 + (index % 2) * 4.0), Vector2(15.0, 18.0))
|
|
draw_rect(note, Color("#e8d8b5"), true)
|
|
draw_line(note.position + Vector2(3.0, 6.0), note.position + Vector2(12.0, 6.0), Color("#715c43"), 1.0)
|
|
draw_line(note.position + Vector2(3.0, 10.0), note.position + Vector2(10.0, 10.0), Color("#715c43"), 1.0)
|
|
draw_circle(note.position + Vector2(7.5, 2.5), 1.8, Color("#7fc3e7"))
|
|
draw_circle(Vector2(size.x - 14.0, size.y - 13.0), 5.0, Color("#b7584d"))
|
|
draw_circle(Vector2(size.x - 14.0, size.y - 13.0), 2.2, Color("#e8d8b5"))
|
|
|
|
|
|
func _draw_market() -> void:
|
|
var awning := PackedVector2Array([
|
|
Vector2(7.0, 18.0), Vector2(14.0, 7.0), Vector2(size.x - 10.0, 7.0),
|
|
Vector2(size.x - 4.0, 18.0),
|
|
])
|
|
draw_colored_polygon(awning, Color("#d6b76c"))
|
|
for index in range(4):
|
|
var x := 10.0 + index * 12.0
|
|
draw_colored_polygon(PackedVector2Array([
|
|
Vector2(x, 10.0), Vector2(x + 7.0, 10.0), Vector2(x + 5.0, 19.0), Vector2(x + 1.0, 19.0),
|
|
]), Color("#b7584d") if index % 2 == 0 else Color("#e8d8b5"))
|
|
draw_line(Vector2(10.0, 20.0), Vector2(10.0, size.y - 6.0), Color("#d6b76c"), 2.0)
|
|
draw_line(Vector2(size.x - 9.0, 20.0), Vector2(size.x - 9.0, size.y - 6.0), Color("#d6b76c"), 2.0)
|
|
draw_rect(Rect2(Vector2(8.0, size.y - 10.0), Vector2(size.x - 15.0, 4.0)), Color("#8a6942"), true)
|
|
draw_circle(Vector2(24.0, size.y - 17.0), 7.0, Color("#75a884"))
|
|
draw_rect(Rect2(Vector2(36.0, size.y - 25.0), Vector2(10.0, 15.0)), Color("#77aeca"), true)
|
|
|
|
|
|
func _style(fill: Color, border: Color, width: int) -> StyleBoxFlat:
|
|
var style := StyleBoxFlat.new()
|
|
style.bg_color = fill
|
|
style.border_color = border
|
|
style.set_border_width_all(width)
|
|
style.corner_radius_top_left = 2
|
|
style.corner_radius_top_right = 2
|
|
style.corner_radius_bottom_left = 2
|
|
style.corner_radius_bottom_right = 2
|
|
return style
|