mirror of
https://github.com/danbulant/programovani-kostky
synced 2026-06-19 06:11:31 +00:00
40 lines
1.2 KiB
GDScript
40 lines
1.2 KiB
GDScript
extends Node3D
|
|
|
|
@onready var dice1: Dice = $dice1
|
|
@onready var dice2: Dice = $dice2
|
|
@onready var camera: Camera3D = $Camera3D
|
|
@onready var camera_start: Marker3D = $CameraPositionDefault
|
|
@onready var ui: Ui = $Ui
|
|
|
|
enum GameState {
|
|
START,
|
|
THROWING_START,
|
|
THROWING,
|
|
THROWN
|
|
}
|
|
|
|
var state: GameState = GameState.START
|
|
|
|
func _ready() -> void:
|
|
pass
|
|
|
|
func _process(_delta: float) -> void:
|
|
if (!dice1.can_be_thrown() or !dice2.can_be_thrown()) and state == GameState.THROWING_START:
|
|
state = GameState.THROWING
|
|
if dice1.can_be_thrown() and dice2.can_be_thrown() and state == GameState.THROWING:
|
|
state = GameState.THROWN
|
|
var avg_position = (dice1.global_transform.origin + dice2.global_transform.origin) / 2
|
|
var diff = dice1.global_position - dice2.global_position
|
|
camera.global_position = avg_position + Vector3.UP * (diff.length())
|
|
camera.look_at(avg_position, Vector3.FORWARD)
|
|
|
|
func throw_dice() -> void:
|
|
if dice1.can_be_thrown() and dice2.can_be_thrown():
|
|
dice1.random_throw()
|
|
dice2.random_throw()
|
|
state = GameState.THROWING_START
|
|
reset_camera()
|
|
|
|
func reset_camera() -> void:
|
|
camera.global_transform.origin = camera_start.global_transform.origin
|
|
camera.global_transform.basis = camera_start.global_transform.basis
|