TH1/Unity/Assets/Scripts/TH1_Logic/Collect/CollectManager.cs

116 lines
4.6 KiB
C#

/*
* @Author: 白哉
* @Description:
* @Date: 2026年03月04日 星期三 16:03:57
* @Modify:
*/
using Logic;
using RuntimeData;
using TH1_Logic.Core;
namespace TH1_Logic.Collect
{
public class CollectManager
{
public static CollectManager Instance = new CollectManager();
public CollectData CollectData;// = new CollectData();
public void Init()
{
CollectData = new CollectData();
}
public void OnDamageCollect(MapData map, SettlementInfo settlement)
{
if (map == null || map != Main.MapData) return;
var damage = new DamageCollectData();
if (settlement.DamageOrigin == null || settlement.DamageTarget == null) return;
if (settlement.OriginPlayer == null || settlement.TargetPlayer == null) return;
damage.Turn = settlement.OriginPlayer.Turn;
damage.IsKill = settlement.IsKill;
damage.OriginEmpire = settlement.OriginPlayer.Empire;
damage.OriginUnitType = settlement.DamageOrigin.UnitFullType;
damage.OriginDamage = settlement.DamageValue;
damage.TargetEmpire = settlement.TargetPlayer.Empire;
damage.TargetUnitType = settlement.DamageTarget.UnitFullType;
damage.TargetDamage = settlement.HealthReduceValue;
CollectData.Damages.Add(damage);
}
public void OnAddUnitCollect(MapData map, UnitData newUnit)
{
if (map == null || map != Main.MapData || newUnit == null) return;
var player = newUnit.Player(map);
if (player == null) return;
var addUnit = new AddUnitCollectData();
addUnit.Turn = player.Turn;
addUnit.Empire = player.Empire;
addUnit.UnitType = newUnit.UnitFullType;
CollectData.AddUnits.Add(addUnit);
}
public void TransformUnitCollect(MapData map, UnitData unit, UnitFullType origin, UnitFullType target)
{
if (map == null || map != Main.MapData || unit == null) return;
var player = unit.Player(map);
if (player == null) return;
var transformUnit = new TransformUnitCollectData();
transformUnit.Turn = player.Turn;
transformUnit.Empire = player.Empire;
transformUnit.OriginUnitType = origin;
transformUnit.TargetUnitType = target;
CollectData.TransformUnits.Add(transformUnit);
}
public void LearnTechsCollect(MapData map, PlayerData player, TechType tech)
{
if (map == null || map != Main.MapData || player == null) return;
var learnTech = new LearnTechCollectData();
learnTech.Turn = player.Turn;
learnTech.Empire = player.Empire;
learnTech.TechType = tech;
CollectData.LearnTechs.Add(learnTech);
}
public void OnTurnStartCollect(MapData map, PlayerData player)
{
if (map == null || map != Main.MapData || player == null) return;
var onTurnStart = new OnTurnStartCollectData();
onTurnStart.Turn = player.Turn;
onTurnStart.Empire = player.Empire;
onTurnStart.PlayerCoinPerTurn = Main.PlayerLogic.GetPlayerCoinPerTurn(map, player.Id);
onTurnStart.PlayerTechPointPerTurn = Main.PlayerLogic.GetPlayerTechPointPerTurn(map, player.Id);
onTurnStart.CityCount = map.GetCityCount(player.Id);
onTurnStart.MaxCityLevel = Main.PlayerLogic.GetMaxCityLevel(map, player);
onTurnStart.AverageCityLevel = Main.PlayerLogic.GetAverageCityLevel(map, player);
onTurnStart.TechCount = player.TechTree.TechSet.Count;
CollectData.OnTurnStarts.Add(onTurnStart);
}
public void MatchGameEndCollect(MapData map)
{
if (map == null || map != Main.MapData) return;
var player = map.GetWinPlayer();
if (player == null) return;
var matchGameEnd = new MatchGameEndCollectData();
matchGameEnd.Turn = player.Turn;
matchGameEnd.Empire = player.Empire;
CollectData.MatchGameEnds.Add(matchGameEnd);
}
public void PlayerGameEndCollect(MapData map, PlayerData self, PlayerData killer)
{
if (map == null || map != Main.MapData || self == null || killer == null) return;
var playerGameEnd = new PlayerGameEndCollectData();
playerGameEnd.Turn = self.Turn;
playerGameEnd.SelfEmpire = self.Empire;
playerGameEnd.KillerEmpire = killer.Empire;
CollectData.PlayerGameEnds.Add(playerGameEnd);
}
}
}