using Cal.DataTable; using ET.EventType; using System; using System.Collections.Generic; namespace ET { public class AfterChangeMapEvent : AEvent { public override async ETTask Run(AfterChangeMap args) { Unit unit = args.unit; int mapId = args.mapId; //竞技场 PvpMap.inatance.Remove(unit); try { UnitScene unitScene = unit.GetComponent(); //!发送切换地图 MessageHelper.SendActor(unit, new M2C_ChangeMap() { X = unitScene.Position.x, Y = unitScene.Position.y, MapId = unitScene.MapId }); UnitSceneType unitSceneType = MapSceneComponent.Instance.GetUnitSceneType(unitScene.MapId / 100); await TimerComponent.Instance.WaitAsync(500); if (unit.IsTeamLeader) { Unit monster = MapCoinComponent.instance.GetCoinMonster(mapId); if (monster) { Game.EventSystem.Publish(new ET.EventType.OnCreateUnit { Actor_UnitId = unit.Id, unit = monster, pos = monster.GetComponent().Position, configId = (int)monster.GetComponent().configId, monsterType = MapMonsterType.MapCoin }).Coroutine(); } } if (unitSceneType == UnitSceneType.MainStory || unitSceneType == UnitSceneType.Beach) { MainStoryMap.Instance.Init(unit, unitScene.MapId); } else if (unitSceneType == UnitSceneType.Trial) { TrialCopyMap.Instance.InitTrailCopyMap(unit, unitScene.MapId); } else { await TimerComponent.Instance.WaitAsync(500); StartupTransPoint(unit, unitScene.MapId); } } catch (Exception e) { Log.Error(e); } static void StartupTransPoint(Unit unit, int mapId) { MessageHelper.SendActor(unit, new M2C_StartupTransPoint() { MapId = mapId }); } await ETTask.CompletedTask; } } }