using BCnEncoder.Decoder;
using BCnEncoder.Shared;
using XFEEDToolBox.Core.Galaxy;
using XFEEDToolBox.Core.Rendering;
using XFEExtension.NetCore.XUnit.Attributes;
namespace XFEEDToolBox.Test;
[TestFixture]
public sealed class GalaxyOriginalSpriteTests
{
[Test] public void ClassifiedStarsUseOriginalDiscAndCommodityAndPowerModesUseTheirActualLayerRules()
{
var star=new GalacticSystem("Actual",new(0,0,0));var filter=new GalaxyMapFilter{Mode=GalaxyMapMode.Map,Category=GalaxyFilterCategory.Economy};
Check.Equal(13,filter.SpriteLayerFor(star));Check.Equal(11,(filter with{Category=GalaxyFilterCategory.Commodity,CommodityDirection=GalaxyCommodityDirection.Exports}).SpriteLayerFor(star));Check.Equal(12,(filter with{Category=GalaxyFilterCategory.Commodity,CommodityDirection=GalaxyCommodityDirection.Imports}).SpriteLayerFor(star));
var power=filter with{Mode=GalaxyMapMode.Powerplay,Category=GalaxyFilterCategory.Power};
Check.Equal(15,power.SpriteLayerFor(star));
var actual=star with{Data=new(){NativeFilterFacts=new("F1",42,100){PowerStatus=new(3,6,2,7,0,0,true)}}};
Check.Equal(22,power.SpriteLayerFor(actual));Check.Equal(22,(power with{PowerplayView=GalaxyPowerplayView.Activities}).SpriteLayerFor(actual));
Check.Equal(13,(power with{Mode=GalaxyMapMode.Realistic}).SpriteLayerFor(actual));
}
[Test]
public void EmbeddedOriginalMasksDistinguishFlatDiscAndHollowRing()
{
var source=GalaxyOriginalStarSprites.Reference;var mip=source.Mips[0];var decoder=new BcDecoder();
var disc=decoder.DecodeRaw(source.Payload.Slice(mip.Offset+13*mip.SliceBytes,mip.SliceBytes).ToArray(),512,512,CompressionFormat.Bc1);
var ring=decoder.DecodeRaw(source.Payload.Slice(mip.Offset+15*mip.SliceBytes,mip.SliceBytes).ToArray(),512,512,CompressionFormat.Bc1);
var centre=256*512+256;var inside=256*512+220;var edge=256*512+194;
Check.That(disc[centre].r==255&&disc[inside].r==255&&disc[0].r==0,"Original default disc must have a flat white interior and empty exterior.");
Check.That(ring[centre].r==0&&ring[inside].r==0&&ring[edge].r==255,"Original territory ring must stay hollow; it is not a lit sphere.");
Check.Equal("d07d66706666ee7a097f0545faa6e55e18553c678c73bf6f73ae8f8860323b4e",source.PayloadSha256);
}
}
using BCnEncoder.Decoder;
using BCnEncoder.Shared;
using XFEEDToolBox.Core.Galaxy;
using XFEEDToolBox.Core.Rendering;
using XFEExtension.NetCore.XUnit.Attributes;
namespace XFEEDToolBox.Test;
[TestFixture]
public sealed class GalaxyOriginalSpriteTests
{
[Test] public void ClassifiedStarsUseOriginalDiscAndCommodityAndPowerModesUseTheirActualLayerRules()
{
var star=new GalacticSystem("Actual",new(0,0,0));var filter=new GalaxyMapFilter{Mode=GalaxyMapMode.Map,Category=GalaxyFilterCategory.Economy};
Check.Equal(13,filter.SpriteLayerFor(star));Check.Equal(11,(filter with{Category=GalaxyFilterCategory.Commodity,CommodityDirection=GalaxyCommodityDirection.Exports}).SpriteLayerFor(star));Check.Equal(12,(filter with{Category=GalaxyFilterCategory.Commodity,CommodityDirection=GalaxyCommodityDirection.Imports}).SpriteLayerFor(star));
var power=filter with{Mode=GalaxyMapMode.Powerplay,Category=GalaxyFilterCategory.Power};
Check.Equal(15,power.SpriteLayerFor(star));
var actual=star with{Data=new(){NativeFilterFacts=new("F1",42,100){PowerStatus=new(3,6,2,7,0,0,true)}}};
Check.Equal(22,power.SpriteLayerFor(actual));Check.Equal(22,(power with{PowerplayView=GalaxyPowerplayView.Activities}).SpriteLayerFor(actual));
Check.Equal(13,(power with{Mode=GalaxyMapMode.Realistic}).SpriteLayerFor(actual));
}
[Test]
public void EmbeddedOriginalMasksDistinguishFlatDiscAndHollowRing()
{
var source=GalaxyOriginalStarSprites.Reference;var mip=source.Mips[0];var decoder=new BcDecoder();
var disc=decoder.DecodeRaw(source.Payload.Slice(mip.Offset+13*mip.SliceBytes,mip.SliceBytes).ToArray(),512,512,CompressionFormat.Bc1);
var ring=decoder.DecodeRaw(source.Payload.Slice(mip.Offset+15*mip.SliceBytes,mip.SliceBytes).ToArray(),512,512,CompressionFormat.Bc1);
var centre=256*512+256;var inside=256*512+220;var edge=256*512+194;
Check.That(disc[centre].r==255&&disc[inside].r==255&&disc[0].r==0,"Original default disc must have a flat white interior and empty exterior.");
Check.That(ring[centre].r==0&&ring[inside].r==0&&ring[edge].r==255,"Original territory ring must stay hollow; it is not a lit sphere.");
Check.Equal("d07d66706666ee7a097f0545faa6e55e18553c678c73bf6f73ae8f8860323b4e",source.PayloadSha256);
}
}