public void Deserialise() { var wrapped = new WrappedObjectState(Market); using (var session = Database.OpenSession()) { session.Store(wrapped, string.Concat(wrapped.Value.GetType().Name, "/market")); session.SaveChanges(); } using (var session = Database.OpenSession()) { var buyOrder = new BuyOrder {Id = Universe.BuyOrder.ObjectId}; var sellOrder = new SellOrder { Id = Universe.SellOrder.ObjectId }; var resolver = new IdResolutionContext(new IObject[] { buyOrder, sellOrder, new ItemInfo(ItemCode.Veldnium), new TradingStation { Id = Universe.TradingStation.ObjectId }, new Corporation { Id = Universe.MSCorp.ObjectId }, new Corporation { Id = Universe.AppleCorp.ObjectId } }); var state = session.Load<WrappedObjectState>(wrapped.Id).Value; Assert.That(state, Is.Not.Null); Assert.That(state.Settlements, Is.Not.Empty); var market = MarketPlace.Builder.Build(Market, null).Materialise(resolver); Assert.That(market, Is.InstanceOf<MarketPlace>()); Assert.That(market.BuyOrders, Is.Not.Empty); Assert.That(market.SellOrders, Is.Not.Empty); Assert.That(market.Settlements, Is.Not.Empty); } }
public void SupportsNulls() { var idResolution = new IdResolutionContext(Enumerable.Empty<IObject>()); ItemInfo value; idResolution.Get<ItemInfo>(null).ShouldBe(null); idResolution.TryGet(null, out value).ShouldBe(false); }
public void IdResolutionGet() { var itemInfo = TestItems.Item(ItemCode.MissileLauncher); var idResolution = new IdResolutionContext(new[] { itemInfo, }); var objRef = new ObjectReference(itemInfo.ObjectId); idResolution.Get<ItemInfo>(objRef); }
public void IdResolutionFail() { const long id = 1L; var itemInfo = TestItems.Item(ItemCode.MissileLauncher); var idResolution = new IdResolutionContext(new[] { itemInfo, }); var objRef = new ObjectReference(id); Should.Throw<ItemNotFoundException>(() => idResolution.Get<ItemInfo>(objRef)).Message.ShouldBe("Could not find ItemInfo \"[x00000001]\""); Should.Throw<ItemNotFoundException>(() => idResolution.GetById<ItemInfo>(id)).Message.ShouldBe("Could not find ItemInfo \"1\""); }
public void Save() { var idResolver = new IdResolutionContext(new[] { Universe.Item }); var item = Echo.Items.Item.Builder.Build(Item).Build(idResolver); Assert.That(item.ObjectType, Is.EqualTo(ObjectType.Item)); var state = Echo.Items.Item.Builder.Save(item); var json = Database.Conventions.CreateSerializer().Serialize(state); Console.WriteLine(json); }
public void Save() { var buyOrder = new BuyOrder { Id = Universe.BuyOrder.ObjectId }; var sellOrder = new SellOrder { Id = Universe.SellOrder.ObjectId }; var resolver = new IdResolutionContext(new IObject[] { buyOrder, sellOrder, new ItemInfo(ItemCode.Veldnium), new TradingStation { Id = Universe.TradingStation.ObjectId }, new Corporation { Id = Universe.MSCorp.ObjectId }, new Corporation { Id = Universe.AppleCorp.ObjectId } }); var market = MarketPlace.Builder.Build(Market, new StarCluster()).Materialise(resolver); Assert.That(market, Is.InstanceOf<MarketPlace>()); var state = market.Save(); var json = Database.Conventions.CreateSerializer().Serialize(state); Console.WriteLine(json); }
public static Agent StandUp(this AgentState state, Corporation corporation = null, ILocation initialLocation = null) { var idResolver = IdResolver.Empty; if (initialLocation != null) { state.Location = initialLocation.AsObjectReference(); idResolver = new IdResolutionContext(new[] { initialLocation }); } var builder = Agent.Builder.Build(state) .Resolve((r, a) => a.Corporation = corporation); return builder.Materialise(idResolver.RegisterTestSkills()); }
public void IdResolutionCombine() { var i1 = TestItems.Item(ItemCode.MissileLauncher); var i2 = TestItems.Item(ItemCode.EnergyShield); var r1 = new IdResolutionContext(new[] { i1, }); var r2 = new IdResolutionContext(new[] { i2, }); var idResolution = r1.Combine(r2); idResolution.ShouldBeOfType<CompositeIdResolver>(); var objRef = new ObjectReference(i2.ObjectId); idResolution.Get<ItemInfo>(objRef); idResolution.Values.ShouldContain(i1); idResolution.Values.ShouldContain(i2); }
private static void Main(string[] args) { string universeFileName = args.FirstOrDefault() ?? "universe.txt"; UniverseState universe; if (File.Exists(universeFileName)) { using (StreamReader fs = File.OpenText(universeFileName)) { var reader = new JsonTextReader(fs); var serialiser = new JsonSerializer(); serialiser.Converters.Add(new VectorConverter()); universe = serialiser.Deserialize<UniverseState>(reader); } } else { universe = CreateNewUniverse(); } ObjectBuilder<Universe> universeBuilder = Universe.Builder.Build(universe); var resolver = new IdResolutionContext(universeBuilder.FlattenObjectTree()); var game = new Game(universeBuilder.Build(resolver), Registrations); var gameThread = new Thread(() => GameThread(game)); gameThread.Start(); var render = new System.Threading.Timer(state => Render(game)); render.Change(0, 200); int? saveSlot = null; bool recordInput = false; string command = ""; WriteHelp(); while (_alive) { ConsoleKeyInfo key = Console.ReadKey(intercept: true); if (recordInput) { switch (key.Key) { case ConsoleKey.Escape: recordInput = false; command = ""; break; case ConsoleKey.Enter: recordInput = false; command = ""; break; default: command += key.KeyChar; break; } WritePrompt(": " + command); continue; } switch (key.KeyChar) { case 'q': _alive = false; break; case 's': case 'l': if (saveSlot != null) { if (key.KeyChar == 's') { RequestSave(saveSlot); } else { RequestRewind(saveSlot); } } else { WritePrompt("Please enter save slot [0-9]"); } break; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': saveSlot = key.KeyChar - '0'; break; case ':': case ';': recordInput = true; WritePrompt(": "); break; } } gameThread.Join(); SaveState(game, universeFileName); }
public void SetUp() { _solarSystem = new SolarSystem(); _asteroid = new AsteroidBelt { Ore = ItemCode.Veldnium, Difficulty = 1, Richness = 500, AmountRemaining = 1000, Position = new Position(_solarSystem, Vector.Parse("1,0")) }; _difficultAsteroid = new AsteroidBelt { Ore = ItemCode.Veldnium, Difficulty = 2, Richness = 500, AmountRemaining = 1000, Position = new Position(_solarSystem, Vector.Parse("1,0")) }; _solarSystem.Satellites.Add(_asteroid); var shipInfo = new ShipState(ItemCode.LightFrigate) { HardPoints = new[] { new HardPointState { Position = HardPointPosition.Bottom, Weapon = new WeaponState { Code = ItemCode.MiningLaser }, Speed = 1d }, new HardPointState { Position = HardPointPosition.Top, Weapon = new WeaponState { Code = ItemCode.MissileLauncher } } } }; var builder = Ship.Builder.Build(_solarSystem, shipInfo); var frigate = new ShipInfo { Code = ItemCode.LightFrigate }; var missileLauncher = TestItems.Weapon(ItemCode.MissileLauncher); var miningLaser = TestItems.Weapon(ItemCode.MiningLaser); IIdResolver resolver = new IdResolutionContext(new IObject[] { missileLauncher, miningLaser, frigate }); _ship = builder.Build(resolver); }