Files
autgame/scripts/board.gd
T

44 lines
1.5 KiB
GDScript

extends Node2D
## Plancia in stile hand-drawn/sketch: sfondo chiaro, 5 corsie grigie con
## alloggiamenti circolari alle estremità (come il board di riferimento).
const VIEW := Vector2(1280, 720)
const LANE_TOP := 210.0
const LANE_GAP := 98.0
const HOME_X := 1130.0
const LEFT_X := 300.0
const CHANNEL_H := 44.0
const SOCKET_R := 46.0
const BG := Color("#f7f5f0") # tono carta
const FILL := Color("#b0b0b0")
const OUTLINE := Color(0.1, 0.1, 0.1, 0.85)
func _draw() -> void:
# sfondo plancia (tono carta)
draw_rect(Rect2(Vector2.ZERO, VIEW), BG)
# cornice esterna
draw_rect(Rect2(Vector2.ZERO, VIEW), Color(0, 0, 0, 0.12), false, 3.0)
for i in 5:
_draw_lane(LANE_TOP + i * LANE_GAP)
func _draw_lane(y: float) -> void:
# canale centrale
var ch := Rect2(LEFT_X, y - CHANNEL_H / 2.0, HOME_X - LEFT_X, CHANNEL_H)
draw_rect(ch, FILL)
draw_rect(ch, OUTLINE, false, 3.0)
# ombra interna in alto (scanalatura incassata)
draw_rect(Rect2(LEFT_X + 3, y - CHANNEL_H / 2.0 + 3.0, HOME_X - LEFT_X - 6, 3.0), Color(0, 0, 0, 0.18))
# luce interna in basso
draw_rect(Rect2(LEFT_X + 3, y + CHANNEL_H / 2.0 - 6.0, HOME_X - LEFT_X - 6, 3.0), Color(1, 1, 1, 0.25))
# alloggiamenti circolari alle estremità (incassati)
for cx in [LEFT_X, HOME_X]:
var c := Vector2(cx, y)
draw_circle(c, SOCKET_R, FILL)
draw_arc(c, SOCKET_R, 0.0, TAU, 48, OUTLINE, 3.0)
# cavità: ombra in basso, luce in alto
draw_circle(c + Vector2(0, 5), SOCKET_R - 7.0, Color(0, 0, 0, 0.12))
draw_circle(c + Vector2(0, -5), SOCKET_R - 7.0, Color(1, 1, 1, 0.18))