202 lines
8.8 KiB
C#
202 lines
8.8 KiB
C#
using Cal.DataTable;
|
|
using ET.EventType;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
|
|
namespace ET
|
|
{
|
|
public class AfterChangeMapEvent: AEvent<AfterChangeMap>
|
|
{
|
|
public override async ETTask Run(AfterChangeMap args)
|
|
{
|
|
Unit unit = args.unit;
|
|
int mapId = args.mapId;
|
|
|
|
//竞技场
|
|
PvpMap.inatance.Remove(unit);
|
|
|
|
try
|
|
{
|
|
UnitScene unitScene = unit.GetComponent<UnitScene>();
|
|
//!发送切换地图
|
|
MessageHelper.SendActor(unit, new M2C_ChangeMap() { X = unitScene.Position.x, Y = unitScene.Position.y, MapId = unitScene.MapId });
|
|
UnitSceneType unitSceneType = MapHelper.GetMapType(unitScene.sceneId);
|
|
await TimerComponent.Instance.WaitAsync(500);
|
|
MapMonsterComponent monsterComponent = unit.GetComponent<MapMonsterComponent>();
|
|
monsterComponent.Clear();
|
|
if (unit.IsTeamLeader)
|
|
{
|
|
CheckMapCoinMonster(unit, mapId);
|
|
}
|
|
|
|
try
|
|
{
|
|
if (unitSceneType is UnitSceneType.MainStory or UnitSceneType.Beach)
|
|
{
|
|
MainStoryMap.Instance.Init(unit, unitScene.MapId);
|
|
}
|
|
else if (unitSceneType == UnitSceneType.Trial)
|
|
{
|
|
TrialCopyMap.Instance.InitTrailCopyMap(unit, unitScene.MapId);
|
|
}
|
|
else if (unitSceneType == UnitSceneType.SpaceTravel)
|
|
{
|
|
GenerateSpaceTravelMapMonster(unit, unitScene);
|
|
}
|
|
else if (unitSceneType == UnitSceneType.ManulEquip)
|
|
{
|
|
GenerateManulEquipMapMonster(unit, unitScene);
|
|
}
|
|
else if (unitSceneType == UnitSceneType.StarSoulCopy)
|
|
{
|
|
GenerateStarSoulCopyMapMonster(unit, unitScene);
|
|
}
|
|
else
|
|
{
|
|
await TimerComponent.Instance.WaitAsync(500);
|
|
StartupTransPoint(unit, unitScene.MapId);
|
|
}
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
Log.Error(e);
|
|
}
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
Log.Error(e);
|
|
}
|
|
|
|
static void StartupTransPoint(Unit unit, int mapId)
|
|
{
|
|
MessageHelper.SendActor(unit, new M2C_StartupTransPoint() { MapId = mapId });
|
|
}
|
|
|
|
await ETTask.CompletedTask;
|
|
}
|
|
|
|
private void GenerateManulEquipMapMonster(Unit unit, UnitScene _unitScene)
|
|
{
|
|
Unit monster = EntityFactory.CreateWithParent<Unit, UnitType>(unit.DomainScene(), UnitType.Monster);
|
|
int layer = _unitScene.layer;
|
|
MapMonsterConfig mapMonsterConfig = MapMonsterConfigCategory.Instance.GetManulEquipMapMonster(layer);
|
|
long configId = 0;
|
|
int difficulty = _unitScene.sceneId - Sys_SceneId.Scene_ManulEquip1 + 1;
|
|
if (difficulty <= 0)
|
|
{
|
|
Log.Error($"scene is error where {unit.Id.GetPlayerFormatName()} id = {_unitScene.MapId}");
|
|
return;
|
|
}
|
|
|
|
int id = difficulty * 1000 + layer * 100 + 1;
|
|
|
|
ManulEquipMonsterConfig manulEquipMonsterConfig = ManulEquipMonsterConfigCategory.Instance.Get(id);
|
|
if (manulEquipMonsterConfig == null)
|
|
{
|
|
Log.Error($"config == null when difficult = {difficulty} index = {layer}");
|
|
return;
|
|
}
|
|
|
|
configId = manulEquipMonsterConfig.Id;
|
|
monster.AddComponent<ConfigIdComponent>().configId = configId;
|
|
UnitScene unitScene = monster.AddComponent<UnitScene>();
|
|
unitScene.Position = new UnityEngine.Vector2(mapMonsterConfig.X, mapMonsterConfig.Y);
|
|
MapMonsterComponent monsterComponent = unit.GetComponent<MapMonsterComponent>();
|
|
monsterComponent.Add(MapMonsterType.ManulEquip, monster);
|
|
Game.EventSystem.Publish(new ET.EventType.OnCreateUnit
|
|
{
|
|
actor = unit,
|
|
monsterId = monster.Id,
|
|
pos = unitScene.Position,
|
|
configId = (int) mapMonsterConfig.Id,
|
|
monsterType = MapMonsterType.ManulEquip
|
|
}).Coroutine();
|
|
}
|
|
|
|
private void GenerateSpaceTravelMapMonster(Unit unit, UnitScene _unitScene)
|
|
{
|
|
Unit monster = EntityFactory.CreateWithParent<Unit, UnitType>(unit.DomainScene(), UnitType.Monster);
|
|
MapMonsterConfig mapMonsterConfig = MapMonsterConfigCategory.Instance.GetSpaceTravelMapMonster(_unitScene.layer);
|
|
long configId = 0;
|
|
int difficult = _unitScene.sceneId - Sys_SceneId.Scene_SpaceTravel1 + 1;
|
|
if (difficult <= 0)
|
|
{
|
|
Log.Error($"scene is error where {unit.Id.GetPlayerFormatName()} id = {_unitScene.MapId}");
|
|
return;
|
|
}
|
|
|
|
SpaceTravelConfig spaceTravelConfig = SpaceTravelConfigCategory.Instance.GetByDifficultAndIndex(difficult, _unitScene.layer);
|
|
if (spaceTravelConfig == null)
|
|
{
|
|
Log.Error($"config == null when difficult = {difficult} index = {_unitScene.layer}");
|
|
return;
|
|
}
|
|
|
|
configId = spaceTravelConfig.Id;
|
|
monster.AddComponent<ConfigIdComponent>().configId = configId;
|
|
UnitScene unitScene = monster.AddComponent<UnitScene>();
|
|
unitScene.Position = new UnityEngine.Vector2(mapMonsterConfig.X, mapMonsterConfig.Y);
|
|
MapMonsterComponent monsterComponent = unit.GetComponent<MapMonsterComponent>();
|
|
monsterComponent.Add(MapMonsterType.SpaceTravel, monster);
|
|
Game.EventSystem.Publish(new ET.EventType.OnCreateUnit
|
|
{
|
|
actor = unit,
|
|
monsterId = monster.Id,
|
|
pos = unitScene.Position,
|
|
configId = (int) mapMonsterConfig.Id,
|
|
monsterType = MapMonsterType.SpaceTravel
|
|
}).Coroutine();
|
|
}
|
|
|
|
private void GenerateStarSoulCopyMapMonster(Unit unit, UnitScene _unitScene)
|
|
{
|
|
Unit monster = EntityFactory.CreateWithParent<Unit, UnitType>(unit.DomainScene(), UnitType.Monster);
|
|
MapMonsterConfig mapMonsterConfig = MapMonsterConfigCategory.Instance.GetStarSoulCopyMapMonster(_unitScene.layer);
|
|
Team team = TeamComponent.Instance.Get(unit.TeamLeaderId);
|
|
var leader = team.GetLeader();
|
|
StarSoulCopyConfigComponent soulCopyConfigComponent = leader.GetComponent<StarSoulCopyConfigComponent>();
|
|
if (soulCopyConfigComponent == null)
|
|
return;
|
|
long configId = 0;
|
|
StarSoulCopyConfig soulCopyConfig = StarSoulCopyConfigCategory.Instance.GetByTypeAndDifficultyAndIndex(soulCopyConfigComponent.type,
|
|
soulCopyConfigComponent.difficulty, (byte) _unitScene.layer);
|
|
if (soulCopyConfig == null)
|
|
{
|
|
Log.Error(
|
|
$"config == null when type = {soulCopyConfigComponent.type} difficult = {soulCopyConfigComponent.difficulty} index = {_unitScene.layer}");
|
|
return;
|
|
}
|
|
|
|
configId = soulCopyConfig.Id;
|
|
monster.AddComponent<ConfigIdComponent>().configId = configId;
|
|
UnitScene unitScene = monster.AddComponent<UnitScene>();
|
|
unitScene.Position = new UnityEngine.Vector2(mapMonsterConfig.X, mapMonsterConfig.Y);
|
|
MapMonsterComponent monsterComponent = unit.GetComponent<MapMonsterComponent>();
|
|
monsterComponent.Add(MapMonsterType.StarSoulCopy, monster);
|
|
Game.EventSystem.Publish(new ET.EventType.OnCreateUnit
|
|
{
|
|
actor = unit,
|
|
monsterId = monster.Id,
|
|
pos = unitScene.Position,
|
|
configId = (int) mapMonsterConfig.Id,
|
|
monsterType = MapMonsterType.StarSoulCopy
|
|
}).Coroutine();
|
|
}
|
|
|
|
private void CheckMapCoinMonster(Unit unit, int mapId)
|
|
{
|
|
Unit monster = MapCoinComponent.instance.GetCoinMonster(mapId);
|
|
if (monster)
|
|
{
|
|
Game.EventSystem.Publish(new ET.EventType.OnCreateUnit
|
|
{
|
|
actor = unit,
|
|
monsterId = monster.Id,
|
|
pos = monster.GetComponent<UnitScene>().Position,
|
|
configId = (int) monster.GetComponent<ConfigIdComponent>().configId,
|
|
monsterType = MapMonsterType.MapCoin
|
|
}).Coroutine();
|
|
}
|
|
}
|
|
}
|
|
} |