116 lines
4.6 KiB
C#
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);
|
|
}
|
|
}
|
|
} |