Added pause and mute.

Improved fonts and font scaling
Added level editor
This commit is contained in:
2024-05-05 22:36:32 +01:00
parent fef3ae9d8e
commit 81d8e14746
355 changed files with 3231 additions and 5428 deletions

View File

@@ -1,6 +1,7 @@
extends RigidBody2D
const MIN_SPEED = 100.0
const MIN_SPEED = 50.0
const MAX_SPEED = 500.0
signal hit_brick(ball : Node, brick : Node)
signal hit_paddle(ball : Node)
@@ -10,9 +11,11 @@ signal hit_wall(ball : Node)
var captured : bool = false
var capture_object : Node2D
var capture_offset : Vector2 = Vector2.ZERO
var speed : float = 100
func _physics_process(delta: float) -> void:
angular_velocity = 0
# angular_velocity = 0
rotation = 0
if captured:
PhysicsServer2D.body_set_state(
@@ -23,39 +26,13 @@ func _physics_process(delta: float) -> void:
linear_velocity = Vector2.ZERO
angular_velocity = 0
else:
if linear_velocity.length() < MIN_SPEED:
linear_damp = 0
linear_velocity = linear_velocity.normalized() * MIN_SPEED
if linear_velocity.length() != speed:
linear_velocity = linear_velocity.normalized() * speed
func _on_body_entered(body: Node) -> void:
if body is Brick:
if not body.visible:
return
#linear_velocity = (linear_velocity.normalized() + (Vector2(randf() - 0.5, randf() - 0.5) / 2.0)).normalized() * linear_velocity.length()
$BrickSound.play()
body.hit()
hit_brick.emit(self, body)
return
if body is Paddle:
var diff = (position.x - body.position.x) / (body.width/2)
linear_velocity = (Vector2(diff, -1).normalized()) * linear_velocity.length()
$PaddleSound.play()
body.hit()
hit_paddle.emit(self)
return
if body is Wall:
if abs(linear_velocity.y) < 0.01:
linear_velocity.y = randf() * 10.0
elif abs(linear_velocity.y) < 1:
linear_velocity.y *= 10.0
#linear_velocity = (linear_velocity.normalized() + (Vector2(randf() - 0.5, randf() - 0.5) / 5.0)).normalized() * linear_velocity.length()
$WallSound.play()
hit_wall.emit(self)
return
if body is Floor:
#$FloorSound.play()
hit_floor.emit(self)
return
pass
func capture(ob : Node2D, offset : Vector2 = Vector2.ZERO) -> void:
captured = true
@@ -65,7 +42,40 @@ func capture(ob : Node2D, offset : Vector2 = Vector2.ZERO) -> void:
func release() -> void:
global_position = capture_object.global_position - capture_offset
var diff = (global_position.x - capture_object.global_position.x) / (capture_object.width/2)
linear_velocity = Vector2(diff, -1).normalized() * 100
# linear_velocity = Vector2(diff, -1).normalized() * 100
apply_central_impulse(Vector2(diff, -1).normalized() * 1)
captured = false
capture_object = null
func _on_body_exited(body: Node) -> void:
if body is Brick:
if not body.visible:
return
$BrickSound.play()
body.hit()
hit_brick.emit(self, body)
speed += 1
return
if body is Paddle:
var diff = (position.x - body.position.x) / (body.width/2)
linear_velocity = (Vector2(diff, -1).normalized()) * speed
$PaddleSound.play()
body.hit()
hit_paddle.emit(self)
return
if body is Wall:
if abs(linear_velocity.y) < 0.01:
linear_velocity.y = randf() * 10.0
elif abs(linear_velocity.y) < 1:
linear_velocity.y *= 10.0
$WallSound.play()
hit_wall.emit(self)
return
if body is Floor:
hit_floor.emit(self)
return
func slowdown() -> void:
speed = 100