
- Added a username entry box - Fixed raycasts hitting the player spawning the raycast - Fixed chicken model alignment - Fixed hitbox size - Extended raycast length
91 lines
2.7 KiB
GDScript
91 lines
2.7 KiB
GDScript
extends Node
|
|
|
|
@onready var mainMenu = $CanvasLayer/MainMenu
|
|
@onready var baseMenu = $CanvasLayer/MainMenu/MarginContainer/VBoxContainer/BaseMenu
|
|
@onready var hostMenu = $CanvasLayer/MainMenu/MarginContainer/VBoxContainer/Hosting
|
|
@onready var joinMenu = $CanvasLayer/MainMenu/MarginContainer/VBoxContainer/Joining
|
|
@onready var addressEntry = $CanvasLayer/MainMenu/MarginContainer/VBoxContainer/Joining/AddressEntry
|
|
@onready var username = $CanvasLayer/MainMenu/MarginContainer/VBoxContainer/BaseMenu/Username
|
|
@onready var hud = $CanvasLayer/HUD
|
|
@onready var healthbar = $CanvasLayer/HUD/HealthBar
|
|
@onready var upnpEnabled = $CanvasLayer/MainMenu/MarginContainer/VBoxContainer/Hosting/upnpCheck
|
|
|
|
const Player = preload("res://Prefabs/player.tscn")
|
|
const PORT = 25565
|
|
var enet_peer = ENetMultiplayerPeer.new()
|
|
|
|
@export var spawnpoint: Vector3 = Vector3(0, 6.376, 0)
|
|
|
|
func _unhandled_input(event):
|
|
if Input.is_action_just_pressed("quit"):
|
|
get_tree().quit()
|
|
|
|
func _on_join_pressed():
|
|
baseMenu.hide()
|
|
joinMenu.show()
|
|
|
|
func _on_back_pressed_2(): #For join menu
|
|
joinMenu.hide()
|
|
baseMenu.show()
|
|
|
|
func _on_host_pressed():
|
|
baseMenu.hide()
|
|
hostMenu.show()
|
|
|
|
func _on_back_pressed_1(): #For host menu
|
|
hostMenu.hide()
|
|
baseMenu.show()
|
|
|
|
func _on_host_button_pressed():
|
|
mainMenu.hide()
|
|
hud.show()
|
|
|
|
enet_peer.create_server(PORT)
|
|
multiplayer.multiplayer_peer = enet_peer
|
|
multiplayer.peer_connected.connect(addPlayer)
|
|
multiplayer.peer_disconnected.connect(removePlayer)
|
|
addPlayer(multiplayer.get_unique_id())
|
|
if upnpEnabled.button_pressed:
|
|
upnpSetup()
|
|
|
|
func _on_join_button_pressed():
|
|
if addressEntry.text == "": return
|
|
mainMenu.hide()
|
|
hud.show()
|
|
|
|
enet_peer.create_client(addressEntry.text, PORT)
|
|
multiplayer.multiplayer_peer = enet_peer
|
|
|
|
|
|
func addPlayer(peer_id):
|
|
var player = Player.instantiate()
|
|
player.name = str(peer_id)
|
|
player.position = spawnpoint
|
|
add_child(player)
|
|
if player.is_multiplayer_authority():
|
|
player.healthChanged.connect(updateHealthBar)
|
|
|
|
func removePlayer(peer_id):
|
|
var player = get_node_or_null(str(peer_id))
|
|
if player:
|
|
player.queue_free()
|
|
|
|
func updateHealthBar(health):
|
|
healthbar.value = health
|
|
|
|
func _on_multiplayer_spawner_spawned(node):
|
|
if node.is_multiplayer_authority():
|
|
node.healthChanged.connect(updateHealthBar)
|
|
|
|
func upnpSetup():
|
|
var upnp = UPNP.new()
|
|
var discoverResult = upnp.discover()
|
|
assert(discoverResult == UPNP.UPNP_RESULT_SUCCESS, "UPNP Discover Failed! Error %s" % discoverResult)
|
|
assert(upnp.get_gateway() and upnp.get_gateway().is_valid_gateway(), "UPNP Invalid Gateway!")
|
|
var mapResult = upnp.add_port_mapping(PORT)
|
|
assert(mapResult == UPNP.UPNP_RESULT_SUCCESS, "UPNP Port Mapping Failed! Error %s" % mapResult)
|
|
print("Success! Join Address: %s" % upnp.query_external_address())
|
|
|
|
func _on_button_pressed():
|
|
get_tree().quit()
|