mirror of
https://github.com/Rundll86/Dog-Lynx-And-HCN.git
synced 2026-05-29 23:41:54 +08:00
feat(多人游戏): 实现基础多人游戏功能
- 添加玩家位置同步功能 - 实现服务器和客户端连接管理 - 添加玩家名称输入和生成逻辑 - 完善多人游戏UI界面 - 移除单机模式下的预设玩家角色
This commit is contained in:
@@ -3,6 +3,7 @@ extends FullscreenPanelBase
|
||||
|
||||
@onready var diffEdit: HSlider = $"%diffEdit"
|
||||
@onready var startBtn: Button = $"%startBtn"
|
||||
@onready var startMultiplayerBtn: Button = $"%startMultiplayerBtn"
|
||||
@onready var levelShow: Label = $"%levelShow"
|
||||
@onready var hostInput: LineEdit = $"%hostInput"
|
||||
@onready var portInput: LineEdit = $"%portInput"
|
||||
@@ -11,15 +12,30 @@ extends FullscreenPanelBase
|
||||
@onready var maxPlayerInput: LineEdit = $"%maxPlayerInput"
|
||||
@onready var connectionState: Label = $"%connectionState"
|
||||
@onready var disconnectBtn: Button = $"%disconnectBtn"
|
||||
@onready var playerNameInput: LineEdit = $"%playerNameInput"
|
||||
@onready var serverConfig: VBoxContainer = $"%serverConfig"
|
||||
|
||||
func _ready():
|
||||
diffEdit.min_value = GameRule.difficultyRange.x
|
||||
diffEdit.max_value = GameRule.difficultyRange.y
|
||||
multiplayer.connection_failed.connect(
|
||||
func():
|
||||
setState(MultiplayerState.ConnectionState.DISCONNECTED)
|
||||
)
|
||||
multiplayer.peer_connected.connect(
|
||||
func():
|
||||
setState(MultiplayerState.ConnectionState.CONNECTED_CLIENT)
|
||||
)
|
||||
startBtn.pressed.connect(
|
||||
func():
|
||||
EntityBase.generatePlayer(playerNameInput.text)
|
||||
Wave.next()
|
||||
UIState.closeCurrentPanel()
|
||||
)
|
||||
startMultiplayerBtn.pressed.connect(
|
||||
func():
|
||||
pass
|
||||
)
|
||||
maxPlayerInput.text_changed.connect(
|
||||
func(text):
|
||||
MultiplayerState.maxPlayer = int(text)
|
||||
@@ -27,6 +43,16 @@ func _ready():
|
||||
launchBtn.pressed.connect(
|
||||
func():
|
||||
MultiplayerState.launchServer(int(portInput.text))
|
||||
setState(MultiplayerState.ConnectionState.CONNECTED_HOST)
|
||||
)
|
||||
connectBtn.pressed.connect(
|
||||
func():
|
||||
multiplayer.multiplayer_peer = MultiplayerState.connectClient(hostInput.text, int(portInput.text))
|
||||
setState(MultiplayerState.ConnectionState.CONNECTING)
|
||||
)
|
||||
disconnectBtn.pressed.connect(
|
||||
func():
|
||||
setState(MultiplayerState.ConnectionState.DISCONNECTED)
|
||||
)
|
||||
setState(MultiplayerState.ConnectionState.DISCONNECTED)
|
||||
func _physics_process(_delta):
|
||||
@@ -38,3 +64,5 @@ func setState(state: MultiplayerState.ConnectionState):
|
||||
connectionState.text = "状态:%s" % MultiplayerState.stateTextMap[state]
|
||||
connectionState.modulate = MultiplayerState.stateColorMap[state]
|
||||
disconnectBtn.disabled = not MultiplayerState.isConnected()
|
||||
startMultiplayerBtn.disabled = not MultiplayerState.isConnected()
|
||||
serverConfig.visible = MultiplayerState.state == MultiplayerState.ConnectionState.CONNECTED_HOST
|
||||
|
||||
Reference in New Issue
Block a user