determinism-ledger: every ItemManager states its seed; scatter on the zone's dice
- ItemManager(uint seed, ...) refuses seed 0 and seeds Random from it. - RunStart.ItemSeed(galaxy, step) is public (formula unchanged), refuses a zero result; named steps ArenaStep, StageStep, ContinueStep and NoRunSeed. - Continue seeds the item stream from the saved run's seed (ContinueStep); a scene with no galaxy uses NoRunSeed. - Zone's unpack scatter draws SimulationDice.For(CombatSeed, ScatterStream, 1-based pack ordinal), never the item stream. - Loadout's scratch manager and AetherDb's catalog command take fixed seeds; every test and Editor construction gains 1u (mechanical rewrite). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
c13bb2368e
commit
cc0c164574
85 changed files with 200 additions and 160 deletions
|
|
@ -122,7 +122,7 @@ namespace Aetheria.EditorTools
|
|||
var cache = AetheriaStores.Open(Path.Combine(_work, "belts.cc"), Path.Combine(_work, "belts-run.cc"), catalogWritable: true);
|
||||
cache.Upsert(new VerseGrammar { Revision = 1 });
|
||||
cache.FlushAsync().Wait();
|
||||
var items = new ItemManager(cache, new ProvenanceLedger(), settings, _ => { });
|
||||
var items = new ItemManager(1u, cache, new ProvenanceLedger(), settings, _ => { });
|
||||
|
||||
CultRecordKey Orbit(CultRecordKey parent, float distance, float phase, float2 fixedPosition = default)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -62,7 +62,7 @@ public static class CapabilityPresentationSmoke
|
|||
cache.FlushAsync().Wait();
|
||||
var ledger = new ProvenanceLedger();
|
||||
for (var i = 1; i <= 8; i++) ledger.Lots[i] = new Lot { Origin = new Attributed(), Quality = 1 };
|
||||
var items = new ItemManager(cache, ledger, settings, _ => { });
|
||||
var items = new ItemManager(1u, cache, ledger, settings, _ => { });
|
||||
var zone = new Zone(items, new PlanetSettings(), new ZonePack(), new GalaxyZone { Name = "Smoke", Owner = null }, null);
|
||||
var hullRef = items.ItemData.RefOf<ItemData>(items.ItemData.GetByName<HullData>("Smoke Hull"));
|
||||
var ship = new Ship(items, zone, new EquippableItem { Data = hullRef, Durability = 1000, Lot = 1 }, new EntitySettings());
|
||||
|
|
|
|||
|
|
@ -115,7 +115,7 @@ namespace Aetheria.EditorTools
|
|||
cache.Upsert(new SimpleCommodityData { Name = "Wiring Ore", Shape = oneCell, MaxStack = 100 });
|
||||
cache.FlushAsync().Wait();
|
||||
var ledger = new ProvenanceLedger();
|
||||
var items = new ItemManager(cache, ledger, settings, _ => { });
|
||||
var items = new ItemManager(1u, cache, ledger, settings, _ => { });
|
||||
|
||||
// A sun and a planet on a moving rail round it, both near the bodies below: the field under a floater changes with the
|
||||
// drawn time, so a presenter that samples it at the step's time, drops it, or reads lead 0 for the height draws a different y.
|
||||
|
|
|
|||
|
|
@ -124,7 +124,7 @@ public static class FloatingItemsDrawnSmoke
|
|||
cache.FlushAsync().Wait();
|
||||
var ledger = new ProvenanceLedger();
|
||||
for (var i = 1; i <= 8; i++) ledger.Lots[i] = new Lot { Origin = new Attributed(), Quality = 1 };
|
||||
var items = new ItemManager(cache, ledger, settings, _ => { });
|
||||
var items = new ItemManager(1u, cache, ledger, settings, _ => { });
|
||||
var zone = new Zone(items, new PlanetSettings(), new ZonePack(), null, null);
|
||||
EquippableItem Make(string name, int lot) => new EquippableItem
|
||||
{
|
||||
|
|
|
|||
|
|
@ -106,7 +106,7 @@ namespace Aetheria.EditorTools
|
|||
var cache = AetheriaStores.Open(Path.Combine(work, Guid.NewGuid().ToString("N") + ".cc"), catalogWritable: true);
|
||||
cache.Upsert(new VerseGrammar { Revision = 1 });
|
||||
cache.FlushAsync().Wait();
|
||||
var items = new ItemManager(cache, new ProvenanceLedger(), settings.GameplaySettings, _ => { });
|
||||
var items = new ItemManager(1u, cache, new ProvenanceLedger(), settings.GameplaySettings, _ => { });
|
||||
return new Zone(items, new PlanetSettings { Flow = flow }, new ZonePack { Time = time }, new GalaxyZone { Name = "Parity", Owner = null }, null);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -154,7 +154,7 @@ namespace Aetheria.EditorTools
|
|||
var cache = AetheriaStores.Open(Path.Combine(work, "catalog.cc"), Path.Combine(work, "run.cc"), catalogWritable: true);
|
||||
cache.Upsert(new VerseGrammar { Revision = 1 });
|
||||
cache.FlushAsync().Wait();
|
||||
var items = new ItemManager(cache, new ProvenanceLedger(), settings.GameplaySettings, _ => { });
|
||||
var items = new ItemManager(1u, cache, new ProvenanceLedger(), settings.GameplaySettings, _ => { });
|
||||
var positions = new List<Vector2> { new Vector2(-130f, 85f), new Vector2(610f, -240f), new Vector2(670f, -270f), new Vector2(1700f, 300f) };
|
||||
var masses = new List<float> { 14152f, 273.9f, 29.2f, 0f };
|
||||
var parents = new List<int> { -1, 0, 1, -1 };
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@ public static class MapBeltPerf
|
|||
Planets = { new CultRecordRef<BodyData>(sunKey), new CultRecordRef<BodyData>(beltKey) },
|
||||
Radius = 5000f, Mass = 10000f, Time = 0
|
||||
};
|
||||
var items = new ItemManager(cache, new ProvenanceLedger(), settings.GameplaySettings, _ => { });
|
||||
var items = new ItemManager(1u, cache, new ProvenanceLedger(), settings.GameplaySettings, _ => { });
|
||||
var zone = new Zone(items, new PlanetSettings
|
||||
{
|
||||
BodyRadius = new ExponentialCurve(), WellStrength = new ExponentialCurve { Multiplier = 1f, Exponent = 1f },
|
||||
|
|
|
|||
|
|
@ -115,7 +115,7 @@ public static class MapPresenterSmoke
|
|||
};
|
||||
var ledger = new ProvenanceLedger();
|
||||
for (var i = 1; i <= 8; i++) ledger.Lots[i] = new Lot { Origin = new Attributed(), Quality = 1 };
|
||||
var items = new ItemManager(cache, ledger, settings.GameplaySettings, _ => { });
|
||||
var items = new ItemManager(1u, cache, ledger, settings.GameplaySettings, _ => { });
|
||||
var zone = new Zone(items, planetSettings, pack, new GalaxyZone { Name = "Smoke", Owner = null }, null);
|
||||
var hullRef = items.ItemData.RefOf<ItemData>(items.ItemData.GetByName<HullData>("Smoke Hull"));
|
||||
var ship = new Ship(items, zone, new EquippableItem { Data = hullRef, Durability = 1000, Lot = 1 }, new EntitySettings());
|
||||
|
|
|
|||
|
|
@ -294,7 +294,11 @@ public class ActionGameManager : MonoBehaviour
|
|||
ConsoleController.MessageReceiver = this;
|
||||
|
||||
// A new run mints into an empty ledger; the saved run's stays in the store until the new run has started.
|
||||
ItemManager = new ItemManager(CultCache, PendingScenario != null ? new ProvenanceLedger() : RunSave.Lots(CultCache),
|
||||
// A new run is reseeded by RunStart; Continue's item draws come from the saved run's seed.
|
||||
ItemManager = new ItemManager(
|
||||
CurrentGalaxy == null ? RunStart.NoRunSeed
|
||||
: RunStart.ItemSeed(CurrentGalaxy, PendingScenario != null ? RunStart.ArenaStep : RunStart.ContinueStep),
|
||||
CultCache, PendingScenario != null ? new ProvenanceLedger() : RunSave.Lots(CultCache),
|
||||
Settings.GameplaySettings, Debug.Log);
|
||||
ZoneRenderer.ItemManager = ItemManager;
|
||||
|
||||
|
|
|
|||
|
|
@ -17,6 +17,8 @@ using float4 = CultMath.float4;
|
|||
|
||||
public class ItemManager
|
||||
{
|
||||
// The item stream: each lot's quality and each generated fit. Seeded by whoever constructs the manager and reseeded
|
||||
// by RunStart at each step of a new run, never by the clock.
|
||||
public Random Random;
|
||||
|
||||
private Action<string> _logger;
|
||||
|
|
@ -25,8 +27,10 @@ public class ItemManager
|
|||
public ProvenanceLedger Lots { get; }
|
||||
public GameplaySettings GameplaySettings { get; }
|
||||
|
||||
public ItemManager(CultCache itemData, ProvenanceLedger lots, GameplaySettings settings, Action<string> logger)
|
||||
public ItemManager(uint seed, CultCache itemData, ProvenanceLedger lots, GameplaySettings settings, Action<string> logger)
|
||||
{
|
||||
if (seed == 0) throw new ArgumentOutOfRangeException(nameof(seed), "an item stream needs a nonzero seed");
|
||||
Random = new Random(seed);
|
||||
ItemData = itemData;
|
||||
Lots = lots;
|
||||
GameplaySettings = settings;
|
||||
|
|
|
|||
|
|
@ -127,6 +127,9 @@ public static class Loadouts
|
|||
// The quality a design no manufacturer makes is built at: the console give's.
|
||||
public const float UnbrandedQuality = .95f;
|
||||
|
||||
// The seed of the scratch item manager a fit is tried on. It draws nothing, so any nonzero constant does.
|
||||
private const uint ScratchSeed = 1u;
|
||||
|
||||
// All-or-nothing: returns an entity only when every design resolved and fitted, the loadout has at most
|
||||
// WeaponGroupCount weapon groups, and every group index names a weapon slot. Every failure of a stage is listed; on any
|
||||
// failure nothing is returned and the zone and cache are unchanged. The stages run in the order that puts refusal
|
||||
|
|
@ -166,7 +169,7 @@ public static class Loadouts
|
|||
|
||||
// The cells fit or they do not whatever brand a design-only slot takes: the shape is the design's. Tried on its own
|
||||
// item manager, so nothing is minted into the live ledger and nothing is drawn.
|
||||
var scratch = new ItemManager(cache, new ProvenanceLedger(), itemManager.GameplaySettings, _ => { });
|
||||
var scratch = new ItemManager(ScratchSeed, cache, new ProvenanceLedger(), itemManager.GameplaySettings, _ => { });
|
||||
Assemble(scratch, null, hullData, loadout, Unbranded(scratch, hullSettled), slotsSettled.Select(settled => Unbranded(scratch, settled)).ToArray(), failures, out _);
|
||||
if (failures.Count > reported) return null;
|
||||
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ public static class RunStart
|
|||
|
||||
public static ZonePack GenerateArena(ItemManager itemManager, ZoneGenerationSettings zoneSettings, PlanetSettings planetSettings, Galaxy galaxy, Scenario scenario)
|
||||
{
|
||||
SeedItems(itemManager, galaxy, 1);
|
||||
SeedItems(itemManager, galaxy, ArenaStep);
|
||||
return galaxy.Entrance.PackedContents = ZoneGenerator.GenerateZone(
|
||||
itemManager, zoneSettings, planetSettings, galaxy, galaxy.Entrance, galaxy.IsPrelude, scenario.Ambient);
|
||||
}
|
||||
|
|
@ -36,7 +36,7 @@ public static class RunStart
|
|||
public static Staged Stage(ItemManager itemManager, Zone arena, Scenario scenario, string startingHull,
|
||||
TutorialGenerationSettings tutorialGenerationSettings, List<string> failures)
|
||||
{
|
||||
SeedItems(itemManager, arena.Galaxy, 2);
|
||||
SeedItems(itemManager, arena.Galaxy, StageStep);
|
||||
var stage = new ScenarioStage(itemManager, arena, startingHull, tutorialGenerationSettings);
|
||||
scenario.Stage(stage);
|
||||
var reported = failures.Count;
|
||||
|
|
@ -62,5 +62,22 @@ public static class RunStart
|
|||
// so a fixed seed fixes the arena's gear and the player's fit. Each step draws its own stream, so whatever runs
|
||||
// between them (populating the level) cannot shift it.
|
||||
private static void SeedItems(ItemManager itemManager, Galaxy galaxy, uint step) =>
|
||||
itemManager.Random = new Random(galaxy.Seed * 0x9E3779B1u + step);
|
||||
itemManager.Random = new Random(ItemSeed(galaxy, step));
|
||||
|
||||
// The steps of a run that draw items: generating its arena, staging its scenario, and continuing a saved run.
|
||||
public const uint ArenaStep = 1;
|
||||
public const uint StageStep = 2;
|
||||
public const uint ContinueStep = 3;
|
||||
|
||||
// The item seed of an ActionGameManager scene opened with no galaxy. No run is loaded, so nothing a run decides
|
||||
// draws from it.
|
||||
public const uint NoRunSeed = 0x5EED0001u;
|
||||
|
||||
// The item stream's seed for one step of a run: the run's seed and the step. Never zero, which no stream accepts.
|
||||
public static uint ItemSeed(Galaxy galaxy, uint step)
|
||||
{
|
||||
var seed = galaxy.Seed * 0x9E3779B1u + step;
|
||||
if (seed == 0) throw new InvalidOperationException($"Item seed is zero for galaxy seed {galaxy.Seed} at step {step}.");
|
||||
return seed;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -14,6 +14,10 @@ public static class SimulationDice
|
|||
// never rides ItemManager.Random, so minting items cannot change how a pilot fights.
|
||||
public const uint CombatSampleStream = 3;
|
||||
public const uint PatrolStream = 4;
|
||||
// Generation placement of an unpacked ship packed at the origin, ordinal its 1-based index in the pack, on the zone's
|
||||
// seed (CombatSeed): the run seed feeds drops and mines only (ruling run-seed-drops-only), and placement never rides
|
||||
// ItemManager.Random.
|
||||
public const uint ScatterStream = 5;
|
||||
|
||||
// 9.1 (docs/fire-control-cut.md): fmix32, MurmurHash3's 32-bit finalizer -- xor-shift, multiply,
|
||||
// xor-shift, multiply, xor-shift. Diffuses a structured seed (a zone seed XORed with a small,
|
||||
|
|
|
|||
|
|
@ -266,11 +266,18 @@ public class Zone
|
|||
foreach (var wear in pack.ChunkWear)
|
||||
_wear[new ChunkId(wear.Field, wear.Index)] = new ChunkWear { Damage = wear.Damage, BrokenUntil = wear.BrokenUntil };
|
||||
|
||||
var ordinal = 0u;
|
||||
foreach (var entityPack in pack.Entities)
|
||||
{
|
||||
ordinal++;
|
||||
var entity = EntitySerializer.Unpack(_itemManager, this, entityPack);
|
||||
var ship = entity as Ship;
|
||||
Admit(entity, piloted: ship is {IsPlayerShip: false});
|
||||
// Generation placement, not admission: a ship packed at the origin is scattered across the zone, on the
|
||||
// zone's own dice, so nothing drawn from the item stream can move it.
|
||||
if (ship is {IsPlayerShip: false} && lengthsq(ship.Position) < 1)
|
||||
ship.Position = SimulationDice.For(CombatSeed, SimulationDice.ScatterStream, ordinal)
|
||||
.NextFloat3(float3(-pack.Radius * .5f), float3(pack.Radius * .5f));
|
||||
}
|
||||
|
||||
// TODO: Associate planets with stored entities for planetary colonies
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ public sealed class AssemblyFromMakerTests : IDisposable
|
|||
Roles = { new ItemRole { Name = "lens" } }
|
||||
});
|
||||
_lens = new CultRecordRef<CraftedItemData>(gear.Key);
|
||||
_items = new ItemManager(_cache, new ProvenanceLedger(), RunSaveTests.TestSettings(), _ => { });
|
||||
_items = new ItemManager(1u, _cache, new ProvenanceLedger(), RunSaveTests.TestSettings(), _ => { });
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
|
|
|
|||
|
|
@ -101,7 +101,7 @@ public sealed class BrownoutTests : IDisposable
|
|||
|
||||
private Ship BuildShip(CultCache cache, float reactorCharge)
|
||||
{
|
||||
var items = new ItemManager(cache, new ProvenanceLedger(), Settings(), _ => { });
|
||||
var items = new ItemManager(1u, cache, new ProvenanceLedger(), Settings(), _ => { });
|
||||
var zone = new Zone(items, new PlanetSettings(), new ZonePack(), new GalaxyZone { Name = "Test Zone", Owner = null }, null);
|
||||
var hull = Mint(cache, items, cache.GetByName<HullData>("Skiff"));
|
||||
var ship = new Ship(items, zone, hull, new EntitySettings());
|
||||
|
|
|
|||
|
|
@ -42,7 +42,7 @@ public sealed class ChildrenWithinReachTests : IClassFixture<ChildrenWithinReach
|
|||
authored.Read<SectorBackgroundSettings>("TutorialBackgroundSettings"),
|
||||
cache, new PlayerSettings(),
|
||||
Directory.CreateDirectory(Path.Combine(dir, "Narrative")), _ => { }, null, seed);
|
||||
var items = new ItemManager(cache, new ProvenanceLedger(), authored.Read<GameplaySettings>("GameplaySettings"), _ => { });
|
||||
var items = new ItemManager(1u, cache, new ProvenanceLedger(), authored.Read<GameplaySettings>("GameplaySettings"), _ => { });
|
||||
var planetSettings = authored.Read<PlanetSettings>("PlanetSettings");
|
||||
foreach (var galaxyZone in galaxy.Zones)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -84,7 +84,7 @@ public sealed class ConditionRatioTests : IDisposable
|
|||
|
||||
private Ship BuildShip(CultCache cache, float reactorCharge, out EquippedItem consumer)
|
||||
{
|
||||
var items = new ItemManager(cache, new ProvenanceLedger(), Settings(), _ => { });
|
||||
var items = new ItemManager(1u, cache, new ProvenanceLedger(), Settings(), _ => { });
|
||||
var zone = new Zone(items, new PlanetSettings(), new ZonePack(), new GalaxyZone { Name = "Test Zone", Owner = null }, null);
|
||||
var hull = Mint(cache, items, cache.GetByName<HullData>("Skiff"));
|
||||
var ship = new Ship(items, zone, hull, new EntitySettings());
|
||||
|
|
|
|||
|
|
@ -147,7 +147,7 @@ public sealed class ConsumableAiTests : IDisposable
|
|||
settings.UnaidedPrecision = 2f;
|
||||
settings.AgentMinHitProbability = 0f;
|
||||
settings.BeamResolveInterval = .1f;
|
||||
var items = new ItemManager(cache, new ProvenanceLedger(), settings, _ => { });
|
||||
var items = new ItemManager(1u, cache, new ProvenanceLedger(), settings, _ => { });
|
||||
var maker = cache.RefOf(cache.GetByName<Faction>("Maker"));
|
||||
EquippableItem Make<T>(string name) where T : CraftedItemData =>
|
||||
(EquippableItem) items.CreateInstance(items.CreateLot(cache.GetByName<T>(name), maker, .5f));
|
||||
|
|
|
|||
|
|
@ -153,7 +153,7 @@ public sealed class ConsumableSupplyTests : IDisposable
|
|||
return new Rig
|
||||
{
|
||||
Cache = cache,
|
||||
Items = new ItemManager(cache, new ProvenanceLedger(), RunSaveTests.TestSettings(), _ => { }),
|
||||
Items = new ItemManager(1u, cache, new ProvenanceLedger(), RunSaveTests.TestSettings(), _ => { }),
|
||||
Galaxy = new Galaxy(cache, cache.GetGlobal<SavedGame>(), _ => { }),
|
||||
Maker = cache.GetByName<Faction>("Maker")
|
||||
};
|
||||
|
|
@ -281,7 +281,7 @@ public sealed class ConsumableSupplyTests : IDisposable
|
|||
var authored = AuthoredSettings.Load(repo);
|
||||
var galaxy = new Galaxy(authored.Read<TutorialGenerationSettings>("TutorialGenerationSettings"),
|
||||
authored.Read<SectorBackgroundSettings>("TutorialBackgroundSettings"), cache, new PlayerSettings(), Directory.CreateDirectory(Path.Combine(_root, "Narrative")), _ => { }, null, 1);
|
||||
var items = new ItemManager(cache, new ProvenanceLedger(), authored.Read<GameplaySettings>("GameplaySettings"), _ => { });
|
||||
var items = new ItemManager(1u, cache, new ProvenanceLedger(), authored.Read<GameplaySettings>("GameplaySettings"), _ => { });
|
||||
|
||||
int stations = 0, ships = 0;
|
||||
for (var i = 0; i < Seeds; i++)
|
||||
|
|
|
|||
|
|
@ -76,7 +76,7 @@ public sealed class ConsumableTests : IDisposable
|
|||
var otherRef = cache.Upsert(new ConsumableItemData { Name = "Flare", Duration = 1f, Shape = new Shape() });
|
||||
cache.FlushAsync().Wait();
|
||||
|
||||
var items = new ItemManager(cache, new ProvenanceLedger(), RunSaveTests.TestSettings(), _ => { });
|
||||
var items = new ItemManager(1u, cache, new ProvenanceLedger(), RunSaveTests.TestSettings(), _ => { });
|
||||
var makerRef = cache.RefOf(cache.GetByName<Faction>("Maker"));
|
||||
EquippableItem Gear(EquippableItemData design) => (EquippableItem) items.CreateInstance(items.CreateLot(design, makerRef, .5f));
|
||||
var zone = new Zone(items, new PlanetSettings(), new ZonePack(), new GalaxyZone { Name = "Test Zone", Owner = null }, null);
|
||||
|
|
|
|||
|
|
@ -173,7 +173,7 @@ public sealed partial class ContactRevealTests : IDisposable
|
|||
_openCache = AetheriaStores.Open(Catalog, catalogWritable: true);
|
||||
var ledger = new ProvenanceLedger();
|
||||
for (var lot = 1000; lot < 2000; lot++) ledger.Lots[lot] = new Lot { Origin = new Attributed(), Quality = 1 };
|
||||
_items = new ItemManager(_openCache, ledger, new GameplaySettings
|
||||
_items = new ItemManager(1u, _openCache, ledger, new GameplaySettings
|
||||
{
|
||||
DefaultEntitySettings = new EntitySettings(),
|
||||
Tiers = new[] { new RarityTier { Name = "Common", Quality = .5f, Color = new float3(1, 1, 1) } },
|
||||
|
|
|
|||
|
|
@ -116,7 +116,7 @@ public sealed class ContactTests : IDisposable
|
|||
|
||||
var ledger = new ProvenanceLedger();
|
||||
for (var i = 1; i <= 50; i++) ledger.Lots[i] = new Lot { Origin = new Attributed(), Quality = 1 };
|
||||
var items = new ItemManager(cache, ledger, settings, _ => { });
|
||||
var items = new ItemManager(1u, cache, ledger, settings, _ => { });
|
||||
var zone = new Zone(items, new PlanetSettings(), new ZonePack { Radius = 0 }, new GalaxyZone { Name = "Contacts", Owner = null }, null);
|
||||
var lab = new Lab { Items = items, Zone = zone };
|
||||
zone.Contacted.Subscribe(lab.Events.Add);
|
||||
|
|
|
|||
|
|
@ -84,7 +84,7 @@ public sealed class DrawnPoseTests : IDisposable
|
|||
_caches.Add(cache);
|
||||
var ledger = new ProvenanceLedger();
|
||||
ledger.Lots[1] = new Lot { Origin = new Attributed(), Quality = 1 };
|
||||
var items = new ItemManager(cache, ledger, new GameplaySettings
|
||||
var items = new ItemManager(1u, cache, ledger, new GameplaySettings
|
||||
{
|
||||
DefaultEntitySettings = new EntitySettings(),
|
||||
Tiers = new[] { new RarityTier { Name = "Common", Quality = .5f, Color = new float3(1, 1, 1) } },
|
||||
|
|
|
|||
|
|
@ -141,7 +141,7 @@ public sealed class FireAuthorityTests : IDisposable
|
|||
ledger.Lots[3] = new Lot { Origin = new Attributed(), Quality = 1 };
|
||||
ledger.Lots[4] = new Lot { Origin = new Attributed(), Quality = 1 };
|
||||
for (var i = 5; i <= 12; i++) ledger.Lots[i] = new Lot { Origin = new Attributed(), Quality = 1 };
|
||||
var items = new ItemManager(cache, ledger, settings, _ => { });
|
||||
var items = new ItemManager(1u, cache, ledger, settings, _ => { });
|
||||
var zone = new Zone(items, new PlanetSettings(), new ZonePack(), new GalaxyZone { Name = "Test", Owner = null }, null);
|
||||
|
||||
var hullRef = items.ItemData.RefOf<ItemData>(items.ItemData.GetByName<HullData>("Hull"));
|
||||
|
|
|
|||
|
|
@ -134,7 +134,7 @@ public sealed class FireControlCut11Tests : IDisposable
|
|||
|
||||
var ledger = new ProvenanceLedger();
|
||||
for (var i = 1; i <= 16; i++) ledger.Lots[i] = new Lot { Origin = new Attributed(), Quality = 1 };
|
||||
var items = new ItemManager(cache, ledger, TestSettings(schematicCellSize), _ => { });
|
||||
var items = new ItemManager(1u, cache, ledger, TestSettings(schematicCellSize), _ => { });
|
||||
var zone = new Zone(items, new PlanetSettings(), new ZonePack(), new GalaxyZone { Name = zoneName, Owner = null }, null);
|
||||
|
||||
EquippableItem Make(string name, int lot, float durability) => new EquippableItem
|
||||
|
|
|
|||
|
|
@ -160,7 +160,7 @@ public sealed class FireControlCut123Tests : IDisposable
|
|||
|
||||
var ledger = new ProvenanceLedger();
|
||||
for (var i = 1; i <= 500; i++) ledger.Lots[i] = new Lot { Origin = new Attributed(), Quality = 1 }; // F8: shared-item fixtures equip more items (bars) than earlier cuts needed
|
||||
var items = new ItemManager(cache, ledger, settings, _ => { });
|
||||
var items = new ItemManager(1u, cache, ledger, settings, _ => { });
|
||||
var zone = new Zone(items, new PlanetSettings(), new ZonePack(), new GalaxyZone { Name = "Cut123", Owner = null }, null);
|
||||
|
||||
EquippableItem Make(string name, int lot, float durability) => new EquippableItem
|
||||
|
|
|
|||
|
|
@ -188,7 +188,7 @@ public sealed partial class FireControlCut124Tests : IDisposable
|
|||
|
||||
var ledger = new ProvenanceLedger();
|
||||
for (var i = 1; i <= 500; i++) ledger.Lots[i] = new Lot { Origin = new Attributed(), Quality = 1 };
|
||||
var items = new ItemManager(cache, ledger, settings, _ => { });
|
||||
var items = new ItemManager(1u, cache, ledger, settings, _ => { });
|
||||
var zone = new Zone(items, new PlanetSettings(), new ZonePack(), new GalaxyZone { Name = "Cut124", Owner = null }, null);
|
||||
|
||||
EquippableItem Make(string name, int lot, float durability) => new EquippableItem
|
||||
|
|
|
|||
|
|
@ -192,7 +192,7 @@ public sealed class FireControlCut12Tests : IDisposable
|
|||
|
||||
var ledger = new ProvenanceLedger();
|
||||
for (var i = 1; i <= 24; i++) ledger.Lots[i] = new Lot { Origin = new Attributed(), Quality = 1 };
|
||||
var items = new ItemManager(cache, ledger, settings, _ => { });
|
||||
var items = new ItemManager(1u, cache, ledger, settings, _ => { });
|
||||
// Cut 6.1's own convention (FireControlCut6Tests.cs:62-63): every engagement shares one fixed
|
||||
// GalaxyZone name, so every Zone this fixture builds shares one CombatSeed and every statistical test
|
||||
// is replayable byte-for-byte across runs. A GUID-suffixed name here (this file's own earlier defect)
|
||||
|
|
|
|||
|
|
@ -124,7 +124,7 @@ public sealed class FireControlCut4Tests : IDisposable
|
|||
ledger.Lots[4] = new Lot { Origin = new Attributed(), Quality = 1 };
|
||||
ledger.Lots[5] = new Lot { Origin = new Attributed(), Quality = 1 };
|
||||
ledger.Lots[9] = new Lot { Origin = new Attributed(), Quality = 1 };
|
||||
var items = new ItemManager(cache, ledger, settings, _ => { });
|
||||
var items = new ItemManager(1u, cache, ledger, settings, _ => { });
|
||||
var zone = new Zone(items, new PlanetSettings(), new ZonePack(), new GalaxyZone { Name = "Test", Owner = null }, null);
|
||||
|
||||
var hullRef = items.ItemData.RefOf<ItemData>(items.ItemData.GetByName<HullData>("Hull"));
|
||||
|
|
@ -218,7 +218,7 @@ public sealed class FireControlCut4Tests : IDisposable
|
|||
cache.FlushAsync().Wait();
|
||||
|
||||
var ledger = new ProvenanceLedger { Lots = { [1] = new Lot { Origin = new Attributed(), Quality = 1 } } };
|
||||
var items = new ItemManager(cache, ledger, TestSettings(), _ => { });
|
||||
var items = new ItemManager(1u, cache, ledger, TestSettings(), _ => { });
|
||||
var zone = new Zone(items, new PlanetSettings(), new ZonePack(), new GalaxyZone { Name = "Test", Owner = null }, null);
|
||||
|
||||
var hullRef = items.ItemData.RefOf<ItemData>(items.ItemData.GetByName<HullData>("Hull"));
|
||||
|
|
@ -258,7 +258,7 @@ public sealed class FireControlCut4Tests : IDisposable
|
|||
cache.FlushAsync().Wait();
|
||||
|
||||
_splashLedger = new ProvenanceLedger();
|
||||
var items = new ItemManager(cache, _splashLedger, settings, _ => { });
|
||||
var items = new ItemManager(1u, cache, _splashLedger, settings, _ => { });
|
||||
var zone = new Zone(items, new PlanetSettings(), new ZonePack(), new GalaxyZone { Name = "Test", Owner = null }, null);
|
||||
return (items, zone);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -140,7 +140,7 @@ public sealed class FireControlCut5Tests : IDisposable
|
|||
ledger.Lots[3] = new Lot { Origin = new Attributed(), Quality = 1 };
|
||||
ledger.Lots[4] = new Lot { Origin = new Attributed(), Quality = 1 };
|
||||
for (var i = 5; i <= 12; i++) ledger.Lots[i] = new Lot { Origin = new Attributed(), Quality = 1 };
|
||||
var items = new ItemManager(cache, ledger, settings, _ => { });
|
||||
var items = new ItemManager(1u, cache, ledger, settings, _ => { });
|
||||
var zone = new Zone(items, new PlanetSettings(), new ZonePack(), new GalaxyZone { Name = "Test", Owner = null }, null);
|
||||
|
||||
var hullRef = items.ItemData.RefOf<ItemData>(items.ItemData.GetByName<HullData>("Hull"));
|
||||
|
|
@ -310,7 +310,7 @@ public sealed class FireControlCut5Tests : IDisposable
|
|||
ledger.Lots[3] = new Lot { Origin = new Attributed(), Quality = 1 };
|
||||
ledger.Lots[4] = new Lot { Origin = new Attributed(), Quality = 1 };
|
||||
ledger.Lots[5] = new Lot { Origin = new Attributed(), Quality = 1 };
|
||||
var items = new ItemManager(cache, ledger, settings, _ => { });
|
||||
var items = new ItemManager(1u, cache, ledger, settings, _ => { });
|
||||
var zone = new Zone(items, new PlanetSettings(), new ZonePack(), new GalaxyZone { Name = "Test", Owner = null }, null);
|
||||
|
||||
var hullRef = items.ItemData.RefOf<ItemData>(items.ItemData.GetByName<HullData>("Hull"));
|
||||
|
|
@ -406,7 +406,7 @@ public sealed class FireControlCut5Tests : IDisposable
|
|||
ledger.Lots[3] = new Lot { Origin = new Attributed(), Quality = 1 };
|
||||
ledger.Lots[4] = new Lot { Origin = new Attributed(), Quality = 1 };
|
||||
ledger.Lots[5] = new Lot { Origin = new Attributed(), Quality = 1 };
|
||||
var items = new ItemManager(cache, ledger, settings, _ => { });
|
||||
var items = new ItemManager(1u, cache, ledger, settings, _ => { });
|
||||
var zone = new Zone(items, new PlanetSettings(), new ZonePack(), new GalaxyZone { Name = "Test", Owner = null }, null);
|
||||
|
||||
var hullRef = items.ItemData.RefOf<ItemData>(items.ItemData.GetByName<HullData>("Hull"));
|
||||
|
|
@ -549,7 +549,7 @@ public sealed class FireControlCut5Tests : IDisposable
|
|||
ledger.Lots[1] = new Lot { Origin = new Attributed(), Quality = 1 };
|
||||
ledger.Lots[2] = new Lot { Origin = new Attributed(), Quality = 1 };
|
||||
ledger.Lots[3] = new Lot { Origin = new Attributed(), Quality = 1 };
|
||||
var items = new ItemManager(cache, ledger, settings, _ => { });
|
||||
var items = new ItemManager(1u, cache, ledger, settings, _ => { });
|
||||
var zone = new Zone(items, new PlanetSettings(), new ZonePack(), new GalaxyZone { Name = "Test", Owner = null }, null);
|
||||
|
||||
var hullRef = items.ItemData.RefOf<ItemData>(items.ItemData.GetByName<HullData>("Hull"));
|
||||
|
|
|
|||
|
|
@ -126,7 +126,7 @@ public sealed class FireControlCut6Tests : IDisposable
|
|||
ledger.Lots[3] = new Lot { Origin = new Attributed(), Quality = 1 };
|
||||
ledger.Lots[4] = new Lot { Origin = new Attributed(), Quality = 1 };
|
||||
ledger.Lots[5] = new Lot { Origin = new Attributed(), Quality = 1 };
|
||||
var items = new ItemManager(cache, ledger, settings, _ => { });
|
||||
var items = new ItemManager(1u, cache, ledger, settings, _ => { });
|
||||
var zone = new Zone(items, new PlanetSettings(), new ZonePack(), new GalaxyZone { Name = "Test", Owner = null }, null);
|
||||
|
||||
var hullRef = items.ItemData.RefOf<ItemData>(items.ItemData.GetByName<HullData>("Hull"));
|
||||
|
|
|
|||
|
|
@ -112,7 +112,7 @@ public sealed class FireControlCut6cTests : IDisposable
|
|||
ledger.Lots[3] = new Lot { Origin = new Attributed(), Quality = 1 };
|
||||
ledger.Lots[4] = new Lot { Origin = new Attributed(), Quality = 1 };
|
||||
for (var i = 5; i <= 12; i++) ledger.Lots[i] = new Lot { Origin = new Attributed(), Quality = 1 };
|
||||
var items = new ItemManager(cache, ledger, settings, _ => { });
|
||||
var items = new ItemManager(1u, cache, ledger, settings, _ => { });
|
||||
var zone = new Zone(items, new PlanetSettings(), new ZonePack(), new GalaxyZone { Name = "Test", Owner = null }, null);
|
||||
|
||||
var hullRef = items.ItemData.RefOf<ItemData>(items.ItemData.GetByName<HullData>("Hull"));
|
||||
|
|
@ -254,7 +254,7 @@ public sealed class FireControlCut6cTests : IDisposable
|
|||
var random = new Random(1u);
|
||||
var settings = TestSettings();
|
||||
var log = new List<string>();
|
||||
var items = new ItemManager(cache, new ProvenanceLedger(), settings, log.Add);
|
||||
var items = new ItemManager(1u, cache, new ProvenanceLedger(), settings, log.Add);
|
||||
var generator = new LoadoutGenerator(ref random, items, galaxy, null, makerFaction, .5f);
|
||||
|
||||
var pack = generator.GenerateShipLoadout(candidate => candidate.Name == "Armed");
|
||||
|
|
|
|||
|
|
@ -119,7 +119,7 @@ public sealed class FireControlCut6dTests : IDisposable
|
|||
|
||||
var ledger = new ProvenanceLedger();
|
||||
for (var i = 1; i <= 20; i++) ledger.Lots[i] = new Lot { Origin = new Attributed(), Quality = 1 };
|
||||
var items = new ItemManager(cache, ledger, settings, _ => { });
|
||||
var items = new ItemManager(1u, cache, ledger, settings, _ => { });
|
||||
var zone = new Zone(items, new PlanetSettings(), new ZonePack(), new GalaxyZone { Name = "Test", Owner = null }, null);
|
||||
|
||||
// Durability high enough to survive thousands of direct 10-damage hits over a test's whole sample --
|
||||
|
|
|
|||
|
|
@ -104,7 +104,7 @@ public sealed class FireControlCut7Tests : IDisposable
|
|||
|
||||
var ledger = new ProvenanceLedger();
|
||||
for (var i = 1; i <= 10; i++) ledger.Lots[i] = new Lot { Origin = new Attributed(), Quality = 1 };
|
||||
var items = new ItemManager(cache, ledger, settings, _ => { });
|
||||
var items = new ItemManager(1u, cache, ledger, settings, _ => { });
|
||||
var zone = new Zone(items, new PlanetSettings(), new ZonePack(), new GalaxyZone { Name = "Test", Owner = null }, null);
|
||||
|
||||
var hullRef = items.ItemData.RefOf<ItemData>(items.ItemData.GetByName<HullData>("Hull"));
|
||||
|
|
@ -214,7 +214,7 @@ public sealed class FireControlCut7Tests : IDisposable
|
|||
QualityPriceModifier = new ExponentialLerp()
|
||||
};
|
||||
var log = new List<string>();
|
||||
var items = new ItemManager(cache, new ProvenanceLedger(), settings, log.Add);
|
||||
var items = new ItemManager(1u, cache, new ProvenanceLedger(), settings, log.Add);
|
||||
var random = new Random(1u);
|
||||
var generator = new LoadoutGenerator(ref random, items, null, null, null, .5f);
|
||||
var pack = generator.GenerateShipLoadout(candidate => candidate == hull);
|
||||
|
|
|
|||
|
|
@ -112,7 +112,7 @@ public sealed class FireControlCut8Tests : IDisposable
|
|||
ledger.Lots[3] = new Lot { Origin = new Attributed(), Quality = 1 };
|
||||
ledger.Lots[4] = new Lot { Origin = new Attributed(), Quality = 1 };
|
||||
ledger.Lots[5] = new Lot { Origin = new Attributed(), Quality = 1 };
|
||||
var items = new ItemManager(cache, ledger, settings, _ => { });
|
||||
var items = new ItemManager(1u, cache, ledger, settings, _ => { });
|
||||
var zone = new Zone(items, new PlanetSettings(), new ZonePack(), new GalaxyZone { Name = "Test", Owner = null }, null);
|
||||
|
||||
var hullRef = items.ItemData.RefOf<ItemData>(items.ItemData.GetByName<HullData>("Hull"));
|
||||
|
|
@ -195,7 +195,7 @@ public sealed class FireControlCut8Tests : IDisposable
|
|||
ledger.Lots[2] = new Lot { Origin = new Attributed(), Quality = 1 };
|
||||
ledger.Lots[3] = new Lot { Origin = new Attributed(), Quality = 1 };
|
||||
ledger.Lots[4] = new Lot { Origin = new Attributed(), Quality = 1 };
|
||||
var items = new ItemManager(cache, ledger, settings, _ => { });
|
||||
var items = new ItemManager(1u, cache, ledger, settings, _ => { });
|
||||
var zone = new Zone(items, new PlanetSettings(), new ZonePack(), new GalaxyZone { Name = "Test", Owner = null }, null);
|
||||
|
||||
var hullRef = items.ItemData.RefOf<ItemData>(items.ItemData.GetByName<HullData>("Hull"));
|
||||
|
|
|
|||
|
|
@ -107,7 +107,7 @@ public sealed class FireControlCut9Tests : IDisposable
|
|||
ledger.Lots[2] = new Lot { Origin = new Attributed(), Quality = 1 };
|
||||
ledger.Lots[3] = new Lot { Origin = new Attributed(), Quality = 1 };
|
||||
ledger.Lots[4] = new Lot { Origin = new Attributed(), Quality = 1 };
|
||||
var items = new ItemManager(cache, ledger, settings, _ => { });
|
||||
var items = new ItemManager(1u, cache, ledger, settings, _ => { });
|
||||
var zone = new Zone(items, new PlanetSettings(), new ZonePack(), new GalaxyZone { Name = zoneName, Owner = null }, null);
|
||||
|
||||
var hullRef = items.ItemData.RefOf<ItemData>(items.ItemData.GetByName<HullData>("Hull"));
|
||||
|
|
@ -312,7 +312,7 @@ public sealed class FireControlCut9Tests : IDisposable
|
|||
|
||||
var ledger = new ProvenanceLedger();
|
||||
for (var i = 1; i <= 5; i++) ledger.Lots[i] = new Lot { Origin = new Attributed(), Quality = 1 };
|
||||
var items = new ItemManager(cache, ledger, settings, _ => { });
|
||||
var items = new ItemManager(1u, cache, ledger, settings, _ => { });
|
||||
var zone = new Zone(items, new PlanetSettings(), new ZonePack(), new GalaxyZone { Name = "Cut9-Kernel", Owner = null }, null);
|
||||
|
||||
var hullRef = items.ItemData.RefOf<ItemData>(items.ItemData.GetByName<HullData>("Hull"));
|
||||
|
|
@ -543,7 +543,7 @@ public sealed class FireControlCut9Tests : IDisposable
|
|||
ledger.Lots[2] = new Lot { Origin = new Attributed(), Quality = 1 };
|
||||
ledger.Lots[3] = new Lot { Origin = new Attributed(), Quality = 1 };
|
||||
ledger.Lots[4] = new Lot { Origin = new Attributed(), Quality = 1 };
|
||||
var items = new ItemManager(cache, ledger, settings, _ => { });
|
||||
var items = new ItemManager(1u, cache, ledger, settings, _ => { });
|
||||
var zone = new Zone(items, new PlanetSettings(), new ZonePack(), new GalaxyZone { Name = "Cut9-Lock", Owner = null }, null);
|
||||
|
||||
var hullRef = items.ItemData.RefOf<ItemData>(items.ItemData.GetByName<HullData>("Hull"));
|
||||
|
|
|
|||
|
|
@ -193,7 +193,7 @@ public sealed class FireControlPerWeaponTests : IDisposable
|
|||
|
||||
var ledger = new ProvenanceLedger();
|
||||
for (var i = 1; i <= 100; i++) ledger.Lots[i] = new Lot { Origin = new Attributed(), Quality = 1 };
|
||||
var items = new ItemManager(cache, ledger, TestSettings(minHit, targetLayerHeight), _ => { });
|
||||
var items = new ItemManager(1u, cache, ledger, TestSettings(minHit, targetLayerHeight), _ => { });
|
||||
var zone = new Zone(items, new PlanetSettings(), new ZonePack(), new GalaxyZone { Name = "PerWeapon", Owner = null }, null);
|
||||
|
||||
EquippableItem Make(string name, int lot, float durability) => new EquippableItem
|
||||
|
|
|
|||
|
|
@ -88,7 +88,7 @@ public sealed class FireControlTests : IDisposable
|
|||
ledger.Lots[1] = new Lot { Origin = new Attributed(), Quality = 1 }; // hull
|
||||
for (var i = 0; i < hardpoints.Length; i++)
|
||||
ledger.Lots[2 + i] = new Lot { Origin = new Attributed(), Quality = 1 }; // guns
|
||||
var items = new ItemManager(_openCache, ledger, TestSettings(shipLayerHeight), _ => { });
|
||||
var items = new ItemManager(1u, _openCache, ledger, TestSettings(shipLayerHeight), _ => { });
|
||||
var planets = new PlanetSettings();
|
||||
var pack = new ZonePack();
|
||||
if (well) WellFixture.Dig(_openCache, pack, planets, 300f, 100f);
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@ public sealed class FloatingBodyTests : IDisposable
|
|||
Tiers = new[] { new RarityTier { Name = "Common", Quality = .5f, Color = new float3(1, 1, 1) } },
|
||||
QualityPriceModifier = new ExponentialLerp()
|
||||
};
|
||||
var items = new ItemManager(cache, new ProvenanceLedger(), settings, _ => { });
|
||||
var items = new ItemManager(1u, cache, new ProvenanceLedger(), settings, _ => { });
|
||||
return new Zone(items, new PlanetSettings(), new ZonePack(), new GalaxyZone { Name = "Test Zone", Owner = null }, null);
|
||||
}
|
||||
|
||||
|
|
@ -206,7 +206,7 @@ public sealed class FloatingBodyTests : IDisposable
|
|||
Tiers = new[] { new RarityTier { Name = "Common", Quality = .5f, Color = new float3(1, 1, 1) } },
|
||||
QualityPriceModifier = new ExponentialLerp()
|
||||
};
|
||||
var items = new ItemManager(cache, new ProvenanceLedger(), settings, _ => { });
|
||||
var items = new ItemManager(1u, cache, new ProvenanceLedger(), settings, _ => { });
|
||||
var planets = new PlanetSettings { HeightExaggeration = 10f }; // the tilt reads force / K, which K = 1 would hide
|
||||
var pack = new ZonePack { Radius = 1000 };
|
||||
WellFixture.Dig(cache, pack, planets, 300, 100);
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@ public sealed class FlowFieldTests : IDisposable
|
|||
TargetDetectionInfoThreshold = .1f, TargetGearInfoThreshold = .8f,
|
||||
FiringArc = 170, CommitHorizon = .5f, SchematicCellSize = 2f
|
||||
};
|
||||
_items = new ItemManager(_cache, new ProvenanceLedger(), settings, _ => { });
|
||||
_items = new ItemManager(1u, _cache, new ProvenanceLedger(), settings, _ => { });
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ public sealed class GravitySubtractTests : IDisposable
|
|||
TargetDetectionInfoThreshold = .1f, TargetGearInfoThreshold = .8f,
|
||||
FiringArc = 170, CommitHorizon = .5f, SchematicCellSize = 2f
|
||||
};
|
||||
_items = new ItemManager(_cache, new ProvenanceLedger(), settings, _ => { });
|
||||
_items = new ItemManager(1u, _cache, new ProvenanceLedger(), settings, _ => { });
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
|
|
|
|||
|
|
@ -233,7 +233,7 @@ public sealed class HeatResponseTests : IDisposable
|
|||
public void HeldInsidePlateauTakesNoThermalWear()
|
||||
{
|
||||
using var cache = OpenCatalogWithThermalGear();
|
||||
var items = new ItemManager(cache, new ProvenanceLedger(), Settings(), _ => { });
|
||||
var items = new ItemManager(1u, cache, new ProvenanceLedger(), Settings(), _ => { });
|
||||
var equipped = BuildEquippedAt(cache, items, 50f, out var ship);
|
||||
Assert.Equal(1f, equipped.ThermalPerformance, 5);
|
||||
Assert.Equal(0f, equipped.Wear, 5); // no thermal term (Performance == 1) and no deltaTemp (settled)
|
||||
|
|
@ -243,7 +243,7 @@ public sealed class HeatResponseTests : IDisposable
|
|||
public void HeldOutsidePlateauTakesThermalWear()
|
||||
{
|
||||
using var cache = OpenCatalogWithThermalGear();
|
||||
var items = new ItemManager(cache, new ProvenanceLedger(), Settings(), _ => { });
|
||||
var items = new ItemManager(1u, cache, new ProvenanceLedger(), Settings(), _ => { });
|
||||
var equipped = BuildEquippedAt(cache, items, 10f, out var ship); // outside 40-60, inside 0-100
|
||||
Assert.True(equipped.ThermalPerformance < 1f);
|
||||
Assert.True(equipped.Wear > 0f);
|
||||
|
|
@ -255,7 +255,7 @@ public sealed class HeatResponseTests : IDisposable
|
|||
public void HeldOutsidePlateauWearReadsEffectiveQuality()
|
||||
{
|
||||
using var cache = OpenCatalogWithThermalGear();
|
||||
var items = new ItemManager(cache, new ProvenanceLedger(), Settings(), _ => { });
|
||||
var items = new ItemManager(1u, cache, new ProvenanceLedger(), Settings(), _ => { });
|
||||
var thermal = cache.RefOf<ItemData>(cache.GetByName<GearData>("Thermal"));
|
||||
Lot Gear(float assembly, params float[] parts) => new Lot
|
||||
{
|
||||
|
|
@ -274,7 +274,7 @@ public sealed class HeatResponseTests : IDisposable
|
|||
public void AFastSwingAcrossThePlateauStillWears()
|
||||
{
|
||||
using var cache = OpenCatalogWithThermalGear();
|
||||
var items = new ItemManager(cache, new ProvenanceLedger(), Settings(), _ => { });
|
||||
var items = new ItemManager(1u, cache, new ProvenanceLedger(), Settings(), _ => { });
|
||||
var equipped = BuildEquippedAt(cache, items, 10f, out var ship);
|
||||
// Jump straight into the plateau in one tick: ThermalPerformance ends at 1 (no thermal term), but the
|
||||
// swing itself (deltaTemp) still costs.
|
||||
|
|
|
|||
|
|
@ -55,7 +55,7 @@ public sealed class IffAndCombatTests : IDisposable
|
|||
var ledger = new ProvenanceLedger();
|
||||
ledger.Lots[1] = new Lot { Origin = new Attributed(), Quality = 1 }; // hull
|
||||
ledger.Lots[2] = new Lot { Origin = new Attributed(), Quality = 1 }; // gun
|
||||
var items = new ItemManager(_openCache, ledger, TestSettings(), _ => { });
|
||||
var items = new ItemManager(1u, _openCache, ledger, TestSettings(), _ => { });
|
||||
var zone = new Zone(items, new PlanetSettings(), new ZonePack(), new GalaxyZone { Name = "Test Zone", Owner = null }, null);
|
||||
return (items, zone);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -87,7 +87,7 @@ public sealed class InputCapacitorTests : IDisposable
|
|||
private (Ship ship, ItemManager items, Reactor reactor) BuildShip(CultCache cache, float reactorCharge)
|
||||
{
|
||||
var ledger = new ProvenanceLedger();
|
||||
var items = new ItemManager(cache, ledger, Settings(), _ => { });
|
||||
var items = new ItemManager(1u, cache, ledger, Settings(), _ => { });
|
||||
var zone = new Zone(items, new PlanetSettings(), new ZonePack(), new GalaxyZone { Name = "Test Zone", Owner = null }, null);
|
||||
var hull = Mint(cache, items, cache.GetByName<HullData>("Skiff"));
|
||||
var ship = new Ship(items, zone, hull, new EntitySettings());
|
||||
|
|
|
|||
|
|
@ -105,7 +105,7 @@ public sealed class InspectionScannerCatalogTests
|
|||
Origin = new Attributed(), Quality = 1f,
|
||||
Roles = product.Roles.Select(r => new RoleFill { Role = r.Role, Quality = r.Mean }).ToList(),
|
||||
};
|
||||
var items = new ItemManager(Cache, ledger, settings, _ => { });
|
||||
var items = new ItemManager(1u, Cache, ledger, settings, _ => { });
|
||||
var zone = new Zone(items, new PlanetSettings(), new ZonePack(), new GalaxyZone { Name = "Test", Owner = null }, null);
|
||||
var ship = new Ship(items, zone, new EquippableItem { Data = Cache.RefOf<ItemData>(hull), Durability = hull.Durability, Lot = 1 }, settings.DefaultEntitySettings);
|
||||
Assert.True(ship.TryEquip(new EquippableItem { Data = Cache.RefOf<ItemData>(design), Durability = design.Durability, Lot = 2 }));
|
||||
|
|
|
|||
|
|
@ -42,7 +42,7 @@ public sealed class ItemTitleTests : IDisposable
|
|||
_cache.Commit(batch => batch.Upsert(typeof(FactionProductData), _clapBack, new CultRecordKey("array-lucent")));
|
||||
_spiceBlend = new FactionProductData { Name = "Finch Reserve", Design = _cache.RefOf<CraftedItemData>(_spice), Manufacturer = finch };
|
||||
_cache.Commit(batch => batch.Upsert(typeof(FactionProductData), _spiceBlend, new CultRecordKey("spice-finch")));
|
||||
_items = new ItemManager(_cache, new ProvenanceLedger(), RunSaveTests.TestSettings(), _ => { });
|
||||
_items = new ItemManager(1u, _cache, new ProvenanceLedger(), RunSaveTests.TestSettings(), _ => { });
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
|
|
|
|||
|
|
@ -116,7 +116,7 @@ public sealed class LaunchSuppressorCatalogTests
|
|||
Origin = new Attributed(), Quality = 1f,
|
||||
Roles = new List<RoleFill> { new RoleFill { Role = "baffles", Quality = baffles }, new RoleFill { Role = "heat sink", Quality = sink } },
|
||||
};
|
||||
var items = new ItemManager(Cache, ledger, settings, _ => { });
|
||||
var items = new ItemManager(1u, Cache, ledger, settings, _ => { });
|
||||
var zone = new Zone(items, new PlanetSettings(), new ZonePack(), new GalaxyZone { Name = "Test", Owner = null }, null);
|
||||
Ship = new Ship(items, zone, new EquippableItem { Data = Cache.RefOf<ItemData>(hull), Durability = hull.Durability, Lot = 1 }, settings.DefaultEntitySettings);
|
||||
|
||||
|
|
|
|||
|
|
@ -58,7 +58,7 @@ public sealed class LayerTests : IDisposable
|
|||
_cache.FlushAsync().Wait();
|
||||
var ledger = new ProvenanceLedger();
|
||||
for (var i = 1; i <= 3; i++) ledger.Lots[i] = new Lot { Origin = new Attributed(), Quality = 1 };
|
||||
var items = new ItemManager(_cache, ledger, Settings(), _ => { });
|
||||
var items = new ItemManager(1u, _cache, ledger, Settings(), _ => { });
|
||||
var zone = new Zone(items, new PlanetSettings(), new ZonePack { Radius = 0 }, new GalaxyZone { Name = "Layers", Owner = null }, null);
|
||||
return (items, zone);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -90,7 +90,7 @@ public sealed class LoadoutTests : IDisposable
|
|||
Loadout hand;
|
||||
using (var cache = Open())
|
||||
{
|
||||
var items = new ItemManager(cache, new ProvenanceLedger(), RunSaveTests.TestSettings(), _ => { });
|
||||
var items = new ItemManager(1u, cache, new ProvenanceLedger(), RunSaveTests.TestSettings(), _ => { });
|
||||
hand = Armed(cache);
|
||||
var failures = new List<string>();
|
||||
var ship = Build(items, hand, failures);
|
||||
|
|
@ -108,7 +108,7 @@ public sealed class LoadoutTests : IDisposable
|
|||
Assert.Equal(hand.Slots.Select(Describe), loaded.Slots.Select(Describe));
|
||||
Assert.Equal(hand.WeaponGroups, loaded.WeaponGroups);
|
||||
|
||||
var items = new ItemManager(cache, new ProvenanceLedger(), RunSaveTests.TestSettings(), _ => { });
|
||||
var items = new ItemManager(1u, cache, new ProvenanceLedger(), RunSaveTests.TestSettings(), _ => { });
|
||||
var failures = new List<string>();
|
||||
var ship = Build(items, loaded, failures);
|
||||
Assert.Empty(failures);
|
||||
|
|
@ -279,7 +279,7 @@ public sealed class LoadoutTests : IDisposable
|
|||
|
||||
using (var cache = Open())
|
||||
{
|
||||
var items = new ItemManager(cache, new ProvenanceLedger(), RunSaveTests.TestSettings(), _ => { });
|
||||
var items = new ItemManager(1u, cache, new ProvenanceLedger(), RunSaveTests.TestSettings(), _ => { });
|
||||
var missing = HandBuilt(cache);
|
||||
missing.Slots[1].Design = new CultRecordRef<EquippableItemData>(new CultRecordKey("absent-design"));
|
||||
var failures = new List<string>();
|
||||
|
|
@ -304,7 +304,7 @@ public sealed class LoadoutTests : IDisposable
|
|||
public void FailedFitBuildsNothing()
|
||||
{
|
||||
using var cache = Open();
|
||||
var items = new ItemManager(cache, new ProvenanceLedger(), RunSaveTests.TestSettings(), _ => { });
|
||||
var items = new ItemManager(1u, cache, new ProvenanceLedger(), RunSaveTests.TestSettings(), _ => { });
|
||||
var clash = HandBuilt(cache);
|
||||
clash.Slots[1].Position = HardpointCell;
|
||||
var failures = new List<string>();
|
||||
|
|
@ -319,7 +319,7 @@ public sealed class LoadoutTests : IDisposable
|
|||
public void ADesignWithNoProductBuildsUnbranded()
|
||||
{
|
||||
using var cache = Open();
|
||||
var items = new ItemManager(cache, new ProvenanceLedger(), RunSaveTests.TestSettings(), _ => { });
|
||||
var items = new ItemManager(1u, cache, new ProvenanceLedger(), RunSaveTests.TestSettings(), _ => { });
|
||||
var failures = new List<string>();
|
||||
var ship = Build(items, WithDesign(HandBuilt(cache), 0, cache, "Orphan"), failures);
|
||||
Assert.Empty(failures);
|
||||
|
|
@ -335,7 +335,7 @@ public sealed class LoadoutTests : IDisposable
|
|||
public void ADesignWhoseOnlyProductIsUnavailableStillFails()
|
||||
{
|
||||
using var cache = Open();
|
||||
var items = new ItemManager(cache, new ProvenanceLedger(), RunSaveTests.TestSettings(), _ => { });
|
||||
var items = new ItemManager(1u, cache, new ProvenanceLedger(), RunSaveTests.TestSettings(), _ => { });
|
||||
var failures = new List<string>();
|
||||
var soleProduct = SoleProduct(cache);
|
||||
Assert.Null(Loadouts.Materialize(items, null, HandBuilt(cache), design => design.Name == "Lamp" ? null : soleProduct(design), failures));
|
||||
|
|
@ -365,7 +365,7 @@ public sealed class LoadoutTests : IDisposable
|
|||
var gun = cache.GetAll<FactionProductData>().Single(p => p.Name == "Gun by Maker");
|
||||
var bay = cache.GetAll<FactionProductData>().Single(p => p.Name == "Bay by Maker");
|
||||
|
||||
var items = new ItemManager(cache, new ProvenanceLedger(), RunSaveTests.TestSettings(), _ => { });
|
||||
var items = new ItemManager(1u, cache, new ProvenanceLedger(), RunSaveTests.TestSettings(), _ => { });
|
||||
|
||||
EquippableItem Mint(FactionProductData product) => (EquippableItem) items.CreateInstance(product);
|
||||
|
||||
|
|
@ -477,7 +477,7 @@ public sealed class LoadoutTests : IDisposable
|
|||
cache.FlushAsync().Wait();
|
||||
|
||||
var random = new Random(1);
|
||||
var items = new ItemManager(cache, new ProvenanceLedger(), RunSaveTests.TestSettings(), _ => { });
|
||||
var items = new ItemManager(1u, cache, new ProvenanceLedger(), RunSaveTests.TestSettings(), _ => { });
|
||||
var generator = new LoadoutGenerator(ref random, items, null, null, null, .5f);
|
||||
var pack = generator.GenerateShipLoadout(candidate => candidate.Name == "Twin");
|
||||
Assert.NotNull(pack);
|
||||
|
|
@ -504,7 +504,7 @@ public sealed class LoadoutTests : IDisposable
|
|||
new RarityTier { Name = "Common", Quality = .2f, Color = new float3(1, 1, 1) },
|
||||
new RarityTier { Name = "Rare", Quality = .5f, Color = new float3(1, 1, 1) }
|
||||
};
|
||||
var items = new ItemManager(cache, new ProvenanceLedger(), settings, _ => { });
|
||||
var items = new ItemManager(1u, cache, new ProvenanceLedger(), settings, _ => { });
|
||||
var lamp = cache.GetByName<GearData>("Lamp");
|
||||
var commonLot = items.Lots.Add(new Lot
|
||||
{
|
||||
|
|
@ -561,7 +561,7 @@ public sealed class LoadoutTests : IDisposable
|
|||
using var cache = Open();
|
||||
var settings = AuthoredSettings.Load(RunStartTests.FindRepoRoot()).Read<GameplaySettings>("GameplaySettings");
|
||||
var tiers = settings.Tiers;
|
||||
var items = new ItemManager(cache, new ProvenanceLedger(), settings, _ => { });
|
||||
var items = new ItemManager(1u, cache, new ProvenanceLedger(), settings, _ => { });
|
||||
var lamp = cache.GetByName<GearData>("Lamp");
|
||||
var assembly = tiers[3].Quality;
|
||||
var sleeperLot = items.Lots.Add(new Lot
|
||||
|
|
@ -598,7 +598,7 @@ public sealed class LoadoutTests : IDisposable
|
|||
var settings = AuthoredSettings.Load(RunStartTests.FindRepoRoot()).Read<GameplaySettings>("GameplaySettings");
|
||||
var tiers = settings.Tiers;
|
||||
Assert.True(tiers.Length > index, "premise: the shipped asset carries this tier");
|
||||
var items = new ItemManager(cache, new ProvenanceLedger(), settings, _ => { });
|
||||
var items = new ItemManager(1u, cache, new ProvenanceLedger(), settings, _ => { });
|
||||
var lamp = cache.GetByName<GearData>("Lamp");
|
||||
string TierAt(float quality) => items.GetTier((CraftedItemInstance) items.CreateInstance(items.Lots.Add(
|
||||
new Lot { Design = cache.RefOf<ItemData>(lamp), Origin = new Attributed(), Quality = quality, Roles = new List<RoleFill>() }))).tier.Name;
|
||||
|
|
@ -614,7 +614,7 @@ public sealed class LoadoutTests : IDisposable
|
|||
{
|
||||
using var cache = Open();
|
||||
var settings = AuthoredSettings.Load(RunStartTests.FindRepoRoot()).Read<GameplaySettings>("GameplaySettings");
|
||||
var items = new ItemManager(cache, new ProvenanceLedger(), settings, _ => { });
|
||||
var items = new ItemManager(1u, cache, new ProvenanceLedger(), settings, _ => { });
|
||||
var lamp = cache.GetByName<GearData>("Lamp");
|
||||
// Two steps and a hair above the lowest threshold: the step width decides whether that counts as two or one.
|
||||
var quality = settings.Tiers[0].Quality + 2 * .0499f + .0001f;
|
||||
|
|
@ -640,7 +640,7 @@ public sealed class LoadoutTests : IDisposable
|
|||
public void QualityTermAppliesItsOwnExponent()
|
||||
{
|
||||
using var cache = Open();
|
||||
var items = new ItemManager(cache, new ProvenanceLedger(), RunSaveTests.TestSettings(), _ => { });
|
||||
var items = new ItemManager(1u, cache, new ProvenanceLedger(), RunSaveTests.TestSettings(), _ => { });
|
||||
var lamp = cache.GetByName<GearData>("Lamp");
|
||||
var lotId = items.Lots.Add(new Lot { Design = cache.RefOf<ItemData>(lamp), Origin = new Attributed(), Quality = .5f, Roles = new List<RoleFill>() });
|
||||
var instance = (EquippableItem) items.CreateInstance(lotId);
|
||||
|
|
@ -658,7 +658,7 @@ public sealed class LoadoutTests : IDisposable
|
|||
using var cache = Open();
|
||||
var settings = RunSaveTests.TestSettings();
|
||||
settings.QualityPriceModifier = new ExponentialLerp { Minimum = 0, Maximum = 1, Exponent = 1 };
|
||||
var items = new ItemManager(cache, new ProvenanceLedger(), settings, _ => { });
|
||||
var items = new ItemManager(1u, cache, new ProvenanceLedger(), settings, _ => { });
|
||||
var lamp = cache.GetByName<GearData>("Lamp");
|
||||
var lowLot = items.Lots.Add(new Lot { Design = cache.RefOf<ItemData>(lamp), Origin = new Attributed(), Quality = .2f, Roles = new List<RoleFill>() });
|
||||
var highLot = items.Lots.Add(new Lot { Design = cache.RefOf<ItemData>(lamp), Origin = new Attributed(), Quality = .8f, Roles = new List<RoleFill>() });
|
||||
|
|
@ -695,7 +695,7 @@ public sealed class LoadoutTests : IDisposable
|
|||
var durable = cache.Upsert(new GearData { Name = "Durable", Hardpoint = HardpointType.Sensors, Shape = new Shape(), Price = 10, Durability = 100 });
|
||||
cache.FlushAsync().Wait();
|
||||
|
||||
var items = new ItemManager(cache, new ProvenanceLedger(), RunSaveTests.TestSettings(), _ => { });
|
||||
var items = new ItemManager(1u, cache, new ProvenanceLedger(), RunSaveTests.TestSettings(), _ => { });
|
||||
var lowLot = items.Lots.Add(new Lot { Design = new CultRecordRef<ItemData>(durable.Key), Origin = new Attributed(), Quality = .1f, Roles = new List<RoleFill>() });
|
||||
var highLot = items.Lots.Add(new Lot { Design = new CultRecordRef<ItemData>(durable.Key), Origin = new Attributed(), Quality = .9f, Roles = new List<RoleFill>() });
|
||||
var sleeperLot = items.Lots.Add(new Lot
|
||||
|
|
@ -723,7 +723,7 @@ public sealed class LoadoutTests : IDisposable
|
|||
public void EquippedItemExponentsReadEffectiveQuality()
|
||||
{
|
||||
using var cache = Open();
|
||||
var items = new ItemManager(cache, new ProvenanceLedger(), RunSaveTests.TestSettings(), _ => { });
|
||||
var items = new ItemManager(1u, cache, new ProvenanceLedger(), RunSaveTests.TestSettings(), _ => { });
|
||||
var maker = cache.RefOf(cache.GetByName<Faction>("Maker"));
|
||||
var hullData = cache.GetByName<HullData>("Skiff");
|
||||
var lampData = cache.GetByName<GearData>("Lamp");
|
||||
|
|
@ -785,7 +785,7 @@ public sealed class LoadoutTests : IDisposable
|
|||
cache.FlushAsync().Wait();
|
||||
var thermalData = cache.Get(thermalGear);
|
||||
|
||||
var items = new ItemManager(cache, new ProvenanceLedger(), RunSaveTests.TestSettings(), _ => { });
|
||||
var items = new ItemManager(1u, cache, new ProvenanceLedger(), RunSaveTests.TestSettings(), _ => { });
|
||||
var hullItem = (EquippableItem) items.CreateInstance(items.CreateLot(hullData, maker, .5f));
|
||||
var ship = new Ship(items, null, hullItem, new EntitySettings());
|
||||
var gearItem = (EquippableItem) items.CreateInstance(items.CreateLot(thermalData, maker, .5f));
|
||||
|
|
@ -831,7 +831,7 @@ public sealed class LoadoutTests : IDisposable
|
|||
cache.FlushAsync().Wait();
|
||||
var thermalData = cache.Get(thermalGear);
|
||||
|
||||
var items = new ItemManager(cache, new ProvenanceLedger(), RunSaveTests.TestSettings(), _ => { });
|
||||
var items = new ItemManager(1u, cache, new ProvenanceLedger(), RunSaveTests.TestSettings(), _ => { });
|
||||
var hullItem = (EquippableItem) items.CreateInstance(items.CreateLot(hullData, maker, .5f));
|
||||
var ship = new Ship(items, null, hullItem, new EntitySettings());
|
||||
var gearItem = (EquippableItem) items.CreateInstance(items.CreateLot(thermalData, maker, .5f));
|
||||
|
|
@ -867,7 +867,7 @@ public sealed class LoadoutTests : IDisposable
|
|||
cache.FlushAsync().Wait();
|
||||
var consumableData = cache.Get(consumableRef);
|
||||
|
||||
var items = new ItemManager(cache, new ProvenanceLedger(), RunSaveTests.TestSettings(), _ => { });
|
||||
var items = new ItemManager(1u, cache, new ProvenanceLedger(), RunSaveTests.TestSettings(), _ => { });
|
||||
var hullItem = (EquippableItem) items.CreateInstance(items.CreateLot(hullData, maker, .5f));
|
||||
var ship = new Ship(items, null, hullItem, new EntitySettings());
|
||||
var consumableItem = (ConsumableItem) items.CreateInstance(items.CreateLot(consumableData, maker, .5f));
|
||||
|
|
@ -902,7 +902,7 @@ public sealed class LoadoutTests : IDisposable
|
|||
cache.FlushAsync().Wait();
|
||||
|
||||
var product = cache.GetAll<FactionProductData>().Single(p => p.Name == "Lensed by Maker");
|
||||
var items = new ItemManager(cache, new ProvenanceLedger(), RunSaveTests.TestSettings(), _ => { });
|
||||
var items = new ItemManager(1u, cache, new ProvenanceLedger(), RunSaveTests.TestSettings(), _ => { });
|
||||
var lotId = items.CreateLot(product);
|
||||
var roleFill = items.Lots[lotId].Roles.Single(r => r.Role == "lens");
|
||||
Assert.Equal(.9f, roleFill.Quality, 3);
|
||||
|
|
@ -914,7 +914,7 @@ public sealed class LoadoutTests : IDisposable
|
|||
{
|
||||
using var cache = Open();
|
||||
var maker = cache.RefOf(cache.GetByName<Faction>("Maker"));
|
||||
var items = new ItemManager(cache, new ProvenanceLedger(), RunSaveTests.TestSettings(), _ => { });
|
||||
var items = new ItemManager(1u, cache, new ProvenanceLedger(), RunSaveTests.TestSettings(), _ => { });
|
||||
var lamp = cache.GetByName<GearData>("Lamp");
|
||||
var lotId = items.Lots.Add(new Lot
|
||||
{
|
||||
|
|
@ -932,7 +932,7 @@ public sealed class LoadoutTests : IDisposable
|
|||
public void OutOfRangeWeaponGroupIndexBuildsNothing()
|
||||
{
|
||||
using var cache = Open();
|
||||
var items = new ItemManager(cache, new ProvenanceLedger(), RunSaveTests.TestSettings(), _ => { });
|
||||
var items = new ItemManager(1u, cache, new ProvenanceLedger(), RunSaveTests.TestSettings(), _ => { });
|
||||
var stale = Armed(cache);
|
||||
stale.WeaponGroups = new[] { new[] { 0, 2 }, new[] { -1 } };
|
||||
var failures = new List<string>();
|
||||
|
|
@ -944,7 +944,7 @@ public sealed class LoadoutTests : IDisposable
|
|||
public void UnequippingAGroupedWeaponRemovesItFromItsGroups()
|
||||
{
|
||||
using var cache = Open();
|
||||
var items = new ItemManager(cache, new ProvenanceLedger(), RunSaveTests.TestSettings(), _ => { });
|
||||
var items = new ItemManager(1u, cache, new ProvenanceLedger(), RunSaveTests.TestSettings(), _ => { });
|
||||
var ship = Build(items, Armed(cache), new List<string>());
|
||||
var item = Assert.Single(ship.WeaponGroups[0].items);
|
||||
Assert.NotNull(item.GetBehavior<Weapon>());
|
||||
|
|
@ -959,7 +959,7 @@ public sealed class LoadoutTests : IDisposable
|
|||
public void NonWeaponGroupIndexBuildsNothing()
|
||||
{
|
||||
using var cache = Open();
|
||||
var items = new ItemManager(cache, new ProvenanceLedger(), RunSaveTests.TestSettings(), _ => { });
|
||||
var items = new ItemManager(1u, cache, new ProvenanceLedger(), RunSaveTests.TestSettings(), _ => { });
|
||||
var lampGrouped = WithDesign(Armed(cache), 0, cache, "Lamp");
|
||||
var failures = new List<string>();
|
||||
Assert.Null(Build(items, lampGrouped, failures));
|
||||
|
|
@ -970,7 +970,7 @@ public sealed class LoadoutTests : IDisposable
|
|||
public void MoreWeaponGroupsThanTheGameHasBuildsNothing()
|
||||
{
|
||||
using var cache = Open();
|
||||
var items = new ItemManager(cache, new ProvenanceLedger(), RunSaveTests.TestSettings(), _ => { });
|
||||
var items = new ItemManager(1u, cache, new ProvenanceLedger(), RunSaveTests.TestSettings(), _ => { });
|
||||
var wide = Armed(cache);
|
||||
wide.WeaponGroups = wide.WeaponGroups.Append(new[] { 0 }).ToArray();
|
||||
var failures = new List<string>();
|
||||
|
|
@ -984,7 +984,7 @@ public sealed class LoadoutTests : IDisposable
|
|||
public void FewerWeaponGroupsArePaddedToTheGameCount()
|
||||
{
|
||||
using var cache = Open();
|
||||
var items = new ItemManager(cache, new ProvenanceLedger(), RunSaveTests.TestSettings(), _ => { });
|
||||
var items = new ItemManager(1u, cache, new ProvenanceLedger(), RunSaveTests.TestSettings(), _ => { });
|
||||
var armed = Armed(cache);
|
||||
armed.WeaponGroups = new[] { new[] { 0 } };
|
||||
foreach (var groups in new[] { armed.WeaponGroups, null })
|
||||
|
|
@ -1008,7 +1008,7 @@ public sealed class LoadoutTests : IDisposable
|
|||
public void EntitiesDoNotShareDefaultEntitySettings()
|
||||
{
|
||||
using var cache = Open();
|
||||
var items = new ItemManager(cache, new ProvenanceLedger(), RunSaveTests.TestSettings(), _ => { });
|
||||
var items = new ItemManager(1u, cache, new ProvenanceLedger(), RunSaveTests.TestSettings(), _ => { });
|
||||
var maker = cache.RefOf(cache.GetByName<Faction>("Maker"));
|
||||
var hullData = cache.GetByName<HullData>("Skiff");
|
||||
var template = items.GameplaySettings.DefaultEntitySettings;
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@ public sealed class LockWarningTests : IDisposable
|
|||
_openCache = AetheriaStores.Open(Catalog, catalogWritable: true);
|
||||
var ledger = new ProvenanceLedger();
|
||||
for (var lot = 1; lot < 12; lot++) ledger.Lots[lot] = new Lot { Origin = new Attributed(), Quality = 1 };
|
||||
_items = new ItemManager(_openCache, ledger, new GameplaySettings
|
||||
_items = new ItemManager(1u, _openCache, ledger, new GameplaySettings
|
||||
{
|
||||
DefaultEntitySettings = new EntitySettings(),
|
||||
Tiers = new[] { new RarityTier { Name = "Common", Quality = .5f, Color = new float3(1, 1, 1) } },
|
||||
|
|
|
|||
|
|
@ -108,7 +108,7 @@ public sealed class LootTests : IDisposable
|
|||
|
||||
var ledger = new ProvenanceLedger();
|
||||
for (var i = 1; i <= 9000; i++) ledger.Lots[i] = new Lot { Origin = new Attributed(), Quality = 1 };
|
||||
var items = new ItemManager(cache, ledger, settings, _ => { });
|
||||
var items = new ItemManager(1u, cache, ledger, settings, _ => { });
|
||||
var planets = new PlanetSettings();
|
||||
var pack = new ZonePack { Radius = well ? 1000 : 0 };
|
||||
if (well) WellFixture.Dig(cache, pack, planets, 300, 100);
|
||||
|
|
|
|||
|
|
@ -118,7 +118,7 @@ public sealed class MineTests : IDisposable
|
|||
|
||||
var ledger = new ProvenanceLedger();
|
||||
for (var i = 1; i <= 500; i++) ledger.Lots[i] = new Lot { Origin = new Attributed(), Quality = 1 };
|
||||
var items = new ItemManager(cache, ledger, settings, _ => { });
|
||||
var items = new ItemManager(1u, cache, ledger, settings, _ => { });
|
||||
var planets = new PlanetSettings();
|
||||
var pack = new ZonePack { Radius = well ? 1000 : 0 };
|
||||
if (well) WellFixture.Dig(cache, pack, planets, 300, 100);
|
||||
|
|
|
|||
|
|
@ -66,7 +66,7 @@ public sealed class MiningCut1Tests : IDisposable
|
|||
// OrbitData and BodyData (AsteroidBeltData) are run types (AetheriaStores.RunTypes), not catalog types:
|
||||
// they need a run store to write into.
|
||||
var cache = AetheriaStores.Open(catalog, run, catalogWritable: true);
|
||||
var items = new ItemManager(cache, new ProvenanceLedger(), GameSettings(), _ => { });
|
||||
var items = new ItemManager(1u, cache, new ProvenanceLedger(), GameSettings(), _ => { });
|
||||
var settings = Settings();
|
||||
|
||||
var sunOrbitKey = cache.Upsert(new OrbitData()).Key;
|
||||
|
|
|
|||
|
|
@ -69,7 +69,7 @@ public sealed class MiningCut2Tests : IDisposable
|
|||
var dir = Path.Combine(_root, $"cat{_fixtureCount++}");
|
||||
Directory.CreateDirectory(dir);
|
||||
var cache = AetheriaStores.Open(Path.Combine(dir, "Aetheria.cc"), Path.Combine(dir, "run.cc"), catalogWritable: true);
|
||||
var items = new ItemManager(cache, new ProvenanceLedger(), GameSettings(), _ => { });
|
||||
var items = new ItemManager(1u, cache, new ProvenanceLedger(), GameSettings(), _ => { });
|
||||
var settings = Settings();
|
||||
|
||||
var rootOrbit = new OrbitData { Distance = 3000f, Phase = 0.05f };
|
||||
|
|
|
|||
|
|
@ -131,7 +131,7 @@ public sealed partial class MiningCut3Tests : IDisposable
|
|||
});
|
||||
cache.Upsert(dimEye);
|
||||
foreach (var kind in kinds ?? new FieldKindData[0]) cache.Upsert(kind);
|
||||
var items = new ItemManager(cache, new ProvenanceLedger(), GameSettings(), _ => { });
|
||||
var items = new ItemManager(1u, cache, new ProvenanceLedger(), GameSettings(), _ => { });
|
||||
|
||||
var sunOrbit = cache.Upsert(new OrbitData { FixedPosition = sunAt }).Key;
|
||||
var sun = cache.Upsert(new SunData { Orbit = new CultRecordRef<OrbitData>(sunOrbit), Mass = 1f }).Key;
|
||||
|
|
@ -679,7 +679,7 @@ public sealed partial class MiningCut3Tests : IDisposable
|
|||
// Kept: a new, overwhelmingly weighted kind now wins the pick for this belt, yet loading it again leaves it.
|
||||
reopened.Upsert(Kind("Overwhelming", 9f, 1e6f));
|
||||
Assert.False(FieldKinds.Assign(beltKey, reopened).Key.Equals(assigned));
|
||||
var items = new ItemManager(reopened, new ProvenanceLedger(), GameSettings(), _ => { });
|
||||
var items = new ItemManager(1u, reopened, new ProvenanceLedger(), GameSettings(), _ => { });
|
||||
var reloaded = new Zone(items, PlanetSettings(), s.Pack, new GalaxyZone { Name = "MiningCut3Reload", Owner = null }, null);
|
||||
Assert.True(((AsteroidBeltData) reloaded.Planets[beltKey]).Kind.Key.Equals(assigned));
|
||||
}
|
||||
|
|
@ -817,7 +817,7 @@ public sealed partial class MiningCut3Tests : IDisposable
|
|||
cache, new PlayerSettings(), new DirectoryInfo(dir), _ => { }, null, seed);
|
||||
}
|
||||
catch (Exception) { continue; } // Galaxy's own seed-dependent flakiness (RestoredHullsTests)
|
||||
var items = new ItemManager(cache, new ProvenanceLedger(), GameSettings(), _ => { });
|
||||
var items = new ItemManager(1u, cache, new ProvenanceLedger(), GameSettings(), _ => { });
|
||||
foreach (var zone in galaxy.Zones.Take(4))
|
||||
{
|
||||
var pack = ZoneGenerator.GenerateZone(items, RestoredHullsTests.TutorialZoneSettings(), RestoredHullsTests.AuthoredPlanetSettings(), galaxy, zone, isTutorial: zone == galaxy.Entrance);
|
||||
|
|
@ -924,7 +924,7 @@ public sealed partial class MiningCut3Tests : IDisposable
|
|||
_caches.Add(clean);
|
||||
Assert.False(clean.IsDirty);
|
||||
Assert.False(((AsteroidBeltData) clean.Get(beltKey)).Kind.IsSet());
|
||||
var zone = new Zone(new ItemManager(clean, new ProvenanceLedger(), GameSettings(), _ => { }), PlanetSettings(), s.Pack,
|
||||
var zone = new Zone(new ItemManager(1u, clean, new ProvenanceLedger(), GameSettings(), _ => { }), PlanetSettings(), s.Pack,
|
||||
new GalaxyZone { Name = "Clean", Owner = null }, null);
|
||||
var assigned = ((AsteroidBeltData) zone.Planets[beltKey]).Kind;
|
||||
Assert.True(assigned.IsSet());
|
||||
|
|
@ -1026,7 +1026,7 @@ public sealed partial class MiningCut3Tests : IDisposable
|
|||
PingEnergy = Constant(0f), PingRange = Constant(300f), PingCooldown = Constant(4f)
|
||||
});
|
||||
cache.Upsert(eye);
|
||||
var items = new ItemManager(cache, new ProvenanceLedger(), GameSettings(), _ => { });
|
||||
var items = new ItemManager(1u, cache, new ProvenanceLedger(), GameSettings(), _ => { });
|
||||
var s = new Scene
|
||||
{
|
||||
Cache = cache, Items = items, Hull = hull, Eye = eye,
|
||||
|
|
|
|||
|
|
@ -257,7 +257,7 @@ public sealed class MunitionPartsTests : IDisposable
|
|||
var ledger = new ProvenanceLedger();
|
||||
ledger.Lots[1] = new Lot { Origin = new Attributed(), Quality = .5f };
|
||||
ledger.Lots[2] = new Lot { Origin = new Attributed(), Quality = .5f, Roles = new List<RoleFill> { new RoleFill { Role = "thruster", Quality = thrusterQuality } } };
|
||||
var items = new ItemManager(cache, ledger, settings, _ => { });
|
||||
var items = new ItemManager(1u, cache, ledger, settings, _ => { });
|
||||
var zone = new Zone(items, new PlanetSettings(), new ZonePack(), new GalaxyZone { Name = "Test", Owner = null }, null);
|
||||
ship = new Ship(items, zone, new EquippableItem { Data = cache.RefOf<ItemData>(hull), Durability = hull.Durability, Lot = 1 }, settings.DefaultEntitySettings);
|
||||
foreach (var (name, x, y) in ShipGear)
|
||||
|
|
|
|||
|
|
@ -255,7 +255,7 @@ public sealed class OrbitsFromFieldTests : IDisposable
|
|||
var galaxy = new Galaxy(tutorial, authored.Read<SectorBackgroundSettings>("TutorialBackgroundSettings"),
|
||||
cache, new PlayerSettings(),
|
||||
Directory.CreateDirectory(Path.Combine(dir, "Narrative")), _ => { }, null, seed);
|
||||
var items = new ItemManager(cache, new ProvenanceLedger(), authored.Read<GameplaySettings>("GameplaySettings"), _ => { });
|
||||
var items = new ItemManager(1u, cache, new ProvenanceLedger(), authored.Read<GameplaySettings>("GameplaySettings"), _ => { });
|
||||
var pack = ZoneGenerator.GenerateZone(items, authored.Read<ZoneGenerationSettings>("ZoneSettings"), authored.Read<PlanetSettings>("PlanetSettings"), galaxy, galaxy.Entrance,
|
||||
galaxy.IsPrelude, false);
|
||||
var zone = new Zone(items, authored.Read<PlanetSettings>("PlanetSettings"), pack, galaxy.Entrance, galaxy);
|
||||
|
|
|
|||
|
|
@ -60,7 +60,7 @@ public sealed class PaintModeTests : IDisposable
|
|||
_openCache = AetheriaStores.Open(Catalog, catalogWritable: true);
|
||||
var ledger = new ProvenanceLedger();
|
||||
for (var lot = 1; lot < 12; lot++) ledger.Lots[lot] = new Lot { Origin = new Attributed(), Quality = 1 };
|
||||
_items = new ItemManager(_openCache, ledger, new GameplaySettings
|
||||
_items = new ItemManager(1u, _openCache, ledger, new GameplaySettings
|
||||
{
|
||||
DefaultEntitySettings = new EntitySettings(),
|
||||
Tiers = new[] { new RarityTier { Name = "Common", Quality = .5f, Color = new float3(1, 1, 1) } },
|
||||
|
|
|
|||
|
|
@ -106,7 +106,7 @@ public sealed class PickupTests : IDisposable
|
|||
|
||||
var ledger = new ProvenanceLedger();
|
||||
for (var i = 1; i <= 9000; i++) ledger.Lots[i] = new Lot { Origin = new Attributed(), Quality = 1 };
|
||||
var items = new ItemManager(cache, ledger, settings, _ => { });
|
||||
var items = new ItemManager(1u, cache, ledger, settings, _ => { });
|
||||
var pack = new ZonePack { Radius = 0 };
|
||||
var curves = new PlanetSettings();
|
||||
if (wells)
|
||||
|
|
|
|||
|
|
@ -61,7 +61,7 @@ public sealed class PopulatedRadiusTests : IDisposable
|
|||
var cache = AetheriaStores.Open(Path.Combine(dir, "Aetheria.cc"), Path.Combine(dir, "run.cc"), catalogWritable: true);
|
||||
_caches.Add(cache);
|
||||
cache.Upsert(new VerseGrammar { Revision = 1 });
|
||||
var items = new ItemManager(cache, new ProvenanceLedger(), new GameplaySettings
|
||||
var items = new ItemManager(1u, cache, new ProvenanceLedger(), new GameplaySettings
|
||||
{
|
||||
DefaultEntitySettings = new EntitySettings(),
|
||||
Tiers = new[] { new RarityTier { Name = "Common", Quality = .5f, Color = new float3(1, 1, 1) } },
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ public sealed class PotentialOwnerTests : IDisposable
|
|||
Tiers = new[] { new RarityTier { Name = "Common", Quality = .5f, Color = new float3(1, 1, 1) } },
|
||||
QualityPriceModifier = new ExponentialLerp()
|
||||
};
|
||||
_items = new ItemManager(_cache, new ProvenanceLedger(), settings, _ => { });
|
||||
_items = new ItemManager(1u, _cache, new ProvenanceLedger(), settings, _ => { });
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
|
|
|
|||
|
|
@ -87,7 +87,7 @@ public sealed class PowerBusTests : IDisposable
|
|||
CultCache cache, float reactorCharge, float startingCapacitorCharge, bool reactorFirst)
|
||||
{
|
||||
var ledger = new ProvenanceLedger();
|
||||
var items = new ItemManager(cache, ledger, Settings(), _ => { });
|
||||
var items = new ItemManager(1u, cache, ledger, Settings(), _ => { });
|
||||
var zone = new Zone(items, new PlanetSettings(), new ZonePack(), new GalaxyZone { Name = "Test Zone", Owner = null }, null);
|
||||
var hull = Mint(cache, items, cache.GetByName<HullData>("Skiff"));
|
||||
var ship = new Ship(items, zone, hull, new EntitySettings());
|
||||
|
|
|
|||
|
|
@ -93,7 +93,7 @@ public sealed class PowerCurveTests : IDisposable
|
|||
|
||||
private Ship BuildShip(CultCache cache, float reactorCharge)
|
||||
{
|
||||
var items = new ItemManager(cache, new ProvenanceLedger(), Settings(), _ => { });
|
||||
var items = new ItemManager(1u, cache, new ProvenanceLedger(), Settings(), _ => { });
|
||||
var zone = new Zone(items, new PlanetSettings(), new ZonePack(), new GalaxyZone { Name = "Test Zone", Owner = null }, null);
|
||||
var hull = Mint(cache, items, cache.GetByName<HullData>("Skiff"));
|
||||
var ship = new Ship(items, zone, hull, new EntitySettings());
|
||||
|
|
@ -401,7 +401,7 @@ public sealed class PowerCurveTests : IDisposable
|
|||
});
|
||||
cache.FlushAsync().Wait();
|
||||
|
||||
var items = new ItemManager(cache, new ProvenanceLedger(), Settings(), _ => { });
|
||||
var items = new ItemManager(1u, cache, new ProvenanceLedger(), Settings(), _ => { });
|
||||
var zone = new Zone(items, new PlanetSettings(), new ZonePack(), new GalaxyZone { Name = "Test Zone", Owner = null }, null);
|
||||
var hullItem = Mint(cache, items, cache.GetByName<HullData>("Skiff"));
|
||||
var ship = new Ship(items, zone, hullItem, new EntitySettings());
|
||||
|
|
|
|||
|
|
@ -63,7 +63,7 @@ public sealed class PowerTierTests : IDisposable
|
|||
private (Ship ship, ItemManager items, Reactor reactor) BuildShip(CultCache cache, float reactorCharge)
|
||||
{
|
||||
var ledger = new ProvenanceLedger();
|
||||
var items = new ItemManager(cache, ledger, Settings(), _ => { });
|
||||
var items = new ItemManager(1u, cache, ledger, Settings(), _ => { });
|
||||
var zone = new Zone(items, new PlanetSettings(), new ZonePack(), new GalaxyZone { Name = "Test Zone", Owner = null }, null);
|
||||
var hull = Mint(cache, items, cache.GetByName<HullData>("Skiff"));
|
||||
var ship = new Ship(items, zone, hull, new EntitySettings());
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ public sealed class ProductBinTests : IDisposable
|
|||
Roles = { new ItemRole { Name = "lens" } }
|
||||
});
|
||||
_lens = new CultRecordRef<CraftedItemData>(gear.Key);
|
||||
_items = new ItemManager(_cache, new ProvenanceLedger(), RunSaveTests.TestSettings(), _log.Add) { Random = new CultMath.Random(7u) };
|
||||
_items = new ItemManager(1u, _cache, new ProvenanceLedger(), RunSaveTests.TestSettings(), _log.Add) { Random = new CultMath.Random(7u) };
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
|
|
|
|||
|
|
@ -133,7 +133,7 @@ public sealed class ProductChoiceTests : IDisposable
|
|||
return new Rig
|
||||
{
|
||||
Cache = cache, OutA = outA, OutZ = outZ, OutBoth = cache.GetByName<Faction>("OutBoth"), OutEven = cache.GetByName<Faction>("OutEven"), OutNone = cache.GetByName<Faction>("OutNone"),
|
||||
Items = new ItemManager(cache, new ProvenanceLedger(), RunSaveTests.TestSettings(), _ => { }),
|
||||
Items = new ItemManager(1u, cache, new ProvenanceLedger(), RunSaveTests.TestSettings(), _ => { }),
|
||||
Galaxy = new Galaxy(cache, cache.GetGlobal<SavedGame>(), _ => { })
|
||||
};
|
||||
}
|
||||
|
|
@ -325,7 +325,7 @@ public sealed class ProductChoiceTests : IDisposable
|
|||
int AlphaDraws(Rig rig)
|
||||
{
|
||||
var log = new List<string>();
|
||||
var items = new ItemManager(rig.Cache, new ProvenanceLedger(), RunSaveTests.TestSettings(), log.Add);
|
||||
var items = new ItemManager(1u, rig.Cache, new ProvenanceLedger(), RunSaveTests.TestSettings(), log.Add);
|
||||
var lamp = rig.Cache.GetByName<GearData>("Lamp");
|
||||
var alpha = Enumerable.Range(1, 1000).Count(i =>
|
||||
{
|
||||
|
|
|
|||
|
|
@ -57,7 +57,7 @@ public sealed class RangeFalloffTests
|
|||
public void AnUnequippedWeaponsUnauthoredStatsEvaluate(string design, bool unauthored)
|
||||
{
|
||||
using var cache = RestoredHullsTests.OpenCatalog();
|
||||
var items = new ItemManager(cache, new ProvenanceLedger(), RunSaveTests.TestSettings(), _ => { });
|
||||
var items = new ItemManager(1u, cache, new ProvenanceLedger(), RunSaveTests.TestSettings(), _ => { });
|
||||
var data = cache.GetAll<WeaponItemData>().Single(x => x.Name == design);
|
||||
var lot = items.Lots.Add(new Lot { Design = cache.RefOf<ItemData>(data), Origin = new Attributed(), Quality = .5f, Roles = new System.Collections.Generic.List<RoleFill>() });
|
||||
var item = (EquippableItem) items.CreateInstance(lot);
|
||||
|
|
|
|||
|
|
@ -147,7 +147,7 @@ public sealed class RestoredHullsTests
|
|||
|
||||
private static (uint seed, string zoneName) ScanForNoLagrangeCandidateZone(CultCache cache)
|
||||
{
|
||||
var items = new ItemManager(cache, new ProvenanceLedger(), Settings(), _ => { });
|
||||
var items = new ItemManager(1u, cache, new ProvenanceLedger(), Settings(), _ => { });
|
||||
for (var seed = 1u; seed <= 64u; seed++)
|
||||
{
|
||||
var galaxy = new Galaxy(TutorialGalaxySettings(), TutorialBackgroundSettings(), cache, new PlayerSettings(), new DirectoryInfo(Path.GetTempPath()), _ => { }, null, seed);
|
||||
|
|
@ -227,7 +227,7 @@ public sealed class RestoredHullsTests
|
|||
var settings = Settings();
|
||||
var ledger = new ProvenanceLedger();
|
||||
for (var i = 1; i <= hull.Hardpoints.Count + 1; i++) ledger.Lots[i] = new Lot { Origin = new Attributed(), Quality = .5f };
|
||||
var items = new ItemManager(cache, ledger, settings, _ => { });
|
||||
var items = new ItemManager(1u, cache, ledger, settings, _ => { });
|
||||
var zone = new Zone(items, new PlanetSettings(), new ZonePack(), new GalaxyZone { Name = "Test", Owner = null }, null);
|
||||
var hullItem = new EquippableItem { Data = cache.RefOf<ItemData>(hull), Durability = hull.Durability, Lot = 1 };
|
||||
var ship = new Ship(items, zone, hullItem, settings.DefaultEntitySettings);
|
||||
|
|
@ -282,7 +282,7 @@ public sealed class RestoredHullsTests
|
|||
var settings = Settings();
|
||||
var ledger = new ProvenanceLedger();
|
||||
for (var i = 1; i <= hull.Hardpoints.Count + 1; i++) ledger.Lots[i] = new Lot { Origin = new Attributed(), Quality = .5f };
|
||||
var items = new ItemManager(cache, ledger, settings, _ => { });
|
||||
var items = new ItemManager(1u, cache, ledger, settings, _ => { });
|
||||
var zone = new Zone(items, new PlanetSettings(), new ZonePack(), new GalaxyZone { Name = "Test", Owner = null }, null);
|
||||
var hullItem = new EquippableItem { Data = cache.RefOf<ItemData>(hull), Durability = hull.Durability, Lot = 1 };
|
||||
var ship = new Ship(items, zone, hullItem, settings.DefaultEntitySettings);
|
||||
|
|
@ -372,7 +372,7 @@ public sealed class RestoredHullsTests
|
|||
using var cache = OpenReadOnlyRealCatalogWithScratchRun(gameData, scratchRun);
|
||||
var galaxy = new Galaxy(tutorialSettings, background, cache, new PlayerSettings(), new DirectoryInfo(Path.GetTempPath()), _ => { }, null, seed);
|
||||
|
||||
var items = new ItemManager(cache, new ProvenanceLedger(), Settings(), _ => { });
|
||||
var items = new ItemManager(1u, cache, new ProvenanceLedger(), Settings(), _ => { });
|
||||
var pack = ZoneGenerator.GenerateZone(items, zoneSettings, AuthoredPlanetSettings(), galaxy, galaxy.Entrance, isTutorial: true);
|
||||
|
||||
var dockedStation = pack.Entities.OfType<OrbitalEntityPack>()
|
||||
|
|
@ -412,7 +412,7 @@ public sealed class RestoredHullsTests
|
|||
using var cache = OpenReadOnlyRealCatalogWithScratchRun(gameData, scratchRun);
|
||||
var galaxy = new Galaxy(tutorialSettings, background, cache, new PlayerSettings(), new DirectoryInfo(Path.GetTempPath()), _ => { }, null, seed);
|
||||
|
||||
var items = new ItemManager(cache, new ProvenanceLedger(), Settings(), _ => { });
|
||||
var items = new ItemManager(1u, cache, new ProvenanceLedger(), Settings(), _ => { });
|
||||
var pack = ZoneGenerator.GenerateZone(items, zoneSettings, AuthoredPlanetSettings(), galaxy, galaxy.Entrance, isTutorial: true);
|
||||
|
||||
var planetOrbits = pack.Planets.Select(p => cache.Get(cache.Get(p).Orbit)).Where(o => o.Parent.IsSet()).ToArray();
|
||||
|
|
@ -449,7 +449,7 @@ public sealed class RestoredHullsTests
|
|||
{
|
||||
using var cache = OpenReadOnlyRealCatalogWithScratchRun(gameData, scratchRun);
|
||||
var galaxy = new Galaxy(TutorialGalaxySettings(), TutorialBackgroundSettings(), cache, new PlayerSettings(), new DirectoryInfo(Path.GetTempPath()), _ => { }, null, seed: 1u);
|
||||
var items = new ItemManager(cache, new ProvenanceLedger(), Settings(), _ => { });
|
||||
var items = new ItemManager(1u, cache, new ProvenanceLedger(), Settings(), _ => { });
|
||||
|
||||
var zoneSettings = TutorialZoneSettings();
|
||||
zoneSettings.RosetteProbability = 0;
|
||||
|
|
@ -484,7 +484,7 @@ public sealed class RestoredHullsTests
|
|||
{
|
||||
using var cache = OpenReadOnlyRealCatalogWithScratchRun(gameData, scratchRun);
|
||||
var galaxy = new Galaxy(TutorialGalaxySettings(), TutorialBackgroundSettings(), cache, new PlayerSettings(), new DirectoryInfo(Path.GetTempPath()), _ => { }, null, seed: 1u);
|
||||
var items = new ItemManager(cache, new ProvenanceLedger(), Settings(), _ => { });
|
||||
var items = new ItemManager(1u, cache, new ProvenanceLedger(), Settings(), _ => { });
|
||||
|
||||
var zoneSettings = TutorialZoneSettings();
|
||||
zoneSettings.RosetteProbability = 1;
|
||||
|
|
@ -535,7 +535,7 @@ public sealed class RestoredHullsTests
|
|||
using var cache = OpenReadOnlyRealCatalogWithScratchRun(gameData, scratchRun);
|
||||
var galaxy = new Galaxy(tutorialSettings, background, cache, new PlayerSettings(), new DirectoryInfo(Path.GetTempPath()), _ => { }, null, seed);
|
||||
|
||||
var items = new ItemManager(cache, new ProvenanceLedger(), Settings(), _ => { });
|
||||
var items = new ItemManager(1u, cache, new ProvenanceLedger(), Settings(), _ => { });
|
||||
var pack = ZoneGenerator.GenerateZone(items, zoneSettings, AuthoredPlanetSettings(), galaxy, galaxy.Entrance, isTutorial: true);
|
||||
|
||||
var dockedStation = pack.Entities.OfType<OrbitalEntityPack>()
|
||||
|
|
@ -596,7 +596,7 @@ public sealed class RestoredHullsTests
|
|||
using var cache = OpenCatalog();
|
||||
var hull = cache.GetByName<HullData>("Longinus");
|
||||
var settings = Settings();
|
||||
var items = new ItemManager(cache, new ProvenanceLedger(), settings, _ => { });
|
||||
var items = new ItemManager(1u, cache, new ProvenanceLedger(), settings, _ => { });
|
||||
// ItemManager.Random defaults to a DateTime.Now-seeded instance; without pinning it here, the item
|
||||
// qualities LoadoutGenerator/EntitySerializer roll through it (not through the `random` below, which
|
||||
// only drives which designs get picked) would make this test's own measured speed non-deterministic.
|
||||
|
|
@ -645,7 +645,7 @@ public sealed class RestoredHullsTests
|
|||
|
||||
for (uint seed = 1; seed <= 10; seed++)
|
||||
{
|
||||
var items = new ItemManager(cache, new ProvenanceLedger(), settings, _ => { });
|
||||
var items = new ItemManager(1u, cache, new ProvenanceLedger(), settings, _ => { });
|
||||
var random = new Random(seed);
|
||||
var generator = new LoadoutGenerator(ref random, items, null, null, null, .5f);
|
||||
var pack = generator.GenerateShipLoadout(candidate => candidate == hull);
|
||||
|
|
@ -729,7 +729,7 @@ public sealed class RestoredHullsTests
|
|||
var (seed, zoneName) = NoLagrangeCandidateZone();
|
||||
var galaxy = BuildGalaxyWithForcedEntrance(cache, seed, zoneName);
|
||||
|
||||
var items = new ItemManager(cache, new ProvenanceLedger(), Settings(), _ => { });
|
||||
var items = new ItemManager(1u, cache, new ProvenanceLedger(), Settings(), _ => { });
|
||||
var pack = ZoneGenerator.GenerateZone(items, TutorialZoneSettings(), AuthoredPlanetSettings(), galaxy, galaxy.Entrance, isTutorial: true);
|
||||
|
||||
var station = pack.Entities.OfType<OrbitalEntityPack>()
|
||||
|
|
@ -780,7 +780,7 @@ public sealed class RestoredHullsTests
|
|||
{
|
||||
using var cache = OpenReadOnlyRealCatalogWithScratchRun(gameData, scratchRun);
|
||||
var galaxy = new Galaxy(TutorialGalaxySettings(), TutorialBackgroundSettings(), cache, new PlayerSettings(), new DirectoryInfo(Path.GetTempPath()), _ => { }, null, seed: 1u);
|
||||
var items = new ItemManager(cache, new ProvenanceLedger(), Settings(), _ => { });
|
||||
var items = new ItemManager(1u, cache, new ProvenanceLedger(), Settings(), _ => { });
|
||||
|
||||
int StationCount(GalaxyZone zone, bool isTutorial) =>
|
||||
ZoneGenerator.GenerateZone(items, TutorialZoneSettings(), AuthoredPlanetSettings(), galaxy, zone, isTutorial)
|
||||
|
|
@ -820,7 +820,7 @@ public sealed class RestoredHullsTests
|
|||
{
|
||||
using var cache = OpenReadOnlyRealCatalogWithScratchRun(gameData, scratchRun);
|
||||
var galaxy = new Galaxy(TutorialGalaxySettings(), TutorialBackgroundSettings(), cache, new PlayerSettings(), new DirectoryInfo(Path.GetTempPath()), _ => { }, null, seed: 1u);
|
||||
var items = new ItemManager(cache, new ProvenanceLedger(), Settings(), _ => { });
|
||||
var items = new ItemManager(1u, cache, new ProvenanceLedger(), Settings(), _ => { });
|
||||
|
||||
var pack = ZoneGenerator.GenerateZone(items, TutorialZoneSettings(), AuthoredPlanetSettings(), galaxy, galaxy.Entrance, isTutorial: true);
|
||||
var stationCount = pack.Entities.OfType<OrbitalEntityPack>().Count(e => (cache.Get(e.Hull.Data) as HullData)?.HullType == HullType.Station);
|
||||
|
|
@ -904,7 +904,7 @@ public sealed class RestoredHullsTests
|
|||
var zone = galaxy.Zones.Single(z => z.Name == zoneName);
|
||||
Assert.NotSame(galaxy.Entrance, zone);
|
||||
|
||||
var items = new ItemManager(cache, new ProvenanceLedger(), Settings(), _ => { });
|
||||
var items = new ItemManager(1u, cache, new ProvenanceLedger(), Settings(), _ => { });
|
||||
var pack = ZoneGenerator.GenerateZone(items, TutorialZoneSettings(), AuthoredPlanetSettings(), galaxy, zone, isTutorial: true);
|
||||
|
||||
// Confirms this fixture still has no genuine (non-rosette) Lagrange candidate -- a regression here
|
||||
|
|
|
|||
|
|
@ -102,7 +102,7 @@ public sealed class RoleAuthoringTests : IDisposable
|
|||
});
|
||||
cache.FlushAsync().Wait();
|
||||
|
||||
var items = new ItemManager(cache, new ProvenanceLedger(), Settings(), _ => { });
|
||||
var items = new ItemManager(1u, cache, new ProvenanceLedger(), Settings(), _ => { });
|
||||
var cheapLot = items.CreateLot(cache.GetAll<FactionProductData>().Single(p => p.Name == "Lensed Economy"));
|
||||
var premiumLot = items.CreateLot(cache.GetAll<FactionProductData>().Single(p => p.Name == "Lensed Premium"));
|
||||
var cheapInstance = (EquippableItem) items.CreateInstance(cheapLot);
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@ public sealed partial class RunStartTests
|
|||
private static Faction Zhestokost(Galaxy galaxy) => galaxy.Factions.Single(faction => faction.Name == "Zhestokost");
|
||||
|
||||
private ItemManager LoggingItems(List<string> log) =>
|
||||
new ItemManager(_cache, new ProvenanceLedger(), AuthoredSettings.Load(FindRepoRoot()).Read<GameplaySettings>("GameplaySettings"), log.Add);
|
||||
new ItemManager(1u, _cache, new ProvenanceLedger(), AuthoredSettings.Load(FindRepoRoot()).Read<GameplaySettings>("GameplaySettings"), log.Add);
|
||||
|
||||
private static string HullName(ItemManager items, EntityPack pack) => items.GetData(pack.Hull).Name;
|
||||
|
||||
|
|
|
|||
|
|
@ -102,7 +102,7 @@ public sealed class RunSaveTests : IDisposable
|
|||
var galaxy = new Galaxy(cache, cache.GetGlobal<SavedGame>(), _ => { });
|
||||
var ledger = new ProvenanceLedger();
|
||||
for (var i = 1; i <= 2; i++) ledger.Lots[i] = new Lot { Origin = new Attributed(), Quality = 1 };
|
||||
var items = new ItemManager(cache, ledger, TestSettings(), _ => { });
|
||||
var items = new ItemManager(1u, cache, ledger, TestSettings(), _ => { });
|
||||
var zone = new Zone(items, new PlanetSettings(), new ZonePack(), galaxy.Zones[0], galaxy);
|
||||
galaxy.Zones[0].Contents = zone;
|
||||
Ship Make(string hull, int lot) => new Ship(items, zone, new EquippableItem
|
||||
|
|
@ -135,7 +135,7 @@ public sealed class RunSaveTests : IDisposable
|
|||
using (var cache = Open())
|
||||
{
|
||||
var galaxy = new Galaxy(cache, cache.GetGlobal<SavedGame>(), _ => { });
|
||||
var itemManager = new ItemManager(cache, new ProvenanceLedger(), TestSettings(), _ => { });
|
||||
var itemManager = new ItemManager(1u, cache, new ProvenanceLedger(), TestSettings(), _ => { });
|
||||
galaxy.Zones[0].Contents = new Zone(itemManager, new PlanetSettings(), new ZonePack(), galaxy.Zones[0], galaxy);
|
||||
var (game, zones) = RunSave.Capture(cache, galaxy, galaxy.Zones[0].Contents, null, new SavedActionBarBinding[0], 0);
|
||||
RunSave.Commit(cache, game, zones, RunSave.Lots(cache));
|
||||
|
|
@ -160,7 +160,7 @@ public sealed class RunSaveTests : IDisposable
|
|||
using (var cache = Open())
|
||||
{
|
||||
var galaxy = new Galaxy(cache, cache.GetGlobal<SavedGame>(), _ => { });
|
||||
var itemManager = new ItemManager(cache, new ProvenanceLedger(), TestSettings(), _ => { });
|
||||
var itemManager = new ItemManager(1u, cache, new ProvenanceLedger(), TestSettings(), _ => { });
|
||||
galaxy.Zones[0].Contents = new Zone(itemManager, new PlanetSettings(), new ZonePack(), galaxy.Zones[0], galaxy);
|
||||
var (game, zones) = RunSave.Capture(cache, galaxy, galaxy.Zones[0].Contents, null, new SavedActionBarBinding[0], 4242);
|
||||
RunSave.Commit(cache, game, zones, RunSave.Lots(cache));
|
||||
|
|
@ -186,7 +186,7 @@ public sealed class RunSaveTests : IDisposable
|
|||
{
|
||||
var galaxy = new Galaxy(cache, cache.GetGlobal<SavedGame>(), _ => { });
|
||||
Assert.Equal(0xC0FFEE42u, galaxy.Seed);
|
||||
var itemManager = new ItemManager(cache, new ProvenanceLedger(), TestSettings(), _ => { });
|
||||
var itemManager = new ItemManager(1u, cache, new ProvenanceLedger(), TestSettings(), _ => { });
|
||||
galaxy.Zones[0].Contents = new Zone(itemManager, new PlanetSettings(), new ZonePack(), galaxy.Zones[0], galaxy);
|
||||
// The zone's drop dice are its name's seed mixed with the run's.
|
||||
Assert.Equal("Zone 0".StableHash() ^ SimulationDice.Mix(0xC0FFEE42u), galaxy.Zones[0].Contents.DropSeed);
|
||||
|
|
@ -207,7 +207,7 @@ public sealed class RunSaveTests : IDisposable
|
|||
Assert.Equal(0u, cache.GetGlobal<SavedGame>().Seed);
|
||||
var galaxy = new Galaxy(cache, cache.GetGlobal<SavedGame>(), _ => { });
|
||||
Assert.Equal(0u, galaxy.Seed);
|
||||
var itemManager = new ItemManager(cache, new ProvenanceLedger(), TestSettings(), _ => { });
|
||||
var itemManager = new ItemManager(1u, cache, new ProvenanceLedger(), TestSettings(), _ => { });
|
||||
var zone = new Zone(itemManager, new PlanetSettings(), new ZonePack(), galaxy.Zones[0], galaxy);
|
||||
Assert.Equal("Zone 0".StableHash(), zone.CombatSeed);
|
||||
Assert.Equal(zone.CombatSeed, zone.DropSeed);
|
||||
|
|
@ -408,7 +408,7 @@ public sealed class RunSaveTests : IDisposable
|
|||
using (var cache = Open())
|
||||
{
|
||||
var random = new Random(7);
|
||||
var items = new ItemManager(cache, new ProvenanceLedger(), TestSettings(), _ => { });
|
||||
var items = new ItemManager(1u, cache, new ProvenanceLedger(), TestSettings(), _ => { });
|
||||
var generator = new LoadoutGenerator(ref random, items, null, null, null, .5f);
|
||||
pack = generator.GenerateShipLoadout(candidate => candidate.Name == "Runabout");
|
||||
Assert.NotNull(pack);
|
||||
|
|
|
|||
|
|
@ -53,7 +53,7 @@ public sealed partial class RunStartTests : IDisposable
|
|||
_galaxy = new Galaxy(tutorial, authored.Read<SectorBackgroundSettings>("TutorialBackgroundSettings"),
|
||||
_cache, new PlayerSettings(),
|
||||
Directory.CreateDirectory(Path.Combine(_root, "Narrative")), _ => { }, null, GalaxySeed);
|
||||
_items = new ItemManager(_cache, new ProvenanceLedger(), authored.Read<GameplaySettings>("GameplaySettings"), _ => { });
|
||||
_items = new ItemManager(1u, _cache, new ProvenanceLedger(), authored.Read<GameplaySettings>("GameplaySettings"), _ => { });
|
||||
_protagonist = _galaxy.ResolveFaction(tutorial.ProtagonistFaction);
|
||||
|
||||
// GameSettings.StartingHullName is a plain field of the Unity settings object, not a ServerShared subtree
|
||||
|
|
|
|||
|
|
@ -83,7 +83,7 @@ public sealed class ShieldReserveTests : IDisposable
|
|||
private (Ship ship, Shield shield) BuildShipWithShield(CultCache cache, float reactorGeneration)
|
||||
{
|
||||
var ledger = new ProvenanceLedger();
|
||||
var items = new ItemManager(cache, ledger, Settings(), _ => { });
|
||||
var items = new ItemManager(1u, cache, ledger, Settings(), _ => { });
|
||||
var zone = new Zone(items, new PlanetSettings(), new ZonePack(), new GalaxyZone { Name = "Test Zone", Owner = null }, null);
|
||||
var hull = Mint(cache, items, cache.GetByName<HullData>("Skiff"));
|
||||
var ship = new Ship(items, zone, hull, new EntitySettings());
|
||||
|
|
|
|||
|
|
@ -132,7 +132,7 @@ public sealed class SignatureTests : IDisposable
|
|||
|
||||
var ledger = new ProvenanceLedger();
|
||||
for (var i = 1; i <= 100; i++) ledger.Lots[i] = new Lot { Origin = new Attributed(), Quality = 1 };
|
||||
var items = new ItemManager(cache, ledger, Settings(visibilityDecay), _ => { });
|
||||
var items = new ItemManager(1u, cache, ledger, Settings(visibilityDecay), _ => { });
|
||||
var zone = new Zone(items, new PlanetSettings(), new ZonePack(), new GalaxyZone { Name = "Signatures", Owner = null }, null);
|
||||
var lot = 1;
|
||||
EquippableItem Make(string name) => new EquippableItem
|
||||
|
|
|
|||
|
|
@ -93,7 +93,7 @@ public sealed class StatResolverTests : IDisposable
|
|||
cache.Upsert(new GearData { Name = "AutoGun", Hardpoint = HardpointType.Sensors, Shape = new Shape(), Durability = 10, Behaviors = { new AutoWeaponData { Damage = autoDamage } } });
|
||||
cache.Upsert(new GearData { Name = "ChargedGun", Hardpoint = HardpointType.Sensors, Shape = new Shape(), Durability = 10, Behaviors = { new ChargedWeaponData { Damage = chargedDamage } } });
|
||||
cache.FlushAsync().Wait();
|
||||
var items = new ItemManager(cache, new ProvenanceLedger(), Settings(), _ => { });
|
||||
var items = new ItemManager(1u, cache, new ProvenanceLedger(), Settings(), _ => { });
|
||||
var ship = BuildActivatedShip(cache, items, withBooster: true);
|
||||
ship.Deactivate(); // TryEquip refuses while deployed
|
||||
Assert.True(ship.TryEquip(Mint(cache, items, cache.GetByName<GearData>("AutoGun")), FirstGunCell));
|
||||
|
|
@ -137,7 +137,7 @@ public sealed class StatResolverTests : IDisposable
|
|||
{
|
||||
var capacity = new PerformanceStat { Min = 1, Max = 1 };
|
||||
using var cache = OpenCatalog(new CapacitorData { Capacity = capacity });
|
||||
var items = new ItemManager(cache, new ProvenanceLedger(), Settings(), _ => { });
|
||||
var items = new ItemManager(1u, cache, new ProvenanceLedger(), Settings(), _ => { });
|
||||
var shipA = BuildActivatedShip(cache, items, withBooster: false);
|
||||
var shipB = BuildActivatedShip(cache, items, withBooster: false);
|
||||
|
||||
|
|
@ -159,7 +159,7 @@ public sealed class StatResolverTests : IDisposable
|
|||
Type = StatModifierType.Constant
|
||||
};
|
||||
using var cache = OpenCatalog(new CapacitorData { Capacity = capacity }, modifier);
|
||||
var items = new ItemManager(cache, new ProvenanceLedger(), Settings(), _ => { });
|
||||
var items = new ItemManager(1u, cache, new ProvenanceLedger(), Settings(), _ => { });
|
||||
|
||||
var boosted = BuildActivatedShip(cache, items, withBooster: true);
|
||||
var plain = BuildActivatedShip(cache, items, withBooster: false);
|
||||
|
|
@ -198,7 +198,7 @@ public sealed class StatResolverTests : IDisposable
|
|||
Type = StatModifierType.Constant
|
||||
};
|
||||
using var cache = OpenCatalog(new CapacitorData { Capacity = capacity }, modifier);
|
||||
var items = new ItemManager(cache, new ProvenanceLedger(), Settings(), _ => { });
|
||||
var items = new ItemManager(1u, cache, new ProvenanceLedger(), Settings(), _ => { });
|
||||
|
||||
var ship = BuildActivatedShip(cache, items, withBooster: true);
|
||||
var boosterEquipped = ship.Equipment.Single(e => e.Data.Name == "Booster");
|
||||
|
|
@ -234,7 +234,7 @@ public sealed class StatResolverTests : IDisposable
|
|||
{
|
||||
var capacity = new PerformanceStat { Min = 1, Max = 1 };
|
||||
using var cache = OpenCatalog(new CapacitorData { Capacity = capacity });
|
||||
var items = new ItemManager(cache, new ProvenanceLedger(), Settings(), _ => { });
|
||||
var items = new ItemManager(1u, cache, new ProvenanceLedger(), Settings(), _ => { });
|
||||
|
||||
WeakReference EquipEvaluateAndDrop()
|
||||
{
|
||||
|
|
@ -281,7 +281,7 @@ public sealed class StatResolverTests : IDisposable
|
|||
});
|
||||
cache.FlushAsync().Wait();
|
||||
|
||||
var items = new ItemManager(cache, new ProvenanceLedger(), Settings(), _ => { });
|
||||
var items = new ItemManager(1u, cache, new ProvenanceLedger(), Settings(), _ => { });
|
||||
var zone = new Zone(items, new PlanetSettings(), new ZonePack(), new GalaxyZone { Name = "Test Zone", Owner = null }, null);
|
||||
var hullItem = Mint(cache, items, cache.GetByName<HullData>("Skiff"));
|
||||
var ship = new Ship(items, zone, hullItem, new EntitySettings());
|
||||
|
|
@ -387,7 +387,7 @@ public sealed class StatResolverTests : IDisposable
|
|||
{
|
||||
var capacity = new PerformanceStat { Min = 1, Max = 1 };
|
||||
using var cache = OpenCatalog(new CapacitorData { Capacity = capacity });
|
||||
var items = new ItemManager(cache, new ProvenanceLedger(), Settings(), _ => { });
|
||||
var items = new ItemManager(1u, cache, new ProvenanceLedger(), Settings(), _ => { });
|
||||
var ship = BuildActivatedShip(cache, items, withBooster: false);
|
||||
var resolver = ship.Resolver;
|
||||
|
||||
|
|
@ -424,7 +424,7 @@ public sealed class StatResolverTests : IDisposable
|
|||
cache.FlushAsync().Wait();
|
||||
var boosterData = cache.Get(boosterRef);
|
||||
|
||||
var items = new ItemManager(cache, new ProvenanceLedger(), Settings(), _ => { });
|
||||
var items = new ItemManager(1u, cache, new ProvenanceLedger(), Settings(), _ => { });
|
||||
var ship = BuildActivatedShip(cache, items, withBooster: false);
|
||||
var resolver = ship.Resolver;
|
||||
|
||||
|
|
@ -498,7 +498,7 @@ public sealed class StatResolverTests : IDisposable
|
|||
cache.Upsert(new ConsumableItemData { Name = "Stim", Duration = 1f, Shape = new Shape(), Behaviors = { ThrustModifier(consumable.Value.Type, consumable.Value.Value) } });
|
||||
cache.FlushAsync().Wait();
|
||||
|
||||
var items = new ItemManager(cache, new ProvenanceLedger(), Settings(), _ => { });
|
||||
var items = new ItemManager(1u, cache, new ProvenanceLedger(), Settings(), _ => { });
|
||||
var zone = new Zone(items, new PlanetSettings(), new ZonePack(), new GalaxyZone { Name = "Test Zone", Owner = null }, null);
|
||||
var ship = new Ship(items, zone, Mint(cache, items, cache.GetByName<HullData>("Skiff")), new EntitySettings());
|
||||
Assert.True(ship.TryEquip(Mint(cache, items, cache.GetByName<GearData>("Engine")), cells[0]));
|
||||
|
|
|
|||
|
|
@ -56,7 +56,7 @@ public sealed class StationPlacementTests : IDisposable
|
|||
authored.Read<SectorBackgroundSettings>("TutorialBackgroundSettings"),
|
||||
cache, new PlayerSettings(),
|
||||
Directory.CreateDirectory(Path.Combine(dir, "Narrative")), _ => { }, null, seed);
|
||||
var items = new ItemManager(cache, new ProvenanceLedger(), settings, _ => { });
|
||||
var items = new ItemManager(1u, cache, new ProvenanceLedger(), settings, _ => { });
|
||||
stock?.Invoke(items);
|
||||
foreach (var galaxyZone in entranceOnly ? new[] { galaxy.Entrance } : galaxy.Zones.Take(zonesPerSeed))
|
||||
{
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@ public sealed class StationServicesTests : IDisposable
|
|||
_cache.FlushAsync().Wait();
|
||||
|
||||
var settings = AuthoredSettings.Load(RestoredHullsTests.FindRepoRoot()).Read<GameplaySettings>("GameplaySettings");
|
||||
_items = new ItemManager(_cache, new ProvenanceLedger(), settings, _ => { });
|
||||
_items = new ItemManager(1u, _cache, new ProvenanceLedger(), settings, _ => { });
|
||||
_zone = new Zone(_items, new PlanetSettings(), new ZonePack(), new GalaxyZone { Name = "Test Zone", Owner = null }, null);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -185,7 +185,7 @@ public sealed class SunsNeverGreenTests : IDisposable
|
|||
var galaxy = new Galaxy(tutorial, authored.Read<SectorBackgroundSettings>("TutorialBackgroundSettings"),
|
||||
cache, new PlayerSettings(),
|
||||
Directory.CreateDirectory(Path.Combine(dir, "Narrative")), _ => { }, null, seed);
|
||||
var items = new ItemManager(cache, new ProvenanceLedger(), authored.Read<GameplaySettings>("GameplaySettings"), _ => { });
|
||||
var items = new ItemManager(1u, cache, new ProvenanceLedger(), authored.Read<GameplaySettings>("GameplaySettings"), _ => { });
|
||||
var zoneSettings = authored.Read<ZoneGenerationSettings>("ZoneSettings");
|
||||
adjust(zoneSettings);
|
||||
foreach (var zone in galaxy.Zones)
|
||||
|
|
|
|||
|
|
@ -104,7 +104,7 @@ public sealed class TargetingSystemTests : IDisposable
|
|||
ledger.Lots[3] = new Lot { Origin = new Attributed(), Quality = 1 }; // wide
|
||||
ledger.Lots[4] = new Lot { Origin = new Attributed(), Quality = 1 }; // narrow
|
||||
ledger.Lots[5] = new Lot { Origin = new Attributed(), Quality = 1 }; // targeting (unused unless authored above)
|
||||
var items = new ItemManager(_openCache, ledger, settings, _ => { });
|
||||
var items = new ItemManager(1u, _openCache, ledger, settings, _ => { });
|
||||
var zone = new Zone(items, new PlanetSettings(), new ZonePack(), new GalaxyZone { Name = "Test Zone", Owner = null }, null);
|
||||
|
||||
var hullRef = items.ItemData.RefOf<ItemData>(items.ItemData.GetByName<HullData>("TestHull"));
|
||||
|
|
@ -368,7 +368,7 @@ public sealed class TargetingSystemTests : IDisposable
|
|||
|
||||
Ship BuildShip(float reactorCharge, out ItemManager items)
|
||||
{
|
||||
items = new ItemManager(cache, new ProvenanceLedger(), TestSettings(), _ => { });
|
||||
items = new ItemManager(1u, cache, new ProvenanceLedger(), TestSettings(), _ => { });
|
||||
var zone = new Zone(items, new PlanetSettings(), new ZonePack(), new GalaxyZone { Name = "Test Zone", Owner = null }, null);
|
||||
var hullData = cache.GetByName<HullData>("Skiff");
|
||||
var hull = Mint(hullData);
|
||||
|
|
@ -439,7 +439,7 @@ public sealed class TargetingSystemTests : IDisposable
|
|||
for (var seed = 1; seed <= 10; seed++)
|
||||
{
|
||||
var random = new Random((uint) seed);
|
||||
var items = new ItemManager(cache, new ProvenanceLedger(), TestSettings(), _ => { });
|
||||
var items = new ItemManager(1u, cache, new ProvenanceLedger(), TestSettings(), _ => { });
|
||||
var generator = new LoadoutGenerator(ref random, items, null, null, null, .5f);
|
||||
var pack = generator.GenerateShipLoadout(candidate => candidate.Name == "Armed");
|
||||
Assert.NotNull(pack);
|
||||
|
|
|
|||
|
|
@ -84,7 +84,7 @@ public sealed class ThrottleLockTests : IDisposable
|
|||
cache.Upsert(lockData);
|
||||
cache.FlushAsync().Wait();
|
||||
|
||||
var items = new ItemManager(cache, new ProvenanceLedger(), Settings(), _ => { });
|
||||
var items = new ItemManager(1u, cache, new ProvenanceLedger(), Settings(), _ => { });
|
||||
var zone = new Zone(items, new PlanetSettings(), new ZonePack(), new GalaxyZone { Name = "Test Zone", Owner = null }, null);
|
||||
var ship = new Ship(items, zone, Mint(cache, items, cache.GetByName<HullData>("Skiff")), new EntitySettings());
|
||||
var gear = cache.GetByName<GearData>("Thruster");
|
||||
|
|
|
|||
|
|
@ -104,7 +104,7 @@ public sealed class VapourCloudTests : IDisposable
|
|||
|
||||
var ledger = new ProvenanceLedger();
|
||||
for (var i = 1; i <= 50; i++) ledger.Lots[i] = new Lot { Origin = new Attributed(), Quality = 1 };
|
||||
var items = new ItemManager(cache, ledger, settings, _ => { });
|
||||
var items = new ItemManager(1u, cache, ledger, settings, _ => { });
|
||||
var zone = new Zone(items, new PlanetSettings(), new ZonePack { Radius = 5000 }, new GalaxyZone { Name = "Vapour", Owner = null }, null);
|
||||
var lab = new Lab { Items = items, Zone = zone };
|
||||
|
||||
|
|
|
|||
|
|
@ -71,7 +71,7 @@ public sealed class ZonePlacedAtBuildTests : IDisposable
|
|||
foreach (var cell in shape.AllCoordinates) shape[cell] = true;
|
||||
var hull = new HullData { Name = "Skiff", HullType = HullType.Ship, Shape = shape, Durability = 10, Mass = 1000 };
|
||||
cache.Upsert(hull);
|
||||
var items = new ItemManager(cache, new ProvenanceLedger(), GameSettings(), _ => { });
|
||||
var items = new ItemManager(1u, cache, new ProvenanceLedger(), GameSettings(), _ => { });
|
||||
|
||||
var rootOrbit = cache.Upsert(new OrbitData { FixedPosition = RootAt }).Key;
|
||||
var planetOrbit = cache.Upsert(new OrbitData
|
||||
|
|
|
|||
|
|
@ -80,6 +80,6 @@ internal sealed class ZoneWorlds : IDisposable
|
|||
Directory.CreateDirectory(dir);
|
||||
var cache = AetheriaStores.Open(Path.Combine(dir, "Aetheria.cc"), Path.Combine(dir, "run.cc"), catalogWritable: true);
|
||||
Caches.Add(cache);
|
||||
return new World { Cache = cache, Items = new ItemManager(cache, new ProvenanceLedger(), GameSettings(), _ => { }) };
|
||||
return new World { Cache = cache, Items = new ItemManager(1u, cache, new ProvenanceLedger(), GameSettings(), _ => { }) };
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -807,7 +807,8 @@ public static class Program
|
|||
};
|
||||
|
||||
var log = new List<string>();
|
||||
var itemManager = new ItemManager(db.Cache, new ProvenanceLedger(), settings, log.Add);
|
||||
// A fixed seed: the catalog command's output must not depend on the clock.
|
||||
var itemManager = new ItemManager(1u, db.Cache, new ProvenanceLedger(), settings, log.Add);
|
||||
var failures = 0;
|
||||
var targetingGaps = 0;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue