继续提交

This commit is contained in:
2025-07-12 14:33:41 +08:00
parent 68a9508f4d
commit 5dc4535423
389 changed files with 3009 additions and 6977 deletions

View File

@@ -1,8 +1,7 @@
[gd_scene load_steps=9 format=3 uid="uid://bkivlkirrx6u8"]
[gd_scene load_steps=8 format=3 uid="uid://bkivlkirrx6u8"]
[ext_resource type="Texture2D" uid="uid://bt1i2yhhlor5e" path="res://assets/地块/土块1.webp" id="1_bns1c"]
[ext_resource type="Shader" path="res://Shader/PlantSwayShader.gdshader" id="2_s5pb0"]
[ext_resource type="Texture2D" uid="uid://xyj4ro44cwj5" path="res://assets/作物/人参/0.webp" id="3_bns1c"]
[sub_resource type="ShaderMaterial" id="ShaderMaterial_v46ok"]
@@ -34,6 +33,7 @@ corner_radius_bottom_left = 15
corner_detail = 15
[node name="CropItem" type="Button"]
self_modulate = Color(1, 1, 1, 0)
custom_minimum_size = Vector2(100, 100)
offset_right = 40.0
offset_bottom = 40.0
@@ -49,7 +49,6 @@ texture = ExtResource("1_bns1c")
material = SubResource("ShaderMaterial_s5pb0")
position = Vector2(51, 45)
scale = Vector2(0.339844, 0.363281)
texture = ExtResource("3_bns1c")
[node name="old_crop_sprite" type="Sprite2D" parent="."]
material = SubResource("ShaderMaterial_s5pb0")
@@ -57,6 +56,7 @@ position = Vector2(51, 39)
scale = Vector2(0.06, 0.06)
[node name="ProgressBar" type="ProgressBar" parent="."]
visible = false
material = SubResource("ShaderMaterial_cyybs")
layout_mode = 2
offset_left = 18.0
@@ -81,7 +81,6 @@ offset_bottom = 118.0
scale = Vector2(0.4, 0.4)
size_flags_horizontal = 3
theme_override_font_sizes/font_size = 30
text = "[空地]"
horizontal_alignment = 1
vertical_alignment = 1
@@ -94,6 +93,5 @@ offset_bottom = 131.0
scale = Vector2(0.2, 0.2)
size_flags_horizontal = 3
theme_override_font_sizes/font_size = 50
text = "[已施肥]"
horizontal_alignment = 1
vertical_alignment = 1

View File

@@ -5,8 +5,9 @@ const client_version :String = "2.0.1" #记录客户端版本
var isZoomDisabled :bool = false
const server_configs = [
{"host": "127.0.0.1", "port": 6060, "name": "本地"},
#{"host": "127.0.0.1", "port": 6060, "name": "本地"},
#{"host": "192.168.31.233", "port": 6060, "name": "家里面局域网"},
{"host": "192.168.31.205", "port": 6060, "name": "家里面电脑"},
#{"host": "192.168.1.110", "port": 4040, "name": "萌芽局域网"},
#{"host": "47.108.90.0", "port": 4040, "name": "成都内网穿透"}#成都内网穿透
#{"host": "47.108.90.0", "port": 6060, "name": "成都公网"}#成都服务器

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -70,7 +70,6 @@ func _update_connection_status():
if not is_connected:
is_connected = true
tcp.set_no_delay(true) # 禁用Nagle算法提高响应速度
print("已连接到服务器")
emit_signal("connected_to_server")
StreamPeerTCP.STATUS_ERROR:
@@ -109,11 +108,8 @@ func _process_buffer():
if error == OK:
var data = json.get_data()
#print("收到JSON数据: ", data)
emit_signal("data_received", data)
else:
# 非JSON格式数据直接传递
#print("收到原始数据: ", message_text)
emit_signal("data_received", message_text)
func send_data(data):

View File

@@ -9,20 +9,33 @@ extends Panel
@onready var response_label = $Scroll/ResponseLabel
@onready var connection_button = $ConnectionButton
#所有面板
#==========================所有面板=================================
#大面板
@onready var main_game = get_node("/root/main")
@onready var lucky_draw_panel: LuckyDrawPanel = $'../LuckyDrawPanel'
@onready var daily_check_in_panel: DailyCheckInPanel = $'../DailyCheckInPanel'
@onready var item_store_panel: Panel = $'../ItemStorePanel'
@onready var item_bag_panel: Panel = $'../ItemBagPanel'
@onready var player_bag_panel: Panel = $'../PlayerBagPanel'
@onready var crop_warehouse_panel: Panel = $'../CropWarehousePanel'
@onready var crop_store_panel: Panel = $'../CropStorePanel'
@onready var player_ranking_panel: Panel = $'../PlayerRankingPanel'
@onready var item_store_panel: Panel = $'../ItemStorePanel'
@onready var crop_warehouse_panel: Panel = $'../CropWarehousePanel'
@onready var login_panel: PanelContainer = $'../LoginPanel'
@onready var player_bag_panel: Panel = $'../PlayerBagPanel'
@onready var crop_store_panel: Panel = $'../CropStorePanel'
@onready var item_bag_panel: Panel = $'../ItemBagPanel'
@onready var pet_store_panel: Panel = $'../PetStorePanel'
@onready var pet_bag_panel: Panel = $'../PetBagPanel'
@onready var pet_fight_panel: Panel = $'../PetFightPanel'
#小面板
@onready var land_panel: Panel = $'../../SmallPanel/LandPanel'
@onready var load_progress_panel: Panel = $'../../SmallPanel/LoadProgressPanel'
@onready var account_setting_panel: Panel = $'../../SmallPanel/AccountSettingPanel'
@onready var one_click_plant_panel: Panel = $'../../SmallPanel/OneClickPlantPanel'
@onready var online_gift_panel: Panel = $'../../SmallPanel/OnlineGiftPanel'
@onready var debug_panel: Panel = $'../../SmallPanel/DebugPanel'
@onready var pet_inform_panel: Panel = $'../../SmallPanel/PetInformPanel'
@onready var global_server_broadcast_panel: Panel = $'../../SmallPanel/GlobalServerBroadcastPanel'
@onready var scare_crow_panel: Panel = $'../../SmallPanel/ScareCrowPanel'
@onready var wisdom_tree_panel: Panel = $'../../SmallPanel/WisdomTreePanel'
#==========================所有面板=================================
# TCP客户端
var client: TCPClient = TCPClient.new()
@@ -81,8 +94,8 @@ func _process(delta):
connection_button.text = "连接"
# 通知主游戏更新在线人数显示
if main_game and main_game.has_method("_update_online_players_display"):
main_game._update_online_players_display(0, false, false)
main_game._update_online_players_display(0, false, false)
# 处理延迟测量
if client.is_client_connected():
@@ -109,9 +122,10 @@ func _process(delta):
# 更新状态显示
update_connection_status()
#连接成功后处理
func _on_connected():
print("成功连接到服务器: ", server_configs[current_server_index]["name"])
status_label.text = "已连接 ..."
status_label.text = "已连接"
status_label.modulate = Color.GREEN
connection_button.text = "断开"
is_trying_to_connect = false
@@ -128,6 +142,7 @@ func _on_connected():
"content": "你好,服务器!"
})
#===================请求数据=======================
# 连接成功后立即请求作物数据
sendGetCropData()
@@ -139,7 +154,10 @@ func _on_connected():
# 立即开始第一次ping测量
send_ping()
#===================请求数据=======================
#连接失败后处理
func _on_connection_failed():
print("连接失败: ", server_configs[current_server_index]["name"])
status_label.text = "连接失败 - " + server_configs[current_server_index]["name"]
@@ -154,8 +172,10 @@ func _on_connection_failed():
# 通知主游戏更新在线人数显示
main_game._update_online_players_display(0, false, false)
# 通知主游戏连接已断开,显示登录面板,以便重新登录
main_game._on_connection_lost()
#连接断开后处理
func _on_connection_closed():
print("连接断开: ", server_configs[current_server_index]["name"])
status_label.text = "连接断开 "
@@ -169,418 +189,310 @@ func _on_connection_closed():
ping_timer = 0.0
# 通知主游戏更新在线人数显示
if main_game and main_game.has_method("_update_online_players_display"):
main_game._update_online_players_display(0, false, false)
# 通知主游戏连接已断开,显示登录面板
main_game._update_online_players_display(0, false, false)
# 通知主游戏连接已断开,显示登录面板,以便重新登录
main_game._on_connection_lost()
#=========================客户端与服务端通信核心=========================================
# ============================= 客户端与服务端通信核心 =====================================
func _on_data_received(data):
# 根据数据类型处理数据
response_label.text = "收到: %s" % JSON.stringify(data)
match typeof(data):
# 只处理字典类型的数据
if typeof(data) != TYPE_DICTIONARY:
return
var message_type = data.get("type", "")
# 基础消息类型
if message_type == "ping" || message_type == "response":
return
# 登录相关消息
if message_type == "login_response":
var status = data.get("status", "")
var message = data.get("message", "")
var player_data = data.get("player_data", {})
login_panel._on_login_response_received(status == "success", message, player_data)
return
if message_type == "register_response":
var status = data.get("status", "")
var message = data.get("message", "")
login_panel._on_register_response_received(status == "success", message)
return
if message_type == "verification_code_response":
var success = data.get("success", false)
var message = data.get("message", "")
login_panel._on_verification_code_response(success, message)
return
if message_type == "verify_code_response":
var success = data.get("success", false)
var message = data.get("message", "")
login_panel._on_verify_code_response(success, message)
return
# 游戏数据更新消息
if message_type == "crop_update":
main_game._handle_crop_update(data)
return
# 玩家操作响应消息
if message_type == "action_response":
var action_type = data.get("action_type", "")
var success = data.get("success", false)
var message = data.get("message", "")
var updated_data = data.get("updated_data", {})
# 收获作物响应
if action_type == "harvest_crop":
if success:
main_game.money = updated_data["money"]
main_game.experience = updated_data["experience"]
main_game.level = updated_data["level"]
main_game.stamina = updated_data["体力值"]
main_game.crop_warehouse = updated_data["作物仓库"]
main_game._update_ui()
main_game.crop_warehouse_panel.update_crop_warehouse_ui()
Toast.show(message, Color.GREEN)
else:
Toast.show(message, Color.RED)
# 种植作物响应
elif action_type == "plant_crop":
if success:
main_game.player_bag = updated_data["player_bag"]
main_game.player_bag_panel.update_player_bag_ui()
Toast.show(message, Color.GREEN)
else:
Toast.show(message, Color.RED)
# 购买种子响应
elif action_type == "buy_seed":
if success:
main_game.money = updated_data["money"]
main_game.player_bag = updated_data["player_bag"]
main_game._update_ui()
main_game.player_bag_panel.update_player_bag_ui()
Toast.show(message, Color.GREEN)
else:
Toast.show(message, Color.RED)
# 购买道具响应
elif action_type == "buy_item":
if success:
main_game.money = updated_data["money"]
main_game.item_bag = updated_data["道具背包"]
main_game._update_ui()
main_game.item_bag_panel.update_item_bag_ui()
Toast.show(message, Color.GREEN)
else:
Toast.show(message, Color.RED)
# 购买宠物响应
elif action_type == "buy_pet":
if success:
main_game.money = updated_data["money"]
main_game.pet_bag = updated_data["宠物背包"]
main_game._update_ui()
main_game.pet_bag_panel.update_pet_bag_ui()
Toast.show(message, Color.MAGENTA)
else:
Toast.show(message, Color.RED)
# 重命名宠物响应
elif action_type == "rename_pet":
if success:
main_game.pet_bag = updated_data["宠物背包"]
main_game.pet_bag_panel.update_pet_bag_ui()
var pet_id = data.get("pet_id", "")
var new_name = data.get("new_name", "")
pet_inform_panel.on_rename_pet_success(pet_id, new_name)
Toast.show(message, Color.GREEN)
else:
Toast.show(message, Color.RED)
# 设置巡逻宠物响应
elif action_type == "set_patrol_pet":
if success:
main_game.patrol_pets = updated_data["巡逻宠物"]
main_game.update_patrol_pets()
pet_inform_panel._refresh_patrol_button()
Toast.show(message, Color.GREEN)
else:
Toast.show(message, Color.RED)
# 使用道具响应
elif action_type == "use_item":
if success:
main_game.item_bag = updated_data["道具背包"]
main_game.farm_lots = updated_data["farm_lots"]
main_game.experience = updated_data["experience"]
main_game.level = updated_data["level"]
main_game._update_ui()
main_game._update_farm_lots_state()
main_game.item_bag_panel.update_item_bag_ui()
Toast.show(message, Color.GREEN)
else:
Toast.show(message, Color.RED)
# 开垦土地响应
elif action_type == "dig_ground":
if success:
main_game.money = updated_data["money"]
main_game.experience = updated_data["experience"]
main_game.level = updated_data["level"]
main_game.farm_lots = updated_data["farm_lots"]
main_game.player_bag = updated_data["player_bag"]
main_game._update_ui()
main_game._update_farm_lots_state()
main_game.player_bag_panel.update_player_bag_ui()
Toast.show(message, Color.GREEN)
else:
Toast.show(message, Color.RED)
# 铲除作物响应
elif action_type == "remove_crop":
if success:
main_game.money = updated_data["money"]
main_game.farm_lots = updated_data["farm_lots"]
main_game._update_ui()
main_game._update_farm_lots_state()
Toast.show(message, Color.GREEN)
else:
Toast.show(message, Color.RED)
# 浇水响应
elif action_type == "water_crop":
if success:
main_game.money = updated_data["money"]
main_game.farm_lots = updated_data["farm_lots"]
main_game.experience = updated_data["experience"]
main_game.level = updated_data["level"]
main_game._update_ui()
main_game._update_farm_lots_state()
Toast.show(message, Color.CYAN)
else:
Toast.show(message, Color.RED)
# 施肥响应
elif action_type == "fertilize_crop":
if success:
main_game.money = updated_data["money"]
main_game.farm_lots = updated_data["farm_lots"]
main_game.experience = updated_data["experience"]
main_game.level = updated_data["level"]
main_game._update_ui()
main_game._update_farm_lots_state()
Toast.show(message, Color.PURPLE)
else:
Toast.show(message, Color.RED)
# 升级土地响应
elif action_type == "upgrade_land":
if success:
main_game.money = updated_data["money"]
main_game.farm_lots = updated_data["farm_lots"]
main_game._update_ui()
main_game._update_farm_lots_state()
Toast.show(message, Color.GOLD)
else:
Toast.show(message, Color.RED)
# 添加新土地响应
elif action_type == "buy_new_ground":
if success:
main_game.money = updated_data["money"]
main_game.farm_lots = updated_data["farm_lots"]
main_game._create_farm_buttons()
main_game._update_farm_lots_state()
main_game._update_ui()
Toast.show(message, Color.GREEN)
else:
Toast.show(message, Color.RED)
return
# 游戏功能响应消息
if message_type == "play_time_response":
main_game._handle_play_time_response(data)
elif message_type == "player_rankings_response":
main_game._handle_player_rankings_response(data)
elif message_type == "crop_data_response":
main_game._handle_crop_data_response(data)
elif message_type == "item_config_response":
main_game._handle_item_config_response(data)
elif message_type == "visit_player_response":
main_game._handle_visit_player_response(data)
elif message_type == "return_my_farm_response":
main_game._handle_return_my_farm_response(data)
elif message_type == "like_player_response":
main_game._handle_like_player_response(data)
elif message_type == "online_players_response":
main_game._handle_online_players_response(data)
elif message_type == "daily_check_in_response":
main_game._handle_daily_check_in_response(data)
elif message_type == "check_in_data_response":
main_game._handle_check_in_data_response(data)
elif message_type == "lucky_draw_response":
main_game._handle_lucky_draw_response(data)
elif message_type == "new_player_gift_response":
main_game._handle_new_player_gift_response(data)
elif message_type == "online_gift_data_response":
main_game._handle_online_gift_data_response(data)
elif message_type == "claim_online_gift_response":
main_game._handle_claim_online_gift_response(data)
elif message_type == "pong":
handle_pong_response(data)
elif message_type == "modify_account_info_response":
main_game._handle_account_setting_response(data)
elif message_type == "delete_account_response":
main_game._handle_account_setting_response(data)
elif message_type == "refresh_player_info_response":
main_game._handle_account_setting_response(data)
elif message_type == "steal_caught":
main_game._handle_steal_caught_response(data)
elif message_type == "global_broadcast_message":
main_game._handle_global_broadcast_message(data)
elif message_type == "global_broadcast_response":
main_game._handle_global_broadcast_response(data)
elif message_type == "broadcast_history_response":
main_game._handle_broadcast_history_response(data)
elif message_type == "use_pet_item_response":
main_game._handle_use_pet_item_response(data)
elif message_type == "use_farm_item_response":
main_game._handle_use_farm_item_response(data)
elif message_type == "buy_scare_crow_response":
main_game._handle_buy_scare_crow_response(data)
elif message_type == "modify_scare_crow_config_response":
main_game._handle_modify_scare_crow_config_response(data)
elif message_type == "get_scare_crow_config_response":
main_game._handle_get_scare_crow_config_response(data)
# 智慧树相关响应
elif message_type == "wisdom_tree_operation_response":
var success = data.get("success", false)
var message = data.get("message", "")
var operation_type = data.get("operation_type", "")
var updated_data = data.get("updated_data", {})
wisdom_tree_panel.handle_wisdom_tree_operation_response(success, message, operation_type, updated_data)
elif message_type == "wisdom_tree_message_response":
var success = data.get("success", false)
var message = data.get("message", "")
var updated_data = data.get("updated_data", {})
wisdom_tree_panel.handle_wisdom_tree_message_response(success, message, updated_data)
elif message_type == "wisdom_tree_config_response":
main_game._handle_wisdom_tree_config_response(data)
# ============================= 客户端与服务端通信核心 =====================================
TYPE_DICTIONARY:
# 处理JSON对象
var message_type = data.get("type", "")
match message_type:
"ping": #ping是否在线
return
"response": #服务器通用响应
return
"login_response": #登录响应
var status = data.get("status", "")
var message = data.get("message", "")
var player_data = data.get("player_data", {})
if login_panel:
login_panel._on_login_response_received(status == "success", message, player_data)
"register_response": #注册响应
var status = data.get("status", "")
var message = data.get("message", "")
if login_panel:
login_panel._on_register_response_received(status == "success", message)
"verification_code_response": #验证码发送响应
var success = data.get("success", false)
var message = data.get("message", "")
if login_panel:
login_panel._on_verification_code_response(success, message)
"verify_code_response": #验证码验证响应
var success = data.get("success", false)
var message = data.get("message", "")
if login_panel:
login_panel._on_verify_code_response(success, message)
"crop_update": #作物更新响应
if main_game:
main_game._handle_crop_update(data)
"action_response": #玩家操作响应
if main_game:
# 处理玩家动作到服务端响应消息
var action_type = data.get("action_type", "")
var success = data.get("success", false)
var message = data.get("message", "")
var updated_data = data.get("updated_data", {})
match action_type:
"harvest_crop":#处理收获作物响应
if success:
# 更新玩家数据
if updated_data.has("money"):
main_game.money = updated_data["money"]
if updated_data.has("experience"):
main_game.experience = updated_data["experience"]
if updated_data.has("level"):
main_game.level = updated_data["level"]
if updated_data.has("体力值"):
main_game.stamina = updated_data["体力值"]
if updated_data.has("作物仓库"):
main_game.crop_warehouse = updated_data["作物仓库"]
# 更新UI
main_game._update_ui()
# 更新作物仓库UI
if main_game.crop_warehouse_panel:
main_game.crop_warehouse_panel.update_crop_warehouse_ui()
Toast.show(message, Color.GREEN)
else:
Toast.show(message, Color.RED)
"plant_crop":#处理种植作物响应
if success:
# 更新玩家背包
if updated_data.has("player_bag"):
main_game.player_bag = updated_data["player_bag"]
# 更新玩家背包UI
main_game.player_bag_panel.update_player_bag_ui()
Toast.show(message, Color.GREEN)
else:
Toast.show(message, Color.RED)
"buy_seed":#处理购买种子响应
if success:
# 更新玩家数据
if updated_data.has("money"):
main_game.money = updated_data["money"]
if updated_data.has("player_bag"):
main_game.player_bag = updated_data["player_bag"]
# 更新UI
main_game._update_ui()
main_game.player_bag_panel.update_player_bag_ui()
Toast.show(message, Color.GREEN)
else:
Toast.show(message, Color.RED)
"buy_item":#处理购买道具响应
if success:
# 更新玩家数据
if updated_data.has("money"):
main_game.money = updated_data["money"]
if updated_data.has("道具背包"):
main_game.item_bag = updated_data["道具背包"]
# 更新UI
main_game._update_ui()
if main_game.item_bag_panel:
main_game.item_bag_panel.update_item_bag_ui()
Toast.show(message, Color.GREEN)
else:
Toast.show(message, Color.RED)
"buy_pet":#处理购买宠物响应
if success:
# 更新玩家数据
if updated_data.has("money"):
main_game.money = updated_data["money"]
if updated_data.has("宠物背包"):
main_game.pet_bag = updated_data["宠物背包"]
# 更新UI
main_game._update_ui()
if main_game.pet_bag_panel:
main_game.pet_bag_panel.update_pet_bag_ui()
Toast.show(message, Color.MAGENTA)
else:
Toast.show(message, Color.RED)
"rename_pet":#处理重命名宠物响应
if success:
# 更新玩家数据
if updated_data.has("宠物背包"):
main_game.pet_bag = updated_data["宠物背包"]
# 更新UI
if main_game.pet_bag_panel:
main_game.pet_bag_panel.update_pet_bag_ui()
# 通知宠物信息面板更新
var pet_inform_panel = get_node_or_null("/root/main/BigPanel/SmallPanel/PetInformPanel")
if pet_inform_panel and pet_inform_panel.has_method("on_rename_pet_success"):
var pet_id = data.get("pet_id", "")
var new_name = data.get("new_name", "")
pet_inform_panel.on_rename_pet_success(pet_id, new_name)
Toast.show(message, Color.GREEN)
else:
Toast.show(message, Color.RED)
"set_patrol_pet":#处理设置巡逻宠物响应
if success:
# 更新巡逻宠物数据
if updated_data.has("巡逻宠物"):
main_game.patrol_pets = updated_data["巡逻宠物"]
# 更新巡逻宠物显示
if main_game.has_method("update_patrol_pets"):
main_game.update_patrol_pets()
# 更新巡逻按钮状态
var pet_inform_panel = get_node_or_null("/root/main/BigPanel/SmallPanel/PetInformPanel")
if pet_inform_panel and pet_inform_panel.has_method("_refresh_patrol_button"):
pet_inform_panel._refresh_patrol_button()
Toast.show(message, Color.GREEN)
else:
Toast.show(message, Color.RED)
"use_item":#处理使用道具响应
print("调试:收到道具使用响应")
print(" - success: ", success)
print(" - message: ", message)
print(" - updated_data: ", updated_data)
if success:
print("调试:道具使用成功,开始更新数据")
# 更新玩家数据
if updated_data.has("道具背包"):
main_game.item_bag = updated_data["道具背包"]
print("调试:更新道具背包")
if updated_data.has("farm_lots"):
print("调试:更新地块数据")
main_game.farm_lots = updated_data["farm_lots"]
if updated_data.has("experience"):
main_game.experience = updated_data["experience"]
print("调试:更新经验值: ", main_game.experience)
if updated_data.has("level"):
main_game.level = updated_data["level"]
print("调试:更新等级: ", main_game.level)
# 更新UI
print("调试开始更新UI")
main_game._update_ui()
main_game._update_farm_lots_state()
if main_game.item_bag_panel:
main_game.item_bag_panel.update_item_bag_ui()
print("调试UI更新完成")
Toast.show(message, Color.GREEN)
else:
print("错误:道具使用失败: ", message)
Toast.show(message, Color.RED)
"dig_ground":#处理开垦土地
if success:
# 更新玩家数据
if updated_data.has("money"):
main_game.money = updated_data["money"]
if updated_data.has("experience"):
main_game.experience = updated_data["experience"]
if updated_data.has("level"):
main_game.level = updated_data["level"]
if updated_data.has("farm_lots"):
main_game.farm_lots = updated_data["farm_lots"]
if updated_data.has("player_bag"):
main_game.player_bag = updated_data["player_bag"]
# 更新UI
main_game._update_ui()
main_game._update_farm_lots_state()
# 更新背包UI
if main_game.player_bag_panel:
main_game.player_bag_panel.update_player_bag_ui()
Toast.show(message, Color.GREEN, 3.0, 1.0)
else:
Toast.show(message, Color.RED)
"remove_crop":#处理铲除作物
if success:
# 更新玩家数据
if updated_data.has("money"):
main_game.money = updated_data["money"]
if updated_data.has("farm_lots"):
main_game.farm_lots = updated_data["farm_lots"]
# 更新UI
main_game._update_ui()
main_game._update_farm_lots_state()
Toast.show(message, Color.GREEN)
else:
Toast.show(message, Color.RED)
"water_crop":#处理浇水
if success:
# 更新玩家数据
if updated_data.has("money"):
main_game.money = updated_data["money"]
if updated_data.has("farm_lots"):
main_game.farm_lots = updated_data["farm_lots"]
if updated_data.has("experience"):
main_game.experience = updated_data["experience"]
if updated_data.has("level"):
main_game.level = updated_data["level"]
# 更新UI
main_game._update_ui()
main_game._update_farm_lots_state()
Toast.show(message, Color.CYAN)
else:
Toast.show(message, Color.RED)
"fertilize_crop":#处理施肥
if success:
# 更新玩家数据
if updated_data.has("money"):
main_game.money = updated_data["money"]
if updated_data.has("farm_lots"):
main_game.farm_lots = updated_data["farm_lots"]
if updated_data.has("experience"):
main_game.experience = updated_data["experience"]
if updated_data.has("level"):
main_game.level = updated_data["level"]
# 更新UI
main_game._update_ui()
main_game._update_farm_lots_state()
Toast.show(message, Color.PURPLE)
else:
Toast.show(message, Color.RED)
"upgrade_land":#处理升级土地
if success:
# 更新玩家数据
if updated_data.has("money"):
main_game.money = updated_data["money"]
if updated_data.has("farm_lots"):
main_game.farm_lots = updated_data["farm_lots"]
# 更新UI
main_game._update_ui()
main_game._update_farm_lots_state()
Toast.show(message, Color.GOLD)
else:
Toast.show(message, Color.RED)
"buy_new_ground":#处理添加新土地
if success:
# 更新玩家数据
if updated_data.has("money"):
main_game.money = updated_data["money"]
if updated_data.has("farm_lots"):
main_game.farm_lots = updated_data["farm_lots"]
# 重新创建UI来显示新地块
main_game._create_farm_buttons()
main_game._update_farm_lots_state()
main_game._update_ui()
Toast.show(message, Color.GREEN)
else:
Toast.show(message, Color.RED)
"play_time_response": #游玩时间统计响应
if main_game and main_game.has_method("_handle_play_time_response"):
main_game._handle_play_time_response(data)
"player_rankings_response": #玩家排行榜响应
if main_game and main_game.has_method("_handle_player_rankings_response"):
main_game._handle_player_rankings_response(data)
"crop_data_response": #作物数据更新响应
if main_game and main_game.has_method("_handle_crop_data_response"):
main_game._handle_crop_data_response(data)
"item_config_response": #道具配置数据响应
if main_game and main_game.has_method("_handle_item_config_response"):
main_game._handle_item_config_response(data)
"visit_player_response": #访问玩家响应
if main_game and main_game.has_method("_handle_visit_player_response"):
main_game._handle_visit_player_response(data)
"return_my_farm_response": #返回我的农场响应
if main_game and main_game.has_method("_handle_return_my_farm_response"):
main_game._handle_return_my_farm_response(data)
"like_player_response": #点赞玩家响应
if main_game and main_game.has_method("_handle_like_player_response"):
main_game._handle_like_player_response(data)
"online_players_response": #玩家在线响应
if main_game and main_game.has_method("_handle_online_players_response"):
main_game._handle_online_players_response(data)
"daily_check_in_response": #每日签到响应
if main_game and main_game.has_method("_handle_daily_check_in_response"):
main_game._handle_daily_check_in_response(data)
"check_in_data_response": #获取签到数据响应
if main_game and main_game.has_method("_handle_check_in_data_response"):
main_game._handle_check_in_data_response(data)
"lucky_draw_response": #幸运抽奖响应
if main_game and main_game.has_method("_handle_lucky_draw_response"):
main_game._handle_lucky_draw_response(data)
"new_player_gift_response": #新手大礼包响应
if main_game and main_game.has_method("_handle_new_player_gift_response"):
main_game._handle_new_player_gift_response(data)
"online_gift_data_response": #在线礼包数据响应
if main_game and main_game.has_method("_handle_online_gift_data_response"):
main_game._handle_online_gift_data_response(data)
"claim_online_gift_response": #领取在线礼包响应
if main_game and main_game.has_method("_handle_claim_online_gift_response"):
main_game._handle_claim_online_gift_response(data)
"pong": #延迟检测响应
handle_pong_response(data)
"modify_account_info_response": #修改账号信息响应
if main_game and main_game.has_method("_handle_account_setting_response"):
main_game._handle_account_setting_response(data)
"delete_account_response": #删除账号响应
if main_game and main_game.has_method("_handle_account_setting_response"):
main_game._handle_account_setting_response(data)
"refresh_player_info_response": #刷新玩家信息响应
if main_game and main_game.has_method("_handle_account_setting_response"):
main_game._handle_account_setting_response(data)
"steal_caught": #偷菜被发现响应
if main_game and main_game.has_method("_handle_steal_caught_response"):
main_game._handle_steal_caught_response(data)
"global_broadcast_message": #全服大喇叭消息
if main_game and main_game.has_method("_handle_global_broadcast_message"):
main_game._handle_global_broadcast_message(data)
"global_broadcast_response": #全服大喇叭发送响应
if main_game and main_game.has_method("_handle_global_broadcast_response"):
main_game._handle_global_broadcast_response(data)
"broadcast_history_response": #全服大喇叭历史消息响应
if main_game and main_game.has_method("_handle_broadcast_history_response"):
main_game._handle_broadcast_history_response(data)
"use_pet_item_response": #宠物使用道具响应
if main_game and main_game.has_method("_handle_use_pet_item_response"):
main_game._handle_use_pet_item_response(data)
"use_farm_item_response": #农场道具使用响应
if main_game and main_game.has_method("_handle_use_farm_item_response"):
main_game._handle_use_farm_item_response(data)
"buy_scare_crow_response": #购买稻草人响应
if main_game and main_game.has_method("_handle_buy_scare_crow_response"):
main_game._handle_buy_scare_crow_response(data)
"modify_scare_crow_config_response": #修改稻草人配置响应
if main_game and main_game.has_method("_handle_modify_scare_crow_config_response"):
main_game._handle_modify_scare_crow_config_response(data)
"get_scare_crow_config_response": #获取稻草人配置响应
if main_game and main_game.has_method("_handle_get_scare_crow_config_response"):
main_game._handle_get_scare_crow_config_response(data)
"wisdom_tree_operation_response": #智慧树操作响应
var success = data.get("success", false)
var message = data.get("message", "")
var operation_type = data.get("operation_type", "")
var updated_data = data.get("updated_data", {})
if wisdom_tree_panel and wisdom_tree_panel.has_method("handle_wisdom_tree_operation_response"):
wisdom_tree_panel.handle_wisdom_tree_operation_response(success, message, operation_type, updated_data)
"wisdom_tree_message_response": #智慧树消息发送响应
var success = data.get("success", false)
var message = data.get("message", "")
var updated_data = data.get("updated_data", {})
if wisdom_tree_panel and wisdom_tree_panel.has_method("handle_wisdom_tree_message_response"):
wisdom_tree_panel.handle_wisdom_tree_message_response(success, message, updated_data)
"wisdom_tree_config_response": #智慧树配置响应
if main_game and main_game.has_method("_handle_wisdom_tree_config_response"):
main_game._handle_wisdom_tree_config_response(data)
_:
# 显示其他类型的消息
return
_:
# 处理非JSON数据
return
#=========================客户端与服务端通信核心=========================================
#=====================================网络连接基本处理=========================================
@@ -604,15 +516,11 @@ func connect_to_current_server():
status_label.text = "正在连接 " + config["name"] + "..."
status_label.modulate = Color.YELLOW
print("=== 尝试连接服务器 ===")
print("服务器名称: ", config["name"])
print("服务器地址: ", config["host"], ":", config["port"])
print("服务器索引: ", current_server_index, "/", server_configs.size() - 1)
is_trying_to_connect = true
connection_start_time = Time.get_unix_time_from_system()
client.connect_to_server(config["host"], config["port"])
#手动发送消息处理
func _on_send_button_pressed():
if not client.is_client_connected():
@@ -636,6 +544,7 @@ func _on_send_button_pressed():
#=====================================网络操作处理=========================================
#=====================================客户端向服务端发送消息处理=========================================
#发送登录信息
func sendLoginInfo(username, password):
@@ -1180,8 +1089,7 @@ func handle_pong_response(data = null):
var current_time = Time.get_unix_time_from_system()
current_ping = int((current_time - ping_start_time) * 1000) # 转换为毫秒
is_measuring_ping = false
#print("延迟: ", current_ping, "ms")
# 更新连接状态显示
update_connection_status()

View File

@@ -1,28 +1,55 @@
[gd_scene load_steps=3 format=3 uid="uid://dbfqu87627yg6"]
[gd_scene load_steps=4 format=3 uid="uid://dbfqu87627yg6"]
[ext_resource type="Script" uid="uid://fk4q3x6uqydd" path="res://Script/BigPanel/PlayerRankingPanel.gd" id="1_efhd6"]
[ext_resource type="PackedScene" uid="uid://crd28qnymob7" path="res://GUI/PlayerRankingItem.tscn" id="1_xwp76"]
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_efhd6"]
border_width_left = 10
border_width_top = 10
border_width_right = 10
border_width_bottom = 10
corner_radius_top_left = 20
corner_radius_top_right = 20
corner_radius_bottom_right = 20
corner_radius_bottom_left = 20
corner_detail = 20
shadow_size = 20
[node name="PlayerRankingPanel" type="Panel"]
offset_left = 2.0
offset_right = 1402.0
offset_bottom = 720.0
offset_left = 59.0
offset_top = 37.0
offset_right = 1459.0
offset_bottom = 757.0
scale = Vector2(0.9, 0.9)
theme_override_styles/panel = SubResource("StyleBoxFlat_efhd6")
script = ExtResource("1_efhd6")
[node name="Background" type="ColorRect" parent="."]
layout_mode = 0
offset_left = -171.0
offset_top = -109.0
offset_right = 1582.0
offset_bottom = 792.0
color = Color(1, 1, 1, 0)
[node name="RegisterPlayerNum" type="Label" parent="."]
self_modulate = Color(1, 0.701961, 1, 1)
layout_mode = 0
offset_left = 864.0
offset_right = 1014.0
offset_bottom = 42.0
offset_left = 841.25
offset_top = 18.75
offset_right = 991.25
offset_bottom = 60.75
theme_override_colors/font_outline_color = Color(0, 0, 0, 1)
theme_override_constants/outline_size = 15
theme_override_font_sizes/font_size = 30
text = "注册人数:"
[node name="Title" type="RichTextLabel" parent="."]
layout_mode = 2
offset_left = 2.0
offset_right = 1395.0
offset_bottom = 56.0
offset_left = 7.49999
offset_top = 18.75
offset_right = 1400.5
offset_bottom = 74.75
size_flags_vertical = 3
theme_override_colors/font_outline_color = Color(0, 0, 0, 1)
theme_override_colors/font_shadow_color = Color(0, 0, 0, 1)
@@ -37,47 +64,49 @@ horizontal_alignment = 1
[node name="SearchLineEdit" type="LineEdit" parent="."]
layout_mode = 0
offset_left = 143.0
offset_top = 3.0
offset_right = 426.0
offset_bottom = 60.0
offset_left = 95.0
offset_top = 21.25
offset_right = 378.0
offset_bottom = 78.25
theme_override_font_sizes/font_size = 35
text = "输入要搜索的人"
[node name="RefreshButton" type="Button" parent="."]
custom_minimum_size = Vector2(55, 55)
layout_mode = 0
offset_top = 3.0
offset_right = 78.0
offset_bottom = 60.0
offset_left = 16.25
offset_top = 21.25
offset_right = 94.25
offset_bottom = 78.25
theme_override_font_sizes/font_size = 35
text = "刷新"
[node name="SearchButton" type="Button" parent="."]
custom_minimum_size = Vector2(55, 55)
layout_mode = 0
offset_left = 425.0
offset_top = 3.0
offset_right = 503.0
offset_bottom = 60.0
offset_left = 377.5
offset_top = 21.25
offset_right = 455.5
offset_bottom = 78.25
theme_override_font_sizes/font_size = 35
text = "搜索"
[node name="QuitButton" type="Button" parent="."]
custom_minimum_size = Vector2(55, 55)
layout_mode = 0
offset_left = 1338.0
offset_top = 3.0
offset_right = 1395.0
offset_bottom = 60.0
offset_left = 1326.25
offset_top = 16.25
offset_right = 1383.25
offset_bottom = 73.25
theme_override_font_sizes/font_size = 35
text = "X"
[node name="FiterAndSortHBox" type="HBoxContainer" parent="."]
layout_mode = 0
offset_top = 63.0
offset_right = 1398.0
offset_bottom = 120.0
offset_left = 7.50001
offset_top = 105.0
offset_right = 1388.5
offset_bottom = 162.0
[node name="SortLabel" type="Label" parent="FiterAndSortHBox"]
layout_mode = 2
@@ -138,9 +167,10 @@ text = "在线情况"
[node name="Scroll" type="ScrollContainer" parent="."]
layout_mode = 2
offset_top = 121.0
offset_right = 1400.0
offset_bottom = 720.0
offset_left = 14.0
offset_top = 171.0
offset_right = 1389.0
offset_bottom = 707.0
size_flags_vertical = 3
[node name="PlayerList" type="VBoxContainer" parent="Scroll"]

View File

@@ -1,27 +1,38 @@
[gd_scene load_steps=3 format=3 uid="uid://dckc8nrn7p425"]
[gd_scene load_steps=4 format=3 uid="uid://dckc8nrn7p425"]
[ext_resource type="Script" uid="uid://bljtkxil64h14" path="res://Script/SmallPanel/LandPanel.gd" id="1_nmy5p"]
[ext_resource type="Texture2D" uid="uid://2sdfbvf1isif" path="res://icon.svg" id="2_07q41"]
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_03j44"]
border_width_left = 10
border_width_top = 10
border_width_right = 10
border_width_bottom = 10
corner_detail = 20
[node name="LandPanel" type="Panel"]
offset_left = 385.0
offset_top = 69.0
offset_right = 901.0
offset_bottom = 540.0
theme_override_styles/panel = SubResource("StyleBoxFlat_03j44")
script = ExtResource("1_nmy5p")
[node name="Quit_Button" type="Button" parent="."]
layout_mode = 0
offset_left = 475.0
offset_right = 515.0
offset_bottom = 43.0
offset_left = 466.0
offset_top = 10.0
offset_right = 506.0
offset_bottom = 53.0
theme_override_font_sizes/font_size = 25
text = "X"
[node name="Refresh_Button" type="Button" parent="."]
layout_mode = 0
offset_right = 58.0
offset_bottom = 43.0
offset_left = 9.0
offset_top = 10.0
offset_right = 67.0
offset_bottom = 53.0
theme_override_font_sizes/font_size = 25
text = "刷新"
@@ -41,18 +52,17 @@ text = "土地面板"
horizontal_alignment = 1
vertical_alignment = 1
[node name="GroundFunctionGrid" type="GridContainer" parent="."]
layout_mode = 2
offset_top = 42.0
offset_right = 516.0
offset_bottom = 142.0
columns = 5
[node name="GroundFunctionGrid" type="HBoxContainer" parent="."]
layout_mode = 0
offset_left = 9.0
offset_top = 84.0
offset_right = 505.0
offset_bottom = 184.0
[node name="Dig_Button" type="Button" parent="GroundFunctionGrid"]
custom_minimum_size = Vector2(100, 100)
layout_mode = 2
size_flags_horizontal = 0
size_flags_vertical = 4
size_flags_horizontal = 3
theme_override_colors/font_disabled_color = Color(0, 0, 0, 1)
theme_override_colors/font_hover_pressed_color = Color(0, 0, 0, 1)
theme_override_colors/font_hover_color = Color(0, 0, 0, 1)
@@ -68,7 +78,7 @@ expand_icon = true
[node name="Plant_Button" type="Button" parent="GroundFunctionGrid"]
custom_minimum_size = Vector2(100, 100)
layout_mode = 2
size_flags_horizontal = 0
size_flags_horizontal = 3
size_flags_vertical = 4
theme_override_colors/font_disabled_color = Color(0, 0, 0, 1)
theme_override_colors/font_hover_pressed_color = Color(0, 0, 0, 1)
@@ -84,7 +94,7 @@ expand_icon = true
[node name="Harvest_Button" type="Button" parent="GroundFunctionGrid"]
custom_minimum_size = Vector2(100, 100)
layout_mode = 2
size_flags_horizontal = 0
size_flags_horizontal = 3
size_flags_vertical = 4
theme_override_colors/font_disabled_color = Color(0, 0, 0, 1)
theme_override_colors/font_hover_pressed_color = Color(0, 0, 0, 1)
@@ -100,7 +110,7 @@ expand_icon = true
[node name="Upgrade_Button" type="Button" parent="GroundFunctionGrid"]
custom_minimum_size = Vector2(100, 100)
layout_mode = 2
size_flags_horizontal = 0
size_flags_horizontal = 3
size_flags_vertical = 4
theme_override_colors/font_color = Color(0.0705882, 0.411765, 0.87451, 1)
theme_override_colors/font_focus_color = Color(0, 0, 0, 1)
@@ -112,9 +122,10 @@ expand_icon = true
[node name="CropImageVBox" type="VBoxContainer" parent="."]
layout_mode = 2
offset_top = 280.0
offset_right = 512.0
offset_bottom = 408.0
offset_left = 9.0
offset_top = 330.0
offset_right = 503.0
offset_bottom = 458.0
alignment = 1
[node name="CropTextureRect" type="TextureRect" parent="CropImageVBox"]
@@ -127,16 +138,18 @@ stretch_mode = 5
[node name="InformVBox" type="VBoxContainer" parent="."]
layout_mode = 0
offset_top = 142.0
offset_right = 1280.0
offset_bottom = 483.0
offset_left = 9.0
offset_top = 197.0
offset_right = 1249.0
offset_bottom = 479.0
scale = Vector2(0.4, 0.4)
[node name="GroundInformVBox" type="VBoxContainer" parent="InformVBox"]
[node name="GroundInformVBox" type="HBoxContainer" parent="InformVBox"]
layout_mode = 2
[node name="GroundLevel" type="Label" parent="InformVBox/GroundInformVBox"]
layout_mode = 2
size_flags_horizontal = 3
theme_override_font_sizes/font_size = 40
text = "土地等级:"
horizontal_alignment = 1
@@ -144,6 +157,7 @@ vertical_alignment = 1
[node name="GroundFunction" type="Label" parent="InformVBox/GroundInformVBox"]
layout_mode = 2
size_flags_horizontal = 3
theme_override_font_sizes/font_size = 40
text = "土地功能:"
horizontal_alignment = 1
@@ -230,7 +244,7 @@ modulate = Color(0.988235, 0.831373, 1, 1)
layout_mode = 2
size_flags_horizontal = 3
theme_override_font_sizes/font_size = 40
text = "描述:啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊"
text = "描述:啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊"
[connection signal="pressed" from="Quit_Button" to="." method="_on_quit_button_pressed"]
[connection signal="pressed" from="Refresh_Button" to="." method="_on_refresh_button_pressed"]

View File

@@ -1,28 +1,41 @@
[gd_scene load_steps=2 format=3 uid="uid://4rwitowdt4h"]
[gd_scene load_steps=3 format=3 uid="uid://4rwitowdt4h"]
[ext_resource type="Script" uid="uid://rlk8e51pibtm" path="res://Script/SmallPanel/OneClickPlantPanel.gd" id="1_cvoer"]
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_cvoer"]
border_width_left = 15
border_width_top = 15
border_width_right = 15
border_width_bottom = 15
corner_radius_top_left = 20
corner_radius_top_right = 20
corner_radius_bottom_right = 20
corner_radius_bottom_left = 20
corner_detail = 20
shadow_size = 20
[node name="OneClickPlantPanel" type="Panel"]
visible = false
offset_left = 450.0
offset_top = 77.0
offset_right = 966.0
offset_bottom = 327.0
offset_left = 467.0
offset_top = 125.0
offset_right = 1075.0
offset_bottom = 441.0
theme_override_styles/panel = SubResource("StyleBoxFlat_cvoer")
script = ExtResource("1_cvoer")
[node name="Quit_Button" type="Button" parent="."]
layout_mode = 0
offset_left = 465.0
offset_right = 515.0
offset_bottom = 50.0
offset_left = 535.0
offset_top = 21.0
offset_right = 585.0
offset_bottom = 71.0
theme_override_font_sizes/font_size = 30
text = "X"
[node name="Title" type="Label" parent="."]
self_modulate = Color(0.431373, 0.498039, 1, 1)
layout_mode = 2
offset_right = 516.0
offset_bottom = 42.0
offset_right = 608.0
offset_bottom = 71.0
theme_override_colors/font_shadow_color = Color(0, 0, 0, 1)
theme_override_colors/font_outline_color = Color(0, 0, 0, 1)
theme_override_constants/shadow_offset_x = 3
@@ -36,9 +49,10 @@ vertical_alignment = 1
[node name="Grid" type="GridContainer" parent="."]
layout_mode = 2
offset_top = 46.0
offset_right = 500.0
offset_bottom = 210.0
offset_left = 47.0
offset_top = 87.0
offset_right = 563.0
offset_bottom = 291.0
columns = 5
[node name="FullScreenPlantBtn" type="Button" parent="Grid"]

View File

@@ -1,20 +1,33 @@
[gd_scene load_steps=2 format=3 uid="uid://dpiy0aim20n2h"]
[gd_scene load_steps=3 format=3 uid="uid://dpiy0aim20n2h"]
[ext_resource type="Script" uid="uid://ccaqrb6sdwbux" path="res://Script/SmallPanel/OnlineGiftPanel.gd" id="1_i0ga4"]
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_i0ga4"]
border_width_left = 15
border_width_top = 15
border_width_right = 15
border_width_bottom = 15
corner_radius_top_left = 20
corner_radius_top_right = 20
corner_radius_bottom_right = 20
corner_radius_bottom_left = 20
corner_detail = 20
shadow_size = 20
[node name="OnlineGiftPanel" type="Panel"]
visible = false
offset_left = 449.0
offset_top = 77.0
offset_right = 970.0
offset_bottom = 327.0
offset_left = 395.0
offset_top = 140.0
offset_right = 1008.0
offset_bottom = 474.0
theme_override_styles/panel = SubResource("StyleBoxFlat_i0ga4")
script = ExtResource("1_i0ga4")
[node name="Quit_Button" type="Button" parent="."]
layout_mode = 0
offset_left = 465.0
offset_right = 515.0
offset_bottom = 50.0
offset_left = 543.0
offset_top = 21.0
offset_right = 593.0
offset_bottom = 71.0
theme_override_font_sizes/font_size = 30
text = "X"
@@ -26,8 +39,8 @@ offset_bottom = 40.0
[node name="Title" type="Label" parent="."]
modulate = Color(0.996846, 0.629335, 1, 1)
layout_mode = 2
offset_right = 516.0
offset_bottom = 42.0
offset_right = 613.0
offset_bottom = 65.0
theme_override_colors/font_shadow_color = Color(0, 0, 0, 1)
theme_override_colors/font_outline_color = Color(0, 0, 0, 1)
theme_override_constants/shadow_offset_x = 3
@@ -41,9 +54,10 @@ vertical_alignment = 1
[node name="Grid" type="GridContainer" parent="."]
layout_mode = 2
offset_top = 46.0
offset_right = 500.0
offset_bottom = 210.0
offset_left = 49.0
offset_top = 93.0
offset_right = 565.0
offset_bottom = 297.0
columns = 5
[node name="OneMinute" type="Button" parent="Grid"]

View File

@@ -187,7 +187,7 @@ func _refresh_player_info():
user_password_input.text = main_game.user_password if main_game.user_password != "" else ""
# 优先从 login_data 获取数据,如果没有则从 data 获取
var player_data = main_game.login_data if main_game.login_data.size() > 0 else main_game.data
var player_data = main_game.login_data #if main_game.login_data.size() > 0 else main_game.data
player_name_input.text = player_data.get("player_name", "")
farm_name_input.text = player_data.get("farm_name", "")

View File

@@ -435,7 +435,6 @@ func _on_quit_button_pressed():
#刷新面板信息
func _on_refresh_button_pressed() -> void:
print("刷新土地面板信息")
_update_panel_information()
Toast.show("面板信息已刷新", Color.GREEN, 1.5, 1.0)

View File

@@ -105,15 +105,7 @@ func _ready() -> void:
func load_wisdom_tree_data():
if main_game and main_game.login_data.has("智慧树配置"):
wisdom_tree_config = main_game.login_data["智慧树配置"]
else:
# 如果没有数据,使用默认值
wisdom_tree_config = {
"智慧树显示的话": "",
"等级": 1,
"经验": 0,
"生命值": 100,
"高度": 20
}
# 更新UI显示
func update_ui():
@@ -129,8 +121,6 @@ func update_ui():
experience.text = "经验: " + str(current_exp) + "/" + str(max_exp)
height.text = "高度: " + str(wisdom_tree_config["高度"]) + "cm"
# 检查是否处于访问模式
var is_visiting_mode = main_game and main_game.is_visiting_mode
# 根据生命值设置颜色
if current_health <= 0:
@@ -141,24 +131,14 @@ func update_ui():
elif current_health <= max_health * 0.3: # 生命值低于30%
health.modulate = Color.ORANGE
revive_button.hide()
_set_buttons_enabled(not is_visiting_mode) # 访问模式下禁用按钮
else:
health.modulate = Color.GREEN
revive_button.hide()
_set_buttons_enabled(not is_visiting_mode) # 访问模式下禁用按钮
# 访问模式下的特殊处理
if is_visiting_mode:
revive_button.hide()
talk_input.editable = false
talk_input.placeholder_text = "访问模式下无法发送消息"
send_button.disabled = true
send_button.text = "访问模式"
else:
talk_input.editable = true
talk_input.placeholder_text = "在这里输入(*´∀ ˋ*)"
send_button.disabled = false
send_button.text = "发送"
talk_input.editable = true
talk_input.placeholder_text = "在这里输入(*´∀ ˋ*)"
send_button.disabled = false
send_button.text = "发送"
# 获取下一等级需要的经验
func get_next_level_experience() -> int:
@@ -198,96 +178,38 @@ func _on_operation_confirmed(operation_type: String):
# 浇水按钮
func _on_water_button_pressed():
# 检查是否处于访问模式
if main_game and main_game.is_visiting_mode:
Toast.show("访问模式下无法操作智慧树!", Color.YELLOW)
return
if wisdom_tree_config["当前生命值"] <= 0:
Toast.show("智慧树已死亡,请先复活!", Color.RED)
return
show_operation_confirm("water", 100, "给智慧树浇水")
# 施肥按钮
func _on_fertilize_button_pressed():
# 检查是否处于访问模式
if main_game and main_game.is_visiting_mode:
Toast.show("访问模式下无法操作智慧树!", Color.YELLOW)
return
if wisdom_tree_config["当前生命值"] <= 0:
Toast.show("智慧树已死亡,请先复活!", Color.RED)
return
show_operation_confirm("fertilize", 200, "给智慧树施肥")
# 除草按钮
func _on_kill_grass_button_pressed():
# 检查是否处于访问模式
if main_game and main_game.is_visiting_mode:
Toast.show("访问模式下无法操作智慧树!", Color.YELLOW)
return
if wisdom_tree_config["当前生命值"] <= 0:
Toast.show("智慧树已死亡,请先复活!", Color.RED)
return
show_operation_confirm("kill_grass", 150, "给智慧树除草")
# 杀虫按钮
func _on_kill_bug_button_pressed():
# 检查是否处于访问模式
if main_game and main_game.is_visiting_mode:
Toast.show("访问模式下无法操作智慧树!", Color.YELLOW)
return
if wisdom_tree_config["当前生命值"] <= 0:
Toast.show("智慧树已死亡,请先复活!", Color.RED)
return
show_operation_confirm("kill_bug", 150, "给智慧树杀虫")
# 放音乐按钮
func _on_play_music_button_pressed():
# 检查是否处于访问模式
if main_game and main_game.is_visiting_mode:
Toast.show("访问模式下无法操作智慧树!", Color.YELLOW)
return
if wisdom_tree_config["当前生命值"] <= 0:
Toast.show("智慧树已死亡,请先复活!", Color.RED)
return
show_operation_confirm("play_music", 100, "给智慧树放音乐")
# 复活按钮
func _on_revive_button_pressed():
# 检查是否处于访问模式
if main_game and main_game.is_visiting_mode:
Toast.show("访问模式下无法操作智慧树!", Color.YELLOW)
return
if wisdom_tree_config["当前生命值"] > 0:
Toast.show("智慧树还活着,不需要复活!", Color.YELLOW)
return
show_operation_confirm("revive", 1000, "复活智慧树")
# 发送消息按钮
func _on_send_button_pressed():
# 检查是否处于访问模式
if main_game and main_game.is_visiting_mode:
Toast.show("访问模式下无法发送消息!", Color.YELLOW)
return
var message = talk_input.text.strip_edges()
if message.is_empty():
Toast.show("请输入要发送的消息!", Color.YELLOW)
return
if message.length() > 100:
Toast.show("消息长度不能超过100个字符", Color.RED)
if message.length() > 50:
Toast.show("消息长度不能超过50个字符", Color.RED)
return
# 发送消息到服务器
@@ -315,7 +237,7 @@ func handle_wisdom_tree_operation_response(success: bool, message: String, opera
main_game.money = updated_data["money"]
main_game._update_ui()
# 更新面板UI
# 更新智慧树设置面板UI
update_ui()
# 同步更新MainGame中的智慧树显示
@@ -375,10 +297,6 @@ func handle_wisdom_tree_message_response(success: bool, message: String, updated
else:
Toast.show(message, Color.RED)
# 检查等级是否提升(此函数已不再需要,服务器端处理)
func check_level_up():
# 等级提升现在由服务器端处理,客户端只需要接收更新后的数据
pass
# 面板显示与隐藏切换处理
func _on_visibility_changed():

View File

@@ -6,7 +6,7 @@
"player_name": "柚大青",
"user_name": "2143323382",
"user_password": "tyh@19900420",
"last_login_time": "2025年07月09日16时52分37秒",
"last_login_time": "2025年07月09日19时17分38秒",
"total_login_time": "5时0分7秒",
"farm_lots": [
{

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

After

Width:  |  Height:  |  Size: 27 KiB

View File

@@ -2,7 +2,7 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://c42jmucs5udii"
uid="uid://dcmcy8sk6qeuj"
path="res://.godot/imported/1.webp-113308ca15b586eaeb0bbd809b6997c6.ctex"
metadata={
"vram_texture": false

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 32 KiB

View File

@@ -2,7 +2,7 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://dcmcy8sk6qeuj"
uid="uid://b7qab01msl5l4"
path="res://.godot/imported/2.webp-c7dbb06c083db947520775472c40c124.ctex"
metadata={
"vram_texture": false

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 29 KiB

View File

@@ -2,7 +2,7 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://b7qab01msl5l4"
uid="uid://mtmunwgy1x3g"
path="res://.godot/imported/3.webp-7bbb31894686faa8c9080a58b509200d.ctex"
metadata={
"vram_texture": false

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 26 KiB

View File

@@ -2,7 +2,7 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://0fikmagdh5t0"
uid="uid://cgvoioriuf7y0"
path="res://.godot/imported/0.webp-e38fa2090339e41d8e2bc2f4382d5f43.ctex"
metadata={
"vram_texture": false

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 30 KiB

View File

@@ -2,7 +2,7 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://cgvoioriuf7y0"
uid="uid://wqfspwqqpcwa"
path="res://.godot/imported/1.webp-39c5186218d6a70b3b214094d5602b76.ctex"
metadata={
"vram_texture": false

View File

@@ -2,7 +2,7 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://wqfspwqqpcwa"
uid="uid://bxhe4pl7e2h4r"
path="res://.godot/imported/2.webp-a4ac518035e8dc36ed57f415183fccf4.ctex"
metadata={
"vram_texture": false

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

View File

@@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dgx5k5d626t0m"
path="res://.godot/imported/3.webp-6ae7e142e5a055810c45f1f78d5eae37.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/作物/向日葵/3.webp"
dest_files=["res://.godot/imported/3.webp-6ae7e142e5a055810c45f1f78d5eae37.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.01
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

View File

@@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cwxs07er03ctf"
path="res://.godot/imported/4.webp-1a8ffb7b54f4d9ba58b74c9ee0de9653.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/作物/向日葵/4.webp"
dest_files=["res://.godot/imported/4.webp-1a8ffb7b54f4d9ba58b74c9ee0de9653.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.01
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

View File

@@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bxhe4pl7e2h4r"
path="res://.godot/imported/5.webp-629d3e808c68cd90f65c3666c8f1655c.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/作物/向日葵/5.webp"
dest_files=["res://.godot/imported/5.webp-629d3e808c68cd90f65c3666c8f1655c.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.01
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

View File

@@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cje7iwg3yy5k4"
path="res://.godot/imported/6.webp-ebd14968a65dd4e65469cac7fe6b6fcd.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/作物/向日葵/6.webp"
dest_files=["res://.godot/imported/6.webp-ebd14968a65dd4e65469cac7fe6b6fcd.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.01
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

View File

@@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cbqxg446cqgh4"
path="res://.godot/imported/1750005805792.webp-0fbddd6ffbcf5dbd0a339c41005bb0a8.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/作物/咖啡豆/1750005805792.webp"
dest_files=["res://.godot/imported/1750005805792.webp-0fbddd6ffbcf5dbd0a339c41005bb0a8.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.01
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

View File

@@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bu008ovnojylo"
path="res://.godot/imported/3.webp-ab74e732f37e98b4b6c6a539f37d5938.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/作物/哈密瓜/3.webp"
dest_files=["res://.godot/imported/3.webp-ab74e732f37e98b4b6c6a539f37d5938.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.01
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

Binary file not shown.

Before

Width:  |  Height:  |  Size: 39 KiB

View File

@@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dt4i02lidlyai"
path="res://.godot/imported/4.webp-be45b479791d0d9741a717db8ae610a5.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/作物/哈密瓜/4.webp"
dest_files=["res://.godot/imported/4.webp-be45b479791d0d9741a717db8ae610a5.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.01
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

After

Width:  |  Height:  |  Size: 34 KiB

View File

@@ -2,7 +2,7 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://cc8nngcxoegi5"
uid="uid://dig8kyw0tib3"
path="res://.godot/imported/2.webp-b2dbe3a142652718e988b49bbb0c0744.ctex"
metadata={
"vram_texture": false

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

View File

@@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dig8kyw0tib3"
path="res://.godot/imported/3.webp-6de1b21ec58d062462418ce57bdd5c72.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/作物/土豆/3.webp"
dest_files=["res://.godot/imported/3.webp-6de1b21ec58d062462418ce57bdd5c72.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.01
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

View File

@@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dggi6qs6gb12o"
path="res://.godot/imported/4.webp-66834ef9070628091dbf121b28727f7e.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/作物/土豆/4.webp"
dest_files=["res://.godot/imported/4.webp-66834ef9070628091dbf121b28727f7e.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.01
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 20 KiB

View File

@@ -2,7 +2,7 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://cjep55ut8nu6n"
uid="uid://dgdshxgx8b4wj"
path="res://.godot/imported/1.webp-8e159514a2d5265435603e4f8abadb12.ctex"
metadata={
"vram_texture": false

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

View File

@@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cdiejckm0f4ys"
path="res://.godot/imported/1750050864343.webp-ac1da7418f30a5ffa29164ea2171da4e.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/作物/大白菜/1750050864343.webp"
dest_files=["res://.godot/imported/1750050864343.webp-ac1da7418f30a5ffa29164ea2171da4e.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.01
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 23 KiB

View File

@@ -2,7 +2,7 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://dgdshxgx8b4wj"
uid="uid://dftmxuhrl4jqa"
path="res://.godot/imported/2.webp-bdd6486dc35f8c758136190cc6fa9895.ctex"
metadata={
"vram_texture": false

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

View File

@@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://byfj5siyg0ssq"
path="res://.godot/imported/3.webp-0341056b78c9663bbec47bd90ab15925.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/作物/大白菜/3.webp"
dest_files=["res://.godot/imported/3.webp-0341056b78c9663bbec47bd90ab15925.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.01
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

View File

@@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://crivb703m02k3"
path="res://.godot/imported/4.webp-db34186522e3a517d2a663996ed54306.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/作物/大白菜/4.webp"
dest_files=["res://.godot/imported/4.webp-db34186522e3a517d2a663996ed54306.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.01
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

View File

@@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dftmxuhrl4jqa"
path="res://.godot/imported/5.webp-e042176eac807c5018b0bb45c0903934.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/作物/大白菜/5.webp"
dest_files=["res://.godot/imported/5.webp-e042176eac807c5018b0bb45c0903934.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.01
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 36 KiB

View File

@@ -2,7 +2,7 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://0ti1lqtbress"
uid="uid://lw4nejejuy3e"
path="res://.godot/imported/2.webp-019081ecbc5fe5a76dd6093516a568f2.ctex"
metadata={
"vram_texture": false

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

View File

@@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://ch1bp1pvqwhve"
path="res://.godot/imported/3.webp-d38bb4c3eded2baf6b8623e8f44fac26.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/作物/大豆/3.webp"
dest_files=["res://.godot/imported/3.webp-d38bb4c3eded2baf6b8623e8f44fac26.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.01
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

View File

@@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://lw4nejejuy3e"
path="res://.godot/imported/4.webp-f8473501df123badf6e050c3755091b6.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/作物/大豆/4.webp"
dest_files=["res://.godot/imported/4.webp-f8473501df123badf6e050c3755091b6.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.01
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 32 KiB

View File

@@ -2,7 +2,7 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://bjhlba65jqss4"
uid="uid://5x2uq2r3yjms"
path="res://.godot/imported/2.webp-638bab14e5309cf618b4ad0d9893879c.ctex"
metadata={
"vram_texture": false

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

View File

@@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://up47651sou01"
path="res://.godot/imported/3.webp-de01368555191f7242fd23b203028fee.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/作物/富贵竹/3.webp"
dest_files=["res://.godot/imported/3.webp-de01368555191f7242fd23b203028fee.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.01
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

View File

@@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://5x2uq2r3yjms"
path="res://.godot/imported/4.webp-a994d4186fbe14bbc687bc4c999666ae.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/作物/富贵竹/4.webp"
dest_files=["res://.godot/imported/4.webp-a994d4186fbe14bbc687bc4c999666ae.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.01
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

View File

@@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bmdt730huwogx"
path="res://.godot/imported/5.webp-ec75c8005471a8e9f4bd4c618813b007.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/作物/富贵竹/5.webp"
dest_files=["res://.godot/imported/5.webp-ec75c8005471a8e9f4bd4c618813b007.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.01
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 33 KiB

View File

@@ -2,7 +2,7 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://cw10nck7cykat"
uid="uid://lu6s5qts4hnv"
path="res://.godot/imported/0.webp-01976b7393f4108b4278b5fddaf5c9f1.ctex"
metadata={
"vram_texture": false

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 38 KiB

View File

@@ -2,7 +2,7 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://lu6s5qts4hnv"
uid="uid://doqkqexho8u2"
path="res://.godot/imported/1.webp-aecdb4ce7bebcc6234fa8729e020c125.ctex"
metadata={
"vram_texture": false

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

View File

@@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://clwxxbayjet1h"
path="res://.godot/imported/1750003605876.webp-0f0377d90260327e2169b52f723f20e8.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/作物/小麦/1750003605876.webp"
dest_files=["res://.godot/imported/1750003605876.webp-0f0377d90260327e2169b52f723f20e8.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.01
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

After

Width:  |  Height:  |  Size: 36 KiB

View File

@@ -2,7 +2,7 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://80wh72ot2nxh"
uid="uid://4cbuoe4jv4qf"
path="res://.godot/imported/2.webp-944f6e4f9f746fb1e8751aa4709965cf.ctex"
metadata={
"vram_texture": false

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

View File

@@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://0ed8kn3vmvt8"
path="res://.godot/imported/3.webp-7e4221a32293a0408028a0997ea8eb66.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/作物/小麦/3.webp"
dest_files=["res://.godot/imported/3.webp-7e4221a32293a0408028a0997ea8eb66.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.01
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

View File

@@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://doqkqexho8u2"
path="res://.godot/imported/4.webp-cbfa23fb7bc46659a1357c8af735ef07.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/作物/小麦/4.webp"
dest_files=["res://.godot/imported/4.webp-cbfa23fb7bc46659a1357c8af735ef07.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.01
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

View File

@@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://855x4xx33fhs"
path="res://.godot/imported/5.webp-1bf25fcce803b7fb0138d2176e6f96f2.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/作物/小麦/5.webp"
dest_files=["res://.godot/imported/5.webp-1bf25fcce803b7fb0138d2176e6f96f2.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.01
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

View File

@@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://4cbuoe4jv4qf"
path="res://.godot/imported/6.webp-50d626dd861fc6bdfc265406354eda03.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/作物/小麦/6.webp"
dest_files=["res://.godot/imported/6.webp-50d626dd861fc6bdfc265406354eda03.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.01
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

View File

@@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://y1fjfttfq6v8"
path="res://.godot/imported/7.webp-6cacc92009a9d8b7eb929763cd502fee.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/作物/小麦/7.webp"
dest_files=["res://.godot/imported/7.webp-6cacc92009a9d8b7eb929763cd502fee.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.01
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

View File

@@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dnlcx3cl6fug0"
path="res://.godot/imported/8.webp-a281b1b8074c888afecafcce5a3fec86.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/作物/小麦/8.webp"
dest_files=["res://.godot/imported/8.webp-a281b1b8074c888afecafcce5a3fec86.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.01
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 19 KiB

View File

@@ -2,7 +2,7 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://bjfchr3l1u8s4"
uid="uid://j0gv5s7glfh6"
path="res://.godot/imported/1.webp-23308b73f9bc075e7369d063d94aaaa0.ctex"
metadata={
"vram_texture": false

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 29 KiB

View File

@@ -2,7 +2,7 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://j0gv5s7glfh6"
uid="uid://cioff7umwtsdy"
path="res://.godot/imported/2.webp-6131342f071ac1243132a2b1781db3f0.ctex"
metadata={
"vram_texture": false

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

Some files were not shown because too many files have changed in this diff Show More