b0c83af092
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>
52 lines
1.4 KiB
GDScript
52 lines
1.4 KiB
GDScript
extends RefCounted
|
|
class_name VestMessagePopup
|
|
|
|
var window: Window
|
|
var contents: TextEdit
|
|
var ok_button: Button
|
|
var reset_button: Button
|
|
|
|
var _text: String = ""
|
|
|
|
# For some reason, when instantiating in Godot 4.0.4, the script doesn't attach, even though it's
|
|
# added in the editor.
|
|
#
|
|
# This means that _ready doesn't run, and set_contents isn't recognized.
|
|
#
|
|
# The workaround is this weird pattern where the class is instantiated with a reference to the
|
|
# scriptless scene ( Window ), and takes over.
|
|
|
|
# NOTE: This class may be rewritten, as we went from supporting 4.0.4 to 4.1.4
|
|
|
|
static func of(text: String):
|
|
var popup_scene := (load("res://addons/vest/ui/message-popup.tscn") as PackedScene).instantiate(PackedScene.GEN_EDIT_STATE_MAIN)
|
|
var popup := VestMessagePopup.new(popup_scene)
|
|
|
|
popup.set_contents(text)
|
|
|
|
return popup
|
|
|
|
func set_contents(text: String):
|
|
_text = text
|
|
contents.text = _text
|
|
|
|
func reset():
|
|
contents.text = _text
|
|
|
|
func close():
|
|
window.queue_free()
|
|
free()
|
|
|
|
func _init(p_window: Window):
|
|
p_window.title = "vest - Message"
|
|
p_window.position = (DisplayServer.screen_get_size(-1) - p_window.size) / 2
|
|
|
|
window = p_window
|
|
ok_button = window.get_node("%OK Button")
|
|
reset_button = window.get_node("%Reset Button")
|
|
contents = window.get_node("%Contents")
|
|
|
|
window.close_requested.connect(func(): close())
|
|
ok_button.pressed.connect(func(): window.queue_free())
|
|
reset_button.pressed.connect(func(): reset())
|