3 Commits

Author SHA1 Message Date
da655ed9b7 Camera control fixes
All checks were successful
Create tag and build when new code gets to main / BumpTag (push) Successful in 8s
Create tag and build when new code gets to main / Export (push) Successful in 1m13s
2026-01-31 13:20:16 +01:00
f2dcd332f4 Basic guest list
All checks were successful
Create tag and build when new code gets to main / BumpTag (push) Successful in 8s
Create tag and build when new code gets to main / Export (push) Successful in 1m13s
2026-01-31 12:41:56 +01:00
6640ccace8 basic game manager
All checks were successful
Create tag and build when new code gets to main / BumpTag (push) Successful in 7s
Create tag and build when new code gets to main / Export (push) Successful in 1m11s
2026-01-31 11:48:13 +01:00
20 changed files with 673 additions and 45 deletions

View File

@@ -5,11 +5,11 @@ bus/1/name = &"Music"
bus/1/solo = false bus/1/solo = false
bus/1/mute = false bus/1/mute = false
bus/1/bypass_fx = false bus/1/bypass_fx = false
bus/1/volume_db = 0.0 bus/1/volume_db = -9.632782
bus/1/send = &"Master" bus/1/send = &"Master"
bus/2/name = &"SFX" bus/2/name = &"SFX"
bus/2/solo = false bus/2/solo = false
bus/2/mute = false bus/2/mute = false
bus/2/bypass_fx = false bus/2/bypass_fx = false
bus/2/volume_db = 0.0 bus/2/volume_db = -1.4192572
bus/2/send = &"Master" bus/2/send = &"Master"

View File

@@ -10,9 +10,12 @@
[resource] [resource]
script = ExtResource("2_cyb15") script = ExtResource("2_cyb15")
name = "Duchex"
chara_sprite = ExtResource("1_tppor") chara_sprite = ExtResource("1_tppor")
mask_eyes_location = Vector2(-45.45, -247.75) mask_eyes_position = Vector2(-65.16, -435.27)
mask_mouth_location = Vector2(-39.935, -169.95) mask_eyes_rotation = 0.029670597283903404
mask_mouth_position = Vector2(-20.035, -304.18)
mask_mouth_rotation = -0.17627825445142767
traits = Array[ExtResource("3_s53hh")]([ExtResource("4_tppor"), ExtResource("5_cyb15"), ExtResource("6_tppor"), ExtResource("7_03y2d")]) traits = Array[ExtResource("3_s53hh")]([ExtResource("4_tppor"), ExtResource("5_cyb15"), ExtResource("6_tppor"), ExtResource("7_03y2d")])
preferences = Dictionary[int, int]({ preferences = Dictionary[int, int]({
0: 0, 0: 0,

View File

@@ -10,9 +10,11 @@
[resource] [resource]
script = ExtResource("2_ce0p8") script = ExtResource("2_ce0p8")
name = "Duke"
chara_sprite = ExtResource("1_d1fpd") chara_sprite = ExtResource("1_d1fpd")
mask_eyes_location = Vector2(-45.45, -247.75) mask_eyes_position = Vector2(-87.17, -459.345)
mask_mouth_location = Vector2(-39.935, -169.95) mask_eyes_rotation = 0.11693705988361988
mask_mouth_position = Vector2(-60.07, -343.01)
traits = Array[ExtResource("3_n21sh")]([ExtResource("4_d1fpd"), ExtResource("5_12asi"), ExtResource("6_12asi"), ExtResource("7_d1fpd")]) traits = Array[ExtResource("3_n21sh")]([ExtResource("4_d1fpd"), ExtResource("5_12asi"), ExtResource("6_12asi"), ExtResource("7_d1fpd")])
preferences = Dictionary[int, int]({ preferences = Dictionary[int, int]({
5: 0, 5: 0,

View File

@@ -10,6 +10,7 @@
[resource] [resource]
script = ExtResource("3_vvog1") script = ExtResource("3_vvog1")
name = "King"
chara_sprite = ExtResource("1_k1rnw") chara_sprite = ExtResource("1_k1rnw")
mask_eyes_position = Vector2(-21.75, -274.015) mask_eyes_position = Vector2(-21.75, -274.015)
mask_eyes_rotation = 0.06981317007977318 mask_eyes_rotation = 0.06981317007977318

View File

@@ -11,9 +11,10 @@
[resource] [resource]
script = ExtResource("2_g8bvo") script = ExtResource("2_g8bvo")
name = "Queen"
chara_sprite = ExtResource("1_g8bvo") chara_sprite = ExtResource("1_g8bvo")
mask_eyes_location = Vector2(-45.45, -247.75) mask_eyes_position = Vector2(-58.06, -232.2)
mask_mouth_location = Vector2(-39.935, -169.95) mask_mouth_position = Vector2(-27.795, -167.255)
traits = Array[ExtResource("3_dkw07")]([ExtResource("9_aywjr"), ExtResource("8_j0xhd"), ExtResource("10_tw1u2"), ExtResource("8_d1164"), ExtResource("11_utmh4")]) traits = Array[ExtResource("3_dkw07")]([ExtResource("9_aywjr"), ExtResource("8_j0xhd"), ExtResource("10_tw1u2"), ExtResource("8_d1164"), ExtResource("11_utmh4")])
preferences = Dictionary[int, int]({ preferences = Dictionary[int, int]({
5: 2, 5: 2,

View File

@@ -0,0 +1,43 @@
extends Camera2D
@export_range(0.0, 100) var pan_speed: float = 1.0
var should_move_right = false
var should_move_left = false
# Called when the node enters the scene tree for the first time.
func _ready() -> void:
pass # Replace with function body.
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta: float) -> void:
var limit_left_at_center = limit_left + get_viewport_rect().size.x/2
var limit_right_at_center = limit_right - get_viewport_rect().size.x/2
if position.x < limit_left_at_center:
position.x = limit_left_at_center
if position.x > limit_right_at_center:
position.x = limit_right_at_center
if should_move_right:
position.x += pan_speed
if should_move_left and position.x > 0:
position.x -= pan_speed
func _on_pan_right_mouse_entered() -> void:
should_move_right = true
func _on_pan_right_mouse_exited() -> void:
should_move_right = false
func _on_pan_left_mouse_entered() -> void:
should_move_left = true
func _on_pan_left_mouse_exited() -> void:
should_move_left = false

View File

@@ -0,0 +1 @@
uid://cgctwciolfqe5

View File

@@ -11,6 +11,7 @@ enum Preference {
} }
@export_category("General") @export_category("General")
@export var name: String
@export var chara_sprite: Texture2D: @export var chara_sprite: Texture2D:
set(value): set(value):
chara_sprite = value chara_sprite = value

View File

@@ -6,16 +6,16 @@ class_name Character
set(new_resource): set(new_resource):
chara_resource = new_resource chara_resource = new_resource
_on_chara_resource_changed() _on_chara_resource_changed()
if chara_resource == null:
return
chara_resource.changed.connect(_on_chara_resource_changed)
@onready var face: Sprite2D = $Face @onready var face: Sprite2D = $Face
@onready var mask_eyes: Mask = $MaskEyes @onready var mask_eyes: Mask = $MaskEyes
@onready var mask_mouth: Mask = $MaskMouth @onready var mask_mouth: Mask = $MaskMouth
func _on_chara_resource_changed() -> void: func _on_chara_resource_changed() -> void:
face.texture = chara_resource.chara_sprite if chara_resource == null:
return
if face != null:
face.texture = chara_resource.chara_sprite
# Called when the node enters the scene tree for the first time. # Called when the node enters the scene tree for the first time.
@@ -32,7 +32,7 @@ func _process(delta: float) -> void:
func _game_process(delta: float) -> void: func _game_process(delta: float) -> void:
pass pass
func _engine_process(delta: float) -> void: func _engine_process(delta: float) -> void:

View File

@@ -1,8 +1,8 @@
[gd_scene format=3 uid="uid://bvpyqyftqhy45"] [gd_scene format=3 uid="uid://bvpyqyftqhy45"]
[ext_resource type="Script" uid="uid://dnt4l1eghm1gi" path="res://scenes/character/character.gd" id="1_cuyo6"] [ext_resource type="Script" uid="uid://dnt4l1eghm1gi" path="res://scenes/character/character.gd" id="1_cuyo6"]
[ext_resource type="Resource" uid="uid://da2ptl3f7h0ot" path="res://resources/characters/king.tres" id="2_fgi2k"] [ext_resource type="Resource" uid="uid://wq3g1j3l4gl6" path="res://resources/characters/queen.tres" id="2_fgi2k"]
[ext_resource type="Texture2D" uid="uid://c57s3oksagauh" path="res://assets/sprites/sprites by judas la carotte/sprite3 happy small.png" id="3_f8hpl"] [ext_resource type="Texture2D" uid="uid://b60pu6ukbobb2" path="res://assets/sprites/sprites by judas la carotte/sprite1 happy small.png" id="3_f8hpl"]
[ext_resource type="PackedScene" uid="uid://3jlukpb5hefb" path="res://scenes/mask/mask.tscn" id="3_mutn8"] [ext_resource type="PackedScene" uid="uid://3jlukpb5hefb" path="res://scenes/mask/mask.tscn" id="3_mutn8"]
[node name="Character" type="Node2D" unique_id=138741531] [node name="Character" type="Node2D" unique_id=138741531]
@@ -13,9 +13,7 @@ chara_resource = ExtResource("2_fgi2k")
texture = ExtResource("3_f8hpl") texture = ExtResource("3_f8hpl")
[node name="MaskMouth" parent="." unique_id=1087336064 instance=ExtResource("3_mutn8")] [node name="MaskMouth" parent="." unique_id=1087336064 instance=ExtResource("3_mutn8")]
position = Vector2(-7.63, -186.87) position = Vector2(-27.795, -167.255)
rotation = -0.18849556
[node name="MaskEyes" parent="." unique_id=428968220 instance=ExtResource("3_mutn8")] [node name="MaskEyes" parent="." unique_id=428968220 instance=ExtResource("3_mutn8")]
position = Vector2(-21.75, -274.015) position = Vector2(-58.06, -232.2)
rotation = 0.06981317

View File

@@ -1,22 +0,0 @@
[gd_scene format=3 uid="uid://cukfdjcnb5tm6"]
[ext_resource type="PackedScene" uid="uid://bvpyqyftqhy45" path="res://scenes/character/character.tscn" id="1_o5qli"]
[ext_resource type="Texture2D" uid="uid://cftllq6l7xclt" path="res://icon.svg" id="2_0wfyh"]
[node name="Main" type="Node2D" unique_id=875553242]
[node name="Character" parent="." unique_id=138741531 instance=ExtResource("1_o5qli")]
position = Vector2(933, 598)
scale = Vector2(0.5488516, 0.5501616)
[node name="Node2D" type="Node2D" parent="." unique_id=423016219]
[node name="Sprite2D2" type="Sprite2D" parent="." unique_id=897724120]
position = Vector2(437, 790.00006)
scale = Vector2(2.623044, 6.1738076)
texture = ExtResource("2_0wfyh")
[node name="Sprite2D" type="Sprite2D" parent="." unique_id=1584569522]
position = Vector2(846, 943)
scale = Vector2(9.480545, 1.8921106)
texture = ExtResource("2_0wfyh")

29
scenes/main/main.gd Normal file
View File

@@ -0,0 +1,29 @@
extends Node2D
@onready var animation_player: AnimationPlayer = $AnimationPlayer
@onready var sfx_player: AudioStreamPlayer = $SFXPlayer
var stream_player: AudioStreamPlaybackInteractive
# Called when the node enters the scene tree for the first time.
func _ready() -> void:
stream_player = sfx_player.get_stream_playback() as AudioStreamPlaybackInteractive
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta: float) -> void:
pass
func play_list_up_sfx() -> void:
stream_player.switch_to_clip_by_name("list_up")
func play_list_down_sfx() -> void:
stream_player.switch_to_clip_by_name("list_down")
func _on_guest_list_mouse_entered() -> void:
animation_player.play("guest_list_up")
func _on_guest_list_mouse_exited() -> void:
animation_player.play("guest_list_down")

1
scenes/main/main.gd.uid Normal file
View File

@@ -0,0 +1 @@
uid://bqrfmft2g1agc

250
scenes/main/main.tscn Normal file
View File

@@ -0,0 +1,250 @@
[gd_scene format=3 uid="uid://cukfdjcnb5tm6"]
[ext_resource type="Script" uid="uid://bqrfmft2g1agc" path="res://scenes/main/main.gd" id="1_7smn1"]
[ext_resource type="AudioStream" uid="uid://cv42wcg48s7pe" path="res://assets/audio/kenney_casino-audio/Audio/card-slide-1.ogg" id="2_m4h2d"]
[ext_resource type="PackedScene" uid="uid://bvpyqyftqhy45" path="res://scenes/character/character.tscn" id="2_raeie"]
[ext_resource type="Script" uid="uid://b1w0ocrgjkjen" path="res://scenes/managers/game_manager.gd" id="3_hxu8e"]
[ext_resource type="AudioStream" uid="uid://cfv8y85lm0rv1" path="res://assets/audio/kenney_casino-audio/Audio/card-slide-2.ogg" id="3_p8abn"]
[ext_resource type="Script" uid="uid://bwam50qxikpw4" path="res://scenes/character/chara_resource.gd" id="4_nvumn"]
[ext_resource type="AudioStream" uid="uid://b0eggikcow8xr" path="res://assets/audio/kenney_casino-audio/Audio/card-slide-3.ogg" id="4_s17dp"]
[ext_resource type="AudioStream" uid="uid://5n4xmrthp0em" path="res://assets/audio/kenney_casino-audio/Audio/card-slide-4.ogg" id="5_37hlw"]
[ext_resource type="Resource" uid="uid://c87odmn680x7" path="res://resources/characters/duchex.tres" id="5_ou6is"]
[ext_resource type="AudioStream" uid="uid://c0winrfat714w" path="res://assets/audio/kenney_casino-audio/Audio/card-slide-5.ogg" id="6_6llfj"]
[ext_resource type="Resource" uid="uid://gy4ygqrjj5ys" path="res://resources/characters/duke.tres" id="6_necax"]
[ext_resource type="AudioStream" uid="uid://cbew82s7f33tm" path="res://assets/audio/kenney_casino-audio/Audio/card-slide-6.ogg" id="7_0bhws"]
[ext_resource type="Resource" uid="uid://da2ptl3f7h0ot" path="res://resources/characters/king.tres" id="7_r4lks"]
[ext_resource type="AudioStream" uid="uid://dbwso01ip7fy3" path="res://assets/audio/kenney_casino-audio/Audio/card-slide-7.ogg" id="8_62atk"]
[ext_resource type="Resource" uid="uid://wq3g1j3l4gl6" path="res://resources/characters/queen.tres" id="8_pg34l"]
[ext_resource type="AudioStream" uid="uid://x6erlvj03nlm" path="res://assets/audio/kenney_casino-audio/Audio/card-slide-8.ogg" id="9_i7in8"]
[ext_resource type="Script" uid="uid://d26mv2xtvmpqt" path="res://scenes/mask/mask_resource.gd" id="9_m4h2d"]
[ext_resource type="AudioStream" uid="uid://vrw6idscfnei" path="res://assets/audio/kenney_casino-audio/Audio/card-shove-1.ogg" id="10_6llfj"]
[ext_resource type="Resource" uid="uid://cuf1ocb4px4m3" path="res://resources/masks/cat.tres" id="10_p8abn"]
[ext_resource type="AudioStream" uid="uid://b5ea6pr6bv85d" path="res://assets/audio/kenney_casino-audio/Audio/card-shove-2.ogg" id="11_0bhws"]
[ext_resource type="Resource" uid="uid://pdiaprcknftw" path="res://resources/masks/mute.tres" id="11_s17dp"]
[ext_resource type="Resource" uid="uid://cbcqtj8mxngfy" path="res://resources/masks/unracist.tres" id="12_37hlw"]
[ext_resource type="AudioStream" uid="uid://dpv07j0ia0ayl" path="res://assets/audio/kenney_casino-audio/Audio/card-shove-3.ogg" id="12_62atk"]
[ext_resource type="Texture2D" uid="uid://cftllq6l7xclt" path="res://icon.svg" id="13_6llfj"]
[ext_resource type="AudioStream" uid="uid://b7pe3ogc8rbvx" path="res://assets/audio/kenney_casino-audio/Audio/card-shove-4.ogg" id="13_i7in8"]
[ext_resource type="Script" uid="uid://cgctwciolfqe5" path="res://scenes/camera/camera_controller.gd" id="14_0bhws"]
[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_gkmcc"]
random_pitch = 1.122462
streams_count = 8
stream_0/stream = ExtResource("2_m4h2d")
stream_1/stream = ExtResource("3_p8abn")
stream_2/stream = ExtResource("4_s17dp")
stream_3/stream = ExtResource("5_37hlw")
stream_4/stream = ExtResource("6_6llfj")
stream_5/stream = ExtResource("7_0bhws")
stream_6/stream = ExtResource("8_62atk")
stream_7/stream = ExtResource("9_i7in8")
[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_7nlll"]
random_pitch = 1.122462
streams_count = 4
stream_0/stream = ExtResource("10_6llfj")
stream_1/stream = ExtResource("11_0bhws")
stream_2/stream = ExtResource("12_62atk")
stream_3/stream = ExtResource("13_i7in8")
[sub_resource type="AudioStreamInteractive" id="AudioStreamInteractive_7smn1"]
clip_count = 2
clip_0/name = &"list_up"
clip_0/stream = SubResource("AudioStreamRandomizer_gkmcc")
clip_0/auto_advance = 0
clip_1/name = &"list_down"
clip_1/stream = SubResource("AudioStreamRandomizer_7nlll")
clip_1/auto_advance = 0
initial_clip = 1
_transitions = {
Vector2i(-1, -1): {
"fade_beats": 1.0,
"fade_mode": 4,
"from_time": 0,
"to_time": 1
}
}
[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_trceg"]
radius = 198.0
height = 1044.0
[sub_resource type="RectangleShape2D" id="RectangleShape2D_ya4ey"]
size = Vector2(512, 1080)
[sub_resource type="Animation" id="Animation_7smn1"]
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("GuestList:position")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector2(-409, 523)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("GuestList:rotation")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [-0.16732943]
}
[sub_resource type="Animation" id="Animation_hxu8e"]
resource_name = "guest_list_down"
length = 0.5
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("GuestList: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": [Vector2(-388, 176), Vector2(-409, 523)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("GuestList:rotation")
tracks/1/interp = 2
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 0.5),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [0.0, -0.16732943]
}
tracks/2/type = "method"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath(".")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"values": [{
"args": [],
"method": &"play_list_down_sfx"
}]
}
[sub_resource type="Animation" id="Animation_raeie"]
resource_name = "guest_list_up"
length = 0.5
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("GuestList: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": [Vector2(-409, 523), Vector2(-388, 176)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("GuestList:rotation")
tracks/1/interp = 2
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 0.5),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [-0.16732943, 0.0]
}
tracks/2/type = "method"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath(".")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"values": [{
"args": [],
"method": &"play_list_up_sfx"
}]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_hxu8e"]
_data = {
&"RESET": SubResource("Animation_7smn1"),
&"guest_list_down": SubResource("Animation_hxu8e"),
&"guest_list_up": SubResource("Animation_raeie")
}
[node name="Main" type="Node2D" unique_id=875553242]
script = ExtResource("1_7smn1")
[node name="SFXPlayer" type="AudioStreamPlayer" parent="." unique_id=831453323]
stream = SubResource("AudioStreamInteractive_7smn1")
autoplay = true
bus = &"SFX"
[node name="Character" parent="." unique_id=138741531 instance=ExtResource("2_raeie")]
scale = Vector2(0.5488516, 0.5501616)
[node name="GameManager" type="Node" parent="." unique_id=528989100]
script = ExtResource("3_hxu8e")
character_roster = Array[ExtResource("4_nvumn")]([ExtResource("5_ou6is"), ExtResource("6_necax"), ExtResource("7_r4lks"), ExtResource("8_pg34l")])
mask_roster = Array[ExtResource("9_m4h2d")]([ExtResource("10_p8abn"), ExtResource("11_s17dp"), ExtResource("12_37hlw")])
[node name="GuestList" type="Node2D" parent="." unique_id=1314693850]
position = Vector2(-409, 523)
rotation = -0.16732943
[node name="Sprite2D" type="Sprite2D" parent="GuestList" unique_id=508689157]
texture = ExtResource("13_6llfj")
[node name="Area2D" type="Area2D" parent="GuestList" unique_id=416235822]
[node name="CollisionShape2D" type="CollisionShape2D" parent="GuestList/Area2D" unique_id=845691842]
shape = SubResource("CapsuleShape2D_trceg")
[node name="Camera2D" type="Camera2D" parent="." unique_id=1166192115]
limit_left = -960
limit_top = -540
limit_right = 4096
limit_bottom = 540
position_smoothing_enabled = true
script = ExtResource("14_0bhws")
pan_speed = 10.0
[node name="PanRight" type="Area2D" parent="Camera2D" unique_id=1684320772]
position = Vector2(960, 0)
[node name="CollisionShape2D" type="CollisionShape2D" parent="Camera2D/PanRight" unique_id=1733069282]
shape = SubResource("RectangleShape2D_ya4ey")
[node name="PanLeft" type="Area2D" parent="Camera2D" unique_id=1942262155]
position = Vector2(-960, 0)
[node name="CollisionShape2D" type="CollisionShape2D" parent="Camera2D/PanLeft" unique_id=77276628]
shape = SubResource("RectangleShape2D_ya4ey")
[node name="AnimationPlayer" type="AnimationPlayer" parent="." unique_id=1813843404]
libraries/ = SubResource("AnimationLibrary_hxu8e")
[connection signal="mouse_entered" from="GuestList/Area2D" to="." method="_on_guest_list_mouse_entered"]
[connection signal="mouse_exited" from="GuestList/Area2D" to="." method="_on_guest_list_mouse_exited"]
[connection signal="mouse_entered" from="Camera2D/PanRight" to="Camera2D" method="_on_pan_right_mouse_entered"]
[connection signal="mouse_exited" from="Camera2D/PanRight" to="Camera2D" method="_on_pan_right_mouse_exited"]
[connection signal="mouse_entered" from="Camera2D/PanLeft" to="Camera2D" method="_on_pan_left_mouse_entered"]
[connection signal="mouse_exited" from="Camera2D/PanLeft" to="Camera2D" method="_on_pan_left_mouse_exited"]

View File

@@ -0,0 +1,250 @@
[gd_scene format=3 uid="uid://cukfdjcnb5tm6"]
[ext_resource type="Script" uid="uid://bqrfmft2g1agc" path="res://scenes/main/main.gd" id="1_7smn1"]
[ext_resource type="AudioStream" uid="uid://cv42wcg48s7pe" path="res://assets/audio/kenney_casino-audio/Audio/card-slide-1.ogg" id="2_m4h2d"]
[ext_resource type="PackedScene" uid="uid://bvpyqyftqhy45" path="res://scenes/character/character.tscn" id="2_raeie"]
[ext_resource type="Script" uid="uid://b1w0ocrgjkjen" path="res://scenes/managers/game_manager.gd" id="3_hxu8e"]
[ext_resource type="AudioStream" uid="uid://cfv8y85lm0rv1" path="res://assets/audio/kenney_casino-audio/Audio/card-slide-2.ogg" id="3_p8abn"]
[ext_resource type="Script" uid="uid://bwam50qxikpw4" path="res://scenes/character/chara_resource.gd" id="4_nvumn"]
[ext_resource type="AudioStream" uid="uid://b0eggikcow8xr" path="res://assets/audio/kenney_casino-audio/Audio/card-slide-3.ogg" id="4_s17dp"]
[ext_resource type="AudioStream" uid="uid://5n4xmrthp0em" path="res://assets/audio/kenney_casino-audio/Audio/card-slide-4.ogg" id="5_37hlw"]
[ext_resource type="Resource" uid="uid://c87odmn680x7" path="res://resources/characters/duchex.tres" id="5_ou6is"]
[ext_resource type="AudioStream" uid="uid://c0winrfat714w" path="res://assets/audio/kenney_casino-audio/Audio/card-slide-5.ogg" id="6_6llfj"]
[ext_resource type="Resource" uid="uid://gy4ygqrjj5ys" path="res://resources/characters/duke.tres" id="6_necax"]
[ext_resource type="AudioStream" uid="uid://cbew82s7f33tm" path="res://assets/audio/kenney_casino-audio/Audio/card-slide-6.ogg" id="7_0bhws"]
[ext_resource type="Resource" uid="uid://da2ptl3f7h0ot" path="res://resources/characters/king.tres" id="7_r4lks"]
[ext_resource type="AudioStream" uid="uid://dbwso01ip7fy3" path="res://assets/audio/kenney_casino-audio/Audio/card-slide-7.ogg" id="8_62atk"]
[ext_resource type="Resource" uid="uid://wq3g1j3l4gl6" path="res://resources/characters/queen.tres" id="8_pg34l"]
[ext_resource type="AudioStream" uid="uid://x6erlvj03nlm" path="res://assets/audio/kenney_casino-audio/Audio/card-slide-8.ogg" id="9_i7in8"]
[ext_resource type="Script" uid="uid://d26mv2xtvmpqt" path="res://scenes/mask/mask_resource.gd" id="9_m4h2d"]
[ext_resource type="AudioStream" uid="uid://vrw6idscfnei" path="res://assets/audio/kenney_casino-audio/Audio/card-shove-1.ogg" id="10_6llfj"]
[ext_resource type="Resource" uid="uid://cuf1ocb4px4m3" path="res://resources/masks/cat.tres" id="10_p8abn"]
[ext_resource type="AudioStream" uid="uid://b5ea6pr6bv85d" path="res://assets/audio/kenney_casino-audio/Audio/card-shove-2.ogg" id="11_0bhws"]
[ext_resource type="Resource" uid="uid://pdiaprcknftw" path="res://resources/masks/mute.tres" id="11_s17dp"]
[ext_resource type="Resource" uid="uid://cbcqtj8mxngfy" path="res://resources/masks/unracist.tres" id="12_37hlw"]
[ext_resource type="AudioStream" uid="uid://dpv07j0ia0ayl" path="res://assets/audio/kenney_casino-audio/Audio/card-shove-3.ogg" id="12_62atk"]
[ext_resource type="Texture2D" uid="uid://cftllq6l7xclt" path="res://icon.svg" id="13_6llfj"]
[ext_resource type="AudioStream" uid="uid://b7pe3ogc8rbvx" path="res://assets/audio/kenney_casino-audio/Audio/card-shove-4.ogg" id="13_i7in8"]
[ext_resource type="Script" uid="uid://cgctwciolfqe5" path="res://scenes/camera/camera_controller.gd" id="14_0bhws"]
[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_gkmcc"]
random_pitch = 1.122462
streams_count = 8
stream_0/stream = ExtResource("2_m4h2d")
stream_1/stream = ExtResource("3_p8abn")
stream_2/stream = ExtResource("4_s17dp")
stream_3/stream = ExtResource("5_37hlw")
stream_4/stream = ExtResource("6_6llfj")
stream_5/stream = ExtResource("7_0bhws")
stream_6/stream = ExtResource("8_62atk")
stream_7/stream = ExtResource("9_i7in8")
[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_7nlll"]
random_pitch = 1.122462
streams_count = 4
stream_0/stream = ExtResource("10_6llfj")
stream_1/stream = ExtResource("11_0bhws")
stream_2/stream = ExtResource("12_62atk")
stream_3/stream = ExtResource("13_i7in8")
[sub_resource type="AudioStreamInteractive" id="AudioStreamInteractive_7smn1"]
clip_count = 2
clip_0/name = &"list_up"
clip_0/stream = SubResource("AudioStreamRandomizer_gkmcc")
clip_0/auto_advance = 0
clip_1/name = &"list_down"
clip_1/stream = SubResource("AudioStreamRandomizer_7nlll")
clip_1/auto_advance = 0
initial_clip = 1
_transitions = {
Vector2i(-1, -1): {
"fade_beats": 1.0,
"fade_mode": 4,
"from_time": 0,
"to_time": 1
}
}
[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_trceg"]
radius = 198.0
height = 1044.0
[sub_resource type="RectangleShape2D" id="RectangleShape2D_ya4ey"]
size = Vector2(512, 1080)
[sub_resource type="Animation" id="Animation_7smn1"]
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("GuestList:position")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector2(-409, 523)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("GuestList:rotation")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [-0.16732943]
}
[sub_resource type="Animation" id="Animation_hxu8e"]
resource_name = "guest_list_down"
length = 0.5
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("GuestList: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": [Vector2(-388, 176), Vector2(-409, 523)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("GuestList:rotation")
tracks/1/interp = 2
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 0.5),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [0.0, -0.16732943]
}
tracks/2/type = "method"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath(".")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"values": [{
"args": [],
"method": &"play_list_down_sfx"
}]
}
[sub_resource type="Animation" id="Animation_raeie"]
resource_name = "guest_list_up"
length = 0.5
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("GuestList: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": [Vector2(-409, 523), Vector2(-388, 176)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("GuestList:rotation")
tracks/1/interp = 2
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 0.5),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [-0.16732943, 0.0]
}
tracks/2/type = "method"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath(".")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"values": [{
"args": [],
"method": &"play_list_up_sfx"
}]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_hxu8e"]
_data = {
&"RESET": SubResource("Animation_7smn1"),
&"guest_list_down": SubResource("Animation_hxu8e"),
&"guest_list_up": SubResource("Animation_raeie")
}
[node name="Main" type="Node2D" unique_id=875553242]
script = ExtResource("1_7smn1")
[node name="SFXPlayer" type="AudioStreamPlayer" parent="." unique_id=831453323]
stream = SubResource("AudioStreamInteractive_7smn1")
autoplay = true
bus = &"SFX"
[node name="Character" parent="." unique_id=138741531 instance=ExtResource("2_raeie")]
scale = Vector2(0.5488516, 0.5501616)
[node name="GameManager" type="Node" parent="." unique_id=528989100]
script = ExtResource("3_hxu8e")
character_roster = Array[ExtResource("4_nvumn")]([ExtResource("5_ou6is"), ExtResource("6_necax"), ExtResource("7_r4lks"), ExtResource("8_pg34l")])
mask_roster = Array[ExtResource("9_m4h2d")]([ExtResource("10_p8abn"), ExtResource("11_s17dp"), ExtResource("12_37hlw")])
[node name="GuestList" type="Node2D" parent="." unique_id=1314693850]
position = Vector2(-409, 523)
rotation = -0.16732943
[node name="Sprite2D" type="Sprite2D" parent="GuestList" unique_id=508689157]
texture = ExtResource("13_6llfj")
[node name="Area2D" type="Area2D" parent="GuestList" unique_id=416235822]
[node name="CollisionShape2D" type="CollisionShape2D" parent="GuestList/Area2D" unique_id=845691842]
shape = SubResource("CapsuleShape2D_trceg")
[node name="Camera2D" type="Camera2D" parent="." unique_id=1166192115]
limit_left = -960
limit_top = -540
limit_right = 4096
limit_bottom = 540
position_smoothing_enabled = true
script = ExtResource("14_0bhws")
pan_speed = 10.0
[node name="PanRight" type="Area2D" parent="Camera2D" unique_id=1684320772]
position = Vector2(960, 0)
[node name="CollisionShape2D" type="CollisionShape2D" parent="Camera2D/PanRight" unique_id=1733069282]
shape = SubResource("RectangleShape2D_ya4ey")
[node name="PanLeft" type="Area2D" parent="Camera2D" unique_id=1942262155]
position = Vector2(-960, 0)
[node name="CollisionShape2D" type="CollisionShape2D" parent="Camera2D/PanLeft" unique_id=77276628]
shape = SubResource("RectangleShape2D_ya4ey")
[node name="AnimationPlayer" type="AnimationPlayer" parent="." unique_id=1813843404]
libraries/ = SubResource("AnimationLibrary_hxu8e")
[connection signal="mouse_entered" from="GuestList/Area2D" to="." method="_on_guest_list_mouse_entered"]
[connection signal="mouse_exited" from="GuestList/Area2D" to="." method="_on_guest_list_mouse_exited"]
[connection signal="mouse_entered" from="Camera2D/PanRight" to="Camera2D" method="_on_pan_right_mouse_entered"]
[connection signal="mouse_exited" from="Camera2D/PanRight" to="Camera2D" method="_on_pan_right_mouse_exited"]
[connection signal="mouse_entered" from="Camera2D/PanLeft" to="Camera2D" method="_on_pan_left_mouse_entered"]
[connection signal="mouse_exited" from="Camera2D/PanLeft" to="Camera2D" method="_on_pan_left_mouse_exited"]

View File

@@ -0,0 +1,55 @@
@tool
extends Node
class_name GameManager
@export_category("Complete rosters")
@export var character_roster: Array[CharacterResource]
@export var mask_roster: Array[MaskResource]
@export_category("Predetermined levels")
@export_group("Level 1")
@export var lvl1_guest_1: MaskedChara
@export var lvl1_guest_2: MaskedChara
@export_group("Level 2")
@export var lvl2_guest_1: MaskedChara
@export var lvl2_guest_2: MaskedChara
@export_category("Random levels")
@export var max_roster_size: int = 3;
@export_tool_button("Create chara roster") var create_roster_action = create_new_roster
var current_chara_roster: Array[MaskedChara]
enum GameState {
READY,
GUEST_REVIEW,
FINISHED
}
enum Levels {
LVL1,
LVL2,
RANDOM
}
var current_game_state = GameState.READY
var current_level = Levels.LVL1
func create_new_roster() -> void:
print("Create new roster")
var already_picked_charas: Array[String] = []
for i in range(max_roster_size):
var chara: CharacterResource = character_roster.pick_random()
var mask: MaskResource = mask_roster.pick_random()
var all_masks: Array[MaskResource] = [mask]
var masked_chara = MaskedChara.new(chara, all_masks)
current_chara_roster.append(masked_chara)
print("Added %s to roster" % chara.name)
# Called when the node enters the scene tree for the first time.
func _ready() -> void:
pass # Replace with function body.
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta: float) -> void:
pass

View File

@@ -0,0 +1 @@
uid://b1w0ocrgjkjen

View File

@@ -0,0 +1,13 @@
extends Resource
class_name MaskedChara
@export var character: CharacterResource
@export var masks: Array[MaskResource]
# Make sure that every parameter has a default value.
# Otherwise, there will be problems with creating and editing
# your resource via the inspector.
func _init(p_character: CharacterResource = CharacterResource.new(), p_mask: Array[MaskResource] = []):
character = p_character
masks = p_mask

View File

@@ -0,0 +1 @@
uid://b8peyg02l0mrn

View File

@@ -6,15 +6,15 @@ class_name Mask
set(new_resource): set(new_resource):
mask_resource = new_resource mask_resource = new_resource
_on_mask_resource_changed() _on_mask_resource_changed()
if mask_resource == null:
return
mask_resource.changed.connect(_on_mask_resource_changed)
@onready var mask_sprite: Sprite2D = $MaskSprite @onready var mask_sprite: Sprite2D = $MaskSprite
func _on_mask_resource_changed() -> void: func _on_mask_resource_changed() -> void:
mask_sprite.texture = mask_resource.mask_sprite if mask_resource == null:
return
if mask_sprite != null:
mask_sprite.texture = mask_resource.mask_sprite
# Called when the node enters the scene tree for the first time. # Called when the node enters the scene tree for the first time.
func _ready() -> void: func _ready() -> void: