Renamed a bunch of player stuff to pawn stuff and implemented extensive work on getting single-address 'netplay' code working. Not sure if I've created issues with single player but in theory it should all transfer across as if the player is simply always the host.

This commit is contained in:
2026-01-08 07:15:20 -05:00
parent 9fe376e27e
commit ec02685065
69 changed files with 1525 additions and 708 deletions

View File

@@ -1,4 +1,4 @@
[gd_scene load_steps=36 format=3 uid="uid://bgocskbofewsr"]
[gd_scene load_steps=35 format=3 uid="uid://bgocskbofewsr"]
[ext_resource type="Script" uid="uid://bm50jiya4s3ei" path="res://scripts/hud.gd" id="1_jiiqi"]
[ext_resource type="Texture2D" uid="uid://dri0a20l6kpbj" path="res://visuals/images/icon.svg" id="1_k5de2"]
@@ -14,6 +14,7 @@
[ext_resource type="Script" uid="uid://bolw6n14ocxt3" path="res://scripts/healthbar.gd" id="4_iv5le"]
[ext_resource type="Texture2D" uid="uid://bcv3f38cib5xk" path="res://visuals/images/icons/mine.png" id="4_l86lr"]
[ext_resource type="Texture2D" uid="uid://cyuylbs0o72xk" path="res://visuals/images/icons/pitfall.png" id="5_aopqe"]
[ext_resource type="Texture2D" uid="uid://cge3xladgqjp6" path="res://visuals/materials/poison gradient.tres" id="5_jf5vi"]
[ext_resource type="Texture2D" uid="uid://hiwrcar5fnyk" path="res://visuals/images/icons/switch.png" id="6_e7ody"]
[ext_resource type="Texture2D" uid="uid://cccpeolat5pk5" path="res://visuals/images/icons/selector.png" id="7_bftxg"]
[ext_resource type="Texture2D" uid="uid://divrb0alxk567" path="res://visuals/images/icons/trap arrow.png" id="12_bftxg"]
@@ -32,13 +33,6 @@
[ext_resource type="Texture2D" uid="uid://bg0h4l3162pn5" path="res://visuals/images/icons/melee attack button.png" id="28_jf5vi"]
[ext_resource type="Texture2D" uid="uid://c64lykkbavdmi" path="res://visuals/images/icons/lit melee attack button.png" id="29_deun7"]
[sub_resource type="Gradient" id="Gradient_iv5le"]
offsets = PackedFloat32Array(0, 0.59079283, 1)
colors = PackedColorArray(0.33862844, 7.9006626e-05, 0.33938414, 1, 0, 0.36556464, 0, 1, 0.6879359, 1, 0, 1)
[sub_resource type="GradientTexture1D" id="GradientTexture1D_1ghxf"]
gradient = SubResource("Gradient_iv5le")
[sub_resource type="Gradient" id="Gradient_1ghxf"]
[sub_resource type="GradientTexture1D" id="GradientTexture1D_gomyg"]
@@ -99,7 +93,7 @@ nine_patch_stretch = true
texture_progress = ExtResource("3_vhta5")
script = ExtResource("4_iv5le")
healthy_gradient = ExtResource("3_vhta5")
poisoned_gradient = SubResource("GradientTexture1D_1ghxf")
poisoned_gradient = ExtResource("5_jf5vi")
[node name="PanelContainer2" type="PanelContainer" parent="Control/PanelContainer/HBoxContainer/VBoxContainer2"]
custom_minimum_size = Vector2(250, 100)
@@ -114,11 +108,15 @@ layout_mode = 2
texture = ExtResource("3_k0acs")
[node name="P2HealthBar" type="TextureProgressBar" parent="Control/PanelContainer/HBoxContainer/VBoxContainer2/PanelContainer2/VBoxContainer"]
unique_name_in_owner = true
custom_minimum_size = Vector2(0, 50)
layout_mode = 2
value = 100.0
nine_patch_stretch = true
texture_progress = ExtResource("3_vhta5")
script = ExtResource("4_iv5le")
healthy_gradient = ExtResource("3_vhta5")
poisoned_gradient = ExtResource("5_jf5vi")
[node name="VBoxContainer" type="VBoxContainer" parent="Control/PanelContainer/HBoxContainer"]
custom_minimum_size = Vector2(150, 0)

View File

@@ -1,9 +1,17 @@
[gd_scene load_steps=2 format=3 uid="uid://cqa0p34mbk6so"]
[gd_scene load_steps=3 format=3 uid="uid://cqa0p34mbk6so"]
[ext_resource type="Script" uid="uid://cymi1n4gavixy" path="res://scripts/level_camera.gd" id="1_ysaec"]
[ext_resource type="Script" uid="uid://cymi1n4gavixy" path="res://scripts/pawn_camera.gd" id="1_ysaec"]
[sub_resource type="SceneReplicationConfig" id="SceneReplicationConfig_ysaec"]
properties/0/path = NodePath(".:position")
properties/0/spawn = true
properties/0/replication_mode = 1
[node name="Camera" type="Camera3D"]
transform = Transform3D(1, 0, 0, 0, 0.49999997, 0.86602545, 0, -0.86602545, 0.49999997, 0, 0, 0)
projection = 1
size = 5.0
script = ExtResource("1_ysaec")
[node name="MultiplayerSynchronizer" type="MultiplayerSynchronizer" parent="."]
replication_config = SubResource("SceneReplicationConfig_ysaec")

View File

@@ -107,4 +107,4 @@ layout_mode = 2
text = "00.000"
horizontal_alignment = 1
[connection signal="timeout" from="Timer" to="." method="_on_timer_timeout"]
[connection signal="timeout" from="Timer" to="." method="_on_trap_failed"]

View File

@@ -1,32 +1,32 @@
[gd_scene load_steps=32 format=3 uid="uid://c8xf3qawk5c6u"]
[gd_scene load_steps=34 format=3 uid="uid://c8xf3qawk5c6u"]
[ext_resource type="Script" uid="uid://bcs7ygh6s3l35" path="res://scripts/player.gd" id="1_a5wj7"]
[ext_resource type="Script" uid="uid://wye3mat5y5yg" path="res://scripts/pawn_body.gd" id="2_ac3v1"]
[ext_resource type="Material" uid="uid://b8e84edfrnn1a" path="res://visuals/materials/pawn.tres" id="2_j3lta"]
[ext_resource type="Script" uid="uid://6w608y2grdqb" path="res://scripts/player_data.gd" id="2_sfa2f"]
[ext_resource type="AudioStream" uid="uid://b8ko5lwikj8ts" path="res://audio/sounds/Whoosh Blade 001.wav" id="3_6r6k1"]
[ext_resource type="PackedScene" uid="uid://cfunlbp8arnlh" path="res://templates/bullet.tscn" id="3_ghbft"]
[ext_resource type="AudioStream" uid="uid://cjrlb4qiy23sj" path="res://audio/sounds/impact_deep_thud_bounce_09.wav" id="3_sfa2f"]
[ext_resource type="AudioStream" uid="uid://dufoyvysi4pa1" path="res://audio/sounds/Whoosh Blade 002.wav" id="4_ac3v1"]
[ext_resource type="AudioStream" uid="uid://cfq0pu0qxgb6u" path="res://audio/sounds/134688__otbtechno__bike-bell.wav" id="4_xb5g3"]
[ext_resource type="Texture2D" uid="uid://dmnwtwu5v4voh" path="res://visuals/images/icons/detect mark.png" id="5_fwehh"]
[ext_resource type="AudioStream" uid="uid://boe6fidhl6ut5" path="res://audio/sounds/Whoosh Blade 003.wav" id="5_rclin"]
[ext_resource type="AudioStream" uid="uid://b3x0xqu8yrib4" path="res://audio/sounds/Whoosh Blade 004.wav" id="6_0pfk2"]
[ext_resource type="AudioStream" uid="uid://cmnibhyxpag0a" path="res://audio/sounds/BeepBeep_high.wav" id="6_wva0c"]
[ext_resource type="AudioStream" uid="uid://1m2yfje18spo" path="res://audio/sounds/Whoosh Blade 005.wav" id="7_fifli"]
[ext_resource type="AudioStream" uid="uid://c1j8hjmw45x86" path="res://audio/sounds/Hitech Shot A.wav" id="9_fifli"]
[ext_resource type="AudioStream" uid="uid://dgftxjb34d2ph" path="res://audio/sounds/Hitech Shot B.wav" id="10_ghbft"]
[ext_resource type="AudioStream" uid="uid://bguwdvatsf87l" path="res://audio/sounds/Hitech Shot C.wav" id="11_fuq8x"]
[ext_resource type="AudioStream" uid="uid://cw31ymbqgqcq2" path="res://audio/sounds/sci-fi_weapon_reload_03.wav" id="13_fuq8x"]
[ext_resource type="AudioStream" uid="uid://blbk74d50ldut" path="res://audio/sounds/sci-fi_forcefield_hum_loop_02.wav" id="16_yixtd"]
[ext_resource type="AudioStream" uid="uid://fqnkbcrbpi0s" path="res://audio/sounds/2 BROKEN - CK - BEAM Wood Ceiling Drop On Concrete.wav" id="17_vmejf"]
[ext_resource type="Script" uid="uid://bcs7ygh6s3l35" path="res://scripts/pawn_controller.gd" id="1_h27ep"]
[ext_resource type="Script" uid="uid://wye3mat5y5yg" path="res://scripts/pawn_body.gd" id="2_dn5ph"]
[ext_resource type="PackedScene" uid="uid://cfunlbp8arnlh" path="res://templates/bullet.tscn" id="3_pnc3q"]
[ext_resource type="Material" uid="uid://b8e84edfrnn1a" path="res://visuals/materials/pawn.tres" id="4_8twd3"]
[ext_resource type="AudioStream" uid="uid://b8ko5lwikj8ts" path="res://audio/sounds/Whoosh Blade 001.wav" id="5_77xwu"]
[ext_resource type="AudioStream" uid="uid://dufoyvysi4pa1" path="res://audio/sounds/Whoosh Blade 002.wav" id="6_fjlhr"]
[ext_resource type="AudioStream" uid="uid://boe6fidhl6ut5" path="res://audio/sounds/Whoosh Blade 003.wav" id="7_3ldvn"]
[ext_resource type="AudioStream" uid="uid://b3x0xqu8yrib4" path="res://audio/sounds/Whoosh Blade 004.wav" id="8_5bpar"]
[ext_resource type="AudioStream" uid="uid://1m2yfje18spo" path="res://audio/sounds/Whoosh Blade 005.wav" id="9_a4li3"]
[ext_resource type="AudioStream" uid="uid://c1j8hjmw45x86" path="res://audio/sounds/Hitech Shot A.wav" id="10_80lp4"]
[ext_resource type="AudioStream" uid="uid://dgftxjb34d2ph" path="res://audio/sounds/Hitech Shot B.wav" id="11_n15br"]
[ext_resource type="AudioStream" uid="uid://bguwdvatsf87l" path="res://audio/sounds/Hitech Shot C.wav" id="12_rtmky"]
[ext_resource type="AudioStream" uid="uid://cw31ymbqgqcq2" path="res://audio/sounds/sci-fi_weapon_reload_03.wav" id="13_bdfr7"]
[ext_resource type="Script" uid="uid://6w608y2grdqb" path="res://scripts/pawn_level_data.gd" id="14_ncd3b"]
[ext_resource type="AudioStream" uid="uid://cjrlb4qiy23sj" path="res://audio/sounds/impact_deep_thud_bounce_09.wav" id="15_rsl1q"]
[ext_resource type="AudioStream" uid="uid://blbk74d50ldut" path="res://audio/sounds/sci-fi_forcefield_hum_loop_02.wav" id="16_t8028"]
[ext_resource type="AudioStream" uid="uid://fqnkbcrbpi0s" path="res://audio/sounds/2 BROKEN - CK - BEAM Wood Ceiling Drop On Concrete.wav" id="17_o127k"]
[ext_resource type="AudioStream" uid="uid://cfq0pu0qxgb6u" path="res://audio/sounds/134688__otbtechno__bike-bell.wav" id="18_1x3g1"]
[ext_resource type="Texture2D" uid="uid://dmnwtwu5v4voh" path="res://visuals/images/icons/detect mark.png" id="19_5822g"]
[ext_resource type="AudioStream" uid="uid://cmnibhyxpag0a" path="res://audio/sounds/BeepBeep_high.wav" id="20_v7o58"]
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_y646j"]
next_pass = ExtResource("2_j3lta")
next_pass = ExtResource("4_8twd3")
albedo_color = Color(0.08468992, 0.08468992, 0.08468992, 1)
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_lnbra"]
next_pass = ExtResource("2_j3lta")
next_pass = ExtResource("4_8twd3")
albedo_color = Color(0, 1, 1, 1)
[sub_resource type="BoxShape3D" id="BoxShape3D_j3lta"]
@@ -38,6 +38,57 @@ emission_enabled = true
emission = Color(1, 0, 0, 1)
emission_energy_multiplier = 16.0
[sub_resource type="Animation" id="Animation_56qyi"]
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("MeleeArea/HitShape:disabled")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [true]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("MeleeArea/HitShape:position")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector3(0.6446533, 0.4691162, 0.6541977)]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("MeleeArea/HitShape:rotation")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector3(0, 0.76134753, 0)]
}
tracks/3/type = "value"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("MeleeArea/HitShape:visible")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [false]
}
[sub_resource type="Animation" id="Animation_ofpku"]
resource_name = "melee"
length = 0.25
@@ -104,57 +155,6 @@ tracks/4/keys = {
}]
}
[sub_resource type="Animation" id="Animation_56qyi"]
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("MeleeArea/HitShape:disabled")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [true]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("MeleeArea/HitShape:position")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector3(0.6446533, 0.4691162, 0.6541977)]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("MeleeArea/HitShape:rotation")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector3(0, 0.76134753, 0)]
}
tracks/3/type = "value"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("MeleeArea/HitShape:visible")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [false]
}
[sub_resource type="Animation" id="Animation_ac3v1"]
resource_name = "shoot"
length = 0.2
@@ -196,22 +196,30 @@ _data = {
[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_ghbft"]
streams_count = 5
stream_0/stream = ExtResource("3_6r6k1")
stream_1/stream = ExtResource("4_ac3v1")
stream_2/stream = ExtResource("5_rclin")
stream_3/stream = ExtResource("6_0pfk2")
stream_4/stream = ExtResource("7_fifli")
stream_0/stream = ExtResource("5_77xwu")
stream_1/stream = ExtResource("6_fjlhr")
stream_2/stream = ExtResource("7_3ldvn")
stream_3/stream = ExtResource("8_5bpar")
stream_4/stream = ExtResource("9_a4li3")
[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_rclin"]
streams_count = 3
stream_0/stream = ExtResource("9_fifli")
stream_1/stream = ExtResource("10_ghbft")
stream_2/stream = ExtResource("11_fuq8x")
stream_0/stream = ExtResource("10_80lp4")
stream_1/stream = ExtResource("11_n15br")
stream_2/stream = ExtResource("12_rtmky")
[sub_resource type="ViewportTexture" id="ViewportTexture_yixtd"]
viewport_path = NodePath("PawnBody/Subviewport")
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_a5wj7"]
radius = 0.3
height = 1.0
[sub_resource type="SceneReplicationConfig" id="SceneReplicationConfig_h27ep"]
properties/0/path = NodePath(".:position")
properties/0/spawn = true
properties/0/replication_mode = 1
[node name="Player" type="CharacterBody3D" groups=["combat"]]
physics_interpolation_mode = 1
collision_layer = 2
@@ -219,13 +227,13 @@ collision_mask = 5
floor_constant_speed = true
floor_max_angle = 0.93549645
floor_snap_length = 1.0
script = ExtResource("1_a5wj7")
script = ExtResource("1_h27ep")
speed = 3.0
[node name="PawnBody" type="Node3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.425, 0)
script = ExtResource("2_ac3v1")
projectile_template = ExtResource("3_ghbft")
script = ExtResource("2_dn5ph")
projectile_template = ExtResource("3_pnc3q")
[node name="Mesh" type="CSGBox3D" parent="PawnBody"]
size = Vector3(0.5, 0.85, 0.5)
@@ -276,29 +284,59 @@ stream = SubResource("AudioStreamRandomizer_rclin")
[node name="ReloadSound" type="AudioStreamPlayer3D" parent="PawnBody"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.425, 0)
stream = ExtResource("13_fuq8x")
stream = ExtResource("13_bdfr7")
[node name="Subviewport" type="SubViewport" parent="PawnBody"]
disable_3d = true
transparent_bg = true
handle_input_locally = false
gui_disable_input = true
size = Vector2i(150, 60)
[node name="VBoxContainer" type="VBoxContainer" parent="PawnBody/Subviewport"]
offset_right = 40.0
offset_bottom = 40.0
[node name="Label" type="Label" parent="PawnBody/Subviewport/VBoxContainer"]
layout_mode = 2
text = "Struggle to Escape!"
[node name="StruggleBar" type="ProgressBar" parent="PawnBody/Subviewport/VBoxContainer"]
unique_name_in_owner = true
custom_minimum_size = Vector2(0, 20)
layout_mode = 2
max_value = 5.0
value = 5.0
show_percentage = false
[node name="StruggleUI" type="Sprite3D" parent="PawnBody"]
unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.75085443, 0)
visible = false
billboard = 1
texture = SubResource("ViewportTexture_yixtd")
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.4665325, 0)
shape = SubResource("CapsuleShape3D_a5wj7")
[node name="Data" type="Node" parent="."]
script = ExtResource("2_sfa2f")
script = ExtResource("14_ncd3b")
[node name="TrapSound" type="AudioStreamPlayer3D" parent="."]
stream = ExtResource("3_sfa2f")
stream = ExtResource("15_rsl1q")
[node name="FlingSound" type="AudioStreamPlayer3D" parent="."]
stream = ExtResource("16_yixtd")
stream = ExtResource("16_t8028")
[node name="CrashSound" type="AudioStreamPlayer3D" parent="."]
stream = ExtResource("17_vmejf")
stream = ExtResource("17_o127k")
[node name="AudioListener3D" type="AudioListener3D" parent="."]
current = true
[node name="DetectSound" type="AudioStreamPlayer3D" parent="."]
stream = ExtResource("4_xb5g3")
stream = ExtResource("18_1x3g1")
volume_db = -80.0
max_db = -11.464
@@ -307,8 +345,11 @@ transform = Transform3D(0.75, 0, 0, 0, 0.75, 0, 0, 0, 0.75, 0, 1.2337646, 0)
visible = false
billboard = 1
no_depth_test = true
texture = ExtResource("5_fwehh")
texture = ExtResource("19_5822g")
[node name="DetonateSound" type="AudioStreamPlayer3D" parent="."]
stream = ExtResource("6_wva0c")
stream = ExtResource("20_v7o58")
max_db = -7.0
[node name="MultiplayerSynchronizer" type="MultiplayerSynchronizer" parent="."]
replication_config = SubResource("SceneReplicationConfig_h27ep")

186
templates/pawn_display.tscn Normal file
View File

@@ -0,0 +1,186 @@
[gd_scene load_steps=8 format=3 uid="uid://46rpw0rrd51m"]
[ext_resource type="Script" uid="uid://blljmwvft1g8m" path="res://scripts/pawn_display.gd" id="1_c4qnx"]
[ext_resource type="Texture2D" uid="uid://dri0a20l6kpbj" path="res://visuals/images/icon.svg" id="2_dvd7o"]
[ext_resource type="Script" uid="uid://qwyhu0gexeah" path="res://scripts/cs_trap_display.gd" id="3_ph4cm"]
[sub_resource type="Shader" id="Shader_fa52j"]
code = "shader_type canvas_item;
uniform sampler2D main_texture;
uniform float granularity : hint_range(5, 30) = 15.0;
uniform float opacity_limit;
float random (vec2 uv) {
return fract(sin(dot(uv.xy,
vec2(12.9898,78.233))) * 43758.5453123);
}
void vertex() {
// Called for every vertex the material is visible on.
}
void fragment() {
// Called for every pixel the material is visible on.
vec2 uv = UV;
float g = ( pow(granularity, 2));
uv = round((uv * g)) / g;
uv.y = TIME * uv.y + TIME * .05;
uv.x = 10.0 * TIME * uv.x + TIME * 1.0;
float val = random(uv);
float op = random(-uv) / val;
float alpha = 1.0;
if(op < opacity_limit){
alpha = 0.0;
}
vec4 color = vec4(val, val, val, alpha * COLOR.a);
COLOR = color;
}
//void light() {
// // Called for every pixel for every light affecting the CanvasItem.
// // Uncomment to replace the default light processing function with this one.
//}
"
[sub_resource type="ShaderMaterial" id="ShaderMaterial_w1hxv"]
shader = SubResource("Shader_fa52j")
shader_parameter/granularity = 20.0000007125
shader_parameter/opacity_limit = 0.0
[sub_resource type="Gradient" id="Gradient_ak2if"]
offsets = PackedFloat32Array(0)
colors = PackedColorArray(0, 0, 0, 1)
[sub_resource type="GradientTexture1D" id="GradientTexture1D_fa52j"]
gradient = SubResource("Gradient_ak2if")
width = 1
[node name="PawnDisplay" type="Panel"]
offset_left = 94.0
offset_top = 96.0
offset_right = 794.0
offset_bottom = 796.0
script = ExtResource("1_c4qnx")
[node name="Portrait" type="TextureRect" parent="."]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
texture = ExtResource("2_dvd7o")
expand_mode = 1
[node name="PortraitBlinder" type="TextureRect" parent="."]
material = SubResource("ShaderMaterial_w1hxv")
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
texture = SubResource("GradientTexture1D_fa52j")
expand_mode = 1
[node name="Control" type="Control" parent="."]
anchors_preset = 0
offset_left = 108.0
offset_top = 286.0
offset_right = 392.0
offset_bottom = 350.0
[node name="PawnName" type="Label" parent="Control"]
unique_name_in_owner = true
modulate = Color(0, 0.3254902, 1, 1)
layout_mode = 0
offset_left = 37.0
offset_top = 288.0
offset_right = 448.0
offset_bottom = 355.0
theme_override_font_sizes/font_size = 48
text = "NAME GOES HERE"
horizontal_alignment = 1
[node name="VBoxContainer" type="VBoxContainer" parent="Control"]
layout_mode = 1
anchors_preset = 7
anchor_left = 0.5
anchor_top = 1.0
anchor_right = 0.5
anchor_bottom = 1.0
offset_left = -39.0
offset_top = 281.0
offset_right = 245.0
offset_bottom = 394.0
grow_horizontal = 2
grow_vertical = 0
[node name="Panel" type="PanelContainer" parent="Control/VBoxContainer"]
layout_mode = 2
[node name="TrapContainer" type="HBoxContainer" parent="Control/VBoxContainer/Panel"]
unique_name_in_owner = true
layout_mode = 2
[node name="TextureRect" type="TextureRect" parent="Control/VBoxContainer/Panel/TrapContainer"]
custom_minimum_size = Vector2(92, 64)
layout_mode = 2
expand_mode = 1
script = ExtResource("3_ph4cm")
[node name="Label" type="Label" parent="Control/VBoxContainer/Panel/TrapContainer/TextureRect"]
layout_mode = 1
anchors_preset = 3
anchor_left = 1.0
anchor_top = 1.0
anchor_right = 1.0
anchor_bottom = 1.0
offset_left = -40.0
offset_top = -23.0
grow_horizontal = 0
grow_vertical = 0
text = "##"
horizontal_alignment = 2
[node name="TextureRect2" type="TextureRect" parent="Control/VBoxContainer/Panel/TrapContainer"]
custom_minimum_size = Vector2(92, 64)
layout_mode = 2
expand_mode = 1
script = ExtResource("3_ph4cm")
[node name="Label" type="Label" parent="Control/VBoxContainer/Panel/TrapContainer/TextureRect2"]
layout_mode = 1
anchors_preset = 3
anchor_left = 1.0
anchor_top = 1.0
anchor_right = 1.0
anchor_bottom = 1.0
offset_left = -40.0
offset_top = -23.0
grow_horizontal = 0
grow_vertical = 0
text = "##"
horizontal_alignment = 2
[node name="TextureRect3" type="TextureRect" parent="Control/VBoxContainer/Panel/TrapContainer"]
custom_minimum_size = Vector2(92, 64)
layout_mode = 2
expand_mode = 1
script = ExtResource("3_ph4cm")
[node name="Label" type="Label" parent="Control/VBoxContainer/Panel/TrapContainer/TextureRect3"]
layout_mode = 1
anchors_preset = 3
anchor_left = 1.0
anchor_top = 1.0
anchor_right = 1.0
anchor_bottom = 1.0
offset_left = -40.0
offset_top = -23.0
grow_horizontal = 0
grow_vertical = 0
text = "##"
horizontal_alignment = 2

View File

@@ -0,0 +1,84 @@
[gd_scene load_steps=8 format=3 uid="uid://bvypswoe6diaq"]
[ext_resource type="Texture2D" uid="uid://lttjm6mhx2nx" path="res://visuals/images/chselector.png" id="1_0mfxo"]
[ext_resource type="Script" uid="uid://cu7ho7656m6hp" path="res://scripts/pawn_selector.gd" id="2_xjj1m"]
[sub_resource type="Animation" id="Animation_5wdeo"]
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath(".:visible")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [true]
}
[sub_resource type="Animation" id="Animation_w1hxv"]
resource_name = "selected"
step = 0.0168
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath(".:visible")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [true]
}
[sub_resource type="Animation" id="Animation_fa52j"]
resource_name = "selecting"
length = 0.2667
loop_mode = 1
step = 0.0168
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath(".:visible")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.0001, 0.13333334, 0.26666668),
"transitions": PackedFloat32Array(1, 1, 1, 1),
"update": 1,
"values": [true, true, false, true]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_bqp8h"]
_data = {
&"RESET": SubResource("Animation_5wdeo"),
&"selected": SubResource("Animation_w1hxv"),
&"selecting": SubResource("Animation_fa52j")
}
[sub_resource type="SceneReplicationConfig" id="SceneReplicationConfig_0mfxo"]
properties/0/path = NodePath(".:player_id")
properties/0/spawn = true
properties/0/replication_mode = 1
properties/1/path = NodePath(".:modulate")
properties/1/spawn = true
properties/1/replication_mode = 1
[node name="Selector" type="TextureRect"]
texture_filter = 1
offset_right = 170.0
offset_bottom = 170.0
texture = ExtResource("1_0mfxo")
script = ExtResource("2_xjj1m")
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
libraries = {
&"": SubResource("AnimationLibrary_bqp8h")
}
autoplay = "selecting"
[node name="MultiplayerSynchronizer" type="MultiplayerSynchronizer" parent="."]
replication_config = SubResource("SceneReplicationConfig_0mfxo")

50
templates/pitfall.tscn Normal file
View File

@@ -0,0 +1,50 @@
[gd_scene load_steps=6 format=3 uid="uid://pxr0irlqarst"]
[ext_resource type="Script" uid="uid://c14c3ogbf7i33" path="res://scripts/pitfall.gd" id="1_pl1py"]
[ext_resource type="Texture2D" uid="uid://dvxj8a5dj535k" path="res://visuals/images/pitfall.png" id="2_4wfyu"]
[sub_resource type="Animation" id="Animation_eaqbt"]
resource_name = "expand"
length = 0.2
tracks/0/type = "scale_3d"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Sprite3D")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = PackedFloat32Array(0, 1, 0.1, 0.1, 0.1, 0.1, 1, 1.3, 1.3, 1.3, 0.16666667, 1, 1, 1, 1)
[sub_resource type="Animation" id="Animation_r4vne"]
length = 0.001
tracks/0/type = "scale_3d"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Sprite3D")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = PackedFloat32Array(0, 1, 1, 1, 1)
[sub_resource type="AnimationLibrary" id="AnimationLibrary_ywdt3"]
_data = {
&"RESET": SubResource("Animation_r4vne"),
&"expand": SubResource("Animation_eaqbt")
}
[node name="Pitfall" type="Node3D"]
script = ExtResource("1_pl1py")
[node name="Sprite3D" type="Sprite3D" parent="."]
transform = Transform3D(1, 0, 0, 0, -4.371139e-08, 1, 0, -1, -4.371139e-08, 0.5, 0.2, 0.5)
cast_shadow = 0
pixel_size = 0.0156
texture = ExtResource("2_4wfyu")
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
libraries = {
&"": SubResource("AnimationLibrary_ywdt3")
}
autoplay = "expand"
[node name="Timer" type="Timer" parent="."]
[connection signal="timeout" from="Timer" to="." method="_on_timer_timeout"]