CTT/Unity/Assets/Hotfix/Logic/Behaviour/Game/Event/Battle/StartFamilyBossFightEvent.cs

75 lines
2.9 KiB
C#
Raw Normal View History

2021-04-08 20:09:59 +08:00
using ET;
using Cal.DataTable;
using UnityEngine;
using ET.EventType;
namespace ET
{
public class StartFamilyBossFightEvent : AEvent<StartFamilyBossFight>
{
public override async ETTask Run(StartFamilyBossFight args)
{
try
{
int bossId = args.BossId;
long unitId = args.Id;
int hp = args.hp;
Scene zoneScene = args.zoneScene;
2021-04-08 20:09:59 +08:00
Game.EventSystem.Publish_Sync(new BattleStart
{
zoneScene = zoneScene
2021-04-08 20:09:59 +08:00
});
//!+固定玩家位置
//!1.记录原位置
Team team = args.zoneScene.GetComponent<TeamComponent>().Get(zoneScene.GetComponent<GlobalVariable>().LeaderId);
zoneScene.GetComponent<GlobalVariable>().PlayerPosList_BeforeBattle.Clear();
2021-04-08 20:09:59 +08:00
int index = 0;
2021-04-11 19:50:39 +08:00
foreach (Unit unit in team.GetAll())
2021-04-08 20:09:59 +08:00
{
Game.EventSystem.Publish_Sync(new ET.EventType.ShowHpBar
{
zoneScene = zoneScene,
2021-04-08 20:09:59 +08:00
unit = unit,
});
Vector3 playerOldPos = unit.Position;
zoneScene.GetComponent<GlobalVariable>().PlayerPosList_BeforeBattle.Add(new Vector4(playerOldPos.x, playerOldPos.y, playerOldPos.z, unit.YAngle));
2021-04-08 20:09:59 +08:00
unit.Position = PosHelper.GetPlayerPos(index++);
unit.YAngle = 180;
}
//!2.改变战斗状态
args.zoneScene.GetComponent<UnitComponent>().MyUnit.IsFight = true;
2021-04-08 20:09:59 +08:00
//!+隐藏Boss
BossComponent.Instance.RemoveBoss();
2021-04-11 19:50:39 +08:00
FamilyBossConfig bossBase = DataTableHelper.Get<FamilyBossConfig>(bossId);
2021-04-08 20:09:59 +08:00
//!加载预制体
Unit unitMonster = await UnitFactory.Create(zoneScene,unitId, bossBase.PrefabId, UnitType.FamilyBossMonster);
2021-04-08 20:09:59 +08:00
unitMonster.Position = PosHelper.GetMonsterPos(0);
//!添加怪物属性
int maxHp = bossBase.Hp;
ClientUnitCharacterComponent.Instance.Add(unitId, bossBase.Name, bossBase.Level, hp, maxHp);
Game.EventSystem.Publish_Sync(new ET.EventType.SetHudCharacter
{
zoneScene = zoneScene,
2021-04-08 20:09:59 +08:00
unit = unitMonster,
level = bossBase.Level,
name = bossBase.Name,
hp = hp,
maxHp = maxHp,
jobType = JobType.UnKnown,
progressTitleType = FairyGUI.ProgressTitleType.Percent
});
//!怪物加入队伍
Game.EventSystem.Publish_Sync(new ET.EventType.TranslateSceneEnd
{
});
}
catch (System.Exception e)
{
Log.Error(e);
}
}
}
}