Files
tactical-shooter/addons/vest/ui/vest-ui.tscn
T
shawn b0c83af092 Fresh start: replace with naxIO/netfox-cs-sample foundation
Complete replacement of the tactical-shooter project with the
netfox-cs-sample (MIT) — a CS 1.6 inspired multiplayer FPS built
with Godot 4 and netfox.

## What's new
- Full CS-style gameplay: teams (T/CT), rounds, economy, buy menu
- 6 weapons: Knife, Glock, USP, AK-47, M4A1, AWP
- Bomb plant/defuse with 2 bombsites
- Flashbang & smoke grenades
- Proper netfox rollback netcode at 64 tick
- Network popup UI for host/join
- HUD, crosshair, round timer, scoreboard
- All netfox singletons registered as autoloads (works in exported builds)

## Architecture
- Listen-server (host from client, no dedicated server binary)
- Multiplayer-fps game lives at examples/multiplayer-fps/
- Netfox addons registered as autoloads for exported build compat
- Godot 4.7 with Forward+ renderer

## Removed
- Old headless-server architecture (client_main, server_main, player.gd, etc.)
- Custom netfox bootstrap with ENet fallback
- Old ChaffGames FPS template (2,420 lines, 844 KB)
- SimulationServer GDExtension stub
- Godot-jolt physics (netfox sample uses default Godot physics)
- Duplicate weapon_data.gd, anti_cheat.gd, round_manager.gd, etc.
- Server browser API Python venv (87 MB)
- test_range map and modular assets

## Preserved
- Git history
- Server config at config/default_server_config.cfg
- Windows export preset
- Build directory (gitignored)

Co-authored-by: naxIO <naxIO@users.noreply.github.com>
2026-07-02 20:55:20 -04:00

233 lines
7.4 KiB
Plaintext

[gd_scene load_steps=16 format=3 uid="uid://bp8g7j7774mwi"]
[ext_resource type="Script" path="res://addons/vest/ui/vest-ui.gd" id="1_cct3x"]
[ext_resource type="Texture2D" uid="uid://r4y6ihamgino" path="res://addons/vest/icons/run.svg" id="2_q3lni"]
[ext_resource type="PackedScene" uid="uid://lqudrgj64q3x" path="res://addons/vest/ui/results-panel.tscn" id="2_r41u0"]
[ext_resource type="Texture2D" uid="uid://dwhlyf5eyiect" path="res://addons/vest/icons/debug.svg" id="3_mcbjt"]
[ext_resource type="Texture2D" uid="uid://ctdipwc8sklwo" path="res://addons/vest/icons/clear.svg" id="4_rjham"]
[ext_resource type="Texture2D" uid="uid://dt75n55vr4kq0" path="res://addons/vest/icons/refresh.svg" id="5_k7hxl"]
[ext_resource type="Texture2D" uid="uid://bmqjme87oq3xx" path="res://addons/vest/icons/pass.svg" id="6_mef67"]
[ext_resource type="Texture2D" uid="uid://c711af0y1s2ct" path="res://addons/vest/icons/run-save.svg" id="6_wy3v7"]
[ext_resource type="Texture2D" uid="uid://bpyua1ic4p47h" path="res://addons/vest/icons/visibility.svg" id="6_xkbs5"]
[ext_resource type="Texture2D" uid="uid://sx0233b14cll" path="res://addons/vest/icons/expand.svg" id="9_hg4sy"]
[ext_resource type="Texture2D" uid="uid://cl6im4a1uj6nq" path="res://addons/vest/icons/search.svg" id="10_2uogy"]
[ext_resource type="Texture2D" uid="uid://csfyamlc15vp0" path="res://addons/vest/icons/spinner.svg" id="10_7lh4k"]
[ext_resource type="PackedScene" uid="uid://dbgbcglqh42ya" path="res://addons/vest/ui/visibility-popup.tscn" id="13_72bup"]
[sub_resource type="Animation" id="Animation_cyqg3"]
resource_name = "spin"
loop_mode = 1
step = 0.0416667
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Spinner:rotation")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 1),
"transitions": PackedFloat32Array(0.5, 1),
"update": 0,
"values": [0.0, 6.28319]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_ed1ow"]
_data = {
"spin": SubResource("Animation_cyqg3")
}
[node name="Vest UI" type="Control"]
custom_minimum_size = Vector2(0, 144)
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
script = ExtResource("1_cct3x")
[node name="VBoxContainer" type="VBoxContainer" parent="."]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
size_flags_horizontal = 3
[node name="Results Panel" parent="VBoxContainer" instance=ExtResource("2_r41u0")]
unique_name_in_owner = true
layout_mode = 2
[node name="Bottom Line" type="HBoxContainer" parent="VBoxContainer"]
layout_mode = 2
[node name="Buttons" type="HBoxContainer" parent="VBoxContainer/Bottom Line"]
layout_mode = 2
[node name="Run All Button" type="Button" parent="VBoxContainer/Bottom Line/Buttons"]
unique_name_in_owner = true
layout_mode = 2
tooltip_text = "Run tests"
text = " "
icon = ExtResource("2_q3lni")
icon_alignment = 1
expand_icon = true
[node name="Debug Button" type="Button" parent="VBoxContainer/Bottom Line/Buttons"]
unique_name_in_owner = true
layout_mode = 2
tooltip_text = "Debug tests"
text = " "
icon = ExtResource("3_mcbjt")
icon_alignment = 1
expand_icon = true
[node name="Clear Button" type="Button" parent="VBoxContainer/Bottom Line/Buttons"]
unique_name_in_owner = true
layout_mode = 2
tooltip_text = "Clear results"
text = " "
icon = ExtResource("4_rjham")
icon_alignment = 1
expand_icon = true
[node name="Run on Save Button" type="Button" parent="VBoxContainer/Bottom Line/Buttons"]
unique_name_in_owner = true
layout_mode = 2
tooltip_text = "Run on Save"
toggle_mode = true
text = " "
icon = ExtResource("6_wy3v7")
icon_alignment = 1
expand_icon = true
[node name="Filter Results Button" type="Button" parent="VBoxContainer/Bottom Line/Buttons"]
unique_name_in_owner = true
layout_mode = 2
tooltip_text = "Filter results"
text = " "
icon = ExtResource("6_xkbs5")
icon_alignment = 1
expand_icon = true
[node name="Visibility Popup" parent="VBoxContainer/Bottom Line/Buttons/Filter Results Button" instance=ExtResource("13_72bup")]
unique_name_in_owner = true
visible = false
[node name="Search Button" type="Button" parent="VBoxContainer/Bottom Line/Buttons"]
unique_name_in_owner = true
layout_mode = 2
text = " "
icon = ExtResource("10_2uogy")
icon_alignment = 1
expand_icon = true
[node name="Search Input" type="LineEdit" parent="VBoxContainer/Bottom Line/Buttons"]
unique_name_in_owner = true
visible = false
custom_minimum_size = Vector2(192, 0)
layout_mode = 2
placeholder_text = "Search..."
[node name="Expand Toggle Button" type="Button" parent="VBoxContainer/Bottom Line/Buttons"]
unique_name_in_owner = true
layout_mode = 2
text = " "
icon = ExtResource("9_hg4sy")
icon_alignment = 1
expand_icon = true
[node name="VSeparator3" type="VSeparator" parent="VBoxContainer/Bottom Line"]
layout_mode = 2
[node name="Run Summary" type="HBoxContainer" parent="VBoxContainer/Bottom Line"]
unique_name_in_owner = true
layout_mode = 2
size_flags_horizontal = 3
[node name="Test Summary Icon" type="TextureRect" parent="VBoxContainer/Bottom Line/Run Summary"]
unique_name_in_owner = true
visible = false
custom_minimum_size = Vector2(16, 16)
layout_mode = 2
size_flags_vertical = 4
texture = ExtResource("6_mef67")
expand_mode = 5
stretch_mode = 4
[node name="Tests Summary Label" type="Label" parent="VBoxContainer/Bottom Line/Run Summary"]
unique_name_in_owner = true
custom_minimum_size = Vector2(220, 0)
layout_mode = 2
[node name="Progress Indicator" type="HBoxContainer" parent="VBoxContainer/Bottom Line"]
unique_name_in_owner = true
visible = false
layout_mode = 2
size_flags_horizontal = 3
[node name="Control" type="Control" parent="VBoxContainer/Bottom Line/Progress Indicator"]
custom_minimum_size = Vector2(32, 0)
layout_mode = 2
[node name="Spinner" type="TextureRect" parent="VBoxContainer/Bottom Line/Progress Indicator/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 = -16.0
offset_top = -15.5
offset_right = 16.0
offset_bottom = 16.5
grow_horizontal = 2
grow_vertical = 2
rotation = 2.9185
pivot_offset = Vector2(16, 16)
texture = ExtResource("10_7lh4k")
expand_mode = 5
stretch_mode = 5
flip_h = true
[node name="AnimationPlayer" type="AnimationPlayer" parent="VBoxContainer/Bottom Line/Progress Indicator/Control"]
autoplay = "spin"
libraries = {
"": SubResource("AnimationLibrary_ed1ow")
}
[node name="Label" type="Label" parent="VBoxContainer/Bottom Line/Progress Indicator"]
layout_mode = 2
text = "Running tests..."
[node name="VSeparator2" type="VSeparator" parent="VBoxContainer/Bottom Line"]
layout_mode = 2
[node name="Glob" type="HBoxContainer" parent="VBoxContainer/Bottom Line"]
layout_mode = 2
size_flags_horizontal = 3
size_flags_stretch_ratio = 3.0
[node name="Glob Label" type="Label" parent="VBoxContainer/Bottom Line/Glob"]
layout_mode = 2
text = "Test glob:"
[node name="Glob LineEdit" type="LineEdit" parent="VBoxContainer/Bottom Line/Glob"]
unique_name_in_owner = true
layout_mode = 2
size_flags_horizontal = 3
text = "res://tests/*.test.gd"
[node name="VSeparator4" type="VSeparator" parent="VBoxContainer/Bottom Line"]
layout_mode = 2
[node name="Refresh Mixins Button" type="Button" parent="VBoxContainer/Bottom Line"]
unique_name_in_owner = true
layout_mode = 2
tooltip_text = "Refresh Mixins"
text = " "
icon = ExtResource("5_k7hxl")
icon_alignment = 1
expand_icon = true