Files
aetherbound-guild/runtime/entry/guild_destination_sticker.gd
T

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