Final Game Jam version

This commit is contained in:
Exobyt 2025-09-06 23:19:31 +02:00
parent 35ce267482
commit 104a1e4297
141 changed files with 4485 additions and 206 deletions

View file

@ -3,11 +3,14 @@ class_name Card extends CenterContainer
@onready var itemButton = $ItemButton
@onready var ItemAmountLabel = $ItemButton/ItemAmountLabel
@onready var selectAduio = $selectAduio
@export var itemType: GLOBALS.ITEMTYPES = GLOBALS.ITEMTYPES.STANDARDBULLET
signal selected(_itemType: GLOBALS.ITEMTYPES)
func _on_item_button_pressed() -> void:
selectAduio.play()
selected.emit(itemType)
func setAmount(amount: int) -> void:

View file

@ -1,13 +1,21 @@
[gd_scene load_steps=6 format=3 uid="uid://bc84ynsnwc1ew"]
[gd_scene load_steps=11 format=3 uid="uid://bc84ynsnwc1ew"]
[ext_resource type="Texture2D" uid="uid://bprr1g5mf44sm" path="res://assets/cards/cardPlaceholder.png" id="1_fobdo"]
[ext_resource type="Script" uid="uid://culacsksqcquo" path="res://scenes/camera/UI/card.gd" id="1_wa0td"]
[ext_resource type="StyleBox" uid="uid://dxbfig6arg06u" path="res://scenes/camera/UI/card_pressed.tres" id="2_q4ux5"]
[ext_resource type="Texture2D" uid="uid://b14mvkqw7armg" path="res://assets/cards/cardPlaceholder_disabled.png" id="2_rvjyk"]
[ext_resource type="Texture2D" uid="uid://cmnnfrkp1h5s0" path="res://assets/cards/bullet.png" id="2_wa0td"]
[ext_resource type="StyleBox" uid="uid://b6j501unrtcd2" path="res://scenes/camera/UI/card_normal.tres" id="3_q4ux5"]
[ext_resource type="FontFile" uid="uid://bl6jbonkrdy03" path="res://assets/font/minecraft-font/MinecraftBold-nMK1.otf" id="4_24237"]
[ext_resource type="AudioStream" uid="uid://y6unwb25tb7y" path="res://assets/audio/select3.wav" id="7_xfrgu"]
[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_qr7cc"]
texture = ExtResource("1_fobdo")
[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_rvjyk"]
[sub_resource type="LabelSettings" id="LabelSettings_6m2n3"]
[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_xfrgu"]
texture = ExtResource("2_rvjyk")
[sub_resource type="LabelSettings" id="LabelSettings_q4ux5"]
font = ExtResource("4_24237")
font_size = 30
font_color = Color(0, 0, 0, 1)
[node name="Card" type="CenterContainer"]
@ -16,7 +24,11 @@ script = ExtResource("1_wa0td")
[node name="ItemButton" type="Button" parent="."]
layout_mode = 2
tooltip_auto_translate_mode = 1
theme_override_styles/normal = SubResource("StyleBoxTexture_qr7cc")
theme_override_styles/focus = SubResource("StyleBoxTexture_rvjyk")
theme_override_styles/disabled = SubResource("StyleBoxTexture_xfrgu")
theme_override_styles/hover = ExtResource("3_q4ux5")
theme_override_styles/pressed = ExtResource("2_q4ux5")
theme_override_styles/normal = ExtResource("3_q4ux5")
icon = ExtResource("2_wa0td")
[node name="ItemAmountLabel" type="Label" parent="ItemButton"]
@ -27,13 +39,16 @@ anchor_top = 1.0
anchor_right = 1.0
anchor_bottom = 1.0
offset_left = -48.0
offset_top = -30.0
offset_right = -8.0
offset_bottom = -7.0
offset_top = -52.0
offset_right = -27.0
offset_bottom = -22.0
grow_horizontal = 0
grow_vertical = 0
text = "1"
label_settings = SubResource("LabelSettings_6m2n3")
label_settings = SubResource("LabelSettings_q4ux5")
horizontal_alignment = 2
[node name="selectAduio" type="AudioStreamPlayer" parent="."]
stream = ExtResource("7_xfrgu")
[connection signal="pressed" from="ItemButton" to="." method="_on_item_button_pressed"]

View file

@ -0,0 +1,6 @@
[gd_resource type="StyleBoxTexture" load_steps=2 format=3 uid="uid://b6j501unrtcd2"]
[ext_resource type="Texture2D" uid="uid://bprr1g5mf44sm" path="res://assets/cards/cardPlaceholder.png" id="1_iajbi"]
[resource]
texture = ExtResource("1_iajbi")

View file

@ -0,0 +1,6 @@
[gd_resource type="StyleBoxTexture" load_steps=2 format=3 uid="uid://dxbfig6arg06u"]
[ext_resource type="Texture2D" uid="uid://cdmythlpvrcg5" path="res://assets/cards/cardPlaceholder_pressed.png" id="1_k2bfy"]
[resource]
texture = ExtResource("1_k2bfy")

View file

@ -2,42 +2,119 @@ extends Camera3D
@onready var playerSelectButton = preload("res://scenes/camera/UI/playerSelectionButton.tscn")
@onready var roundLabel = $CanvasLayer/Control/General/roundLabel
@onready var playerNameLabel = $CanvasLayer/Control/Player/PlayerNameLabel
@onready var itemCards = $CanvasLayer/Control/Player/ItemCards
@onready var magazineLabel = $CanvasLayer/Control/Player/MagazineLabel
@onready var playerSelection = $CanvasLayer/Control/Player/PlayerSelection
@onready var roundLabel = $CanvasLayer/Control/General/HBoxContainer/roundLabel
@onready var playerNameLabel = $CanvasLayer/Control/Player/HBoxContainer2/PlayerNameLabel
@onready var itemCards = $CanvasLayer/Control/Player/Stats/ItemCards
@onready var magazineLabel = $CanvasLayer/Control/Player/Stats/HBoxContainer/MagazineLabel
@onready var playerSelection = $CanvasLayer/Control/Player/Stats/PlayerSelection
@onready var stats = $CanvasLayer/Control/Player/Stats
@onready var player = $CanvasLayer/Control/Player
@onready var turnTimeLabel = $CanvasLayer/Control/Player/Stats/turnTimeLabel
@onready var timer = $CanvasLayer/Control/Player/Stats/Timer
@onready var winInfo = $CanvasLayer/Control/WinInfo
@onready var general = $CanvasLayer/Control/General
@onready var poolLabel = $CanvasLayer/Control/PoolLabel
@onready var winnerLabel = $CanvasLayer/Control/WinInfo/winScreen/WinnerLabel
@onready var winRoundLabel = $CanvasLayer/Control/WinInfo/winScreen/WinRoundLabel
#@onready var itemStandardBulletButton = $
var currentPlayer: Player
var selectablePlayers: Array[Player]
var currentGameState: GLOBALS.GAMESTATE
signal itemSelected(_itemType: GLOBALS.ITEMTYPES)
signal nextTurn()
func _ready() -> void:
func updateUi():
match currentGameState:
GLOBALS.GAMESTATE.SETUP:
print("-- CAMERA SETUP --")
setup()
player.visible = false
winInfo.visible = false
general.visible = true
poolLabel.visible = false
GLOBALS.GAMESTATE.ROUNDSTART:
print("-- CAMERA ROUNDSTART --")
player.visible = false
winInfo.visible = false
general.visible = true
poolLabel.visible = false
GLOBALS.GAMESTATE.PLAYER:
print("-- CAMERA PLAYER --")
player.visible = true
updatePlayerStats()
if currentPlayer.isBot():
stats.visible = false
else:
stats.visible = true
winInfo.visible = false
general.visible = true
poolLabel.visible = false
GLOBALS.GAMESTATE.POOL:
print("-- CAMERA POOL --")
player.visible = false
winInfo.visible = false
general.visible = true
poolLabel.visible = true
GLOBALS.GAMESTATE.AIM:
print("-- CAMERA AIM --")
player.visible = false
winInfo.visible = false
general.visible = true
poolLabel.visible = false
GLOBALS.GAMESTATE.SHOOT:
print("-- CAMERA SHOOT --")
player.visible = false
winInfo.visible = false
general.visible = true
poolLabel.visible = false
GLOBALS.GAMESTATE.END:
print("-- CAMERA END --")
if selectablePlayers.size() > 0:
winnerLabel.text = selectablePlayers[0].getGameName()
else:
winnerLabel.text = "DRAW"
winInfo.visible = true
general.visible = false
func setup():
for i in itemCards.get_children():
if i.has_signal("selected"):
i.selected.connect(selectItem.bind())
func setRound(_round: int) -> void:
roundLabel.text = str(_round)
func displayPlayerStats(_player) -> void:
currentPlayer = _player
updateUi()
func setSelectablePlayers(_players: Array[Player]) -> void:
selectablePlayers = _players
updateUi()
func updateGameState(_state: GLOBALS.GAMESTATE) -> void:
currentGameState = _state
updateUi()
func getPlayerSelection() -> Player:
for i in playerSelection.get_children():
if i.button_pressed == true:
return i.player
return currentPlayer
func updatePlayerStats():
playerNameLabel.text = str(currentPlayer.getGameName())
magazineLabel.text = str(currentPlayer.gun.magazineSize) + "/" + str(currentPlayer.gun.getBulletAmount())
updatePlayerSelection()
updateItemCards()
func setCurrentPlayer(_currentPlayer: Player):
currentPlayer = _currentPlayer
updatePlayerStats()
func selectItem(_itemType: GLOBALS.ITEMTYPES):
print(currentPlayer.gun.magazineSizeLeft())
if currentPlayer.gun.magazineSizeLeft() > 0:
itemSelected.emit(_itemType)
if currentPlayer != null:
playerNameLabel.text = str(currentPlayer.getGameName())
magazineLabel.text = str(currentPlayer.gun.magazineSize) + "/" + str(currentPlayer.gun.getBulletAmount())
updateItemCards()
updatePlayerSelection()
func updateItemCards() -> void:
if currentPlayer.gun.magazineSizeLeft() <= 0:
@ -61,7 +138,6 @@ func updateItemCards() -> void:
else:
j.visible = true
func updatePlayerSelection() -> void:
for i in playerSelection.get_children():
i.free()
@ -72,22 +148,35 @@ func updatePlayerSelection() -> void:
newSelection.setPlayer(i)
newSelection.button_group = newButtonGroup
playerSelection.add_child(newSelection)
playerSelection.get_child(0).button_pressed = true
if playerSelection.get_child(0) != null:
playerSelection.get_child(0).button_pressed = true
var newSelection = playerSelectButton.instantiate()
newSelection.setPlayer(currentPlayer)
newSelection.button_group = newButtonGroup
playerSelection.add_child(newSelection)
func setRound(_round: int) -> void:
roundLabel.text = str(_round)
winRoundLabel.text = str(_round)
func updatTurnTime(_timeLeft: float, _endTime: float) -> void:
timer.setTime(_timeLeft, _endTime)
turnTimeLabel.text = str(_timeLeft)
func selectItem(_itemType: GLOBALS.ITEMTYPES):
print(currentPlayer.gun.magazineSizeLeft())
if currentPlayer.gun.magazineSizeLeft() > 0:
itemSelected.emit(_itemType)
func resetTimer() -> void:
timer.reset()
func _on_next_turn_button_pressed() -> void:
currentPlayer.selectPlayer(getPlayerSelection())
nextTurn.emit()
func getPlayerSelection() -> Player:
for i in playerSelection.get_children():
if i.button_pressed == true:
return i.player
return currentPlayer
func _on_button_pressed() -> void:
var mainMenu: PackedScene = load("res://scenes/mainMenu/mainMenu.tscn")
get_tree().change_scene_to_packed(mainMenu)

View file

@ -1,7 +1,12 @@
[gd_scene load_steps=3 format=3 uid="uid://ct45lmxlrkhaj"]
[gd_scene load_steps=8 format=3 uid="uid://ct45lmxlrkhaj"]
[ext_resource type="Script" uid="uid://bvkbh5ngdd0dt" path="res://scenes/camera/camera.gd" id="1_xejhd"]
[ext_resource type="PackedScene" uid="uid://bc84ynsnwc1ew" path="res://scenes/camera/UI/card.tscn" id="2_6m2n3"]
[ext_resource type="Theme" uid="uid://demtpbu7rvg6i" path="res://theme/mainTheme.tres" id="2_qr7cc"]
[ext_resource type="PackedScene" uid="uid://cft1rugofyhh3" path="res://scenes/timer/timer.tscn" id="3_0jiuk"]
[ext_resource type="LabelSettings" uid="uid://cktnsyumdnxq6" path="res://theme/mainLabel.tres" id="4_u3rx3"]
[ext_resource type="Texture2D" uid="uid://v27rn6a5n6yh" path="res://assets/board/board.png" id="6_4ph7v"]
[ext_resource type="LabelSettings" uid="uid://xy6r76by7usp" path="res://theme/bigLabel.tres" id="6_21tcn"]
[node name="Camera3D" type="Camera3D"]
current = true
@ -16,6 +21,7 @@ anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
theme = ExtResource("2_qr7cc")
[node name="General" type="Control" parent="CanvasLayer/Control"]
layout_mode = 1
@ -25,17 +31,21 @@ anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
[node name="roundLabel" type="Label" parent="CanvasLayer/Control/General"]
layout_mode = 1
anchors_preset = 1
anchor_left = 1.0
anchor_right = 1.0
offset_left = -32.0
offset_top = 16.0
offset_right = -22.0
offset_bottom = 39.0
grow_horizontal = 0
[node name="HBoxContainer" type="HBoxContainer" parent="CanvasLayer/Control/General"]
layout_mode = 0
offset_left = 40.0
offset_top = 40.0
offset_right = 205.0
offset_bottom = 90.0
[node name="roundLabelInfo" type="Label" parent="CanvasLayer/Control/General/HBoxContainer"]
layout_mode = 2
text = "Round: "
[node name="roundLabel" type="Label" parent="CanvasLayer/Control/General/HBoxContainer"]
layout_mode = 2
text = "0"
label_settings = ExtResource("6_21tcn")
[node name="Player" type="Control" parent="CanvasLayer/Control"]
layout_mode = 1
@ -45,76 +55,223 @@ anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
[node name="PlayerNameLabel" type="Label" parent="CanvasLayer/Control/Player"]
[node name="HBoxContainer2" type="VBoxContainer" parent="CanvasLayer/Control/Player"]
layout_mode = 1
anchors_preset = 5
anchor_left = 0.5
anchor_right = 0.5
offset_left = -24.0
offset_top = 16.0
offset_right = 24.0
offset_bottom = 39.0
offset_left = -198.5
offset_top = 40.0
offset_right = 198.5
offset_bottom = 124.0
grow_horizontal = 2
[node name="PlayerNameLabelInfo" type="Label" parent="CanvasLayer/Control/Player/HBoxContainer2"]
layout_mode = 2
text = "Turn"
horizontal_alignment = 1
[node name="PlayerNameLabel" type="Label" parent="CanvasLayer/Control/Player/HBoxContainer2"]
layout_mode = 2
text = "asdasd"
label_settings = ExtResource("6_21tcn")
horizontal_alignment = 1
vertical_alignment = 1
[node name="nextTurnButton" type="Button" parent="CanvasLayer/Control/Player"]
[node name="Stats" type="Control" parent="CanvasLayer/Control/Player"]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
[node name="ItemCards" type="HBoxContainer" parent="CanvasLayer/Control/Player/Stats"]
layout_mode = 1
anchors_preset = 2
anchor_top = 1.0
anchor_bottom = 1.0
offset_left = 40.0
offset_top = -292.0
offset_right = 428.0
offset_bottom = -40.0
grow_vertical = 0
[node name="Card" parent="CanvasLayer/Control/Player/Stats/ItemCards" instance=ExtResource("2_6m2n3")]
layout_mode = 2
[node name="Card2" parent="CanvasLayer/Control/Player/Stats/ItemCards" instance=ExtResource("2_6m2n3")]
layout_mode = 2
itemType = 2
[node name="HBoxContainer" type="HBoxContainer" parent="CanvasLayer/Control/Player/Stats"]
layout_mode = 1
anchors_preset = 2
anchor_top = 1.0
anchor_bottom = 1.0
offset_left = 40.0
offset_top = -376.0
offset_right = 199.0
offset_bottom = -336.0
grow_vertical = 0
[node name="MagazineLabelInfo" type="Label" parent="CanvasLayer/Control/Player/Stats/HBoxContainer"]
layout_mode = 2
text = "Magazin: "
label_settings = ExtResource("4_u3rx3")
[node name="MagazineLabel" type="Label" parent="CanvasLayer/Control/Player/Stats/HBoxContainer"]
layout_mode = 2
text = "dfsdfsdf"
label_settings = ExtResource("6_21tcn")
[node name="PlayerSelection" type="VBoxContainer" parent="CanvasLayer/Control/Player/Stats"]
visible = false
layout_mode = 1
anchors_preset = 4
anchor_top = 0.5
anchor_bottom = 0.5
offset_left = 48.0
offset_top = -20.0
offset_right = 88.0
offset_bottom = 20.0
grow_vertical = 2
alignment = 1
[node name="nextTurnButton" type="Button" parent="CanvasLayer/Control/Player/Stats"]
layout_mode = 1
anchors_preset = 3
anchor_left = 1.0
anchor_top = 1.0
anchor_right = 1.0
anchor_bottom = 1.0
offset_left = -96.0
offset_top = -48.0
offset_right = -17.0
offset_bottom = -17.0
offset_left = -272.0
offset_top = -164.0
offset_right = -40.0
offset_bottom = -40.0
grow_horizontal = 0
grow_vertical = 0
text = "Continue"
text = "End Turn"
[node name="ItemCards" type="HBoxContainer" parent="CanvasLayer/Control/Player"]
[node name="turnTimeLabel" type="Label" parent="CanvasLayer/Control/Player/Stats"]
visible = false
layout_mode = 1
anchors_preset = 2
anchor_top = 1.0
anchor_bottom = 1.0
offset_left = 16.0
offset_top = -136.0
offset_right = 112.0
offset_bottom = -10.0
grow_vertical = 0
[node name="Card" parent="CanvasLayer/Control/Player/ItemCards" instance=ExtResource("2_6m2n3")]
layout_mode = 2
[node name="Card2" parent="CanvasLayer/Control/Player/ItemCards" instance=ExtResource("2_6m2n3")]
layout_mode = 2
itemType = 2
[node name="MagazineLabel" type="Label" parent="CanvasLayer/Control/Player"]
layout_mode = 1
anchors_preset = 2
anchor_top = 1.0
anchor_bottom = 1.0
offset_left = 16.0
offset_top = -184.0
offset_right = 56.0
offset_bottom = -161.0
grow_vertical = 0
[node name="PlayerSelection" type="VBoxContainer" parent="CanvasLayer/Control/Player"]
layout_mode = 1
anchors_preset = 6
anchors_preset = 1
anchor_left = 1.0
anchor_top = 0.5
anchor_right = 1.0
anchor_bottom = 0.5
offset_left = -64.0
offset_top = -20.0
offset_right = -24.0
offset_bottom = 20.0
offset_left = -128.0
offset_top = 16.0
offset_right = -118.0
offset_bottom = 39.0
grow_horizontal = 0
text = "0"
[node name="Timer" parent="CanvasLayer/Control/Player/Stats" instance=ExtResource("3_0jiuk")]
layout_mode = 1
anchors_preset = 1
anchor_left = 1.0
anchor_right = 1.0
offset_left = -168.0
offset_top = 40.0
offset_right = -40.0
offset_bottom = 168.0
grow_horizontal = 0
[node name="WinInfo" type="TextureRect" parent="CanvasLayer/Control"]
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -269.0
offset_top = -217.5
offset_right = 269.0
offset_bottom = 217.5
grow_horizontal = 2
grow_vertical = 2
texture = ExtResource("6_4ph7v")
stretch_mode = 5
[node name="winScreen" type="VBoxContainer" parent="CanvasLayer/Control/WinInfo"]
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -20.0
offset_top = -32.0
offset_right = 20.0
offset_bottom = 32.0
grow_horizontal = 2
grow_vertical = 2
alignment = 1
[connection signal="pressed" from="CanvasLayer/Control/Player/nextTurnButton" to="." method="_on_next_turn_button_pressed"]
[node name="WinnerLabelInfo" type="Label" parent="CanvasLayer/Control/WinInfo/winScreen"]
layout_mode = 2
text = "Winner"
horizontal_alignment = 1
vertical_alignment = 1
[node name="WinnerLabel" type="Label" parent="CanvasLayer/Control/WinInfo/winScreen"]
layout_mode = 2
text = "1"
label_settings = ExtResource("6_21tcn")
horizontal_alignment = 1
vertical_alignment = 1
[node name="HSeparator" type="HSeparator" parent="CanvasLayer/Control/WinInfo/winScreen"]
modulate = Color(1, 1, 1, 0)
layout_mode = 2
[node name="HSeparator2" type="HSeparator" parent="CanvasLayer/Control/WinInfo/winScreen"]
modulate = Color(1, 1, 1, 0)
layout_mode = 2
[node name="WinnerLabelInfo2" type="Label" parent="CanvasLayer/Control/WinInfo/winScreen"]
layout_mode = 2
text = "Survived Rounds"
horizontal_alignment = 1
vertical_alignment = 1
[node name="WinRoundLabel" type="Label" parent="CanvasLayer/Control/WinInfo/winScreen"]
layout_mode = 2
text = "1"
label_settings = ExtResource("6_21tcn")
horizontal_alignment = 1
vertical_alignment = 1
[node name="HSeparator3" type="HSeparator" parent="CanvasLayer/Control/WinInfo/winScreen"]
modulate = Color(1, 1, 1, 0)
layout_mode = 2
[node name="HSeparator4" type="HSeparator" parent="CanvasLayer/Control/WinInfo/winScreen"]
modulate = Color(1, 1, 1, 0)
layout_mode = 2
[node name="Button" type="Button" parent="CanvasLayer/Control/WinInfo/winScreen"]
layout_mode = 2
text = "Back To Main Menu"
[node name="PoolLabel" type="Label" parent="CanvasLayer/Control"]
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -20.0
offset_top = -15.0
offset_right = 20.0
offset_bottom = 15.0
grow_horizontal = 2
grow_vertical = 2
text = "Get Random Gun"
label_settings = ExtResource("6_21tcn")
[node name="AudioListener3D" type="AudioListener3D" parent="."]
current = true
[connection signal="pressed" from="CanvasLayer/Control/Player/Stats/nextTurnButton" to="." method="_on_next_turn_button_pressed"]
[connection signal="pressed" from="CanvasLayer/Control/WinInfo/winScreen/Button" to="." method="_on_button_pressed"]