Compare commits

..

No commits in common. "52c15ebd8bcd5dbe4651daf906f9a355effc22a3" and "99ee97c0c1aa341d89b45d996061d0494895b380" have entirely different histories.

4 changed files with 25 additions and 33 deletions

View file

@ -3,17 +3,12 @@ shader_type spatial;
uniform vec2 dims; uniform vec2 dims;
uniform vec3 light_color : source_color; uniform vec3 light_color : source_color;
uniform vec3 dark_color : source_color; uniform vec3 dark_color : source_color;
// uniform float line_width : hint_range(0.0, 0.1, 0.001);
uniform sampler2D NOISE_PATTERN;
void fragment() { void fragment() {
vec2 p = UV*dims; vec2 p = UV*dims/2.0;
float noise = (texture(NOISE_PATTERN, p).x-0.5)/10.0; if (round(mod(p.x,1)) == round(mod(p.y,1))) {
ivec2 pos = ivec2(int(p.x), int(p.y));
vec2 sub = mod(p, 1.0);
if (pos.x % 2 == pos.y % 2) {
ALBEDO = dark_color;
} else {
ALBEDO = light_color; ALBEDO = light_color;
} else {
ALBEDO = dark_color;
} }
} }

View file

@ -7,9 +7,6 @@ extends Node3D
@onready var camera: Camera3D = $Camera @onready var camera: Camera3D = $Camera
# TODO: wall that player cannot go through but balls can
# (important)
var hist := UndoRedo.new() var hist := UndoRedo.new()
var board: Board var board: Board
var player: Piece var player: Piece
@ -26,7 +23,7 @@ var levels: Array[PackedScene] = [
var time := 0: var time := 0:
set(new_time): set(new_time):
var tween := get_tree().create_tween() var tween := get_tree().create_tween()
var anim_time = 1.0 if slowmo() else 0.1 var anim_time = 1 if slowmo() else 0.1
tween.tween_property($Sun, "rotation_degrees:y", -20*new_time, anim_time) tween.tween_property($Sun, "rotation_degrees:y", -20*new_time, anim_time)
time = new_time time = new_time
var advancing := false var advancing := false

View file

@ -1,4 +1,4 @@
[gd_scene load_steps=13 format=3 uid="uid://lrk2whqxl0w0"] [gd_scene load_steps=11 format=3 uid="uid://lrk2whqxl0w0"]
[ext_resource type="Script" uid="uid://c707s0tgd88pg" path="res://main.gd" id="1_ig7tw"] [ext_resource type="Script" uid="uid://c707s0tgd88pg" path="res://main.gd" id="1_ig7tw"]
[ext_resource type="Texture2D" uid="uid://crahyipmcudoy" path="res://ui/undo.png" id="3_lquwl"] [ext_resource type="Texture2D" uid="uid://crahyipmcudoy" path="res://ui/undo.png" id="3_lquwl"]
@ -20,20 +20,12 @@ background_mode = 2
sky = SubResource("Sky_lquwl") sky = SubResource("Sky_lquwl")
tonemap_mode = 2 tonemap_mode = 2
[sub_resource type="FastNoiseLite" id="FastNoiseLite_lquwl"]
noise_type = 0
frequency = 0.0102
[sub_resource type="NoiseTexture2D" id="NoiseTexture2D_7mycd"]
noise = SubResource("FastNoiseLite_lquwl")
[sub_resource type="ShaderMaterial" id="ShaderMaterial_lquwl"] [sub_resource type="ShaderMaterial" id="ShaderMaterial_lquwl"]
render_priority = 0 render_priority = 0
shader = ExtResource("5_lquwl") shader = ExtResource("5_lquwl")
shader_parameter/dims = Vector2(64, 64) shader_parameter/dims = Vector2(64, 64)
shader_parameter/light_color = Color(0.321254, 0.470959, 0.199863, 1) shader_parameter/light_color = Color(0.321254, 0.470959, 0.199863, 1)
shader_parameter/dark_color = Color(0.308333, 0.451677, 0.191453, 1) shader_parameter/dark_color = Color(0.308333, 0.451677, 0.191453, 1)
shader_parameter/NOISE_PATTERN = SubResource("NoiseTexture2D_7mycd")
[sub_resource type="PlaneMesh" id="PlaneMesh_1bvp3"] [sub_resource type="PlaneMesh" id="PlaneMesh_1bvp3"]
material = SubResource("ShaderMaterial_lquwl") material = SubResource("ShaderMaterial_lquwl")

View file

@ -47,7 +47,6 @@ func lpos_of_pos(pos: Vector3) -> Vector2i:
## logical velocity ## logical velocity
@export var lvel := Vector2i.ZERO @export var lvel := Vector2i.ZERO
var lvel_displayed := lvel
@export var type: Piece.Type @export var type: Piece.Type
@ -61,7 +60,7 @@ func do_step(board: Board):
# ball being collided *with* gets the remainder of the momentum # ball being collided *with* gets the remainder of the momentum
# EMERGENT COMPLEXITY!??!? # EMERGENT COMPLEXITY!??!?
if board.solid_at(new_pos): if board.solid_at(new_pos):
do_bump(move, lvel).call() do_bump(move).call()
var ball_here := board.type_at(new_pos, Piece.Type.Ball) var ball_here := board.type_at(new_pos, Piece.Type.Ball)
if ball_here: if ball_here:
var rem := lvel % 2 var rem := lvel % 2
@ -74,7 +73,6 @@ func do_step(board: Board):
var on_ice := !!board.type_at(lpos, Piece.Type.FloorIce) var on_ice := !!board.type_at(lpos, Piece.Type.FloorIce)
if not on_ice: if not on_ice:
lvel -= move lvel -= move
lvel_displayed = lvel
tween_to_target() tween_to_target()
func undo_step() -> Callable: func undo_step() -> Callable:
@ -83,7 +81,6 @@ func undo_step() -> Callable:
return func(): return func():
lpos = old_pos lpos = old_pos
lvel = old_vel lvel = old_vel
lvel_displayed = lvel
tween_to_target() tween_to_target()
func do_move(move: Vector2i) -> Callable: func do_move(move: Vector2i) -> Callable:
@ -106,22 +103,18 @@ func undo_move() -> Callable:
func do_push(move: Vector2i) -> Callable: func do_push(move: Vector2i) -> Callable:
return func(): return func():
lvel += move lvel += move
lvel_displayed = lvel
func undo_push() -> Callable: func undo_push() -> Callable:
var old_vel := lvel var old_vel := lvel
return func(): return func():
lvel = old_vel lvel = old_vel
lvel_displayed = lvel
# no logical effect, purely for aesthetics # no logical effect, purely for aesthetics
# (and communicating !!!! player yes) # (and communicating !!!! player yes)
func do_bump(move: Vector2i, old_lvel := lvel) -> Callable: func do_bump(move: Vector2i) -> Callable:
return func(): return func():
lvel_displayed = old_lvel
var tween := create_tween() var tween := create_tween()
tween.tween_property(self, "position", target_pos() + pos_of_lpos(move)/2, anim_time()) tween.tween_property(self, "position", target_pos() + pos_of_lpos(move)/2, anim_time())
tween.tween_callback(func(): lvel_displayed = lvel)
tween_to_target(tween) tween_to_target(tween)
tweens.push_back(tween) tweens.push_back(tween)
@ -129,6 +122,21 @@ func do_bump(move: Vector2i, old_lvel := lvel) -> Callable:
func undo_bump(move: Vector2i) -> Callable: func undo_bump(move: Vector2i) -> Callable:
return do_bump(move) return do_bump(move)
static func ball(pos: Vector2i) -> Piece:
return BALL.instantiate().with_lpos(pos)
static func floor_ice(pos: Vector2i) -> Piece:
return FLOOR_ICE.instantiate().with_lpos(pos)
static func goal(pos: Vector2i) -> Piece:
return GOAL.instantiate().with_lpos(pos)
static func player(pos: Vector2i) -> Piece:
return PLAYER.instantiate().with_lpos(pos)
static func wall(pos: Vector2i) -> Piece:
return WALL.instantiate().with_lpos(pos)
func _ready() -> void: func _ready() -> void:
speedometer = Label3D.new() speedometer = Label3D.new()
speedometer.billboard = BaseMaterial3D.BILLBOARD_ENABLED speedometer.billboard = BaseMaterial3D.BILLBOARD_ENABLED
@ -143,5 +151,5 @@ func format_vel(vel: Vector2) -> String:
else: else:
return "%d,%d" % [vel.x,vel.y] return "%d,%d" % [vel.x,vel.y]
func _process(_delta: float) -> void: func _process(delta: float) -> void:
speedometer.text = format_vel(lvel_displayed) speedometer.text = format_vel(lvel)