128 lines
3.1 KiB
GDScript3
128 lines
3.1 KiB
GDScript3
|
|
#*****************************************************************************
|
|||
|
|
# @author MakerYang
|
|||
|
|
# @site mir2.makeryang.com
|
|||
|
|
#*****************************************************************************
|
|||
|
|
|
|||
|
|
extends Node
|
|||
|
|
|
|||
|
|
# 数据结构
|
|||
|
|
var data = {
|
|||
|
|
"version": ProjectSettings.get_setting("application/config/version"),
|
|||
|
|
"mode": "",
|
|||
|
|
"environment": "development", # 可选择:production 或 development
|
|||
|
|
"config": {
|
|||
|
|
"resource": {
|
|||
|
|
"speed_scale": 8
|
|||
|
|
},
|
|||
|
|
"tilemap":{
|
|||
|
|
"grid_size": Vector2(48, 32)
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
"path": {
|
|||
|
|
"map": "res://scenes/world/maps/",
|
|||
|
|
"clothe": "res://scenes/world/player/clothes/",
|
|||
|
|
"weapon": "res://scenes/world/player/weapons/",
|
|||
|
|
"wing": "res://scenes/world/player/wings/"
|
|||
|
|
},
|
|||
|
|
"server": {
|
|||
|
|
"port": 7200,
|
|||
|
|
"address": "api.mir2.geekros.com",
|
|||
|
|
"socket": {
|
|||
|
|
"port": 7100,
|
|||
|
|
"address": "localhost"
|
|||
|
|
},
|
|||
|
|
"area": [],
|
|||
|
|
"role": []
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
func _ready() -> void:
|
|||
|
|
# 限制窗口最小尺寸
|
|||
|
|
DisplayServer.window_set_min_size(Vector2(1280, 720))
|
|||
|
|
# 服务器模式检测
|
|||
|
|
if OS.has_feature("dedicated_server"):
|
|||
|
|
print("[mode]:server")
|
|||
|
|
data["mode"] = "server"
|
|||
|
|
var error = Socket.on_connect_socket()
|
|||
|
|
if error == OK:
|
|||
|
|
print("[connect:socket]", "success")
|
|||
|
|
error = Server.create_server()
|
|||
|
|
if error == OK:
|
|||
|
|
print("[server:create]", "success")
|
|||
|
|
else:
|
|||
|
|
printerr("[server:create]", "error")
|
|||
|
|
else:
|
|||
|
|
printerr("[connect:socket]", "error")
|
|||
|
|
else:
|
|||
|
|
print("[mode]:client")
|
|||
|
|
data["mode"] = "client"
|
|||
|
|
|
|||
|
|
# 获取版本信息
|
|||
|
|
func get_version() -> String:
|
|||
|
|
return data["version"]
|
|||
|
|
|
|||
|
|
# 是否为服务器模式
|
|||
|
|
func is_server() -> bool:
|
|||
|
|
var server = false
|
|||
|
|
if data["mode"] == "server":
|
|||
|
|
server = true
|
|||
|
|
return server
|
|||
|
|
|
|||
|
|
# 获取服务器地址
|
|||
|
|
func get_server_address() -> String:
|
|||
|
|
return data["server"]["address"]
|
|||
|
|
|
|||
|
|
# 获取服务器端口
|
|||
|
|
func get_server_port() -> int:
|
|||
|
|
return data["server"]["port"]
|
|||
|
|
|
|||
|
|
# 获取服务器socket地址
|
|||
|
|
func get_server_socket_address() -> String:
|
|||
|
|
return data["server"]["socket"]["address"]
|
|||
|
|
|
|||
|
|
# 获取服务器socket端口
|
|||
|
|
func get_server_socket_port() -> int:
|
|||
|
|
return data["server"]["socket"]["port"]
|
|||
|
|
|
|||
|
|
# 获取游戏服务区
|
|||
|
|
func get_server_area() -> Array:
|
|||
|
|
return data["server"]["area"]
|
|||
|
|
|
|||
|
|
# 更新并返回游戏服务区
|
|||
|
|
func update_server_area(area: Array) -> Array:
|
|||
|
|
data["server"]["area"] = area
|
|||
|
|
return data["server"]["area"]
|
|||
|
|
|
|||
|
|
# 获取游戏人物角色
|
|||
|
|
func get_server_role() -> Array:
|
|||
|
|
return data["server"]["role"]
|
|||
|
|
|
|||
|
|
# 更新并返回游戏人物角色
|
|||
|
|
func update_server_role(role: Array) -> Array:
|
|||
|
|
data["server"]["role"] = role
|
|||
|
|
return data["server"]["role"]
|
|||
|
|
|
|||
|
|
# 获取地图资源根路径
|
|||
|
|
func get_map_root_path() -> String:
|
|||
|
|
return data["path"]["map"]
|
|||
|
|
|
|||
|
|
# 获取服饰资源根路径
|
|||
|
|
func get_clothe_root_path() -> String:
|
|||
|
|
return data["path"]["clothe"]
|
|||
|
|
|
|||
|
|
# 获取武器资源根路径
|
|||
|
|
func get_weapon_root_path() -> String:
|
|||
|
|
return data["path"]["weapon"]
|
|||
|
|
|
|||
|
|
# 获取翅膀资源根路径
|
|||
|
|
func get_wing_root_path() -> String:
|
|||
|
|
return data["path"]["wing"]
|
|||
|
|
|
|||
|
|
# 获取资源动画速度帧
|
|||
|
|
func get_resource_speed_scale() -> int:
|
|||
|
|
return data["config"]["resource"]["speed_scale"]
|
|||
|
|
|
|||
|
|
# 获取TileMap网格尺寸
|
|||
|
|
func get_map_grid_size() -> Vector2:
|
|||
|
|
return data["config"]["tilemap"]["grid_size"]
|