Final Game Jam version
This commit is contained in:
parent
35ce267482
commit
104a1e4297
141 changed files with 4485 additions and 206 deletions
|
|
@ -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:
|
||||
|
|
|
|||
|
|
@ -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"]
|
||||
|
|
|
|||
6
scenes/camera/UI/card_normal.tres
Normal file
6
scenes/camera/UI/card_normal.tres
Normal 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")
|
||||
6
scenes/camera/UI/card_pressed.tres
Normal file
6
scenes/camera/UI/card_pressed.tres
Normal 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")
|
||||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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"]
|
||||
|
|
|
|||
|
|
@ -1,10 +1,134 @@
|
|||
class_name Character extends Node3D
|
||||
|
||||
@onready var shotAnimations = $Shots/shotAnimations
|
||||
@onready var gunAnimations = $gun/gunAnimations
|
||||
@onready var gunPosition1 = $GunPositions/GunPosition1
|
||||
@onready var gunPosition2 = $GunPositions/GunPosition2
|
||||
@onready var gunPosition3 = $GunPositions/GunPosition3
|
||||
@onready var gunPosition4 = $GunPositions/GunPosition4
|
||||
@onready var shotGlas1 = $Shots/ShotGlas1
|
||||
@onready var shotGlas2 = $Shots/ShotGlas2
|
||||
@onready var shotGlas3 = $Shots/ShotGlas3
|
||||
@onready var gameNameLabel = $gameNameLabel
|
||||
|
||||
@onready var gun = $gun
|
||||
|
||||
@onready var headPosition = $HeadPosition
|
||||
|
||||
@onready var shots = $Shots
|
||||
|
||||
func shoot():
|
||||
pass
|
||||
@onready var shootAudio = $GunPositions/GunPosition1/shootAudio
|
||||
@onready var triggerAudio = $gun/triggerAudio
|
||||
|
||||
func removeShot() -> void:
|
||||
print("remove Shot")
|
||||
shots.get_child(0).queue_free()
|
||||
signal shootGunFinished
|
||||
signal addGunToPoolFinished
|
||||
signal aimGunFinished
|
||||
signal shotDrinkingFinished
|
||||
|
||||
func shootGun(hit: bool):
|
||||
var currentRotationDegrees = gun.rotation_degrees
|
||||
var currentPosition = gun.position
|
||||
var tween1 = get_tree().create_tween().bind_node(self).set_trans(Tween.TRANS_BACK).set_ease(Tween.EASE_OUT)
|
||||
var tween2 = get_tree().create_tween().bind_node(self).set_trans(Tween.TRANS_BACK).set_ease(Tween.EASE_OUT)
|
||||
triggerAudio.play()
|
||||
if hit:
|
||||
shootAudio.play()
|
||||
gunAnimations.play("shoot")
|
||||
tween1.finished.connect(emitShootGunFinished.bind())
|
||||
tween2.tween_property(gun, "position", gun.position+Vector3(0,0,-0.2), 0.2)
|
||||
tween1.tween_property(gun, "rotation_degrees", gun.rotation_degrees+Vector3(-10,0,0), 0.2)
|
||||
tween2.tween_property(gun, "position", currentPosition, 1).set_trans(Tween.TRANS_QUART)
|
||||
tween1.tween_property(gun, "rotation_degrees", currentRotationDegrees, 1).set_trans(Tween.TRANS_QUART)
|
||||
else:
|
||||
tween2.finished.connect(emitShootGunFinished.bind())
|
||||
tween2.tween_property(gun, "position", gun.position+Vector3(-0.01,-0.01,-0.01), 0.2).set_trans(Tween.TRANS_BOUNCE)
|
||||
#tween1.tween_property(gun, "rotation_degrees", gun.rotation_degrees+Vector3(10,0,0), 0.2).set_trans(Tween.TRANS_BOUNCE)
|
||||
tween2.tween_property(gun, "position", currentPosition, 1).set_trans(Tween.TRANS_QUART)
|
||||
#tween1.tween_property(gun, "rotation_degrees", currentRotationDegrees, 1).set_trans(Tween.TRANS_QUART)
|
||||
|
||||
func emitShootGunFinished():
|
||||
shootGunFinished.emit()
|
||||
|
||||
|
||||
func addGunToPool():
|
||||
var tween1 = get_tree().create_tween().bind_node(self).set_trans(Tween.TRANS_BACK).set_ease(Tween.EASE_IN)
|
||||
var tween2 = get_tree().create_tween().bind_node(self).set_trans(Tween.TRANS_BACK).set_ease(Tween.EASE_IN)
|
||||
tween1.finished.connect(emitAddGunToPoolFinished.bind())
|
||||
tween2.tween_property(gun, "position", gunPosition3.position, 0.6)
|
||||
tween1.tween_property(gun, "rotation_degrees", gunPosition3.rotation_degrees, 0.6)
|
||||
tween2.tween_property(gun, "position", gunPosition3.position, 1)
|
||||
tween1.tween_property(gun, "rotation_degrees", gunPosition3.rotation_degrees, 1)
|
||||
tween2.tween_property(gun, "position", gunPosition1.position, 0.6)
|
||||
tween1.tween_property(gun, "rotation_degrees", gunPosition1.rotation_degrees, 0.6)
|
||||
|
||||
func emitAddGunToPoolFinished():
|
||||
addGunToPoolFinished.emit()
|
||||
|
||||
func aimGun():
|
||||
var tween1 = get_tree().create_tween().bind_node(self).set_trans(Tween.TRANS_BACK).set_ease(Tween.EASE_IN)
|
||||
var tween2 = get_tree().create_tween().bind_node(self).set_trans(Tween.TRANS_BACK).set_ease(Tween.EASE_IN)
|
||||
tween1.finished.connect(emitAimGunFinished.bind())
|
||||
tween2.tween_property(gun, "position", gunPosition1.position, 0.6)
|
||||
tween1.tween_property(gun, "rotation_degrees", gunPosition1.rotation_degrees, 0.6)
|
||||
|
||||
func setAim(_player: Player):
|
||||
gunPosition1.look_at(Vector3(_player.character.getHeadPosition().x,_player.character.getHeadPosition().y,_player.character.getHeadPosition().z), Vector3.UP, true)
|
||||
|
||||
func resetAim():
|
||||
gunPosition1.rotation = Vector3(0,0,0)
|
||||
|
||||
func emitAimGunFinished():
|
||||
aimGunFinished.emit()
|
||||
|
||||
func loadGun():
|
||||
var tween1 = get_tree().create_tween().bind_node(self).set_trans(Tween.TRANS_BACK).set_ease(Tween.EASE_IN)
|
||||
var tween2 = get_tree().create_tween().bind_node(self).set_trans(Tween.TRANS_BACK).set_ease(Tween.EASE_IN)
|
||||
tween2.tween_property(gun, "position", gunPosition4.position, 0.6)
|
||||
tween1.tween_property(gun, "rotation_degrees", gunPosition4.rotation_degrees, 0.6)
|
||||
|
||||
|
||||
|
||||
#func aimGunAtPlayer(_player: Player):
|
||||
#gunPosition1.look_at(Vector3(_player.character.getHeadPosition().x,_player.character.getHeadPosition().y,_player.character.getHeadPosition().z), Vector3.UP, true)
|
||||
#moveGunTo(gunPosition1)
|
||||
|
||||
#func aimGunAtSelf():
|
||||
#moveGunTo(gunPosition2)
|
||||
|
||||
#func addGunToPool():
|
||||
#moveGunTo(gunPosition3)
|
||||
|
||||
#func removeGunToPool():
|
||||
#moveGunTo(gunPosition1)
|
||||
|
||||
func moveGunTo(toPosition: Marker3D):
|
||||
var tween1 = get_tree().create_tween().bind_node(self).set_trans(Tween.TRANS_BACK).set_ease(Tween.EASE_IN)
|
||||
var tween2 = get_tree().create_tween().bind_node(self).set_trans(Tween.TRANS_BACK).set_ease(Tween.EASE_IN)
|
||||
tween2.tween_property(gun, "position", toPosition.position, 0.6)
|
||||
tween1.tween_property(gun, "rotation_degrees", toPosition.rotation_degrees, 0.6)
|
||||
|
||||
#print("Finish")
|
||||
|
||||
#func aimGun(_player: Player):
|
||||
#var lookAt: Vector3 = gun.global_position
|
||||
#lookAt = _player.character.getHeadPosition()
|
||||
#gun.look_at(lookAt, Vector3.UP, true)
|
||||
|
||||
func drinkShot():
|
||||
await get_tree().create_timer(1.0).timeout
|
||||
if shotGlas1 != null:
|
||||
shotAnimations.play("drinkShot1")
|
||||
elif shotGlas2 != null:
|
||||
shotAnimations.play("drinkShot2")
|
||||
elif shotGlas3 != null:
|
||||
shotAnimations.play("drinkShot3")
|
||||
|
||||
func getHeadPosition() -> Vector3:
|
||||
return headPosition.global_position
|
||||
|
||||
func _on_shot_animations_current_animation_changed(name: String) -> void:
|
||||
shotDrinkingFinished.emit()
|
||||
|
||||
|
||||
func setGameName(_name: String):
|
||||
gameNameLabel.text = _name
|
||||
|
|
|
|||
|
|
@ -1,8 +1,14 @@
|
|||
[gd_scene load_steps=7 format=3 uid="uid://dlsh4dfqgtvan"]
|
||||
[gd_scene load_steps=21 format=3 uid="uid://dlsh4dfqgtvan"]
|
||||
|
||||
[ext_resource type="Texture2D" uid="uid://du3d2gb1rri4t" path="res://icon.svg" id="1_6nn2t"]
|
||||
[ext_resource type="Script" uid="uid://1uwdiveyijuu" path="res://scenes/character/character.gd" id="1_cuyo6"]
|
||||
[ext_resource type="Texture2D" uid="uid://dtxymku41phdj" path="res://assets/player/player.png" id="2_bix7t"]
|
||||
[ext_resource type="PackedScene" uid="uid://bhr8ggg3suw46" path="res://scenes/character/shotGlas/shotGlas.tscn" id="3_mutn8"]
|
||||
[ext_resource type="PackedScene" uid="uid://daj8ue8u3fjw6" path="res://scenes/character/gun/gun.tscn" id="4_fgi2k"]
|
||||
[ext_resource type="AudioStream" uid="uid://bb2odit8okuma" path="res://assets/audio/shoot2.wav" id="5_7ex5l"]
|
||||
[ext_resource type="AudioStream" uid="uid://d1plcwujuslyx" path="res://assets/audio/heal.wav" id="5_q52vl"]
|
||||
[ext_resource type="AudioStream" uid="uid://b1jqrw6p8mtwu" path="res://assets/audio/trigger.wav" id="6_7ex5l"]
|
||||
[ext_resource type="FontFile" uid="uid://bl6jbonkrdy03" path="res://assets/font/minecraft-font/MinecraftBold-nMK1.otf" id="8_bblvu"]
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_cuyo6"]
|
||||
albedo_texture = ExtResource("1_6nn2t")
|
||||
|
|
@ -14,24 +20,386 @@ orientation = 2
|
|||
|
||||
[sub_resource type="BoxMesh" id="BoxMesh_cuyo6"]
|
||||
|
||||
[sub_resource type="Animation" id="Animation_bix7t"]
|
||||
length = 0.001
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath("Shots/ShotGlas1:position")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [Vector3(-0.3, 1.12, -0.8)]
|
||||
}
|
||||
tracks/1/type = "value"
|
||||
tracks/1/imported = false
|
||||
tracks/1/enabled = true
|
||||
tracks/1/path = NodePath("Shots/ShotGlas1:rotation")
|
||||
tracks/1/interp = 1
|
||||
tracks/1/loop_wrap = true
|
||||
tracks/1/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [Vector3(0, 0, 0)]
|
||||
}
|
||||
tracks/2/type = "value"
|
||||
tracks/2/imported = false
|
||||
tracks/2/enabled = true
|
||||
tracks/2/path = NodePath("Shots/ShotGlas2:position")
|
||||
tracks/2/interp = 1
|
||||
tracks/2/loop_wrap = true
|
||||
tracks/2/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [Vector3(0, 1.12, -0.8)]
|
||||
}
|
||||
tracks/3/type = "value"
|
||||
tracks/3/imported = false
|
||||
tracks/3/enabled = true
|
||||
tracks/3/path = NodePath("Shots/ShotGlas2:rotation")
|
||||
tracks/3/interp = 1
|
||||
tracks/3/loop_wrap = true
|
||||
tracks/3/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [Vector3(0, 0, 0)]
|
||||
}
|
||||
tracks/4/type = "value"
|
||||
tracks/4/imported = false
|
||||
tracks/4/enabled = true
|
||||
tracks/4/path = NodePath("Shots/ShotGlas3:position")
|
||||
tracks/4/interp = 1
|
||||
tracks/4/loop_wrap = true
|
||||
tracks/4/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [Vector3(0.3, 1.12, -0.8)]
|
||||
}
|
||||
tracks/5/type = "value"
|
||||
tracks/5/imported = false
|
||||
tracks/5/enabled = true
|
||||
tracks/5/path = NodePath("Shots/ShotGlas3:rotation")
|
||||
tracks/5/interp = 1
|
||||
tracks/5/loop_wrap = true
|
||||
tracks/5/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [Vector3(0, 0, 0)]
|
||||
}
|
||||
tracks/6/type = "value"
|
||||
tracks/6/imported = false
|
||||
tracks/6/enabled = true
|
||||
tracks/6/path = NodePath("Shots/healAudio:playing")
|
||||
tracks/6/interp = 1
|
||||
tracks/6/loop_wrap = true
|
||||
tracks/6/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [false]
|
||||
}
|
||||
|
||||
[sub_resource type="Animation" id="Animation_7ex5l"]
|
||||
resource_name = "drinkShot1"
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath("Shots/ShotGlas1:position")
|
||||
tracks/0/interp = 2
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0, 0.5),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 0,
|
||||
"values": [Vector3(-0.3, 1.12, -0.8), Vector3(0, 1.5, -1.1)]
|
||||
}
|
||||
tracks/1/type = "value"
|
||||
tracks/1/imported = false
|
||||
tracks/1/enabled = true
|
||||
tracks/1/path = NodePath("Shots/ShotGlas1:rotation")
|
||||
tracks/1/interp = 2
|
||||
tracks/1/loop_wrap = true
|
||||
tracks/1/keys = {
|
||||
"times": PackedFloat32Array(0, 0.5, 0.7),
|
||||
"transitions": PackedFloat32Array(1, 1, 1),
|
||||
"update": 0,
|
||||
"values": [Vector3(0, 0, 0), Vector3(0, 0, 0), Vector3(-0.523599, 0, 0)]
|
||||
}
|
||||
tracks/2/type = "method"
|
||||
tracks/2/imported = false
|
||||
tracks/2/enabled = true
|
||||
tracks/2/path = NodePath("Shots/ShotGlas1")
|
||||
tracks/2/interp = 1
|
||||
tracks/2/loop_wrap = true
|
||||
tracks/2/keys = {
|
||||
"times": PackedFloat32Array(1),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"values": [{
|
||||
"args": [],
|
||||
"method": &"queue_free"
|
||||
}]
|
||||
}
|
||||
tracks/3/type = "value"
|
||||
tracks/3/imported = false
|
||||
tracks/3/enabled = true
|
||||
tracks/3/path = NodePath("Shots/healAudio:playing")
|
||||
tracks/3/interp = 1
|
||||
tracks/3/loop_wrap = true
|
||||
tracks/3/keys = {
|
||||
"times": PackedFloat32Array(0.933333),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [true]
|
||||
}
|
||||
|
||||
[sub_resource type="Animation" id="Animation_f8hpl"]
|
||||
resource_name = "drinkShot2"
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath("Shots/ShotGlas2:position")
|
||||
tracks/0/interp = 2
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0, 0.5),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 0,
|
||||
"values": [Vector3(0, 1.12, -0.8), Vector3(0, 1.5, -1.1)]
|
||||
}
|
||||
tracks/1/type = "value"
|
||||
tracks/1/imported = false
|
||||
tracks/1/enabled = true
|
||||
tracks/1/path = NodePath("Shots/ShotGlas2:rotation")
|
||||
tracks/1/interp = 2
|
||||
tracks/1/loop_wrap = true
|
||||
tracks/1/keys = {
|
||||
"times": PackedFloat32Array(0, 0.5, 0.7),
|
||||
"transitions": PackedFloat32Array(1, 1, 1),
|
||||
"update": 0,
|
||||
"values": [Vector3(0, 0, 0), Vector3(0, 0, 0), Vector3(-0.523599, 0, 0)]
|
||||
}
|
||||
tracks/2/type = "method"
|
||||
tracks/2/imported = false
|
||||
tracks/2/enabled = true
|
||||
tracks/2/path = NodePath("Shots/ShotGlas2")
|
||||
tracks/2/interp = 1
|
||||
tracks/2/loop_wrap = true
|
||||
tracks/2/keys = {
|
||||
"times": PackedFloat32Array(1),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"values": [{
|
||||
"args": [],
|
||||
"method": &"queue_free"
|
||||
}]
|
||||
}
|
||||
tracks/3/type = "value"
|
||||
tracks/3/imported = false
|
||||
tracks/3/enabled = true
|
||||
tracks/3/path = NodePath("Shots/healAudio:playing")
|
||||
tracks/3/interp = 1
|
||||
tracks/3/loop_wrap = true
|
||||
tracks/3/keys = {
|
||||
"times": PackedFloat32Array(0.933333),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [true]
|
||||
}
|
||||
|
||||
[sub_resource type="Animation" id="Animation_bblvu"]
|
||||
resource_name = "drinkShot3"
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath("Shots/ShotGlas3:position")
|
||||
tracks/0/interp = 2
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0, 0.5),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 0,
|
||||
"values": [Vector3(0.3, 1.12, -0.8), Vector3(0, 1.5, -1.1)]
|
||||
}
|
||||
tracks/1/type = "value"
|
||||
tracks/1/imported = false
|
||||
tracks/1/enabled = true
|
||||
tracks/1/path = NodePath("Shots/ShotGlas3:rotation")
|
||||
tracks/1/interp = 2
|
||||
tracks/1/loop_wrap = true
|
||||
tracks/1/keys = {
|
||||
"times": PackedFloat32Array(0, 0.5, 0.7),
|
||||
"transitions": PackedFloat32Array(1, 1, 1),
|
||||
"update": 0,
|
||||
"values": [Vector3(0, 0, 0), Vector3(0, 0, 0), Vector3(-0.523599, 0, 0)]
|
||||
}
|
||||
tracks/2/type = "method"
|
||||
tracks/2/imported = false
|
||||
tracks/2/enabled = true
|
||||
tracks/2/path = NodePath("Shots/ShotGlas3")
|
||||
tracks/2/interp = 1
|
||||
tracks/2/loop_wrap = true
|
||||
tracks/2/keys = {
|
||||
"times": PackedFloat32Array(1),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"values": [{
|
||||
"args": [],
|
||||
"method": &"queue_free"
|
||||
}]
|
||||
}
|
||||
tracks/3/type = "value"
|
||||
tracks/3/imported = false
|
||||
tracks/3/enabled = true
|
||||
tracks/3/path = NodePath("Shots/healAudio:playing")
|
||||
tracks/3/interp = 1
|
||||
tracks/3/loop_wrap = true
|
||||
tracks/3/keys = {
|
||||
"times": PackedFloat32Array(0.933333),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [true]
|
||||
}
|
||||
|
||||
[sub_resource type="AnimationLibrary" id="AnimationLibrary_bblvu"]
|
||||
_data = {
|
||||
&"RESET": SubResource("Animation_bix7t"),
|
||||
&"drinkShot1": SubResource("Animation_7ex5l"),
|
||||
&"drinkShot2": SubResource("Animation_f8hpl"),
|
||||
&"drinkShot3": SubResource("Animation_bblvu")
|
||||
}
|
||||
|
||||
[sub_resource type="Animation" id="Animation_l884r"]
|
||||
length = 0.001
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath("../GunPositions/GunPosition1/DirectionalLight3D:visible")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [false]
|
||||
}
|
||||
|
||||
[sub_resource type="Animation" id="Animation_q52vl"]
|
||||
resource_name = "shoot"
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath("../GunPositions/GunPosition1/DirectionalLight3D:visible")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0, 0.05, 0.1),
|
||||
"transitions": PackedFloat32Array(1, 1, 1),
|
||||
"update": 0,
|
||||
"values": [false, true, false]
|
||||
}
|
||||
|
||||
[sub_resource type="AnimationLibrary" id="AnimationLibrary_f8hpl"]
|
||||
_data = {
|
||||
&"RESET": SubResource("Animation_l884r"),
|
||||
&"shoot": SubResource("Animation_q52vl")
|
||||
}
|
||||
|
||||
[node name="Character" type="Node3D"]
|
||||
script = ExtResource("1_cuyo6")
|
||||
|
||||
[node name="Sprite3D" type="Sprite3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.4, -1.2)
|
||||
shaded = true
|
||||
double_sided = false
|
||||
texture_filter = 0
|
||||
texture = ExtResource("2_bix7t")
|
||||
|
||||
[node name="Character" type="MeshInstance3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.4, -1.2)
|
||||
visible = false
|
||||
mesh = SubResource("PlaneMesh_mutn8")
|
||||
|
||||
[node name="Chair" type="CSGMesh3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.4, -1.2)
|
||||
visible = false
|
||||
mesh = SubResource("BoxMesh_cuyo6")
|
||||
|
||||
[node name="Shots" type="Node3D" parent="."]
|
||||
|
||||
[node name="ShotGlas3" parent="Shots" instance=ExtResource("3_mutn8")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.3, 1.1, -0.8)
|
||||
[node name="ShotGlas1" parent="Shots" instance=ExtResource("3_mutn8")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.3, 1.12, -0.8)
|
||||
|
||||
[node name="ShotGlas2" parent="Shots" instance=ExtResource("3_mutn8")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.1, -0.8)
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.12, -0.8)
|
||||
|
||||
[node name="ShotGlas" parent="Shots" instance=ExtResource("3_mutn8")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.3, 1.1, -0.8)
|
||||
[node name="ShotGlas3" parent="Shots" instance=ExtResource("3_mutn8")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.3, 1.12, -0.8)
|
||||
|
||||
[node name="shotAnimations" type="AnimationPlayer" parent="Shots"]
|
||||
root_node = NodePath("../..")
|
||||
libraries = {
|
||||
&"": SubResource("AnimationLibrary_bblvu")
|
||||
}
|
||||
|
||||
[node name="healAudio" type="AudioStreamPlayer" parent="Shots"]
|
||||
stream = ExtResource("5_q52vl")
|
||||
|
||||
[node name="gun" parent="." instance=ExtResource("4_fgi2k")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.3, 1.3, -1)
|
||||
|
||||
[node name="gunAnimations" type="AnimationPlayer" parent="gun"]
|
||||
libraries = {
|
||||
&"": SubResource("AnimationLibrary_f8hpl")
|
||||
}
|
||||
|
||||
[node name="triggerAudio" type="AudioStreamPlayer3D" parent="gun"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.1, 0.1)
|
||||
stream = ExtResource("6_7ex5l")
|
||||
|
||||
[node name="HeadPosition" type="Marker3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.3, 1.4, -1.2)
|
||||
|
||||
[node name="GunPositions" type="Node3D" parent="."]
|
||||
|
||||
[node name="GunPosition1" type="Marker3D" parent="GunPositions"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.3, 1.3, -1)
|
||||
|
||||
[node name="DirectionalLight3D" type="OmniLight3D" parent="GunPositions/GunPosition1"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.1, 0.7)
|
||||
visible = false
|
||||
light_color = Color(1, 0.933333, 0, 1)
|
||||
light_energy = 2.0
|
||||
|
||||
[node name="shootAudio" type="AudioStreamPlayer3D" parent="GunPositions/GunPosition1"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.1, 0.5)
|
||||
stream = ExtResource("5_7ex5l")
|
||||
volume_db = -15.0
|
||||
|
||||
[node name="GunPosition2" type="Marker3D" parent="GunPositions"]
|
||||
transform = Transform3D(-0.173648, 0, 0.984808, 0, 1, 0, -0.984808, 0, -0.173648, -0.9, 1.42, -1)
|
||||
|
||||
[node name="GunPosition3" type="Marker3D" parent="GunPositions"]
|
||||
transform = Transform3D(-4.37114e-08, 1, 0, -1, -4.37114e-08, 0, 0, 0, 1, -0.0999999, 0.92, 3.72529e-08)
|
||||
|
||||
[node name="GunPosition4" type="Marker3D" parent="GunPositions"]
|
||||
transform = Transform3D(0.839491, 0.460136, 0.289014, -0.37369, 0.875034, -0.307686, -0.394475, 0.150298, 0.906531, 0.3, 1.3, -1.2)
|
||||
|
||||
[node name="GunPosition5" type="Marker3D" parent="GunPositions"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5.96046e-08, 0.82, 0.2)
|
||||
|
||||
[node name="cameraRottion" type="Node3D" parent="."]
|
||||
transform = Transform3D(-1, 0, 8.74228e-08, 0, 1, 0, -8.74228e-08, 0, -1, 0, 0, 0)
|
||||
|
||||
[node name="gameNameLabel" type="Label3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2, -1.2)
|
||||
visible = false
|
||||
text = "asdasd"
|
||||
font = ExtResource("8_bblvu")
|
||||
|
||||
[connection signal="current_animation_changed" from="Shots/shotAnimations" to="." method="_on_shot_animations_current_animation_changed"]
|
||||
|
|
|
|||
1
scenes/character/gun/gun.gd
Normal file
1
scenes/character/gun/gun.gd
Normal file
|
|
@ -0,0 +1 @@
|
|||
extends Node3D
|
||||
1
scenes/character/gun/gun.gd.uid
Normal file
1
scenes/character/gun/gun.gd.uid
Normal file
|
|
@ -0,0 +1 @@
|
|||
uid://bndvv6x2gr7t
|
||||
30
scenes/character/gun/gun.tscn
Normal file
30
scenes/character/gun/gun.tscn
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
[gd_scene load_steps=5 format=3 uid="uid://daj8ue8u3fjw6"]
|
||||
|
||||
[ext_resource type="Texture2D" uid="uid://du3d2gb1rri4t" path="res://icon.svg" id="1_gpxws"]
|
||||
[ext_resource type="Texture2D" uid="uid://xbypphjmwif4" path="res://assets/revolver/revolver.png" id="2_l135f"]
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_mutn8"]
|
||||
albedo_texture = ExtResource("1_gpxws")
|
||||
|
||||
[sub_resource type="QuadMesh" id="QuadMesh_fgi2k"]
|
||||
material = SubResource("StandardMaterial3D_mutn8")
|
||||
size = Vector2(0.6, 0.2)
|
||||
|
||||
[node name="gun" type="Node3D"]
|
||||
|
||||
[node name="MeshInstance3D" type="MeshInstance3D" parent="."]
|
||||
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 0, 0.1, 0.3)
|
||||
visible = false
|
||||
mesh = SubResource("QuadMesh_fgi2k")
|
||||
|
||||
[node name="MeshInstance3D2" type="MeshInstance3D" parent="."]
|
||||
transform = Transform3D(1.31134e-07, 0, 1, 0, 1, 0, -1, 0, 1.31134e-07, 0, 0.1, 0.3)
|
||||
visible = false
|
||||
mesh = SubResource("QuadMesh_fgi2k")
|
||||
|
||||
[node name="Sprite3D" type="Sprite3D" parent="."]
|
||||
transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -1.33227e-15, 0.1, 0.2)
|
||||
shaded = true
|
||||
texture_filter = 0
|
||||
render_priority = 2
|
||||
texture = ExtResource("2_l135f")
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
[gd_scene load_steps=4 format=3 uid="uid://bhr8ggg3suw46"]
|
||||
|
||||
[ext_resource type="Texture2D" uid="uid://du3d2gb1rri4t" path="res://icon.svg" id="1_k57fi"]
|
||||
[ext_resource type="Texture2D" uid="uid://bn4gu1d85c0nv" path="res://assets/shots/shot.png" id="1_k57fi"]
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_tfdbf"]
|
||||
albedo_texture = ExtResource("1_k57fi")
|
||||
|
|
@ -12,8 +12,16 @@ size = Vector2(0.2, 0.2)
|
|||
[node name="ShotGlas" type="Node3D"]
|
||||
|
||||
[node name="Front" type="MeshInstance3D" parent="."]
|
||||
visible = false
|
||||
mesh = SubResource("QuadMesh_ix4wg")
|
||||
|
||||
[node name="Back" type="MeshInstance3D" parent="."]
|
||||
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 0, 0)
|
||||
visible = false
|
||||
mesh = SubResource("QuadMesh_ix4wg")
|
||||
|
||||
[node name="Sprite3D" type="Sprite3D" parent="."]
|
||||
shaded = true
|
||||
texture_filter = 0
|
||||
render_priority = 2
|
||||
texture = ExtResource("1_k57fi")
|
||||
|
|
|
|||
|
|
@ -2,9 +2,14 @@ extends Node3D
|
|||
|
||||
@onready var characterScene = preload("res://scenes/character/character.tscn")
|
||||
|
||||
@onready var turnTimer: Timer = $TurnTimer
|
||||
@onready var shootPhaseTimer: Timer = $ShootPhaseTimer
|
||||
|
||||
@onready var camera = $cameraRottion/Camera3D
|
||||
@onready var charactersContainer = $CharactersContainer
|
||||
|
||||
var state: GLOBALS.GAMESTATE = GLOBALS.GAMESTATE.SETUP
|
||||
|
||||
var players: Array[Player]
|
||||
var selectablePlayers: Array[Player] = players.duplicate()
|
||||
var guns: Array[Gun]
|
||||
|
|
@ -15,39 +20,148 @@ var rotationInterval: float = 360 / playerCount
|
|||
var currentPlayer: Player
|
||||
var currentPlayerIndex: int = 0
|
||||
|
||||
func _ready() -> void:
|
||||
camera.itemSelected.connect(selectItem.bind())
|
||||
camera.nextTurn.connect(nextTurn.bind())
|
||||
addNewPlayer("Test 1")
|
||||
addNewPlayer("Test 2")
|
||||
players[1].bot = true
|
||||
players[0].addItem(StandardBullet.new())
|
||||
players[0].addItem(LuckyBullet.new())
|
||||
nextRound()
|
||||
nextTurn()
|
||||
var completedAnimations = 0
|
||||
|
||||
func nextTurn():
|
||||
func _process(delta: float) -> void:
|
||||
if not turnTimer.is_stopped():
|
||||
camera.updatTurnTime(turnTimer.time_left, turnTimer.wait_time)
|
||||
else:
|
||||
camera.resetTimer()
|
||||
|
||||
func _ready() -> void:
|
||||
setState(GLOBALS.GAMESTATE.SETUP)
|
||||
|
||||
func playerDied(_player: Player) -> void:
|
||||
selectablePlayers.erase(_player)
|
||||
camera.setSelectablePlayers(selectablePlayers)
|
||||
print("Player " + _player.getGameName() + " is dead")
|
||||
|
||||
## Give every player a random Gun
|
||||
func givePlayersRandomGun():
|
||||
randomize()
|
||||
var gunPool = guns.duplicate()
|
||||
for i in selectablePlayers.size():
|
||||
var newGun = gunPool.pick_random()
|
||||
selectablePlayers[i].giveGun(newGun)
|
||||
gunPool.erase(newGun)
|
||||
|
||||
## Gives the gun back to it's owner
|
||||
func givePlayersGun():
|
||||
for i in guns:
|
||||
i.mainOwner.giveGun(i)
|
||||
i.mainOwner.gun.resetMagazine()
|
||||
|
||||
## Sets the Game State
|
||||
func setState(_state: GLOBALS.GAMESTATE):
|
||||
state = _state
|
||||
next()
|
||||
camera.updateGameState(state)
|
||||
|
||||
## Calls the function thats fits the current game state
|
||||
func next():
|
||||
camera.updateUi()
|
||||
match state:
|
||||
GLOBALS.GAMESTATE.SETUP:
|
||||
setupGame()
|
||||
GLOBALS.GAMESTATE.ROUNDSTART:
|
||||
nextRound()
|
||||
GLOBALS.GAMESTATE.PLAYER:
|
||||
nextPlayer()
|
||||
GLOBALS.GAMESTATE.POOL:
|
||||
gunIntoPool()
|
||||
GLOBALS.GAMESTATE.AIM:
|
||||
aimGuns()
|
||||
GLOBALS.GAMESTATE.SHOOT:
|
||||
shootPlayers()
|
||||
GLOBALS.GAMESTATE.END:
|
||||
endGame()
|
||||
|
||||
func setupGame() -> void:
|
||||
playerCount = 2
|
||||
print("-- SETUP --")
|
||||
rotationInterval = 360 / playerCount
|
||||
for i in range(0, playerCount):
|
||||
addNewPlayer("Enemy") #addNewPlayer("Player " + str(i+1))
|
||||
players[0].gameName = "You"
|
||||
players[1].gameName = "Enemy"
|
||||
camera.itemSelected.connect(selectItem.bind())
|
||||
camera.nextTurn.connect(next.bind())
|
||||
|
||||
players[1].bot = true
|
||||
|
||||
players[1].setBotLogic(Bot.new(GLOBALS.BOTDIFFICULTY.EASY))
|
||||
|
||||
setState(GLOBALS.GAMESTATE.ROUNDSTART)
|
||||
|
||||
func nextRound() -> void:
|
||||
print("-- ROUNDSTART --")
|
||||
for i in players:
|
||||
i.addItem(StandardBullet.new())
|
||||
i.character.resetAim()
|
||||
i.character.loadGun()
|
||||
roundCount += 1
|
||||
camera.setRound(roundCount)
|
||||
currentPlayerIndex = 0
|
||||
setState(GLOBALS.GAMESTATE.PLAYER)
|
||||
|
||||
func nextPlayer():
|
||||
print("-- PLAYER --")
|
||||
if currentPlayerIndex + 1 > selectablePlayers.size():
|
||||
print("Shoot")
|
||||
currentPlayerIndex = 0
|
||||
givePlayersRandomGun()
|
||||
shootPlayers()
|
||||
turnTimer.stop()
|
||||
setState(GLOBALS.GAMESTATE.POOL)
|
||||
else:
|
||||
currentPlayer = selectablePlayers[currentPlayerIndex]
|
||||
currentPlayerIndex += 1
|
||||
#if not currentPlayer.bot:
|
||||
camera.setCurrentPlayer(currentPlayer)
|
||||
if currentPlayer.isBot():
|
||||
for i in currentPlayer.botLogic.chooseItems(currentPlayer.getItems(), currentPlayer.gun.magazineSize):
|
||||
currentPlayer.useItem(i)
|
||||
turnTimer.start(2)
|
||||
else:
|
||||
turnTimer.start(10)
|
||||
camera.displayPlayerStats(currentPlayer)
|
||||
|
||||
func gunIntoPool():
|
||||
print("-- POOL --")
|
||||
for i in selectablePlayers:
|
||||
i.character.addGunToPool()
|
||||
i.character.setAim(i.selectedPlayer)
|
||||
givePlayersRandomGun()
|
||||
|
||||
func aimGuns():
|
||||
print("-- AIM --")
|
||||
for i in selectablePlayers:
|
||||
i.character.aimGun()
|
||||
setState(GLOBALS.GAMESTATE.SHOOT)
|
||||
|
||||
func shootPlayers():
|
||||
print("-- SHOOT --")
|
||||
currentPlayerIndex = 0
|
||||
await get_tree().create_timer(1.0).timeout
|
||||
for i in selectablePlayers:
|
||||
i.shootAtSelectedPlayer()
|
||||
|
||||
func endGame() -> void:
|
||||
print("-- END --")
|
||||
print(selectablePlayers[0].getGameName() + " hat gewonnen")
|
||||
|
||||
|
||||
## Adds a new Player
|
||||
func addNewPlayer(_name: String):
|
||||
var newGun = Gun.new()
|
||||
guns.append(newGun)
|
||||
var newCharacter = addCharacter()
|
||||
var newPlayer = Player.new(_name, newGun, newCharacter)
|
||||
newCharacter.addGunToPoolFinished.connect(addGunToPoolFinished.bind())
|
||||
newCharacter.aimGunFinished.connect(aimGunFinished.bind())
|
||||
newCharacter.aimGunFinished.connect(shootGunFinished.bind())
|
||||
var newPlayer: Player = Player.new(_name, newGun, newCharacter)
|
||||
newPlayer.character.setGameName(newPlayer.getGameName())
|
||||
players.append(newPlayer)
|
||||
selectablePlayers.append(newPlayer)
|
||||
camera.selectablePlayers = selectablePlayers
|
||||
camera.setSelectablePlayers(selectablePlayers)
|
||||
newPlayer.dead.connect(playerDied.bind())
|
||||
|
||||
|
||||
## Adds a new Character to represent the Player Visualy
|
||||
func addCharacter() -> Character:
|
||||
var newCharacter = characterScene.instantiate()
|
||||
charactersContainer.add_child(newCharacter)
|
||||
|
|
@ -55,46 +169,49 @@ func addCharacter() -> Character:
|
|||
newCharacter.rotation_degrees.y += lastCharacterRotation
|
||||
return newCharacter
|
||||
|
||||
|
||||
func playerDied(_player: Player) -> void:
|
||||
selectablePlayers.erase(_player)
|
||||
camera.selectablePlayers = selectablePlayers
|
||||
print("Player " + _player.getGameName() + " is dead")
|
||||
|
||||
func givePlayersRandomGun():
|
||||
randomize()
|
||||
var gunPool = guns.duplicate()
|
||||
for i in guns.size():
|
||||
var newGun = gunPool.pick_random()
|
||||
selectablePlayers[i].giveGun(newGun)
|
||||
gunPool.erase(newGun)
|
||||
|
||||
func givePlayersGun():
|
||||
for i in guns:
|
||||
i.mainOwner.giveGun(i)
|
||||
i.mainOwner.gun.resetMagazine()
|
||||
|
||||
func nextRound() -> void:
|
||||
givePlayersGun()
|
||||
for i in players:
|
||||
i.addItem(StandardBullet.new())
|
||||
roundCount += 1
|
||||
camera.setRound(roundCount)
|
||||
currentPlayerIndex = 0
|
||||
|
||||
func shootPlayers():
|
||||
for i in selectablePlayers:
|
||||
i.shootAtSelectedPlayer()
|
||||
nextRound()
|
||||
nextTurn()
|
||||
|
||||
## Use Item. Called by Camera via Signal "itemSelected"
|
||||
func selectItem(_itemType: GLOBALS.ITEMTYPES):
|
||||
playerUseItemType(currentPlayer, _itemType)
|
||||
print(_itemType)
|
||||
|
||||
## Use item from player
|
||||
func playerUseItemType(_player: Player, _type: GLOBALS.ITEMTYPES) -> void:
|
||||
for i in currentPlayer.getItems():
|
||||
if i.type == _type:
|
||||
currentPlayer.useItem(i)
|
||||
break
|
||||
camera.updatePlayerStats()
|
||||
camera.displayPlayerStats(currentPlayer)
|
||||
|
||||
|
||||
func addGunToPoolFinished() -> void:
|
||||
completedAnimations += 1
|
||||
print(completedAnimations)
|
||||
if completedAnimations >= selectablePlayers.size():
|
||||
setState(GLOBALS.GAMESTATE.AIM)
|
||||
completedAnimations = 0
|
||||
|
||||
func aimGunFinished() -> void:
|
||||
completedAnimations += 1
|
||||
print(completedAnimations)
|
||||
if completedAnimations >= selectablePlayers.size():
|
||||
setState(GLOBALS.GAMESTATE.SHOOT)
|
||||
completedAnimations = 0
|
||||
|
||||
func shootGunFinished() -> void:
|
||||
completedAnimations += 1
|
||||
print(completedAnimations)
|
||||
if completedAnimations >= selectablePlayers.size():
|
||||
shootPhaseTimer.start()
|
||||
#setState(GLOBALS.GAMESTATE.ROUNDSTART)
|
||||
completedAnimations = 0
|
||||
|
||||
func _on_turn_timer_timeout() -> void:
|
||||
currentPlayer.selectPlayer(camera.getPlayerSelection())
|
||||
nextPlayer()
|
||||
|
||||
func _on_shoot_phase_timer_timeout() -> void:
|
||||
givePlayersGun()
|
||||
if selectablePlayers.size() <= 1:
|
||||
setState(GLOBALS.GAMESTATE.END)
|
||||
else:
|
||||
setState(GLOBALS.GAMESTATE.ROUNDSTART)
|
||||
|
|
|
|||
|
|
@ -1,25 +1,36 @@
|
|||
[gd_scene load_steps=4 format=3 uid="uid://y6lc82qrb1e2"]
|
||||
[gd_scene load_steps=5 format=3 uid="uid://y6lc82qrb1e2"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://ylobnrrhfy5j" path="res://scenes/game/game.gd" id="1_sul5r"]
|
||||
[ext_resource type="PackedScene" uid="uid://rch2yvsj0pdn" path="res://scenes/room/room.tscn" id="2_7h61r"]
|
||||
[ext_resource type="PackedScene" uid="uid://ct45lmxlrkhaj" path="res://scenes/camera/camera.tscn" id="4_kelw5"]
|
||||
[ext_resource type="AudioStream" uid="uid://dg3yo3eedvjun" path="res://assets/music/it's worth The Risk.wav" id="4_lfrn8"]
|
||||
|
||||
[node name="Game" type="Node3D"]
|
||||
script = ExtResource("1_sul5r")
|
||||
|
||||
[node name="Room" parent="." instance=ExtResource("2_7h61r")]
|
||||
|
||||
[node name="CharactersContainer" type="Node3D" parent="."]
|
||||
|
||||
[node name="light" type="Node3D" parent="."]
|
||||
|
||||
[node name="OmniLight3D" type="OmniLight3D" parent="light"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.52843, 0)
|
||||
omni_range = 10.5
|
||||
[node name="Room" parent="." instance=ExtResource("2_7h61r")]
|
||||
|
||||
[node name="cameraRottion" type="Node3D" parent="."]
|
||||
|
||||
[node name="Camera3D" parent="cameraRottion" instance=ExtResource("4_kelw5")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.51089, 1.46703)
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.5, 1.5)
|
||||
|
||||
[node name="OmniLight3D" type="OmniLight3D" parent="cameraRottion/Camera3D"]
|
||||
|
||||
[node name="TurnTimer" type="Timer" parent="."]
|
||||
wait_time = 10.0
|
||||
one_shot = true
|
||||
|
||||
[node name="ShootPhaseTimer" type="Timer" parent="."]
|
||||
wait_time = 2.0
|
||||
one_shot = true
|
||||
|
||||
[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."]
|
||||
stream = ExtResource("4_lfrn8")
|
||||
volume_db = -15.0
|
||||
autoplay = true
|
||||
|
||||
[connection signal="timeout" from="TurnTimer" to="." method="_on_turn_timer_timeout"]
|
||||
[connection signal="timeout" from="ShootPhaseTimer" to="." method="_on_shoot_phase_timer_timeout"]
|
||||
|
|
|
|||
11
scenes/mainMenu/mainMenu.gd
Normal file
11
scenes/mainMenu/mainMenu.gd
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
extends Node3D
|
||||
|
||||
@onready var game: PackedScene = preload("res://scenes/game/game.tscn")
|
||||
|
||||
@onready var animationPlayer: AnimationPlayer = $CanvasLayer/Control/AnimationPlayer
|
||||
|
||||
func _ready() -> void:
|
||||
animationPlayer.play("logoMovement")
|
||||
|
||||
func _on_button_pressed() -> void:
|
||||
get_tree().change_scene_to_packed(game)
|
||||
1
scenes/mainMenu/mainMenu.gd.uid
Normal file
1
scenes/mainMenu/mainMenu.gd.uid
Normal file
|
|
@ -0,0 +1 @@
|
|||
uid://y20mcd7ch2ga
|
||||
1137
scenes/mainMenu/mainMenu.tscn
Normal file
1137
scenes/mainMenu/mainMenu.tscn
Normal file
File diff suppressed because one or more lines are too long
|
|
@ -1,18 +1,16 @@
|
|||
[gd_scene load_steps=7 format=3 uid="uid://rch2yvsj0pdn"]
|
||||
[gd_scene load_steps=13 format=3 uid="uid://rch2yvsj0pdn"]
|
||||
|
||||
[ext_resource type="Texture2D" uid="uid://dv575ijvfdu7s" path="res://addons/kenney_prototype_textures/dark/texture_13.png" id="1_8xru0"]
|
||||
[ext_resource type="Texture2D" uid="uid://bjnpeb5s4paqi" path="res://assets/chandelier/chandelier.png" id="1_w7vtx"]
|
||||
[ext_resource type="Material" uid="uid://vxxgydkoi8qp" path="res://scenes/room/table.tres" id="2_kxljb"]
|
||||
|
||||
[sub_resource type="BoxMesh" id="BoxMesh_kxljb"]
|
||||
size = Vector3(10, 5, 10)
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_y1kpu"]
|
||||
albedo_texture = ExtResource("1_8xru0")
|
||||
uv1_triplanar = true
|
||||
[ext_resource type="Texture2D" uid="uid://dbo3rl06sx34j" path="res://assets/table/table.png" id="3_y1kpu"]
|
||||
[ext_resource type="Texture2D" uid="uid://bgr04066pmqsl" path="res://assets/room/wall.png" id="4_vaubn"]
|
||||
[ext_resource type="Texture2D" uid="uid://pe7t5j327khu" path="res://assets/room/floor.png" id="5_1w8vm"]
|
||||
[ext_resource type="Texture2D" uid="uid://cbvxqlgfr8fhn" path="res://bottle/bottle.png" id="7_gui0a"]
|
||||
|
||||
[sub_resource type="CylinderMesh" id="CylinderMesh_y1kpu"]
|
||||
top_radius = 1.0
|
||||
bottom_radius = 1.0
|
||||
top_radius = 0.8
|
||||
bottom_radius = 0.8
|
||||
height = 0.05
|
||||
|
||||
[sub_resource type="CylinderMesh" id="CylinderMesh_1w8vm"]
|
||||
|
|
@ -20,13 +18,39 @@ top_radius = 0.1
|
|||
bottom_radius = 0.1
|
||||
height = 1.0
|
||||
|
||||
[sub_resource type="BoxMesh" id="BoxMesh_kxljb"]
|
||||
size = Vector3(10, 4, 10)
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_y1kpu"]
|
||||
albedo_texture = ExtResource("1_8xru0")
|
||||
uv1_triplanar = true
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_vaubn"]
|
||||
albedo_color = Color(0.278431, 0.152941, 0, 1)
|
||||
|
||||
[node name="Room" type="Node3D"]
|
||||
|
||||
[node name="CSGMesh3D" type="CSGMesh3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.5, 0)
|
||||
flip_faces = true
|
||||
mesh = SubResource("BoxMesh_kxljb")
|
||||
material = SubResource("StandardMaterial3D_y1kpu")
|
||||
[node name="Sprite3D7" type="Sprite3D" parent="."]
|
||||
transform = Transform3D(0.707107, 0, 0.707107, 0, 1, 0, -0.707107, 0, 0.707107, 0, 2.9, 0)
|
||||
texture_filter = 0
|
||||
texture = ExtResource("1_w7vtx")
|
||||
|
||||
[node name="Sprite3D8" type="Sprite3D" parent="."]
|
||||
transform = Transform3D(-0.707107, 0, 0.707107, 0, 1, 0, -0.707107, 0, -0.707107, 0, 2.9, 0)
|
||||
texture_filter = 0
|
||||
texture = ExtResource("1_w7vtx")
|
||||
|
||||
[node name="Sprite3D9" type="Sprite3D" parent="."]
|
||||
transform = Transform3D(-0.707107, 0, -0.707107, 0, 1, 0, 0.707107, 0, -0.707107, 0, 2.9, 0)
|
||||
texture_filter = 0
|
||||
render_priority = 1
|
||||
texture = ExtResource("1_w7vtx")
|
||||
|
||||
[node name="Sprite3D10" type="Sprite3D" parent="."]
|
||||
transform = Transform3D(0.707107, 0, -0.707107, 0, 1, 0, 0.707107, 0, 0.707107, 0, 2.9, 0)
|
||||
texture_filter = 0
|
||||
render_priority = 1
|
||||
texture = ExtResource("1_w7vtx")
|
||||
|
||||
[node name="Table" type="Node3D" parent="."]
|
||||
|
||||
|
|
@ -37,5 +61,134 @@ material = ExtResource("2_kxljb")
|
|||
|
||||
[node name="CSGMesh3D" type="CSGMesh3D" parent="Table"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.000680447, 0.472962, -9.13143e-05)
|
||||
visible = false
|
||||
mesh = SubResource("CylinderMesh_1w8vm")
|
||||
material = ExtResource("2_kxljb")
|
||||
|
||||
[node name="Sprite3D" type="Sprite3D" parent="Table"]
|
||||
transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0, 1.03559, 0)
|
||||
shaded = true
|
||||
alpha_cut = 2
|
||||
texture_filter = 0
|
||||
render_priority = 1
|
||||
texture = ExtResource("3_y1kpu")
|
||||
|
||||
[node name="CSGMesh3D" type="CSGMesh3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2, 0)
|
||||
visible = false
|
||||
flip_faces = true
|
||||
mesh = SubResource("BoxMesh_kxljb")
|
||||
material = SubResource("StandardMaterial3D_y1kpu")
|
||||
|
||||
[node name="light" type="Node3D" parent="."]
|
||||
|
||||
[node name="OmniLight3D" type="OmniLight3D" parent="light"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.3, 0)
|
||||
light_energy = 0.8
|
||||
shadow_enabled = true
|
||||
omni_range = 13.0
|
||||
|
||||
[node name="Sprite3D" type="Sprite3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2, -5)
|
||||
shaded = true
|
||||
texture_filter = 0
|
||||
texture = ExtResource("4_vaubn")
|
||||
|
||||
[node name="Sprite3D2" type="Sprite3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2, 5)
|
||||
shaded = true
|
||||
texture_filter = 0
|
||||
texture = ExtResource("4_vaubn")
|
||||
|
||||
[node name="Sprite3D3" type="Sprite3D" parent="."]
|
||||
transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -5, 2, 0)
|
||||
shaded = true
|
||||
texture_filter = 0
|
||||
texture = ExtResource("4_vaubn")
|
||||
|
||||
[node name="Sprite3D4" type="Sprite3D" parent="."]
|
||||
transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 5, 2, 0)
|
||||
shaded = true
|
||||
texture_filter = 0
|
||||
texture = ExtResource("4_vaubn")
|
||||
|
||||
[node name="Sprite3D5" type="Sprite3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, 0, 0, 0)
|
||||
shaded = true
|
||||
texture_filter = 0
|
||||
texture = ExtResource("5_1w8vm")
|
||||
|
||||
[node name="Sprite3D6" type="Sprite3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, 0, 4, 0)
|
||||
shaded = true
|
||||
texture_filter = 0
|
||||
texture = ExtResource("5_1w8vm")
|
||||
|
||||
[node name="corners" type="Node3D" parent="."]
|
||||
|
||||
[node name="Corner" type="CSGBox3D" parent="corners"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5, 2, 5)
|
||||
size = Vector3(0.5, 4, 0.5)
|
||||
material = SubResource("StandardMaterial3D_vaubn")
|
||||
|
||||
[node name="Corner2" type="CSGBox3D" parent="corners"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5, 2, 5)
|
||||
size = Vector3(0.5, 4, 0.5)
|
||||
material = SubResource("StandardMaterial3D_vaubn")
|
||||
|
||||
[node name="Corner3" type="CSGBox3D" parent="corners"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5, 2, -5)
|
||||
size = Vector3(0.5, 4, 0.5)
|
||||
material = SubResource("StandardMaterial3D_vaubn")
|
||||
|
||||
[node name="Corner4" type="CSGBox3D" parent="corners"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5, 2, -5)
|
||||
size = Vector3(0.5, 4, 0.5)
|
||||
material = SubResource("StandardMaterial3D_vaubn")
|
||||
|
||||
[node name="Corner5" type="CSGBox3D" parent="corners"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5, 0, 0)
|
||||
size = Vector3(0.5, 0.5, 10)
|
||||
material = SubResource("StandardMaterial3D_vaubn")
|
||||
|
||||
[node name="Corner6" type="CSGBox3D" parent="corners"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5, 0, 0)
|
||||
size = Vector3(0.5, 0.5, 10)
|
||||
material = SubResource("StandardMaterial3D_vaubn")
|
||||
|
||||
[node name="Corner7" type="CSGBox3D" parent="corners"]
|
||||
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 2.18557e-07, 0, -5)
|
||||
size = Vector3(0.5, 0.5, 10)
|
||||
material = SubResource("StandardMaterial3D_vaubn")
|
||||
|
||||
[node name="Corner8" type="CSGBox3D" parent="corners"]
|
||||
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, -2.18557e-07, 0, 5)
|
||||
size = Vector3(0.5, 0.5, 10)
|
||||
material = SubResource("StandardMaterial3D_vaubn")
|
||||
|
||||
[node name="Corner9" type="CSGBox3D" parent="corners"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5, 4, 0)
|
||||
size = Vector3(0.5, 0.5, 10)
|
||||
material = SubResource("StandardMaterial3D_vaubn")
|
||||
|
||||
[node name="Corner10" type="CSGBox3D" parent="corners"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5, 4, 0)
|
||||
size = Vector3(0.5, 0.5, 10)
|
||||
material = SubResource("StandardMaterial3D_vaubn")
|
||||
|
||||
[node name="Corner11" type="CSGBox3D" parent="corners"]
|
||||
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 0, 4, -5)
|
||||
size = Vector3(0.5, 0.5, 10)
|
||||
material = SubResource("StandardMaterial3D_vaubn")
|
||||
|
||||
[node name="Corner12" type="CSGBox3D" parent="corners"]
|
||||
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, -2.18557e-07, 4, 5)
|
||||
size = Vector3(0.5, 0.5, 10)
|
||||
material = SubResource("StandardMaterial3D_vaubn")
|
||||
|
||||
[node name="Sprite3D11" type="Sprite3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.8, 1.2, 0)
|
||||
billboard = 2
|
||||
texture_filter = 0
|
||||
render_priority = 1
|
||||
texture = ExtResource("7_gui0a")
|
||||
|
|
|
|||
15
scenes/timer/timer.gd
Normal file
15
scenes/timer/timer.gd
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
extends TextureRect
|
||||
|
||||
@onready var animationPlayer = $AnimationPlayer
|
||||
@onready var pointer = $pointer
|
||||
|
||||
func reset():
|
||||
pointer.rotation_degrees = -90
|
||||
animationPlayer.stop()
|
||||
|
||||
func setTime(currentTime: float, endTime: float):
|
||||
var newRotation = (100/(endTime/(endTime-currentTime)))*3.60-90
|
||||
if newRotation >= 180 and not animationPlayer.is_playing():
|
||||
animationPlayer.play("warning")
|
||||
|
||||
pointer.rotation_degrees = newRotation
|
||||
1
scenes/timer/timer.gd.uid
Normal file
1
scenes/timer/timer.gd.uid
Normal file
|
|
@ -0,0 +1 @@
|
|||
uid://cqp55bs6du0mg
|
||||
91
scenes/timer/timer.tscn
Normal file
91
scenes/timer/timer.tscn
Normal file
|
|
@ -0,0 +1,91 @@
|
|||
[gd_scene load_steps=7 format=3 uid="uid://cft1rugofyhh3"]
|
||||
|
||||
[ext_resource type="Texture2D" uid="uid://ch02ekiy2xdm6" path="res://assets/timer/timer.png" id="1_ortn8"]
|
||||
[ext_resource type="Script" uid="uid://cqp55bs6du0mg" path="res://scenes/timer/timer.gd" id="2_a6ox2"]
|
||||
[ext_resource type="Texture2D" uid="uid://byi05kporqhoh" path="res://assets/timer/pointer.png" id="3_fvetu"]
|
||||
|
||||
[sub_resource type="Animation" id="Animation_a6ox2"]
|
||||
length = 0.001
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath(".:scale")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [Vector2(1, 1)]
|
||||
}
|
||||
tracks/1/type = "value"
|
||||
tracks/1/imported = false
|
||||
tracks/1/enabled = true
|
||||
tracks/1/path = NodePath(".:modulate")
|
||||
tracks/1/interp = 1
|
||||
tracks/1/loop_wrap = true
|
||||
tracks/1/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [Color(1, 1, 1, 1)]
|
||||
}
|
||||
|
||||
[sub_resource type="Animation" id="Animation_ortn8"]
|
||||
resource_name = "warning"
|
||||
loop_mode = 1
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath(".:scale")
|
||||
tracks/0/interp = 2
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0, 0.5, 1),
|
||||
"transitions": PackedFloat32Array(1, 1, 1),
|
||||
"update": 0,
|
||||
"values": [Vector2(1, 1), Vector2(1.2, 1.2), Vector2(1, 1)]
|
||||
}
|
||||
tracks/1/type = "value"
|
||||
tracks/1/imported = false
|
||||
tracks/1/enabled = true
|
||||
tracks/1/path = NodePath(".:modulate")
|
||||
tracks/1/interp = 1
|
||||
tracks/1/loop_wrap = true
|
||||
tracks/1/keys = {
|
||||
"times": PackedFloat32Array(0, 0.5, 1),
|
||||
"transitions": PackedFloat32Array(1, 1, 1),
|
||||
"update": 0,
|
||||
"values": [Color(1, 1, 1, 1), Color(1, 0.83, 0.832833, 1), Color(1, 1, 1, 1)]
|
||||
}
|
||||
|
||||
[sub_resource type="AnimationLibrary" id="AnimationLibrary_fvetu"]
|
||||
_data = {
|
||||
&"RESET": SubResource("Animation_a6ox2"),
|
||||
&"warning": SubResource("Animation_ortn8")
|
||||
}
|
||||
|
||||
[node name="Timer" type="TextureRect"]
|
||||
offset_left = -16.0
|
||||
offset_top = -28.0
|
||||
offset_right = 112.0
|
||||
offset_bottom = 100.0
|
||||
pivot_offset = Vector2(64, 64)
|
||||
texture = ExtResource("1_ortn8")
|
||||
script = ExtResource("2_a6ox2")
|
||||
|
||||
[node name="pointer" type="TextureRect" parent="."]
|
||||
layout_mode = 0
|
||||
offset_left = 64.0
|
||||
offset_top = 60.0
|
||||
offset_right = 104.0
|
||||
offset_bottom = 68.0
|
||||
rotation = -1.5708
|
||||
pivot_offset = Vector2(0, 4)
|
||||
texture = ExtResource("3_fvetu")
|
||||
expand_mode = 2
|
||||
|
||||
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
|
||||
libraries = {
|
||||
&"": SubResource("AnimationLibrary_fvetu")
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue