Checkpoint Player Menu visual revisions
This commit is contained in:
parent
bcffe2013d
commit
5af84eaf47
29 changed files with 3236 additions and 628 deletions
64
ui/components/bubble_menu/notepad_ink_outline.gd
Normal file
64
ui/components/bubble_menu/notepad_ink_outline.gd
Normal file
|
|
@ -0,0 +1,64 @@
|
|||
class_name NotepadInkOutline
|
||||
extends Control
|
||||
|
||||
@export var ink_color := Color(0.20, 0.17, 0.13, 0.9)
|
||||
@export_range(0.5, 6.0, 0.1) var stroke_width: float = 2.0
|
||||
@export_range(0.0, 16.0, 0.5) var padding: float = 3.0
|
||||
@export_range(0, 1000000, 1) var shape_seed: int = 17
|
||||
|
||||
var _mark_strength: float = 0.0
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
mouse_filter = Control.MOUSE_FILTER_IGNORE
|
||||
|
||||
|
||||
func set_mark_strength(strength: float) -> void:
|
||||
_mark_strength = clampf(strength, 0.0, 1.0)
|
||||
visible = _mark_strength > 0.001
|
||||
queue_redraw()
|
||||
|
||||
|
||||
func _draw() -> void:
|
||||
if _mark_strength <= 0.001:
|
||||
return
|
||||
var center: Vector2 = size * 0.5
|
||||
var radius := Vector2(
|
||||
maxf(size.x * 0.5 - padding, 1.0),
|
||||
maxf(size.y * 0.5 - padding, 1.0),
|
||||
)
|
||||
var primary := _build_rough_loop(center, radius, 0)
|
||||
var secondary := _build_rough_loop(
|
||||
center + Vector2(0.7, -0.45),
|
||||
radius - Vector2(1.2, 0.8),
|
||||
41,
|
||||
)
|
||||
var primary_color: Color = ink_color
|
||||
primary_color.a *= _mark_strength
|
||||
var secondary_color: Color = ink_color
|
||||
secondary_color.a *= _mark_strength * 0.36
|
||||
draw_polyline(primary, primary_color, stroke_width, true)
|
||||
draw_polyline(secondary, secondary_color, maxf(stroke_width * 0.62, 0.8), true)
|
||||
|
||||
|
||||
func _build_rough_loop(
|
||||
center: Vector2,
|
||||
radius: Vector2,
|
||||
seed_offset: int,
|
||||
) -> PackedVector2Array:
|
||||
const POINT_COUNT: int = 26
|
||||
var points := PackedVector2Array()
|
||||
for index: int in POINT_COUNT:
|
||||
var angle: float = TAU * float(index) / float(POINT_COUNT)
|
||||
var wobble: float = (
|
||||
sin(float(shape_seed + seed_offset) * 0.73 + float(index) * 2.17)
|
||||
+ sin(float(shape_seed + seed_offset) * 0.31 + float(index) * 4.03)
|
||||
* 0.45
|
||||
)
|
||||
var radial_scale: float = 1.0 + wobble * 0.018
|
||||
points.append(
|
||||
center
|
||||
+ Vector2(cos(angle), sin(angle)) * radius * radial_scale
|
||||
)
|
||||
points.append(points[0])
|
||||
return points
|
||||
Loading…
Add table
Add a link
Reference in a new issue