Files
Sprout-Farm/SproutFarm-Backend/module/NetworkCore.py
2025-09-24 15:06:30 +08:00

183 lines
11 KiB
Python

"""
网络通信核心模块
====================================================================
- 负责处理客户端与服务端之间的消息路由
- 将消息类型映射到对应的处理函数
- 提供统一的消息处理接口
====================================================================
"""
class MessageHandler:
"""
消息处理器类
负责将客户端消息路由到对应的处理函数
"""
def __init__(self, server_instance):
"""
初始化消息处理器
Args:
server_instance: 服务器实例,用于调用具体的处理方法
"""
self.server = server_instance
def handle_message(self, client_id, message):
"""
接收客户端消息并路由到对应处理函数
这是服务端与客户端通信的核心中的核心
Args:
client_id: 客户端ID
message: 消息内容(字典格式)
Returns:
处理结果
"""
message_type = message.get("type", "")
# 用户认证相关
if message_type == "greeting": # 默认欢迎
return self.server._handle_greeting(client_id, message)
elif message_type == "login": # 玩家登录
return self.server._handle_login(client_id, message)
elif message_type == "register": # 玩家注册
return self.server._handle_register(client_id, message)
elif message_type == "request_verification_code": # 验证码请求
return self.server._handle_verification_code_request(client_id, message)
elif message_type == "request_forget_password_verification_code": # 忘记密码验证码请求
return self.server._handle_forget_password_verification_code_request(client_id, message)
elif message_type == "reset_password": # 重置密码
return self.server._handle_reset_password_request(client_id, message)
elif message_type == "verify_code": # 验证码
return self.server._handle_verify_code(client_id, message)
# ---------------------------------------------------------------------------
# 游戏操作相关
elif message_type == "harvest_crop": # 收获作物
return self.server._handle_harvest_crop(client_id, message)
elif message_type == "plant_crop": # 种植作物
return self.server._handle_plant_crop(client_id, message)
elif message_type == "buy_seed": # 购买种子
return self.server._handle_buy_seed(client_id, message)
elif message_type == "buy_item": # 购买道具
return self.server._handle_buy_item(client_id, message)
elif message_type == "buy_pet": # 购买宠物
return self.server._handle_buy_pet(client_id, message)
elif message_type == "rename_pet": # 重命名宠物
return self.server._handle_rename_pet(client_id, message)
elif message_type == "set_patrol_pet": # 设置巡逻宠物
return self.server._handle_set_patrol_pet(client_id, message)
elif message_type == "set_battle_pet": # 设置出战宠物
return self.server._handle_set_battle_pet(client_id, message)
elif message_type == "update_battle_pet_data": # 更新宠物对战数据
return self.server._handle_update_battle_pet_data(client_id, message)
elif message_type == "feed_pet": # 喂食宠物
return self.server._handle_feed_pet(client_id, message)
elif message_type == "dig_ground": # 开垦土地
return self.server._handle_dig_ground(client_id, message)
elif message_type == "remove_crop": # 铲除作物
return self.server._handle_remove_crop(client_id, message)
elif message_type == "water_crop": # 浇水
return self.server._handle_water_crop(client_id, message)
elif message_type == "fertilize_crop": # 施肥
return self.server._handle_fertilize_crop(client_id, message)
elif message_type == "use_item": # 使用道具
return self.server._handle_use_item(client_id, message)
elif message_type == "upgrade_land": # 升级土地
return self.server._handle_upgrade_land(client_id, message)
elif message_type == "buy_new_ground": # 添加新的土地
return self.server._handle_buy_new_ground(client_id, message)
elif message_type == "like_player": # 点赞玩家
return self.server._handle_like_player(client_id, message)
elif message_type == "request_online_players": # 请求在线玩家
return self.server._handle_online_players_request(client_id, message)
elif message_type == "get_play_time": # 获取游玩时间
return self.server._handle_get_play_time(client_id)
elif message_type == "update_play_time": # 更新游玩时间
return self.server._handle_update_play_time(client_id)
elif message_type == "request_player_rankings": # 请求玩家排行榜
return self.server._handle_player_rankings_request(client_id, message)
elif message_type == "request_crop_data": # 请求作物数据
return self.server._handle_crop_data_request(client_id)
elif message_type == "request_item_config": # 请求道具配置数据
return self.server._handle_item_config_request(client_id)
elif message_type == "request_pet_config": # 请求宠物配置数据
return self.server._handle_pet_config_request(client_id)
elif message_type == "request_game_tips_config": # 请求游戏小提示配置数据
return self.server._handle_game_tips_config_request(client_id)
elif message_type == "visit_player": # 拜访其他玩家农场
return self.server._handle_visit_player_request(client_id, message)
elif message_type == "return_my_farm": # 返回我的农场
return self.server._handle_return_my_farm_request(client_id, message)
elif message_type == "daily_check_in": # 每日签到
return self.server._handle_daily_check_in_request(client_id, message)
elif message_type == "get_check_in_data": # 获取签到数据
return self.server._handle_get_check_in_data_request(client_id, message)
elif message_type == "lucky_draw": # 幸运抽奖
return self.server._handle_lucky_draw_request(client_id, message)
elif message_type == "claim_new_player_gift": # 领取新手大礼包
return self.server._handle_new_player_gift_request(client_id, message)
elif message_type == "get_online_gift_data": # 获取在线礼包数据
return self.server._handle_get_online_gift_data_request(client_id, message)
elif message_type == "claim_online_gift": # 领取在线礼包
return self.server._handle_claim_online_gift_request(client_id, message)
elif message_type == "ping": # 客户端ping请求
return self.server._handle_ping_request(client_id, message)
elif message_type == "modify_account_info": # 修改账号信息
return self.server._handle_modify_account_info_request(client_id, message)
elif message_type == "delete_account": # 删除账号
return self.server._handle_delete_account_request(client_id, message)
elif message_type == "refresh_player_info": # 刷新玩家信息
return self.server._handle_refresh_player_info_request(client_id, message)
elif message_type == "global_broadcast": # 全服大喇叭消息
return self.server._handle_global_broadcast_message(client_id, message)
elif message_type == "request_broadcast_history": # 请求全服大喇叭历史消息
return self.server._handle_request_broadcast_history(client_id, message)
elif message_type == "use_pet_item": # 宠物使用道具
return self.server._handle_use_pet_item(client_id, message)
elif message_type == "use_farm_item": # 农场道具使用
return self.server._handle_use_farm_item(client_id, message)
elif message_type == "buy_scare_crow": # 购买稻草人
return self.server._handle_buy_scare_crow(client_id, message)
elif message_type == "modify_scare_crow_config": # 修改稻草人配置
return self.server._handle_modify_scare_crow_config(client_id, message)
elif message_type == "get_scare_crow_config": # 获取稻草人配置
return self.server._handle_get_scare_crow_config(client_id, message)
elif message_type == "wisdom_tree_operation": # 智慧树操作
return self.server._handle_wisdom_tree_operation(client_id, message)
elif message_type == "wisdom_tree_message": # 智慧树消息
return self.server._handle_wisdom_tree_message(client_id, message)
elif message_type == "get_wisdom_tree_config": # 获取智慧树配置
return self.server._handle_get_wisdom_tree_config(client_id, message)
elif message_type == "sell_crop": # 出售作物
return self.server._handle_sell_crop(client_id, message)
elif message_type == "add_product_to_store": # 添加商品到小卖部
return self.server._handle_add_product_to_store(client_id, message)
elif message_type == "remove_store_product": # 下架小卖部商品
return self.server._handle_remove_store_product(client_id, message)
elif message_type == "buy_store_product": # 购买小卖部商品
return self.server._handle_buy_store_product(client_id, message)
elif message_type == "buy_store_booth": # 购买小卖部格子
return self.server._handle_buy_store_booth(client_id, message)
elif message_type == "save_game_settings": # 保存游戏设置
return self.server._handle_save_game_settings(client_id, message)
elif message_type == "pet_battle_result": # 宠物对战结果
return self.server._handle_pet_battle_result(client_id, message)
elif message_type == "today_divination": # 今日占卜
return self.server._handle_today_divination(client_id, message)
elif message_type == "give_money": # 送金币
return self.server._handle_give_money_request(client_id, message)
elif message_type == "sync_bag_data": # 同步背包数据
return self.server._handle_sync_bag_data(client_id, message)
# ---------------------------------------------------------------------------
# 管理员操作相关
elif message_type == "kick_player": # 踢出玩家
return self.server._handle_kick_player(client_id, message)
# elif message_type == "message": # 处理聊天消息(暂未实现)
# return self.server._handle_chat_message(client_id, message)
else:
# 调用父类的默认处理方法
return super(type(self.server), self.server)._handle_message(client_id, message)