Board hand-drawn style: cream board, recessed gray lanes with sockets, glossy balls
This commit is contained in:
+11
-7
@@ -18,14 +18,18 @@ var _tween: Tween
|
||||
|
||||
|
||||
func _draw() -> void:
|
||||
# ombra
|
||||
draw_circle(Vector2(0, 5), radius, Color(0, 0, 0, 0.3))
|
||||
# corpo
|
||||
# ombra a terra
|
||||
draw_circle(Vector2(0, 6), radius, Color(0, 0, 0, 0.25))
|
||||
# corpo base
|
||||
draw_circle(Vector2.ZERO, radius, ball_color)
|
||||
# bordo
|
||||
draw_arc(Vector2.ZERO, radius, 0.0, TAU, 48, Color(0, 0, 0, 0.45), 3.0)
|
||||
# riflesso
|
||||
draw_circle(Vector2(-radius * 0.28, -radius * 0.32), radius * 0.18, Color(1, 1, 1, 0.55))
|
||||
# ombreggiatura inferiore-destra (profondità 3D)
|
||||
draw_circle(Vector2(radius * 0.18, radius * 0.22), radius * 0.92, Color(0, 0, 0, 0.16))
|
||||
# luce superiore-sinistra
|
||||
draw_circle(Vector2(-radius * 0.18, -radius * 0.22), radius * 0.92, Color(1, 1, 1, 0.2))
|
||||
# bordo nero spesso (stile china)
|
||||
draw_arc(Vector2.ZERO, radius, 0.0, TAU, 48, Color(0.1, 0.1, 0.1, 0.9), 4.0)
|
||||
# riflesso speculare
|
||||
draw_circle(Vector2(-radius * 0.3, -radius * 0.34), radius * 0.16, Color(1, 1, 1, 0.85))
|
||||
|
||||
|
||||
func setup(cn: String, c: Color, home: Vector2, left: Vector2, r: float) -> void:
|
||||
|
||||
@@ -0,0 +1,43 @@
|
||||
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))
|
||||
+17
-31
@@ -22,11 +22,11 @@ const HIT_RADIUS := BALL_RADIUS * 1.4 # area di tocco/clic (maggiorata)
|
||||
# singleton Settings e modificabili dal menù di configurazione in-game.
|
||||
|
||||
const COLORS := {
|
||||
"rosso": Color("e74c3c"),
|
||||
"blu": Color("3498db"),
|
||||
"verde": Color("2ecc71"),
|
||||
"giallo": Color("f1c40f"),
|
||||
"viola": Color("9b59b6"),
|
||||
"rosso": Color("de6b7e"), # corallo
|
||||
"blu": Color("1852de"), # cobalto
|
||||
"verde": Color("88ce96"), # menta
|
||||
"giallo": Color("e8b84b"), # ambra
|
||||
"viola": Color("9b7ede"), # lavanda
|
||||
}
|
||||
|
||||
# Note pentatoniche (Do4 Re4 Mi4 Sol4 La4): qualsiasi pallina toccata
|
||||
@@ -67,7 +67,7 @@ var options_menu: CanvasLayer
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
_build_lanes()
|
||||
add_child(load("res://scripts/board.gd").new())
|
||||
_build_balls()
|
||||
_build_ui()
|
||||
_init_audio()
|
||||
@@ -121,23 +121,6 @@ func _toggle_options() -> void:
|
||||
|
||||
# ---------------------------------------------------------------- costruzione
|
||||
|
||||
func _build_lanes() -> void:
|
||||
for i in 5:
|
||||
var y := LANE_TOP + i * LANE_GAP
|
||||
var line := Line2D.new()
|
||||
line.add_point(Vector2(90, y))
|
||||
line.add_point(Vector2(VIEW.x - 90, y))
|
||||
line.width = 2
|
||||
line.default_color = Color(1, 1, 1, 0.12)
|
||||
add_child(line)
|
||||
var lbl := Label.new()
|
||||
lbl.text = COLORS.keys()[i].to_upper()
|
||||
lbl.position = Vector2(100, y - 44)
|
||||
lbl.add_theme_font_size_override("font_size", 16)
|
||||
lbl.add_theme_color_override("font_color", Color(1, 1, 1, 0.35))
|
||||
add_child(lbl)
|
||||
|
||||
|
||||
func _build_balls() -> void:
|
||||
var names := COLORS.keys()
|
||||
for i in names.size():
|
||||
@@ -156,13 +139,13 @@ func _build_ui() -> void:
|
||||
add_child(layer)
|
||||
|
||||
var bar := ColorRect.new()
|
||||
bar.color = Color(0.08, 0.09, 0.12, 0.95)
|
||||
bar.color = Color(0.97, 0.97, 0.97, 0.95)
|
||||
bar.position = Vector2.ZERO
|
||||
bar.size = Vector2(VIEW.x, 140)
|
||||
layer.add_child(bar)
|
||||
|
||||
var edge := ColorRect.new()
|
||||
edge.color = Color(1, 1, 1, 0.15)
|
||||
edge.color = Color(0, 0, 0, 0.15)
|
||||
edge.position = Vector2(0, 140)
|
||||
edge.size = Vector2(VIEW.x, 3)
|
||||
layer.add_child(edge)
|
||||
@@ -171,29 +154,32 @@ func _build_ui() -> void:
|
||||
tlabel.text = "BERSAGLIO"
|
||||
tlabel.position = Vector2(46, 26)
|
||||
tlabel.add_theme_font_size_override("font_size", 22)
|
||||
tlabel.add_theme_color_override("font_color", Color(1, 1, 1, 0.8))
|
||||
tlabel.add_theme_color_override("font_color", Color(0.1, 0.1, 0.1, 0.85))
|
||||
layer.add_child(tlabel)
|
||||
|
||||
target_dot = load("res://scripts/target_dot.gd").new()
|
||||
target_dot.position = Vector2(128, 84)
|
||||
target_dot.position = Vector2(128, 96)
|
||||
layer.add_child(target_dot)
|
||||
|
||||
help_label = Label.new()
|
||||
help_label.text = "Tocca la pallina corrispondente al bersaglio per lanciarla!"
|
||||
help_label.position = Vector2(210, 96)
|
||||
help_label.position = Vector2(VIEW.x / 2 - 300, 100)
|
||||
help_label.size = Vector2(600, 30)
|
||||
help_label.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER
|
||||
help_label.add_theme_font_size_override("font_size", 18)
|
||||
help_label.add_theme_color_override("font_color", Color(1, 1, 1, 0.6))
|
||||
help_label.add_theme_color_override("font_color", Color(0.1, 0.1, 0.1, 0.55))
|
||||
layer.add_child(help_label)
|
||||
|
||||
score_label = Label.new()
|
||||
score_label.position = Vector2(VIEW.x - 320, 22)
|
||||
score_label.add_theme_font_size_override("font_size", 34)
|
||||
score_label.add_theme_color_override("font_color", Color(0.1, 0.1, 0.1, 0.9))
|
||||
layer.add_child(score_label)
|
||||
|
||||
combo_label = Label.new()
|
||||
combo_label.position = Vector2(VIEW.x - 320, 68)
|
||||
combo_label.add_theme_font_size_override("font_size", 20)
|
||||
combo_label.add_theme_color_override("font_color", Color(1, 1, 1, 0.65))
|
||||
combo_label.add_theme_color_override("font_color", Color(0.1, 0.1, 0.1, 0.6))
|
||||
layer.add_child(combo_label)
|
||||
|
||||
# pulsante Opzioni
|
||||
@@ -210,7 +196,7 @@ func _build_ui() -> void:
|
||||
milestone_label.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER
|
||||
milestone_label.vertical_alignment = VERTICAL_ALIGNMENT_CENTER
|
||||
milestone_label.add_theme_font_size_override("font_size", 56)
|
||||
milestone_label.add_theme_color_override("font_color", Color(1.0, 0.9, 0.4))
|
||||
milestone_label.add_theme_color_override("font_color", Color(0.8, 0.55, 0.1))
|
||||
milestone_label.visible = false
|
||||
layer.add_child(milestone_label)
|
||||
|
||||
|
||||
@@ -6,9 +6,12 @@ var dot_color := Color.WHITE
|
||||
|
||||
|
||||
func _draw() -> void:
|
||||
draw_circle(Vector2(0, 4), 36.0, Color(0, 0, 0, 0.3))
|
||||
draw_circle(Vector2(0, 4), 36.0, Color(0, 0, 0, 0.25))
|
||||
draw_circle(Vector2.ZERO, 36.0, dot_color)
|
||||
draw_arc(Vector2.ZERO, 36.0, 0.0, TAU, 40, Color(0, 0, 0, 0.4), 3.0)
|
||||
draw_circle(Vector2(6.5, 8.0), 33.0, Color(0, 0, 0, 0.16))
|
||||
draw_circle(Vector2(-6.5, -8.0), 33.0, Color(1, 1, 1, 0.2))
|
||||
draw_arc(Vector2.ZERO, 36.0, 0.0, TAU, 40, Color(0.1, 0.1, 0.1, 0.9), 4.0)
|
||||
draw_circle(Vector2(-11.0, -12.0), 6.0, Color(1, 1, 1, 0.85))
|
||||
|
||||
|
||||
func set_color(c: Color) -> void:
|
||||
|
||||
Reference in New Issue
Block a user