CTT/Unity/Assets/Hotfix/Logic/Model/Game/Entity/Map/UnitySceneComponent.cs

131 lines
4.5 KiB
C#
Raw Normal View History

2021-04-08 20:09:59 +08:00
using System;
using System.Collections;
using System.Collections.Generic;
using ET;
using Cal.DataTable;
using UnityEngine;
namespace ET
{
public class UnitySceneComponentAwakeSystem : AwakeSystem<UnitySceneComponent>
{
public override void Awake(UnitySceneComponent self)
{
self.Awake();
self.ZoneScene().AddComponent<MainStoryMonsterTeamComponent>();
self.ZoneScene().AddComponent<TrialCopyMonsterTeamComponent>();
2021-04-08 20:09:59 +08:00
self.AddComponent<BattleComponent>();
self.AddComponent<BossComponent>();
}
}
public class UnitySceneComponentDestroySystem : DestroySystem<UnitySceneComponent>
{
public override void Destroy(UnitySceneComponent self)
{
self.Destroy();
}
}
public class UnitySceneComponent : Entity
{
public static UnitySceneComponent Instance { get; private set; }
2021-04-08 20:09:59 +08:00
public void Awake()
{
Instance = this;
}
public void InitScenePoint(Scene zoneScene, int sceneId, int mapLayer)
{
Game.EventSystem.Publish(new ET.EventType.RemoveTransPoint
{
zoneScene = zoneScene
}).Coroutine();
2021-04-11 19:50:39 +08:00
Sys_Scene sysScene = DataTableHelper.Get<Sys_Scene>(sceneId);
2021-04-08 20:09:59 +08:00
if (sysScene.TransPosArr == null)
return;
if (sceneId != Sys_SceneId.Scene_MainCity)
{
//非主城情况
for (int i = 0; i < sysScene.TransPosArr.Length; i++)
{
2021-04-11 19:50:39 +08:00
Sys_Scene.TransPos transPos = sysScene.TransPosArr[i];
Sys_Scene.TargetMap tagetMap = sysScene.TargetMapArr[i];
2021-04-08 20:09:59 +08:00
int targetsceneId = tagetMap.TargetMap_Id;
int targetMaplyar = 1;
if (sysScene.Layers >= mapLayer + 1)
{
targetsceneId = sceneId;
targetMaplyar = mapLayer + 1;
}
2021-04-08 20:09:59 +08:00
if (sceneId == Sys_SceneId.Scene_Boss)
{
targetsceneId = Sys_SceneId.Scene_MainCity;
targetMaplyar = 1;
}
2021-04-08 20:09:59 +08:00
Game.EventSystem.Publish(new ET.EventType.CreateTransPoint
{
zoneScene = zoneScene,
targetSceneId = targetsceneId,
targetMaplayer = targetMaplyar,
pos = new Vector2(transPos.TransPos_x, transPos.TransPos_y),
}).Coroutine();
}
}
else
{
for (int i = 0; i < sysScene.TransPosArr.Length; i++)
{
2021-04-11 19:50:39 +08:00
Sys_Scene.TransPos transPos = sysScene.TransPosArr[i];
2021-04-08 20:09:59 +08:00
int targetMaplyar = 1;
if (sysScene.Layers >= mapLayer + 1)
{
targetMaplyar = mapLayer + 1;
}
2021-04-08 20:09:59 +08:00
Game.EventSystem.Publish(new ET.EventType.CreateTransPoint
{
zoneScene = zoneScene,
targetSceneId = i,
targetMaplayer = targetMaplyar,
pos = new Vector2(transPos.TransPos_x, transPos.TransPos_y),
}).Coroutine();
}
}
}
2021-04-08 20:09:59 +08:00
public async ETTask LoadSceneAsync(Scene zoneScene, int sceneId, Vector3 pos)
{
//关闭主线怪物
BossComponent.Instance.RemoveBoss();
Game.EventSystem.Publish(new ET.EventType.RemoveTransPoint
{
zoneScene = zoneScene
}).Coroutine();
2021-04-11 19:50:39 +08:00
Sys_Scene sysScene = DataTableHelper.Get<Sys_Scene>(sceneId);
2021-04-08 20:09:59 +08:00
var unitComponent = zoneScene.GetComponent<UnitComponent>();
zoneScene.GetComponent<UnitComponent>().MyUnit ??= (zoneScene.GetComponent<UnitComponent>().Get(zoneScene.GetComponent<GlobalVariable>().MyId));
zoneScene.GetComponent<UnitComponent>().MyUnit.Position = new Vector3(pos.x, pos.y, PosHelper.PlayerPos_Z);
zoneScene.GetComponent<UnitComponent>().MyUnit.YAngle = (int) pos.z;
2021-04-08 20:09:59 +08:00
await Game.EventSystem.Publish(new ET.EventType.LoadUnityScene
{
zoneScene = zoneScene,
2021-04-08 20:09:59 +08:00
name = sysScene.Name,
id = (int) sysScene.Id
2021-04-08 20:09:59 +08:00
});
}
public void Destroy()
{
}
}
}