added phase 1 of gameplay and ui buttons

This commit is contained in:
Nikolai Fesenko
2025-08-29 14:31:49 +02:00
parent 98dfdfd77e
commit fbd75b3397
25 changed files with 1044 additions and 13 deletions

View File

@@ -10,6 +10,8 @@ var bullets: Array
var player1_revolver: Node3D
var player2_revolver: Node3D
var is_player1_loaded: bool = false
var is_player2_loaded: bool = false
var bullet_stack: Node3D
func _ready() -> void:
@@ -52,19 +54,37 @@ func check_unloaded_bullets():
else:
return false
func check_loaded_bullets(revolver: Node3D):
if revolver.can_be_loaded():
return true
else:
return false
func end_player_turn():
if check_unloaded_bullets():
if !is_player2_loaded:
set_state(GameState.PLAYER2_GUN_LOAD)
end_turn()
func end_enemy_turn():
if is_player1_loaded == false:
print("Player Turn")
set_state(GameState.PLAYER1_GUN_LOAD)
end_turn()
func end_turn():
if check_unloaded_bullets():
if is_player1_loaded and is_player2_loaded:
print("Phase 2")
else:
set_state(GameState.PLAYER2_UNLOAD)
print("End of Phase 1")
func end_enemy_turn():
if check_unloaded_bullets():
set_state(GameState.PLAYER1_GUN_LOAD)
else:
set_state(GameState.PLAYER1_UNLOAD)
print("End of Phase 1")
func get_enemy_revolver() -> Node3D:
return player2_revolver
func get_phase2_player_start():
var randNumb = randi_range(0,1)
if randNumb == 0:
set_state(GameState.PLAYER1_UNLOAD)
else:
set_state(GameState.PLAYER2_UNLOAD)

View File

@@ -0,0 +1,12 @@
extends HBoxContainer
var start_pos: Vector2
func _ready() -> void:
start_pos = self.position
func _input(event: InputEvent) -> void:
if event.is_action_released("left_mouse_click"):
self.position = Vector2(1000.0,1000.0)
func on_state_changed():
pass

View File

@@ -0,0 +1 @@
uid://2ktulh0d67v0

View File

@@ -4,7 +4,7 @@ var bullet_target_pos = Vector3(1.95,0.03,4.612) #2.231
var loaded_bullets = Array()
var max_bullets: int = 6
var current_round: int = 1
var current_round: int = 0
var timer: Timer
@export var is_player_revolver: bool = false
@@ -12,7 +12,7 @@ var timer: Timer
var is_cylinder_out: bool = false
func _ready() -> void:
loaded_bullets.resize(max_bullets + 1)
loaded_bullets.resize(max_bullets)
timer = $Timer
if is_player_revolver:
GameManager.set_player_revolver(self)
@@ -27,6 +27,8 @@ func _process(delta: float) -> void:
cylinder.rotation_degrees = lerp(cylinder.rotation_degrees,Vector3(30 + current_round*60,90,90), delta / 0.1 )
#cylinder.rotation_degrees = Vector3(30 + current_round*60,90,90)
func load_bullet(bullet_object: Node3D):
loaded_bullets[current_round] = bullet_object
bullet_object.is_loaded = true
@@ -39,15 +41,33 @@ func load_bullet(bullet_object: Node3D):
#cylinder.rotation.x = 90.0
func on_load_anim_end():
timer.timeout.disconnect(on_load_anim_end)
if !can_be_loaded():
if is_player_revolver:
GameManager.is_player1_loaded = true
else:
GameManager.is_player2_loaded = true
is_cylinder_out = false
if is_player_revolver:
GameManager.end_player_turn()
else:
GameManager.end_enemy_turn()
timer.timeout.disconnect(on_load_anim_end)
func on_bullet_reached():
current_round += 1
timer.start()
func shoot():
pass
func can_be_loaded():
var free: int = 0
for bullet in loaded_bullets:
if bullet == null:
free += 1
if free > 0:
return true
else:
return false