Skip to content

Commit

Permalink
cleanup
Browse files Browse the repository at this point in the history
  • Loading branch information
MaxDorob committed Mar 17, 2024
1 parent fc69a37 commit cb531b9
Showing 1 changed file with 142 additions and 170 deletions.
312 changes: 142 additions & 170 deletions source/GameInterface/Services/Settlements/Audit/SettlementAuditor.cs
Original file line number Diff line number Diff line change
Expand Up @@ -31,218 +31,190 @@ public override IEnumerable<SettlementAuditData> GetAuditData()
}
public override IEnumerable<Settlement> Objects => Campaign.Current.CampaignObjectManager.Settlements;

public override string DoAuditData(IEnumerable<SettlementAuditData> dataToAudit)
public override int CompareObjects(StringBuilder sb, SettlementAuditData audit, Settlement settlement)
{

var sb = new StringBuilder();
var errorCountObjectFound = 0;

var SettlementCount = Objects.Count();

sb.AppendLine($"Auditing {SettlementCount} objects");

if(SettlementCount != dataToAudit.Count())
var errorNumberOfEnemiesSpottedAround = 0;
var errorNumberOfAlliesSpottedAround = 0;
var errorBribePaid = 0;
var errSettlementHitPoints = 0;
var errGarrisonWagePaymentLimit = 0;
var errLastAttackerParty = 0;
var errLastThreatTime = 0;
var errCurrentSiegeState = 0;
var errMilitia = 0;
var errSettlementHeroCache = 0;
var errHeroesWithoutPartyCache = 0;
var errNumberOfLordPartiesAt = 0;
var errLastVisitTimeOfOwner = 0;
var errClaimedBy = 0;
var errClaimValue = 0;
var errWallHitPointsRatio = 0;
var errCanBeClaimed = 0;
sb.AppendLine($"Auditing {settlement.StringId} {settlement.Name}");
if (settlement.NumberOfEnemiesSpottedAround != audit.NumberOfEnemiesSpottedAround)
{
Logger.Error("Settlement count mismatch: {SettlementCount} != {dataToAudit.Length}", SettlementCount, dataToAudit.Count());
sb.AppendLine($"Settlement count mismatch: {SettlementCount} != {dataToAudit.Count()}");
sb.AppendLine($"settlement.NumberOfEnemiesSpottedAround {settlement.NumberOfEnemiesSpottedAround}!= {audit.NumberOfEnemiesSpottedAround}");
errorNumberOfEnemiesSpottedAround++;
}

foreach(var audit in dataToAudit.Cast<SettlementAuditData>())
if (settlement.NumberOfAlliesSpottedAround != audit.NumberOfAlliesSpottedAround)
{
var errorNumberOfEnemiesSpottedAround = 0;
var errorNumberOfAlliesSpottedAround = 0;
var errorBribePaid = 0;
var errSettlementHitPoints = 0;
var errGarrisonWagePaymentLimit = 0;
var errLastAttackerParty = 0;
var errLastThreatTime = 0;
var errCurrentSiegeState = 0;
var errMilitia = 0;
var errSettlementHeroCache = 0;
var errHeroesWithoutPartyCache = 0;
var errNumberOfLordPartiesAt = 0;
var errLastVisitTimeOfOwner = 0;
var errClaimedBy = 0;
var errClaimValue = 0;
var errWallHitPointsRatio = 0;
var errCanBeClaimed = 0;

sb.AppendLine($"Attempting Audit for Settlement {audit.StringId}");
if(objectManager.TryGetObject<Settlement>(audit.StringId, out var settlement) == false)
{
sb.AppendLine($"Settlement {audit.StringId} not found in {nameof(IObjectManager)}");
sb.AppendLine($"Audit for Settlement {audit.StringId} done\n");
errorCountObjectFound++;
continue;
}

if(settlement.NumberOfEnemiesSpottedAround != audit.NumberOfEnemiesSpottedAround)
{
sb.AppendLine($"settlement.NumberOfEnemiesSpottedAround {settlement.NumberOfEnemiesSpottedAround}!= {audit.NumberOfEnemiesSpottedAround}");
errorNumberOfEnemiesSpottedAround++;
}
sb.AppendLine($"settlement.NumberOfAlliesSpottedAround {settlement.NumberOfAlliesSpottedAround}!= {audit.NumberOfAlliesSpottedAround}");
errorNumberOfAlliesSpottedAround++;
}

if (settlement.NumberOfAlliesSpottedAround != audit.NumberOfAlliesSpottedAround)
{
sb.AppendLine($"settlement.NumberOfAlliesSpottedAround {settlement.NumberOfAlliesSpottedAround}!= {audit.NumberOfAlliesSpottedAround}");
errorNumberOfAlliesSpottedAround++;
}
if (settlement.BribePaid != audit.BribePaid)
{
sb.AppendLine($"settlement.BribePaid {settlement.BribePaid}!= {audit.BribePaid}");
errorBribePaid++;

if(settlement.BribePaid != audit.BribePaid)
{
sb.AppendLine($"settlement.BribePaid {settlement.BribePaid}!= {audit.BribePaid}");
errorBribePaid++;

}
}

if (settlement.SettlementHitPoints != audit.SettlementHitPoints)
{
sb.AppendLine($"settlement.SettlementHitPoints {settlement.SettlementHitPoints}!= {audit.SettlementHitPoints}");
errSettlementHitPoints++;
if (settlement.SettlementHitPoints != audit.SettlementHitPoints)
{
sb.AppendLine($"settlement.SettlementHitPoints {settlement.SettlementHitPoints}!= {audit.SettlementHitPoints}");
errSettlementHitPoints++;

}
}

if (settlement.GarrisonWagePaymentLimit != audit.GarrisonWagePaymentLimit)
{
sb.AppendLine($"settlement.GarrisonWagePaymentLimit {settlement.GarrisonWagePaymentLimit}!= {audit.GarrisonWagePaymentLimit}");
errGarrisonWagePaymentLimit++;
}
if (settlement.GarrisonWagePaymentLimit != audit.GarrisonWagePaymentLimit)
{
sb.AppendLine($"settlement.GarrisonWagePaymentLimit {settlement.GarrisonWagePaymentLimit}!= {audit.GarrisonWagePaymentLimit}");
errGarrisonWagePaymentLimit++;
}


//check if null
var lastAttackerParty = settlement.LastAttackerParty?.StringId ?? "";
if (lastAttackerParty != audit.LastAttackerParty)
{
sb.AppendLine($"settlement.LastAttackerParty {settlement.LastAttackerParty.StringId}!= {audit.LastAttackerParty}");
errLastAttackerParty++;
}
//check if null
var lastAttackerParty = settlement.LastAttackerParty?.StringId ?? "";
if (lastAttackerParty != audit.LastAttackerParty)
{
sb.AppendLine($"settlement.LastAttackerParty {settlement.LastAttackerParty.StringId}!= {audit.LastAttackerParty}");
errLastAttackerParty++;
}

if (settlement.LastThreatTime.NumTicks != audit.LastThreatTime)
{
sb.AppendLine($"settlement.LastThreatTime {settlement.LastThreatTime.NumTicks}!= {audit.LastThreatTime}");
errLastThreatTime++;
}
if (settlement.LastThreatTime.NumTicks != audit.LastThreatTime)
{
sb.AppendLine($"settlement.LastThreatTime {settlement.LastThreatTime.NumTicks}!= {audit.LastThreatTime}");
errLastThreatTime++;
}

short currentSiegeState = (short)settlement.CurrentSiegeState;
short currentSiegeState = (short)settlement.CurrentSiegeState;

if (currentSiegeState != audit.CurrentSiegeState)
{
sb.AppendLine($"settlement.CurrentSiegeState {currentSiegeState}!= {audit.CurrentSiegeState}");
errCurrentSiegeState++;
}
if (currentSiegeState != audit.CurrentSiegeState)
{
sb.AppendLine($"settlement.CurrentSiegeState {currentSiegeState}!= {audit.CurrentSiegeState}");
errCurrentSiegeState++;
}

if (settlement.Militia != audit.Militia)
{
sb.AppendLine($"settlement.Militia {settlement.Militia}!= {audit.Militia}");
errMilitia++;
}
if (settlement.Militia != audit.Militia)
{
sb.AppendLine($"settlement.Militia {settlement.Militia}!= {audit.Militia}");
errMilitia++;
}


List<Hero> notableCache = settlement._notablesCache.ToList();
List<string> settlementNotableCache = notableCache.Select(hero => hero.StringId).ToList();
List<Hero> notableCache = settlement._notablesCache.ToList();
List<string> settlementNotableCache = notableCache.Select(hero => hero.StringId).ToList();

// if the lists dont contain same elements
// if the lists dont contain same elements

// two caches can be null (e.g. TrainingField has null for both)
// two caches can be null (e.g. TrainingField has null for both)

var auditNotables = audit.NotablesCache ?? Array.Empty<string>();
bool containSameNotables = settlementNotableCache.OrderBy(x => x).SequenceEqual(auditNotables.OrderBy(x => x));
if (!containSameNotables)
{
sb.AppendLine($"settlement._notablesCache list dont contain same items");
errSettlementHeroCache++;
}

var auditNotables = audit.NotablesCache ?? Array.Empty<string>();
bool containSameNotables = settlementNotableCache.OrderBy(x => x).SequenceEqual(auditNotables.OrderBy(x => x));
if (!containSameNotables)
{
sb.AppendLine($"settlement._notablesCache list dont contain same items");
errSettlementHeroCache++;
}

List<Hero> heroCache = settlement._heroesWithoutPartyCache.ToList();
List<string> settlementHeroCache = heroCache.Select(hero => hero.StringId).ToList();

var auditHerosWithoutPartyCache = audit.HeroesWithoutPartyCache ?? Array.Empty<string>();
List<Hero> heroCache = settlement._heroesWithoutPartyCache.ToList();
List<string> settlementHeroCache = heroCache.Select(hero => hero.StringId).ToList();

bool containsSameHerosWithoutParty = settlementHeroCache.OrderBy(x => x).SequenceEqual(auditHerosWithoutPartyCache.OrderBy(x => x));
var auditHerosWithoutPartyCache = audit.HeroesWithoutPartyCache ?? Array.Empty<string>();

if (!containsSameHerosWithoutParty)
{
sb.AppendLine($"settlement._herosWithoutPartyCache list dont contain same items");
errHeroesWithoutPartyCache++;
}

bool containsSameHerosWithoutParty = settlementHeroCache.OrderBy(x => x).SequenceEqual(auditHerosWithoutPartyCache.OrderBy(x => x));

if (settlement.NumberOfLordPartiesAt != audit.NumberOfLordPartiesAt)
{
sb.AppendLine($"settlement.NumberOfLordPartiesAt {settlement.NumberOfLordPartiesAt}!= {audit.NumberOfLordPartiesAt}");
errNumberOfLordPartiesAt++;
}
if (!containsSameHerosWithoutParty)
{
sb.AppendLine($"settlement._herosWithoutPartyCache list dont contain same items");
errHeroesWithoutPartyCache++;
}

if (settlement.LastVisitTimeOfOwner != audit.LastVisitTimeOfOwner)
{
sb.AppendLine($"settlement.LastVisitTimeOfOwner {settlement.LastVisitTimeOfOwner}!= {audit.LastVisitTimeOfOwner}");
errLastVisitTimeOfOwner++;
}

var claimedBy = settlement.ClaimedBy?.StringId ?? "";
if (claimedBy != audit.ClaimedBy)
{
sb.AppendLine($"settlement.ClaimedBy {settlement.ClaimedBy.StringId}!= {audit.ClaimedBy}");
errClaimedBy++;
}
if (settlement.NumberOfLordPartiesAt != audit.NumberOfLordPartiesAt)
{
sb.AppendLine($"settlement.NumberOfLordPartiesAt {settlement.NumberOfLordPartiesAt}!= {audit.NumberOfLordPartiesAt}");
errNumberOfLordPartiesAt++;
}

if(settlement.ClaimValue != audit.ClaimValue)
{
sb.AppendLine($"settlement.ClaimValue {settlement.ClaimValue}!= {audit.ClaimValue}");
errClaimValue++;
}
if (settlement.LastVisitTimeOfOwner != audit.LastVisitTimeOfOwner)
{
sb.AppendLine($"settlement.LastVisitTimeOfOwner {settlement.LastVisitTimeOfOwner}!= {audit.LastVisitTimeOfOwner}");
errLastVisitTimeOfOwner++;
}

// value can be null sadly :(
if(!(audit.WallSectionHitPointsRatioList is null))
{
if (!audit.WallSectionHitPointsRatioList.SequenceEqual(settlement._settlementWallSectionHitPointsRatioList))
{
sb.AppendLine($"settlement._settlementWallSectionHitPointsRatioList {settlement._settlementWallSectionHitPointsRatioList} != {audit.WallSectionHitPointsRatioList}");
errWallHitPointsRatio++;
}
var claimedBy = settlement.ClaimedBy?.StringId ?? "";
if (claimedBy != audit.ClaimedBy)
{
sb.AppendLine($"settlement.ClaimedBy {settlement.ClaimedBy.StringId}!= {audit.ClaimedBy}");
errClaimedBy++;
}

if (settlement.ClaimValue != audit.ClaimValue)
{
sb.AppendLine($"settlement.ClaimValue {settlement.ClaimValue}!= {audit.ClaimValue}");
errClaimValue++;
}

} else
// value can be null sadly :(
if (!(audit.WallSectionHitPointsRatioList is null))
{
if (!audit.WallSectionHitPointsRatioList.SequenceEqual(settlement._settlementWallSectionHitPointsRatioList))
{
if(settlement._settlementWallSectionHitPointsRatioList.Count > 0)
{
sb.AppendLine($"settlement._settlementWallSectionHitPointsRatioList {settlement._settlementWallSectionHitPointsRatioList} != {audit.WallSectionHitPointsRatioList}");
errWallHitPointsRatio++;
}
sb.AppendLine($"settlement._settlementWallSectionHitPointsRatioList {settlement._settlementWallSectionHitPointsRatioList} != {audit.WallSectionHitPointsRatioList}");
errWallHitPointsRatio++;
}

if(audit.CanBeClaimed != settlement.CanBeClaimed)
{
sb.AppendLine($"settlement.CanBeClaimed {settlement.CanBeClaimed} != {audit.CanBeClaimed}");

errCanBeClaimed++;
}
else
{
if (settlement._settlementWallSectionHitPointsRatioList.Count > 0)
{
sb.AppendLine($"settlement._settlementWallSectionHitPointsRatioList {settlement._settlementWallSectionHitPointsRatioList} != {audit.WallSectionHitPointsRatioList}");
errWallHitPointsRatio++;
}
}

sb.AppendLine($"\terrorNumberOfEnemiesSpottedAround {errorNumberOfEnemiesSpottedAround}");
sb.AppendLine($"\terrorNumberOfAlliesSpottedAround: {errorNumberOfAlliesSpottedAround}");
sb.AppendLine($"\tterrorBribePaid: {errorBribePaid}");
sb.AppendLine($"\tterrSettlementHitPoints {errSettlementHitPoints}");
sb.AppendLine($"\terrGarrisonWagePaymentLimit {errGarrisonWagePaymentLimit}");
sb.AppendLine($"\tterrLastAttackerParty: {errLastAttackerParty}");
sb.AppendLine($"\tterrLastThreatTime: {errLastThreatTime}");
sb.AppendLine($"\tterrCurrentSiegeState: {errCurrentSiegeState}");
sb.AppendLine($"\terrMilitia: {errMilitia}");
sb.AppendLine($"\terrSettlementHeroCache: {errSettlementHeroCache}");
sb.AppendLine($"\terrHeroesWithoutPartyCache: {errHeroesWithoutPartyCache}");
sb.AppendLine($"\terrNumberOfLordPartiesAt: {errNumberOfLordPartiesAt}");
sb.AppendLine($"\terrLastVisitTimeOfOwner: {errLastVisitTimeOfOwner}");
sb.AppendLine($"\terrClaimedBy: {errClaimedBy}");
sb.AppendLine($"\terrClaimValue: {errClaimValue}");
sb.AppendLine($"\terrCanBeClaimed: {errCanBeClaimed}");
sb.AppendLine($"\terrWallSectionHitPointsRatioList: {errWallHitPointsRatio}");
if (audit.CanBeClaimed != settlement.CanBeClaimed)
{
sb.AppendLine($"settlement.CanBeClaimed {settlement.CanBeClaimed} != {audit.CanBeClaimed}");

errCanBeClaimed++;
}

sb.AppendLine($"Found {errorCountObjectFound} errors in {dataToAudit.Count()} objects");

sb.AppendLine($"\terrorNumberOfEnemiesSpottedAround {errorNumberOfEnemiesSpottedAround}");
sb.AppendLine($"\terrorNumberOfAlliesSpottedAround: {errorNumberOfAlliesSpottedAround}");
sb.AppendLine($"\tterrorBribePaid: {errorBribePaid}");
sb.AppendLine($"\tterrSettlementHitPoints {errSettlementHitPoints}");
sb.AppendLine($"\terrGarrisonWagePaymentLimit {errGarrisonWagePaymentLimit}");
sb.AppendLine($"\tterrLastAttackerParty: {errLastAttackerParty}");
sb.AppendLine($"\tterrLastThreatTime: {errLastThreatTime}");
sb.AppendLine($"\tterrCurrentSiegeState: {errCurrentSiegeState}");
sb.AppendLine($"\terrMilitia: {errMilitia}");
sb.AppendLine($"\terrSettlementHeroCache: {errSettlementHeroCache}");
sb.AppendLine($"\terrHeroesWithoutPartyCache: {errHeroesWithoutPartyCache}");
sb.AppendLine($"\terrNumberOfLordPartiesAt: {errNumberOfLordPartiesAt}");
sb.AppendLine($"\terrLastVisitTimeOfOwner: {errLastVisitTimeOfOwner}");
sb.AppendLine($"\terrClaimedBy: {errClaimedBy}");
sb.AppendLine($"\terrClaimValue: {errClaimValue}");
sb.AppendLine($"\terrCanBeClaimed: {errCanBeClaimed}");
sb.AppendLine($"\terrWallSectionHitPointsRatioList: {errWallHitPointsRatio}");
return errorNumberOfEnemiesSpottedAround + errorNumberOfAlliesSpottedAround + errorBribePaid + errSettlementHitPoints + errGarrisonWagePaymentLimit + errLastAttackerParty + errLastThreatTime + errCurrentSiegeState + errMilitia +
errSettlementHeroCache + errHeroesWithoutPartyCache + errNumberOfLordPartiesAt + errLastVisitTimeOfOwner + errClaimedBy + errCanBeClaimed + errWallHitPointsRatio;

return sb.ToString();
}

public override SettlementAuditResponse CreateResponseInstance(IEnumerable<SettlementAuditData> par1, string par2)
Expand Down

0 comments on commit cb531b9

Please sign in to comment.