Compare commits
No commits in common. "52c15ebd8bcd5dbe4651daf906f9a355effc22a3" and "99ee97c0c1aa341d89b45d996061d0494895b380" have entirely different histories.
52c15ebd8b
...
99ee97c0c1
4 changed files with 25 additions and 33 deletions
|
|
@ -3,17 +3,12 @@ shader_type spatial;
|
|||
uniform vec2 dims;
|
||||
uniform vec3 light_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() {
|
||||
vec2 p = UV*dims;
|
||||
float noise = (texture(NOISE_PATTERN, p).x-0.5)/10.0;
|
||||
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 {
|
||||
vec2 p = UV*dims/2.0;
|
||||
if (round(mod(p.x,1)) == round(mod(p.y,1))) {
|
||||
ALBEDO = light_color;
|
||||
} else {
|
||||
ALBEDO = dark_color;
|
||||
}
|
||||
}
|
||||
5
main.gd
5
main.gd
|
|
@ -7,9 +7,6 @@ extends Node3D
|
|||
|
||||
@onready var camera: Camera3D = $Camera
|
||||
|
||||
# TODO: wall that player cannot go through but balls can
|
||||
# (important)
|
||||
|
||||
var hist := UndoRedo.new()
|
||||
var board: Board
|
||||
var player: Piece
|
||||
|
|
@ -26,7 +23,7 @@ var levels: Array[PackedScene] = [
|
|||
var time := 0:
|
||||
set(new_time):
|
||||
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)
|
||||
time = new_time
|
||||
var advancing := false
|
||||
|
|
|
|||
10
main.tscn
10
main.tscn
|
|
@ -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="Texture2D" uid="uid://crahyipmcudoy" path="res://ui/undo.png" id="3_lquwl"]
|
||||
|
|
@ -20,20 +20,12 @@ background_mode = 2
|
|||
sky = SubResource("Sky_lquwl")
|
||||
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"]
|
||||
render_priority = 0
|
||||
shader = ExtResource("5_lquwl")
|
||||
shader_parameter/dims = Vector2(64, 64)
|
||||
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/NOISE_PATTERN = SubResource("NoiseTexture2D_7mycd")
|
||||
|
||||
[sub_resource type="PlaneMesh" id="PlaneMesh_1bvp3"]
|
||||
material = SubResource("ShaderMaterial_lquwl")
|
||||
|
|
|
|||
30
piece.gd
30
piece.gd
|
|
@ -47,7 +47,6 @@ func lpos_of_pos(pos: Vector3) -> Vector2i:
|
|||
|
||||
## logical velocity
|
||||
@export var lvel := Vector2i.ZERO
|
||||
var lvel_displayed := lvel
|
||||
|
||||
@export var type: Piece.Type
|
||||
|
||||
|
|
@ -61,7 +60,7 @@ func do_step(board: Board):
|
|||
# ball being collided *with* gets the remainder of the momentum
|
||||
# EMERGENT COMPLEXITY!??!?
|
||||
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)
|
||||
if ball_here:
|
||||
var rem := lvel % 2
|
||||
|
|
@ -74,7 +73,6 @@ func do_step(board: Board):
|
|||
var on_ice := !!board.type_at(lpos, Piece.Type.FloorIce)
|
||||
if not on_ice:
|
||||
lvel -= move
|
||||
lvel_displayed = lvel
|
||||
tween_to_target()
|
||||
|
||||
func undo_step() -> Callable:
|
||||
|
|
@ -83,7 +81,6 @@ func undo_step() -> Callable:
|
|||
return func():
|
||||
lpos = old_pos
|
||||
lvel = old_vel
|
||||
lvel_displayed = lvel
|
||||
tween_to_target()
|
||||
|
||||
func do_move(move: Vector2i) -> Callable:
|
||||
|
|
@ -106,22 +103,18 @@ func undo_move() -> Callable:
|
|||
func do_push(move: Vector2i) -> Callable:
|
||||
return func():
|
||||
lvel += move
|
||||
lvel_displayed = lvel
|
||||
|
||||
func undo_push() -> Callable:
|
||||
var old_vel := lvel
|
||||
return func():
|
||||
lvel = old_vel
|
||||
lvel_displayed = lvel
|
||||
|
||||
# no logical effect, purely for aesthetics
|
||||
# (and communicating !!!! player yes)
|
||||
func do_bump(move: Vector2i, old_lvel := lvel) -> Callable:
|
||||
func do_bump(move: Vector2i) -> Callable:
|
||||
return func():
|
||||
lvel_displayed = old_lvel
|
||||
var tween := create_tween()
|
||||
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)
|
||||
tweens.push_back(tween)
|
||||
|
||||
|
|
@ -129,6 +122,21 @@ func do_bump(move: Vector2i, old_lvel := lvel) -> Callable:
|
|||
func undo_bump(move: Vector2i) -> Callable:
|
||||
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:
|
||||
speedometer = Label3D.new()
|
||||
speedometer.billboard = BaseMaterial3D.BILLBOARD_ENABLED
|
||||
|
|
@ -143,5 +151,5 @@ func format_vel(vel: Vector2) -> String:
|
|||
else:
|
||||
return "%d,%d" % [vel.x,vel.y]
|
||||
|
||||
func _process(_delta: float) -> void:
|
||||
speedometer.text = format_vel(lvel_displayed)
|
||||
func _process(delta: float) -> void:
|
||||
speedometer.text = format_vel(lvel)
|
||||
|
|
|
|||
Loading…
Reference in a new issue