1.0.0
This commit is contained in:
28
game/scripts/base/client/client.gd
Normal file
28
game/scripts/base/client/client.gd
Normal file
@@ -0,0 +1,28 @@
|
||||
#*****************************************************************************
|
||||
# @file client.gd
|
||||
# @author MakerYang(https://www.makeryang.com)
|
||||
# @statement 免费课程配套开源项目,任何形式收费均为盗版
|
||||
#*****************************************************************************
|
||||
extends Node
|
||||
|
||||
# 初始化自定义数据
|
||||
var client_peer:ENetMultiplayerPeer
|
||||
|
||||
# 初始化数据结构
|
||||
var data = {
|
||||
"client_id": 0
|
||||
}
|
||||
|
||||
# 创建客户端并返回客户端状态
|
||||
func create_client() -> int:
|
||||
client_peer = ENetMultiplayerPeer.new()
|
||||
var error = client_peer.create_client(Global.get_server_address(), Global.get_server_port())
|
||||
if error == OK:
|
||||
multiplayer.multiplayer_peer = client_peer
|
||||
# 更新客户端ID
|
||||
update_client_id(multiplayer.get_unique_id())
|
||||
return error
|
||||
|
||||
# 更新客户端ID
|
||||
func update_client_id(client_id: int) -> void:
|
||||
data["client_id"] = client_id
|
||||
62
game/scripts/base/global.gd
Normal file
62
game/scripts/base/global.gd
Normal file
@@ -0,0 +1,62 @@
|
||||
#*****************************************************************************
|
||||
# @file global.gd
|
||||
# @author MakerYang(https://www.makeryang.com)
|
||||
# @statement 免费课程配套开源项目,任何形式收费均为盗版
|
||||
#*****************************************************************************
|
||||
extends Node
|
||||
|
||||
# 初始化数据结构
|
||||
var data = {
|
||||
"varsion": "1.0.0",
|
||||
"mode": "",
|
||||
"server": {
|
||||
"port": 9000,
|
||||
"address": "game.makeryang.com"
|
||||
},
|
||||
"account": {
|
||||
"token": ""
|
||||
}
|
||||
}
|
||||
|
||||
func _ready() -> void:
|
||||
# 限制窗口最小尺寸
|
||||
DisplayServer.window_set_min_size(Vector2(1280, 720))
|
||||
# 服务器模式检测
|
||||
if OS.has_feature("dedicated_server"):
|
||||
print("[服务器模式]")
|
||||
data["mode"] = "server"
|
||||
var error = Server.create_server()
|
||||
if error != OK:
|
||||
printerr("[服务器创建失败]")
|
||||
else:
|
||||
print("[客户端模式]")
|
||||
data["mode"] = "client"
|
||||
Request.on_server_ping()
|
||||
var error = Client.create_client()
|
||||
if error == OK:
|
||||
print("[服务器连接成功]")
|
||||
else:
|
||||
printerr("[服务器连接失败]")
|
||||
|
||||
# 是否为服务器模式
|
||||
func is_server() -> bool:
|
||||
var server = false
|
||||
if data["mode"] == "server":
|
||||
server = true
|
||||
return server
|
||||
|
||||
# 获取服务器端口
|
||||
func get_server_port() -> int:
|
||||
return data["server"]["port"]
|
||||
|
||||
# 获取服务器IP
|
||||
func get_server_ip() -> String:
|
||||
return data["server"]["ip"]
|
||||
|
||||
# 获取服务器端口
|
||||
func get_server_address() -> String:
|
||||
return data["server"]["address"]
|
||||
|
||||
# 获取用户Token
|
||||
func get_account_token() -> String:
|
||||
return data["account"]["token"]
|
||||
29
game/scripts/base/server/server.gd
Normal file
29
game/scripts/base/server/server.gd
Normal file
@@ -0,0 +1,29 @@
|
||||
#*****************************************************************************
|
||||
# @file server.gd
|
||||
# @author MakerYang(https://www.makeryang.com)
|
||||
# @statement 免费课程配套开源项目,任何形式收费均为盗版
|
||||
#*****************************************************************************
|
||||
extends Node
|
||||
|
||||
# 初始化自定义数据
|
||||
var server_peer:ENetMultiplayerPeer
|
||||
|
||||
# 创建服务器并返回服务器状态
|
||||
func create_server() -> int:
|
||||
print("[创建服务器...]")
|
||||
server_peer = ENetMultiplayerPeer.new()
|
||||
var error = server_peer.create_server(Global.get_server_port())
|
||||
if error == OK:
|
||||
multiplayer.multiplayer_peer = server_peer
|
||||
multiplayer.peer_connected.connect(_on_peer_connected)
|
||||
multiplayer.peer_disconnected.connect(_on_peer_disconnected)
|
||||
print("[服务器创建成功]")
|
||||
return error
|
||||
|
||||
# 客户端连接服务器时回调函数
|
||||
func _on_peer_connected(id: int) -> void:
|
||||
print("[新的客户端连接 " + str(id) + "]")
|
||||
|
||||
# 客户端断开服务器时回调函数
|
||||
func _on_peer_disconnected(id: int) -> void:
|
||||
print("[客户端连接断开 " + str(id) + "]")
|
||||
43
game/scripts/base/utils/request.gd
Normal file
43
game/scripts/base/utils/request.gd
Normal file
@@ -0,0 +1,43 @@
|
||||
#*****************************************************************************
|
||||
# @file request.gd
|
||||
# @author MakerYang(https://www.makeryang.com)
|
||||
# @statement 免费课程配套开源项目,任何形式收费均为盗版
|
||||
#*****************************************************************************
|
||||
extends Node
|
||||
|
||||
# 初始化自定义数据
|
||||
var http_request:HTTPRequest = HTTPRequest.new()
|
||||
var http_callback = null
|
||||
|
||||
# 初始化数据结构
|
||||
var data = {
|
||||
"headers": [
|
||||
"Content-Type: application/json",
|
||||
"Account-Token: ",
|
||||
]
|
||||
}
|
||||
|
||||
# 请求服务器接口
|
||||
func on_server(path: String, method: int, parameter, callback) -> void:
|
||||
if !http_request.is_inside_tree():
|
||||
add_child(http_request)
|
||||
var parameter_json = JSON.stringify(parameter)
|
||||
data["headers"][1] = "Account-Token: " + Global.get_account_token()
|
||||
if http_callback and http_request.is_connected("request_completed", http_callback):
|
||||
http_request.request_completed.disconnect(http_callback)
|
||||
http_request.request_completed.connect(callback)
|
||||
http_callback = callback
|
||||
http_request.request("https://" + Global.get_server_address() + path, data["headers"], method, parameter_json)
|
||||
|
||||
# 测试服务器接口
|
||||
func on_server_ping() -> void:
|
||||
on_server("/ping", HTTPClient.METHOD_GET, {}, func(_result, code, _headers, body):
|
||||
if code == 200:
|
||||
var response = JSON.parse_string(body.get_string_from_utf8())
|
||||
if response["code"] == 0:
|
||||
print("[服务器接口:/ping]", JSON.stringify(response))
|
||||
else:
|
||||
printerr("[服务器接口:/ping]", "服务器接口通讯失败")
|
||||
else:
|
||||
printerr("[服务器接口:/ping]", "服务器接口通讯失败")
|
||||
)
|
||||
Reference in New Issue
Block a user