using MongoDB.Driver; using NetCore; using NetCore.Protocol.MemoryPack; using NetServer.MongoDB; using NetServer.MongoDB.DBData; using NetServerCore.Attribute; using Protocol.Protocol.MemoryPack.MemoryMessage; namespace NetServer.ServerLogic.Login; [LogicEnrollAtt((int)GameSendType.Login, 100)] public class LoginLogic : GameLogicBasic { public override async Task GameLogic(MemoryRequest internalMemoryRequst, IConnection iConnection, InternalMemoryResponese internalMemoryResponese) { Console.WriteLine("登录成功"); PlayerData playerData = await PlayerDataLink.PlayerDbLink.FindOneDataAsyncPlayerData(Builders.Filter .Eq(r => r.account, internalMemoryRequst.LoginRequest.account)); if (playerData == null) { playerData = new PlayerData(); playerData.account = internalMemoryRequst.LoginRequest.account; playerData.password = internalMemoryRequst.LoginRequest.password; playerData.playerId = System.DateTime.Now.Ticks; playerData.playerLevel = 1; playerData.levelBattleId = 1; playerData.PlayerHero = new List(); playerData.PlayerHero.Add(new PlayerHero() { heroId = 101, heroLevel = 1 }); PlayerDataLink.PlayerDbLink.InsertPlayerData(playerData); } LoginResponse loginResponse = new LoginResponse(); loginResponse.playerLevel = playerData.playerLevel; loginResponse.levelBattleId = playerData.levelBattleId; loginResponse.heroDatas = new List(); for (int i = 0; i < playerData.PlayerHero.Count; i++) { loginResponse.heroDatas.Add(playerData.PlayerHeroToHeroData(playerData.PlayerHero[i])); } loginResponse.ItemDatas = new List(); if (playerData.PlayerItemDatas != null) { for (int i = 0; i < playerData.PlayerItemDatas.Count; i++) { loginResponse.ItemDatas.Add(new ItemData() { itemId = playerData.PlayerItemDatas[i].itemId, itemCount = playerData.PlayerItemDatas[i].itemCount, guid = playerData.PlayerItemDatas[i].guid }); } } loginResponse.EquipDatas = new List(); if (playerData.PlayerItemDatas != null) { for (int i = 0; i < playerData.PlayerEquipDatas.Count; i++) { loginResponse.EquipDatas.Add(new EquipData() { itemId = playerData.PlayerEquipDatas[i].itemId, quality = playerData.PlayerEquipDatas[i].quality, zyEqId = playerData.PlayerEquipDatas[i].zyEqId, isEquip = playerData.PlayerEquipDatas[i].isEquip }); } } MemoryResponse memoryResponse = new MemoryResponse(); memoryResponse.LoginResponse = loginResponse; memoryResponse.GameSendType = GameSendType.Login; _logicManager.SendResponse(memoryResponse, internalMemoryResponese, iConnection); } }