更新三个按钮 修了一堆bug
This commit is contained in:
@@ -31,7 +31,21 @@ func _ready():
|
||||
plant_button.pressed.connect(self._on_plant_button_pressed)
|
||||
remove_button.pressed.connect(self._on_remove_button_pressed)
|
||||
harvest_button.pressed.connect(self._on_harvest_button_pressed)
|
||||
dig_button.text = "开垦"+"\n花费:"+str(main_game.dig_money)
|
||||
|
||||
# 显示浇水、施肥、升级按钮
|
||||
water_button.visible = true
|
||||
fertilize_button.visible = true
|
||||
upgrade_button.visible = true
|
||||
|
||||
_update_button_texts()
|
||||
|
||||
# 更新按钮文本
|
||||
func _update_button_texts():
|
||||
dig_button.text = "开垦"+"\n¥"+str(main_game.dig_money)
|
||||
remove_button.text = "铲除"+"\n¥500"
|
||||
water_button.text = "浇水"+"\n¥50"
|
||||
fertilize_button.text = "施肥"+"\n¥150"
|
||||
upgrade_button.text = "升级"+"\n¥1000"
|
||||
|
||||
#开垦
|
||||
func _on_dig_button_pressed():
|
||||
@@ -41,12 +55,31 @@ func _on_dig_button_pressed():
|
||||
self.hide()
|
||||
return
|
||||
|
||||
dig_button.text = "开垦"+"\n花费:"+str(main_game.dig_money)
|
||||
# 检查玩家金钱是否足够
|
||||
var dig_cost = main_game.dig_money
|
||||
if main_game.money < dig_cost:
|
||||
Toast.show("金钱不足,开垦土地需要 " + str(dig_cost) + " 金钱", Color.RED, 2.0, 1.0)
|
||||
self.hide()
|
||||
return
|
||||
|
||||
# 检查地块是否已经开垦
|
||||
var lot = main_game.farm_lots[selected_lot_index]
|
||||
if lot.get("is_diged", false):
|
||||
Toast.show("此地块已经开垦过了", Color.ORANGE, 2.0, 1.0)
|
||||
self.hide()
|
||||
return
|
||||
|
||||
# 发送开垦土地请求到服务器
|
||||
if network_manager and network_manager.is_connected_to_server():
|
||||
# 使用服务器API来开垦土地
|
||||
if network_manager.sendDigGround(selected_lot_index):
|
||||
Toast.show("正在开垦土地...", Color.YELLOW, 1.5, 1.0)
|
||||
self.hide()
|
||||
else:
|
||||
Toast.show("发送开垦请求失败", Color.RED, 2.0, 1.0)
|
||||
self.hide()
|
||||
else:
|
||||
Toast.show("网络未连接,无法开垦土地", Color.RED, 2.0, 1.0)
|
||||
self.hide()
|
||||
#浇水
|
||||
func _on_water_button_pressed():
|
||||
# 检查是否处于访问模式
|
||||
@@ -55,8 +88,49 @@ func _on_water_button_pressed():
|
||||
self.hide()
|
||||
return
|
||||
|
||||
self.hide()
|
||||
pass
|
||||
# 检查玩家金钱是否足够
|
||||
var water_cost = 50
|
||||
if main_game.money < water_cost:
|
||||
Toast.show("金钱不足,浇水需要 " + str(water_cost) + " 金钱", Color.RED, 2.0, 1.0)
|
||||
self.hide()
|
||||
return
|
||||
|
||||
# 检查地块状态
|
||||
var lot = main_game.farm_lots[selected_lot_index]
|
||||
if not lot.get("is_planted", false) or lot.get("crop_type", "") == "":
|
||||
Toast.show("此地块没有种植作物", Color.ORANGE, 2.0, 1.0)
|
||||
self.hide()
|
||||
return
|
||||
|
||||
# 检查作物是否已死亡
|
||||
if lot.get("is_dead", false):
|
||||
Toast.show("死亡的作物无法浇水", Color.ORANGE, 2.0, 1.0)
|
||||
self.hide()
|
||||
return
|
||||
|
||||
# 检查是否已经成熟
|
||||
if lot.get("grow_time", 0) >= lot.get("max_grow_time", 1):
|
||||
Toast.show("作物已经成熟,无需浇水", Color.ORANGE, 2.0, 1.0)
|
||||
self.hide()
|
||||
return
|
||||
|
||||
# 检查是否已经浇过水
|
||||
if lot.get("已浇水", false):
|
||||
Toast.show("今天已经浇过水了", Color.ORANGE, 2.0, 1.0)
|
||||
self.hide()
|
||||
return
|
||||
|
||||
# 发送浇水请求到服务器
|
||||
if network_manager and network_manager.is_connected_to_server():
|
||||
if network_manager.sendWaterCrop(selected_lot_index):
|
||||
Toast.show("正在浇水...", Color.YELLOW, 1.5, 1.0)
|
||||
self.hide()
|
||||
else:
|
||||
Toast.show("发送浇水请求失败", Color.RED, 2.0, 1.0)
|
||||
self.hide()
|
||||
else:
|
||||
Toast.show("网络未连接,无法浇水", Color.RED, 2.0, 1.0)
|
||||
self.hide()
|
||||
#施肥
|
||||
func _on_fertilize_button_pressed():
|
||||
# 检查是否处于访问模式
|
||||
@@ -65,8 +139,49 @@ func _on_fertilize_button_pressed():
|
||||
self.hide()
|
||||
return
|
||||
|
||||
self.hide()
|
||||
pass
|
||||
# 检查玩家金钱是否足够
|
||||
var fertilize_cost = 150
|
||||
if main_game.money < fertilize_cost:
|
||||
Toast.show("金钱不足,施肥需要 " + str(fertilize_cost) + " 金钱", Color.RED, 2.0, 1.0)
|
||||
self.hide()
|
||||
return
|
||||
|
||||
# 检查地块状态
|
||||
var lot = main_game.farm_lots[selected_lot_index]
|
||||
if not lot.get("is_planted", false) or lot.get("crop_type", "") == "":
|
||||
Toast.show("此地块没有种植作物", Color.ORANGE, 2.0, 1.0)
|
||||
self.hide()
|
||||
return
|
||||
|
||||
# 检查作物是否已死亡
|
||||
if lot.get("is_dead", false):
|
||||
Toast.show("死亡的作物无法施肥", Color.ORANGE, 2.0, 1.0)
|
||||
self.hide()
|
||||
return
|
||||
|
||||
# 检查是否已经成熟
|
||||
if lot.get("grow_time", 0) >= lot.get("max_grow_time", 1):
|
||||
Toast.show("作物已经成熟,无需施肥", Color.ORANGE, 2.0, 1.0)
|
||||
self.hide()
|
||||
return
|
||||
|
||||
# 检查是否已经施过肥
|
||||
if lot.get("已施肥", false):
|
||||
Toast.show("此作物已经施过肥了", Color.ORANGE, 2.0, 1.0)
|
||||
self.hide()
|
||||
return
|
||||
|
||||
# 发送施肥请求到服务器
|
||||
if network_manager and network_manager.is_connected_to_server():
|
||||
if network_manager.sendFertilizeCrop(selected_lot_index):
|
||||
Toast.show("正在施肥...", Color.YELLOW, 1.5, 1.0)
|
||||
self.hide()
|
||||
else:
|
||||
Toast.show("发送施肥请求失败", Color.RED, 2.0, 1.0)
|
||||
self.hide()
|
||||
else:
|
||||
Toast.show("网络未连接,无法施肥", Color.RED, 2.0, 1.0)
|
||||
self.hide()
|
||||
#升级
|
||||
func _on_upgrade_button_pressed():
|
||||
# 检查是否处于访问模式
|
||||
@@ -75,8 +190,38 @@ func _on_upgrade_button_pressed():
|
||||
self.hide()
|
||||
return
|
||||
|
||||
self.hide()
|
||||
pass
|
||||
# 检查玩家金钱是否足够
|
||||
var upgrade_cost = 1000
|
||||
if main_game.money < upgrade_cost:
|
||||
Toast.show("金钱不足,升级土地需要 " + str(upgrade_cost) + " 金钱", Color.RED, 2.0, 1.0)
|
||||
self.hide()
|
||||
return
|
||||
|
||||
# 检查地块是否已开垦
|
||||
var lot = main_game.farm_lots[selected_lot_index]
|
||||
if not lot.get("is_diged", false):
|
||||
Toast.show("此地块尚未开垦", Color.ORANGE, 2.0, 1.0)
|
||||
self.hide()
|
||||
return
|
||||
|
||||
# 检查土地是否已经升级
|
||||
var current_level = lot.get("土地等级", 0)
|
||||
if current_level >= 1:
|
||||
Toast.show("此土地已经升级过了", Color.ORANGE, 2.0, 1.0)
|
||||
self.hide()
|
||||
return
|
||||
|
||||
# 发送升级请求到服务器
|
||||
if network_manager and network_manager.is_connected_to_server():
|
||||
if network_manager.sendUpgradeLand(selected_lot_index):
|
||||
Toast.show("正在升级土地...", Color.YELLOW, 1.5, 1.0)
|
||||
self.hide()
|
||||
else:
|
||||
Toast.show("发送升级请求失败", Color.RED, 2.0, 1.0)
|
||||
self.hide()
|
||||
else:
|
||||
Toast.show("网络未连接,无法升级土地", Color.RED, 2.0, 1.0)
|
||||
self.hide()
|
||||
#种植
|
||||
func _on_plant_button_pressed():
|
||||
# 检查是否处于访问模式
|
||||
@@ -96,8 +241,31 @@ func _on_remove_button_pressed():
|
||||
self.hide()
|
||||
return
|
||||
|
||||
main_game.root_out_crop(selected_lot_index)
|
||||
self.hide()
|
||||
# 检查玩家金钱是否足够
|
||||
var removal_cost = 500
|
||||
if main_game.money < removal_cost:
|
||||
Toast.show("金钱不足,铲除作物需要 " + str(removal_cost) + " 金钱", Color.RED, 2.0, 1.0)
|
||||
self.hide()
|
||||
return
|
||||
|
||||
# 检查地块是否有作物
|
||||
var lot = main_game.farm_lots[selected_lot_index]
|
||||
if not lot.get("is_planted", false) or lot.get("crop_type", "") == "":
|
||||
Toast.show("此地块没有种植作物", Color.ORANGE, 2.0, 1.0)
|
||||
self.hide()
|
||||
return
|
||||
|
||||
# 发送铲除作物请求到服务器
|
||||
if network_manager and network_manager.is_connected_to_server():
|
||||
if network_manager.sendRemoveCrop(selected_lot_index):
|
||||
Toast.show("正在铲除作物...", Color.YELLOW, 1.5, 1.0)
|
||||
self.hide()
|
||||
else:
|
||||
Toast.show("发送铲除请求失败", Color.RED, 2.0, 1.0)
|
||||
self.hide()
|
||||
else:
|
||||
Toast.show("网络未连接,无法铲除作物", Color.RED, 2.0, 1.0)
|
||||
self.hide()
|
||||
pass
|
||||
#收获
|
||||
func _on_harvest_button_pressed():
|
||||
|
||||
@@ -24,7 +24,7 @@ extends PanelContainer
|
||||
#状态提示标签
|
||||
@onready var status_label : Label = $VBox/status_label
|
||||
|
||||
# 记住密码选项(如果UI中有CheckBox的话)
|
||||
# 记住密码选项
|
||||
var remember_password : bool = true # 默认记住密码
|
||||
|
||||
# 引用主场景和全局函数
|
||||
@@ -45,6 +45,9 @@ func _ready():
|
||||
|
||||
# 加载保存的登录信息
|
||||
_load_login_info()
|
||||
|
||||
# 显示客户端版本号
|
||||
_display_version_info()
|
||||
|
||||
# 处理登录按钮点击
|
||||
func _on_login_button_pressed():
|
||||
@@ -86,7 +89,6 @@ func _on_login_button_pressed():
|
||||
# 更新主游戏数据
|
||||
main_game.user_name = user_name
|
||||
main_game.user_password = user_password
|
||||
main_game.farmname = farmname
|
||||
|
||||
# 5秒后重新启用按钮(如果没有收到响应)
|
||||
await get_tree().create_timer(5.0).timeout
|
||||
@@ -156,6 +158,12 @@ func _on_register_button_pressed():
|
||||
var player_name = playername_input.text.strip_edges()
|
||||
var verification_code = verificationcode_input.text.strip_edges()
|
||||
|
||||
# 检查密码格式(只允许数字和字母)
|
||||
if not is_valid_password(user_password):
|
||||
status_label.text = "密码只能包含数字和字母!"
|
||||
status_label.modulate = Color.RED
|
||||
return
|
||||
|
||||
if user_name == "" or user_password == "":
|
||||
status_label.text = "用户名或密码不能为空!"
|
||||
status_label.modulate = Color.RED
|
||||
@@ -178,7 +186,7 @@ func _on_register_button_pressed():
|
||||
status_label.text = "请输入验证码!"
|
||||
status_label.modulate = Color.RED
|
||||
return
|
||||
|
||||
|
||||
# 检查网络连接状态
|
||||
if !tcp_network_manager.client.is_client_connected():
|
||||
status_label.text = "未连接到服务器,正在尝试连接..."
|
||||
@@ -248,6 +256,12 @@ func is_valid_qq_number(qq_number: String) -> bool:
|
||||
|
||||
return qq_regex.search(qq_number) != null
|
||||
|
||||
# 添加密码验证函数
|
||||
func is_valid_password(password: String) -> bool:
|
||||
# 使用正则表达式检查是否只包含数字和字母
|
||||
var pattern = r"^[a-zA-Z0-9]+$"
|
||||
return password.match(pattern) != null
|
||||
|
||||
# 处理登录响应
|
||||
func _on_login_response_received(success: bool, message: String, user_data: Dictionary):
|
||||
# 启用按钮
|
||||
@@ -262,7 +276,8 @@ func _on_login_response_received(success: bool, message: String, user_data: Dict
|
||||
main_game.farm_lots = user_data.get("farm_lots", [])
|
||||
main_game.level = user_data.get("level", 1)
|
||||
main_game.money = user_data.get("money", 0)
|
||||
main_game.farmname = user_data.get("farm_name", "")
|
||||
main_game.show_farm_name.text = "农场名称:"+user_data.get("farm_name", "")
|
||||
main_game.show_player_name.text = "玩家昵称:"+user_data.get("player_name", "")
|
||||
farmname_input.text = user_data.get("farm_name", "")
|
||||
|
||||
# 加载玩家背包数据
|
||||
@@ -431,3 +446,10 @@ func get_saved_username() -> String:
|
||||
return login_data.get("user_name", "")
|
||||
|
||||
return ""
|
||||
|
||||
# 显示版本信息
|
||||
func _display_version_info():
|
||||
# 在状态标签中显示客户端版本信息
|
||||
if status_label.text == "欢迎使用萌芽农场" or status_label.text == "连接状态":
|
||||
status_label.text = "萌芽农场 v" + main_game.client_version + " - 欢迎使用"
|
||||
status_label.modulate = Color.CYAN
|
||||
|
||||
@@ -11,6 +11,7 @@ offset_bottom = 82.0
|
||||
layout_mode = 2
|
||||
|
||||
[node name="SerialNumber" type="Label" parent="HBox"]
|
||||
visible = false
|
||||
layout_mode = 2
|
||||
theme_override_font_sizes/font_size = 30
|
||||
text = "1."
|
||||
|
||||
@@ -104,7 +104,3 @@ func _on_refresh_button_pressed():
|
||||
# 退出按钮点击
|
||||
func _on_quit_button_pressed():
|
||||
self.hide()
|
||||
|
||||
# 添加到main.gd中调用
|
||||
func _handle_player_rankings_response(data):
|
||||
handle_player_rankings_response(data)
|
||||
|
||||
Reference in New Issue
Block a user