using Cal.DataTable; using System.Collections.Generic; using UnityEngine; namespace ET { [ActorMessageHandler] public class C2M_GetBasicalInfoHandler : AMActorLocationHandler { protected override async ETTask Run(Unit unit, C2M_GetBasicalInfo message) { try { Log.Debug($"【{ UserComponent.Instance.Get(unit.Id)?.NickName} ({ unit.Id})】已经进入游戏"); PlayerData data = unit.GetComponent(); Team team = TeamComponent.Instance.Get(unit.TeamLeaderId); if (team == null) { team = TeamComponent.Instance.CreateTeam(unit.Id); } team.ChangeState(TeamState.None); var num = unit.GetComponent(); CharacterHelper.ResetAddNumeric(unit, num); data.IsBattleIdle = false; UnitScene unitScene = unit.GetComponent(); if (unitScene == null) { Log.Error($"unitScene == null where id = {unit.Id}"); return; } if(unitScene.MapId/100 == Sys_SceneId.Scene_BattleIdle) { unitScene.MapId = Sys_SceneId.Scene_MainCity * 100 + 1; } //!+重新添加 BuffLib lib = await BuffLibComponent.Instance.Query(unit.Id); //!重新添加GoodsBuff foreach (KeyValuePair kp in lib.goodsEffectBuffDic) { GoodsBase goodsBase = DataTableHelper.Get(kp.Key); if (goodsBase == null) { Log.Error($"goodsBase == null where id = {kp.Key}"); } else GoodsEffectComponent.Instance.ReAcquireGoodsEffect(unit, goodsBase,kp.Value); } BuffLibComponent.Instance.Remove(unit.Id, lib).Coroutine(); //!+发送玩家基础性息 UnitCharacter unitCharacter =await CharacterHelper.GetUnitCharacter(unit); MessageHelper.SendActor(unit, new M2C_SendUnitInfo { UnitCharacter = unitCharacter }); CharacterHelper.SyncAttribute(unit); TeamHelper.SendTeamMember(team); //!+任务相关 UnitTask unitTask = unit.GetComponent(); if (unitTask!=null && unitTask.RunningTaskList.Count==0 && unitTask.CompleteTaskIdList.Count==0&& unitTask.FinishTaskIdList.Count==0 ) { //!发送新任务 M2C_OpenTaskUI ret = new M2C_OpenTaskUI(); ret.TaskList.Add(new NPCTask() { Id = (int)TaskComponent.Instance.TaskBaseNpcIdDic[0][0].Id, TaskState = TaskState.TaskWaiting }); MessageHelper.SendActor(unit, ret); } //!+发送Boss消息 SendBossInfo(unit); Game.EventSystem.Publish(new EventType.AfterEnterGame() { unit = unit }); await ETTask.CompletedTask; } catch (System.Exception e) { Log.Error(e); } } private void SendBossInfo(Unit unit) { Log.Debug($"【{ UserComponent.Instance.Get(unit.Id)?.NickName} ({ unit.Id})】发送Boss消息"); BossComponent boss = BossComponent.Instance; using ListComponent listComponent = ListComponent.Create(); List arr = listComponent.List; foreach (KeyValuePair item in boss.bossStateDic) { if (item.Value == BossComponent.BossState.Idle) { arr.Add($"[color=#00cc00]【{boss.GetBossBossName(item.Key)}】[/color]刷新了,大家赶紧去击杀吧,奖励多多!"); } } Chat.Instance.SendSystemCaht(unit, arr); } private async ETVoid SendBossRefresh(Unit unit, int targetMapLayer) { await TimerComponent.Instance.WaitAsync(1000); MessageHelper.SendActor(unit, new M2C_BossRefresh { BossId = BossComponent.Instance.GetBossId(targetMapLayer) }); } } }