CTT/Server/Hotfix/Game/System/Battle/AutoBattleIdleComponentSyst...

105 lines
3.4 KiB
C#

using Cal.DataTable;
using System;
using System.Collections.Generic;
using System.Text;
namespace ET
{
public class AutoBattleIdleComponentAwakeSystem : AwakeSystem<AutoBattleIdleComponent, Team>
{
public override void Awake(AutoBattleIdleComponent self, Team team)
{
self.team = team;
self.lastTime = TimeHelper.ClientNow();
}
}
public class AutoBattleIdleComponentUpdateSystem : UpdateSystem<AutoBattleIdleComponent>
{
public override void Update(AutoBattleIdleComponent self)
{
self.Update();
}
}
public class AutoBattleIdleComponentDestroySystem : DestroySystem<AutoBattleIdleComponent>
{
public override void Destroy(AutoBattleIdleComponent self)
{
self.mapId = 0;
self.sceneId = 0;
self.isFight = false;
self.lastTime = 0;
self.team = null;
}
}
public static class AutoBattleIdleComponentSystem
{
private const int fightInterval = 6 * 1000;
public static void Init(this AutoBattleIdleComponent self, int sceneId)
{
self.sceneId = sceneId;
self.mapId = sceneId * 100 + 1;
}
public static void SetFightEnd(this AutoBattleIdleComponent self)
{
self.mapId++;
if (self.mapId % 100 > 10)
{
self.ReSet();
return;
}
self.isFight = false;
self.lastTime = TimeHelper.ClientNow();
}
public static void ReSet(this AutoBattleIdleComponent self)
{
self.mapId = self.sceneId * 100 + 1;
self.isFight = false;
self.lastTime = TimeHelper.ClientNow();
}
public static void Update(this AutoBattleIdleComponent self)
{
if (self.team)
{
if (!self.isFight)
{
long now = TimeHelper.ClientNow();
if (now - self.lastTime > fightInterval)
{
self.lastTime = now;
self.isFight = true;
StartFight(self);
}
}
}
}
private static void StartFight(this AutoBattleIdleComponent self)
{
try
{
MainStory mainStory = MainStoryMap.Instance.GetMainStoryData(self.mapId);
if (mainStory == null)
{
self.isFight = false;
self.lastTime = TimeHelper.ClientNow();
Log.Error($"mainStory==null where id = {self.mapId}");
return;
}
CopyBattle idleBattle = BattleMgrCompnent.Instance.CreateBattle(self.team);
MonsterFactoryHelper.MainstoryGenerate(idleBattle, mainStory);
int copyId = self.mapId%100 switch
{
< 6 => CopyConfigId.MainStoryNormalIdleBattle,
< 10 => CopyConfigId.MainStoryEliteIdleBattle,
_ => CopyConfigId.MainStoryBossIdleBattle
};
idleBattle.Init(idleBattle.team,idleBattle.targetTeam,copyId,mainStory.Id);
}
catch (Exception e)
{
Log.Error(e);
}
}
}
}