69 lines
2.5 KiB
C#
69 lines
2.5 KiB
C#
using Cal.DataTable;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
|
|
namespace ET
|
|
{
|
|
[ActorMessageHandler]
|
|
public class C2M_StartBattleIdleFightHandler : AMActorLocationRpcHandler<Unit, C2M_StartBattleIdleFight, M2C_StartBattleIdleFight>
|
|
{
|
|
protected override async ETTask Run(Unit unit, C2M_StartBattleIdleFight request, M2C_StartBattleIdleFight response, Action reply)
|
|
{
|
|
try
|
|
{
|
|
if (!unit.IsTeamLeader)
|
|
{
|
|
response.Message = "您不是队长!";
|
|
reply();
|
|
return;
|
|
}
|
|
if (unit.GetComponent<PlayerData>().IsBattleIdle)
|
|
{
|
|
response.Message = "正在战斗挂机中!";
|
|
reply();
|
|
return;
|
|
}
|
|
Team team = TeamComponent.Instance.Get(unit.TeamLeaderId);
|
|
if (team.TeamState == TeamState.Fight)
|
|
{
|
|
response.Message = "战斗中!";
|
|
reply();
|
|
return;
|
|
}
|
|
LinkedList<Unit> teamList = team.GetUnits();
|
|
UnitScene unitScene = unit.GetComponent<UnitScene>();
|
|
int sceneId = unitScene.MapId / 100;
|
|
if (sceneId != Sys_SceneId.Scene_MainCity)
|
|
{
|
|
response.Message = "在城镇中才能开始战斗挂机!";
|
|
reply();
|
|
return;
|
|
}
|
|
int targetSceneId = request.SceneId + 10010;
|
|
foreach (Unit u in teamList)
|
|
{
|
|
if (!u.GetComponent<PlayerData>().CanEnterMianStory(targetSceneId - 1))
|
|
{
|
|
response.Message = "队伍中至少有一人没通过这一章节!";
|
|
reply();
|
|
return;
|
|
}
|
|
}
|
|
await Game.EventSystem.Publish(new EventType.ChangeMap { unit = unit, mapId = Sys_SceneId.Scene_BattleIdle*100+1 });
|
|
foreach (Unit u in teamList)
|
|
{
|
|
u.GetComponent<PlayerData>().IsBattleIdle = true;
|
|
}
|
|
|
|
//!创建自动战斗组件
|
|
BattleIdleMap.Instance.Create(unit.TeamLeaderId,targetSceneId);
|
|
reply();
|
|
await ETTask.CompletedTask;
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
Log.Error(e);
|
|
}
|
|
}
|
|
}
|
|
} |