This commit is contained in:
MakerYang
2024-08-06 18:30:21 +08:00
parent f363be1fc8
commit a902dd3de7
1870 changed files with 496402 additions and 6524 deletions

View File

@@ -0,0 +1,78 @@
#*****************************************************************************
# @author MakerYang
# @site mir2.makeryang.com
#*****************************************************************************
extends Control
# 场景资源
@onready var background_music: AudioStreamPlayer2D = $BackgroundMusic
@onready var login: Control = $Login
@onready var server: Control = $Server
@onready var role: Control = $Role
@onready var dialog: Control = $Dialog
@onready var dialog_message: Label = $Dialog/DialogMessage
@onready var version: Label = $Version
# 场景预加载资源
@onready var login_background_music: AudioStream = preload("res://assets/common/music/launch.wav")
@onready var server_background_music: AudioStream = preload("res://assets/common/music/launch_server.wav")
@onready var role_background_music: AudioStream = preload("res://assets/common/music/launch_role.wav")
@onready var world_scenes: PackedScene = preload("res://scenes/world/world.tscn")
func _ready() -> void:
version.text = "VERSION:" + Global.get_version()
background_music.stream = login_background_music
background_music.play()
login.visible = true
server.visible = false
role.visible = false
dialog.visible = false
if Global.is_server():
await get_tree().create_timer(0.5).timeout
_on_role_switch_world_signal()
func _on_role_switch_login_signal() -> void:
print("[launch:role:switch:login:signal]")
Account.update_token("")
background_music.stream = login_background_music
background_music.play()
login.visible = true
server.visible = false
role.visible = false
dialog.visible = false
func _on_login_switch_server_signal() -> void:
print("[launch:login:switch:server:signal]")
background_music.stream = server_background_music
background_music.play()
server.on_server()
login.visible = false
server.visible = true
role.visible = false
func _on_server_switch_role_signal(_token: String) -> void:
print("[launch:server:switch:role:signal]")
background_music.stream = role_background_music
background_music.play()
role.on_role(_token)
login.visible = false
server.visible = false
role.visible = true
func _on_role_switch_world_signal() -> void:
print("[launch:role:switch:world:signal]")
get_tree().change_scene_to_packed(world_scenes)
func on_dialog(message: String) -> void:
print("[launch:on_dialog]")
dialog_message.text = message
dialog.visible = true
var tween = get_tree().create_tween()
tween.set_parallel(true)
tween.tween_property(dialog, "visible", false, 0.5).set_delay(2)
func _on_background_music_finished() -> void:
print("[launch:background:music:finished]")
background_music.play()

View File

@@ -0,0 +1,230 @@
#*****************************************************************************
# @author MakerYang
# @site mir2.makeryang.com
#*****************************************************************************
extends Control
# 场景资源
@onready var button_pressed_music: AudioStreamPlayer2D = $ButtonPressedMusic
@onready var default: Control = $Default
@onready var default_email: LineEdit = $Default/DefaultEmail
@onready var default_password: LineEdit = $Default/DefaultPassword
@onready var default_submit: TextureButton = $Default/DefaultSubmit
@onready var default_register: TextureButton = $Default/DefaultRegister
@onready var default_change: TextureButton = $Default/DefaultChange
@onready var register: Control = $Register
@onready var register_email: LineEdit = $Register/RegisterEmail
@onready var register_code: LineEdit = $Register/RegisterCode
@onready var register_code_label: Label = $Register/RegisterCodeLabel
@onready var register_code_timer: Timer = $Register/RegisterCodeLabel/RegisterCodeTimer
@onready var register_code_submit: TextureButton = $Register/RegisterCodeLabel/RegisterCodeSubmit
@onready var register_password: LineEdit = $Register/RegisterPassword
@onready var register_name: LineEdit = $Register/RegisterName
@onready var register_number: LineEdit = $Register/RegisterNumber
@onready var register_question_a: LineEdit = $Register/RegisterQuestionA
@onready var register_answer_a: LineEdit = $Register/RegisterAnswerA
@onready var register_question_b: LineEdit = $Register/RegisterQuestionB
@onready var register_answer_b: LineEdit = $Register/RegisterAnswerB
@onready var register_confirm_submit: TextureButton = $Register/RegisterConfirmSubmit
@onready var register_cancel_submit: TextureButton = $Register/RegisterCancelSubmit
@onready var change: Control = $Change
@onready var change_email: LineEdit = $Change/ChangeEmail
@onready var change_password: LineEdit = $Change/ChangePassword
@onready var change_new_password: LineEdit = $Change/ChangeNewPassword
@onready var change_confirm_password: LineEdit = $Change/ChangeConfirmPassword
@onready var change_confirm_submit: TextureButton = $Change/ChangeConfirmSubmit
@onready var change_cancel_submit: TextureButton = $Change/ChangeCancelSubmit
# 场景信号
signal switch_server_signal()
func _ready() -> void:
default.visible = true
register.visible = false
change.visible = false
default_email.grab_focus()
func _process(_delta: float) -> void:
if register_code_submit.disabled:
register_code_label.text = "%d" % register_code_timer.time_left
# # 登录表单回车事件函数
func _on_default_password_text_submitted(text: String) -> void:
if text != "":
default_submit.emit_signal("pressed")
# 登录按钮事件函数
func _on_default_submit_pressed() -> void:
if !default_submit.disabled:
print("[launch:login:default:submit]")
_on_button_pressed_music()
if default_email.text == "" || default_password.text == "":
get_parent().on_dialog("登录信息不完整")
return
default_submit.disabled = true
Request.on_server("/game/account/mail/login?email=" + default_email.text + "&password=" + default_password.text, 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:
default_submit.disabled = false
get_parent().on_dialog(response.message)
return
Account.update_token(response.data.token)
_on_register_cancel_submit_pressed()
_on_change_cancel_submit_pressed()
default_email.text = ""
default_password.text = ""
default_submit.disabled = false
switch_server_signal.emit()
else:
default_submit.disabled = false
get_parent().on_dialog("账号登录失败")
)
# 注册按钮事件函数
func _on_default_register_pressed() -> void:
print("[launch:login:register]")
_on_button_pressed_music()
register.visible = true
# 获取验证码按钮事件函数
func _on_register_code_submit_pressed() -> void:
if !register_code_submit.disabled:
print("[launch:login:register:code:submit]")
_on_button_pressed_music()
if register_email.text == "":
get_parent().on_dialog("请填写登录邮箱")
return
var check = Utils.check_mail_format(register_email.text)
if !check:
get_parent().on_dialog("邮箱格式不正确")
return
register_code_submit.disabled = true
Request.on_server("/game/account/mail/code?mail=" + register_email.text, 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:
register_code_submit.disabled = false
get_parent().on_dialog(response.message)
return
register_code_timer.start()
else:
register_code_submit.disabled = false
get_parent().on_dialog("验证码发送失败")
)
# 获取验证码倒计时结束事件信号
func _on_register_code_timer_timeout() -> void:
print("[launch:login:register:code:timeout]")
register_code_submit.disabled = false
register_code_label.text = "获取验证码"
# 账号注册确定按钮事件函数
func _on_register_confirm_submit_pressed() -> void:
if !register_confirm_submit.disabled:
print("[launch:login:register:confirm:submit]")
_on_button_pressed_music()
if register_email.text == "" || register_code.text == "" || register_password.text == "":
get_parent().on_dialog("注册信息不完整")
return
var check = Utils.check_mail_format(register_email.text)
if !check:
get_parent().on_dialog("邮箱格式不正确")
return
register_confirm_submit.disabled = true
var register_data = {
"mail": register_email.text,
"code": register_code.text,
"password": register_password.text,
"name": register_name.text,
"number": register_number.text,
"question_a": register_question_a.text,
"question_b": register_question_b.text,
"answer_a": register_answer_a.text,
"answer_b": register_answer_b.text,
}
Request.on_server("/game/account/mail/register", HTTPClient.METHOD_POST, register_data, func(_result, code, _headers, body):
if code == 200:
var response = JSON.parse_string(body.get_string_from_utf8())
if response.code != 0:
register_confirm_submit.disabled = false
get_parent().on_dialog(response.message)
return
get_parent().on_dialog("账号注册成功")
_on_register_cancel_submit_pressed()
else:
register_confirm_submit.disabled = false
get_parent().on_dialog("账号注册失败")
)
# 账号注册取消按钮事件函数
func _on_register_cancel_submit_pressed() -> void:
print("[launch:login:register:cancel]")
_on_button_pressed_music()
register.visible = false
register_email.text = ""
register_code.text = ""
register_code_label.text = "获取验证码"
register_code_submit.disabled = false
register_password.text = ""
register_name.text = ""
register_number.text = ""
register_question_a.text = ""
register_answer_a.text = ""
register_question_b.text = ""
register_answer_b.text = ""
register_code_submit.disabled = false
register_confirm_submit.disabled = false
# 修改密码按钮事件函数
func _on_default_change_pressed() -> void:
print("[launch:login:change]")
_on_button_pressed_music()
change.visible = true
# 修改密码确认按钮事件函数
func _on_change_confirm_submit_pressed() -> void:
if !change_confirm_submit.disabled:
print("[launch:login:change:confirm:submit]")
_on_button_pressed_music()
if change_email.text == "" || change_password.text == "" || change_new_password.text == "" || change_confirm_password.text == "":
get_parent().on_dialog("账号信息不完整")
return
if change_new_password.text != change_confirm_password.text:
get_parent().on_dialog("新密码输入不一致")
return
change_confirm_submit.disabled = true
var change_password_data = {
"mail": change_email.text,
"password": change_password.text,
"new_password": change_new_password.text
}
Request.on_server("/game/account/mail/change/password", HTTPClient.METHOD_POST, change_password_data, func(_result, code, _headers, body):
if code == 200:
var response = JSON.parse_string(body.get_string_from_utf8())
if response.code != 0:
change_confirm_submit.disabled = false
get_parent().on_dialog(response.message)
return
get_parent().on_dialog("密码修改成功")
_on_change_cancel_submit_pressed()
else:
change_confirm_submit.disabled = false
get_parent().on_dialog("密码修改失败")
)
# 修改密码取消按钮事件函数
func _on_change_cancel_submit_pressed() -> void:
print("[launch:login:change:cancel]")
_on_button_pressed_music()
change.visible = false
change_email.text = ""
change_password.text = ""
change_new_password.text = ""
change_confirm_password.text = ""
change_confirm_submit.disabled = false
# 公用按钮音效函数
func _on_button_pressed_music() -> void:
button_pressed_music.play()

View File

@@ -0,0 +1,413 @@
#*****************************************************************************
# @author MakerYang
# @site mir2.makeryang.com
#*****************************************************************************
extends Control
# 场景资源
@onready var button_pressed_music: AudioStreamPlayer2D = $ButtonPressedMusic
@onready var character: Control = $Character
@onready var character_box: Control = $Character/CharacterBox
@onready var character_describe: Control = $Character/CharacterDescribe
@onready var character_switch: Control = $Character/CharacterSwitch
@onready var left_switch: TextureButton = $Character/CharacterSwitch/LeftSwitch
@onready var right_switch: TextureButton = $Character/CharacterSwitch/RightSwitch
@onready var warrior_men: AnimatedSprite2D = $Character/CharacterBox/WarriorMen
@onready var warrior_women: AnimatedSprite2D = $Character/CharacterBox/WarriorWomen
@onready var mage_men: AnimatedSprite2D = $Character/CharacterBox/MageMen
@onready var mage_women: AnimatedSprite2D = $Character/CharacterBox/MageWomen
@onready var taoist_men: AnimatedSprite2D = $Character/CharacterBox/TaoistMen
@onready var taoist_women: AnimatedSprite2D = $Character/CharacterBox/TaoistWomen
@onready var warrior_describe: TextureRect = $Character/CharacterDescribe/WarriorDescribe
@onready var mage_describe: TextureRect = $Character/CharacterDescribe/MageDescribe
@onready var taoist_describe: TextureRect = $Character/CharacterDescribe/TaoistDescribe
@onready var left: Control = $Left
@onready var left_level: Label = $Left/LeftLevel
@onready var left_name: Label = $Left/LeftName
@onready var left_career: Label = $Left/LeftCareer
@onready var left_gender: Label = $Left/LeftGender
@onready var right: Control = $Right
@onready var create_button: TextureButton = $Right/CreateButton
@onready var restore_button: TextureButton = $Right/RestoreButton
@onready var delete_button: TextureButton = $Right/DeleteButton
@onready var return_button: TextureButton = $Right/ReturnButton
@onready var bottom: Control = $Bottom
@onready var create: Control = $Bottom/Create
@onready var nickname: LineEdit = $Bottom/Create/Top/Nickname
@onready var men_button: TextureButton = $Bottom/Create/Middle/MenButton
@onready var women_button: TextureButton = $Bottom/Create/Middle/WomenButton
@onready var create_confirm_button: TextureButton = $Bottom/Create/Footer/CreateConfirmButton
@onready var create_cancel_button: TextureButton = $Bottom/Create/Footer/CreateCancelButton
@onready var start: Control = $Bottom/Start
@onready var start_button: TextureButton = $Bottom/Start/StartButton
@onready var delete_dialog: Control = $DeleteDialog
@onready var dialog_confirm_button: TextureButton = $DeleteDialog/DialogConfirmButton
@onready var dialog_cancel_button: TextureButton = $DeleteDialog/DialogCancelButton
# 场景信号
signal switch_login_signal()
signal switch_world_signal()
# 场景数据
var type:String = ""
var role_array: Array
var role_int:int = 0
var gender:int = 0
var gender_array: Array = ["men", "women"]
var career:int = 0
var career_array: Array = [
{"career": "warrior", "name": "战士"},
{"career": "mage", "name": "法师"},
{"career": "taoist", "name": "道士"}
]
func _ready() -> void:
type = ""
role_array = []
role_int = 0
gender = 0
career = 0
character_box.visible = false
warrior_men.visible = false
warrior_women.visible = false
mage_men.visible = false
mage_women.visible = false
taoist_men.visible = false
taoist_women.visible = false
character_describe.visible = false
warrior_describe.visible = false
mage_describe.visible = false
taoist_describe.visible = false
character_switch.visible = false
left.visible = false
right.visible = true
create.visible = false
start.visible = true
start_button.disabled = true
delete_dialog.visible = false
func _process(_delta: float) -> void:
if type == "":
if len(role_array) > 0:
left.visible = true
character_box.visible = true
character_switch.visible = true
start_button.disabled = false
var select_role = role_array[role_int]
for i in range(len(career_array)):
if career_array[i]["career"] == select_role["player_career"]:
career = i
var gender_string: String = ""
if select_role["player_gender"] == "men":
gender = 0
gender_string = ""
if select_role["player_gender"] == "women":
gender = 1
gender_string = ""
left_level.text = "Level." + str(select_role["player_asset_level"])
left_name.text = select_role["player_nickname"]
left_career.text = career_array[i]["name"]
left_gender.text = gender_string
if career == 0:
warrior_describe.visible = true
mage_describe.visible = false
taoist_describe.visible = false
mage_men.visible = false
mage_women.visible = false
taoist_men.visible = false
taoist_women.visible = false
if gender == 0:
warrior_men.visible = true
warrior_women.visible = false
if gender == 1:
warrior_men.visible = false
warrior_women.visible = true
if career == 1:
warrior_describe.visible = false
mage_describe.visible = true
taoist_describe.visible = false
warrior_men.visible = false
warrior_women.visible = false
taoist_men.visible = false
taoist_women.visible = false
if gender == 0:
mage_men.visible = true
mage_women.visible = false
if gender == 1:
mage_men.visible = false
mage_women.visible = true
if career == 2:
warrior_describe.visible = false
mage_describe.visible = false
taoist_describe.visible = true
warrior_men.visible = false
warrior_women.visible = false
mage_men.visible = false
mage_women.visible = false
if gender == 0:
taoist_men.visible = true
taoist_women.visible = false
if gender == 1:
taoist_men.visible = false
taoist_women.visible = true
else:
start_button.disabled = true
if type == "create":
left.visible = false
if career == 0:
warrior_describe.visible = true
mage_describe.visible = false
taoist_describe.visible = false
mage_men.visible = false
mage_women.visible = false
taoist_men.visible = false
taoist_women.visible = false
if gender == 0:
warrior_men.visible = true
warrior_women.visible = false
if gender == 1:
warrior_men.visible = false
warrior_women.visible = true
if career == 1:
warrior_describe.visible = false
mage_describe.visible = true
taoist_describe.visible = false
warrior_men.visible = false
warrior_women.visible = false
taoist_men.visible = false
taoist_women.visible = false
if gender == 0:
mage_men.visible = true
mage_women.visible = false
if gender == 1:
mage_men.visible = false
mage_women.visible = true
if career == 2:
warrior_describe.visible = false
mage_describe.visible = false
taoist_describe.visible = true
warrior_men.visible = false
warrior_women.visible = false
mage_men.visible = false
mage_women.visible = false
if gender == 0:
taoist_men.visible = true
taoist_women.visible = false
if gender == 1:
taoist_men.visible = false
taoist_women.visible = true
func on_role(_server_token: String) -> void:
if _server_token != "":
print("[launch:role:on_role]")
_ready()
Request.on_server("/game/player/index?token=" + _server_token, 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:
get_parent().on_dialog(response.message)
return
role_array = Global.update_server_role(response.data.player)
Account.update_area_token(_server_token)
else:
get_parent().on_dialog("服务区人物角色失败")
)
# 开始游戏按钮事件函数
func _on_start_button_pressed() -> void:
if len(role_array) > 0:
print("[launch:role:start:button]")
_on_button_pressed_music()
await get_tree().create_timer(0.2).timeout
var player = Account.update_player(role_array[role_int])
if player["token"] == "":
get_parent().on_dialog("开始游戏失败")
return
start_button.disabled = true
switch_world_signal.emit()
start_button.disabled = false
# 创建角色性别男按钮事件函数
func _on_men_button_pressed() -> void:
if type == "create":
print("[launch:role:men:button]")
_on_button_pressed_music()
gender = 0
men_button.button_pressed = true
women_button.button_pressed = false
# 创建角色性别女按钮事件函数
func _on_women_button_pressed() -> void:
if type == "create":
print("[launch:role:women:button]")
_on_button_pressed_music()
gender = 1
women_button.button_pressed = true
men_button.button_pressed = false
# 创建角色提交按钮事件函数
func _on_create_confirm_button_pressed() -> void:
if type == "create":
print("[launch:role:create:confirm:button]")
_on_button_pressed_music()
if nickname.text == "":
get_parent().on_dialog("昵称不能为空")
return
create_confirm_button.disabled = true
var player_data = {
"token": Account.get_area_token(),
"nickname": nickname.text,
"gender": gender_array[gender],
"career": career_array[career]["career"]
}
Request.on_server("/game/player/create", HTTPClient.METHOD_POST, player_data, func(_result, code, _headers, body):
if code == 200:
var response = JSON.parse_string(body.get_string_from_utf8())
if response.code != 0:
get_parent().on_dialog(response.message)
return
get_parent().on_dialog("人物角色创建成功")
on_role(Account.get_area_token())
role_int = 0
create_confirm_button.disabled = false
_on_create_cancel_button_pressed()
else:
create_confirm_button.disabled = false
get_parent().on_dialog("人物角色创建失败")
)
# 创建角色取消按钮事件函数
func _on_create_cancel_button_pressed() -> void:
if type == "create":
print("[launch:role:create:cancel:button]")
_on_button_pressed_music()
type = ""
gender = 0
career = 0
nickname.text = ""
create_confirm_button.disabled = false
men_button.button_pressed = true
women_button.button_pressed = false
left_switch.disabled = false
right_switch.disabled = false
create.visible = false
start.visible = true
character_box.visible = false
character_describe.visible = false
character_switch.visible = false
# 右侧创建角色按钮事件函数
func _on_create_button_pressed() -> void:
if type != "create":
print("[launch:role:create:button]")
_on_button_pressed_music()
if len(role_array) == 6:
get_parent().on_dialog("最多可创建6个人物角色")
return
type = "create"
gender = 0
career = 0
nickname.text = ""
start.visible = false
create.visible = true
character_box.visible = true
character_describe.visible = true
character_switch.visible = true
men_button.button_pressed = true
women_button.button_pressed = false
# 右侧恢复角色按钮事件函数
func _on_restore_button_pressed() -> void:
if type != "create":
print("[launch:role:restore:button]")
_on_button_pressed_music()
get_parent().on_dialog("功能尚未开放")
# 右侧返回按钮事件函数
func _on_return_button_pressed() -> void:
if type != "create":
print("[launch:role:return:button]")
_on_button_pressed_music()
switch_login_signal.emit()
# 右侧删除角色按钮事件函数
func _on_delete_button_pressed() -> void:
if type != "create":
print("[launch:role:delete:button]")
_on_button_pressed_music()
delete_dialog.visible = true
# 删除角色弹窗确认按钮事件函数
func _on_dialog_confirm_button_pressed() -> void:
if len(role_array) > 0 and delete_dialog.visible:
print("[launch:role:dialog:confirm:button]")
_on_button_pressed_music()
delete_dialog.visible = false
var select_role = role_array[role_int]
Request.on_server("/game/player/delete?token=" + select_role["token"], 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:
get_parent().on_dialog(response.message)
return
role_array.remove_at(role_int)
role_int = 0
left_switch.disabled = true
right_switch.disabled = false
else:
create_confirm_button.disabled = false
get_parent().on_dialog("人物角色删除失败")
)
# 删除角色弹窗取消按钮事件函数
func _on_dialog_cancel_button_pressed() -> void:
if delete_dialog.visible:
print("[launch:role:dialog:cancel:button]")
_on_button_pressed_music()
delete_dialog.visible = false
# 中间左侧切换职业按钮事件函数
func _on_left_switch_pressed() -> void:
print("[launch:role:left:switch]")
_on_button_pressed_music()
if type == "create":
career = career - 1
if career == 0:
left_switch.disabled = true
else:
left_switch.disabled = false
right_switch.disabled = false
else:
if role_int == 0:
role_int = 0
left_switch.disabled = true
else:
role_int = role_int - 1
left_switch.disabled = false
right_switch.disabled = false
# 中间右侧切换职业按钮事件函数
func _on_right_switch_pressed() -> void:
print("[launch:role:right:switch]")
_on_button_pressed_music()
if type == "create":
career = career + 1
if career == 2:
right_switch.disabled = true
else:
right_switch.disabled = false
left_switch.disabled = false
else:
if role_int == (len(role_array) - 1):
role_int = (len(role_array) - 1)
right_switch.disabled = true
else:
role_int = role_int + 1
right_switch.disabled = false
left_switch.disabled = false
# 公用按钮音效函数
func _on_button_pressed_music() -> void:
button_pressed_music.play()

View File

@@ -0,0 +1,75 @@
#*****************************************************************************
# @author MakerYang
# @site mir2.makeryang.com
#*****************************************************************************
extends Control
# 场景资源
@onready var button_pressed_music: AudioStreamPlayer2D = $ButtonPressedMusic
@onready var default: Control = $Default
@onready var list: VBoxContainer = $Default/Box/List
# 场景数据
var server_list: Array = []
# 场景信号
signal switch_role_signal(token: String)
func _ready() -> void:
default.visible = false
func on_server() -> void:
print("[launch:server:on_server]")
# 清空当前渲染列表数据
while list.get_child_count() > 0:
var last_child = list.get_child(list.get_child_count() - 1)
list.remove_child(last_child)
last_child.queue_free()
Request.on_server("/game/server/index", 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:
get_parent().on_dialog(response.message)
return
server_list = Global.update_server_area(response.data.server)
# 渲染列表数据
var font_path = load("res://assets/common/font/HarmonyOS_Sans_Bold.ttf")
var texture_normal = load("res://assets/launch/nodes/server/server_button_0.png")
var texture_pressed = load("res://assets/launch/nodes/server/server_button_1.png")
var texture_hover = load("res://assets/launch/nodes/server/server_button_2.png")
for i in range(len(server_list)):
var item:TextureButton = TextureButton.new()
var item_label:Label = Label.new()
item.texture_normal = texture_normal
item.texture_pressed = texture_pressed
item.texture_hover = texture_hover
item.texture_disabled = texture_normal
item_label.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER
item_label.vertical_alignment = VERTICAL_ALIGNMENT_CENTER
item_label.size = Vector2(157, 24)
item_label.position = Vector2(10, 11)
item_label.text = server_list[i]["server_name"]
item_label.add_theme_font_size_override("font_size", 12)
item_label.add_theme_color_override("font_color", Color("#cba368"))
item_label.add_theme_font_override("font", font_path)
item.add_child(item_label)
item.connect("pressed", _on_item_pressed.bind(server_list[i]["token"]))
list.add_child(item)
default.visible = true
else:
get_parent().on_dialog("服务区获取失败")
)
# 服务区按钮事件函数
func _on_item_pressed(_token: String) -> void:
print("[launch:server:item:pressed]")
_on_button_pressed_music()
for i in range(list.get_child_count()):
list.get_child(i).disabled = true
default.visible = false
switch_role_signal.emit(_token)
# 公用按钮音效函数
func _on_button_pressed_music() -> void:
button_pressed_music.play()