Exemple #1
0
            public static ObjectBuilder<SolarSystem> Build(StarCluster starCluster, SolarSystemState state)
            {
                var solarSystem = new SolarSystem
                {
                    Id = state.ObjectId,
                    Name = state.Name,
                    Position = new Position(starCluster, state.LocalCoordinates),
                };

                var builder = new ObjectBuilder<SolarSystem>(solarSystem)
                    .Resolve((target, resolver) => BuildOrbits(state, target));

                builder
                    .Dependents(state.Ships)
                    .Build(Echo.Ships.Ship.Builder.Build)
                    .Resolve((resolver, target, dependent) => target.Ships.Add(dependent));

                builder
                    .Dependents(state.JumpGates)
                    .Build(Echo.JumpGates.JumpGate.Builder.Build)
                    .Resolve((resolver, target, dependent) => target.JumpGates.Add(dependent));

                builder
                    .Dependents(state.Satellites)
                    .Build((target, dependent) => CelestialObject.Builder.For(dependent).Build(solarSystem))
                    .Resolve((resolver, target, dependent) => target.Satellites.Add(dependent));

                builder
                    .Dependents(state.Structures)
                    .Build((target, dependent) => Structure.Builder.For(dependent).Build(solarSystem))
                    .Resolve((resolver, target, dependent) => target.Structures.Add(dependent));

                return builder;
            }
Exemple #2
0
        public void Resolves()
        {
            var testObject = new TestObject() { Id = 1, Children = new List<TestObject>() };

            var mChildObject = new Mock<IObject>(MockBehavior.Strict);
            mChildObject.SetupGet(o => o.Id).Returns(2);

            var mChildState = new Mock<IObjectState>(MockBehavior.Strict);
            var builder = new ObjectBuilder<IObject>(testObject);
            builder.Dependents(new[] { mChildState.Object }).Build(state => new ObjectBuilder<IObject>(mChildObject.Object));

            var r = builder.Materialise();
            Assert.That(r, Is.EqualTo(testObject));
        }
Exemple #3
0
        public void Dependents()
        {
            var mObject = new Mock<IObject>(MockBehavior.Strict);
            mObject.SetupGet(o => o.Id).Returns(1);

            var mChildObject = new Mock<IObject>(MockBehavior.Strict);
            mChildObject.SetupGet(o => o.Id).Returns(2);

            var mChildState = new Mock<IObjectState>(MockBehavior.Strict);
            var builder = new ObjectBuilder<IObject>(mObject.Object);
            builder.Dependents(new[] { mChildState.Object }).Build(state => new ObjectBuilder<IObject>(mChildObject.Object));

            Assert.That(builder.DependentObjects, Is.Not.Empty);
            Assert.That(builder.DependentObjects, Has.Exactly(1).Matches<IBuilderContext>(x => x.Target.Id == 2));
        }
Exemple #4
0
            public static ObjectBuilder<Corporation> Build(CorporationState state)
            {
                var corporation = new Corporation
                {
                    Id = state.ObjectId,
                    Name = state.Name,
                };

                var builder = new ObjectBuilder<Corporation>(corporation);

                builder
                    .Dependents(state.Employees)
                    .Build(Agent.Builder.Build)
                    .Resolve((resolver, target, agent) => AddEmployee(target, agent));

                return builder;
            }
Exemple #5
0
            public static ObjectBuilder<StarCluster> Build(Universe universe, StarClusterState state)
            {
                var starCluster = new StarCluster
                {
                    Id = state.ObjectId,
                    Name = state.Name,
                    Position = new Position(universe, state.LocalCoordinates),
                };

                var builder = new ObjectBuilder<StarCluster>(starCluster);
                builder.Resolve((resolver, target) => target.MarketPlace = Market.MarketPlace.Builder.Build(state.MarketPlace, starCluster).Build(resolver));

                builder
                    .Dependents(state.SolarSystems)
                    .Build(SolarSystem.Builder.Build)
                    .Resolve((resolver, target, dependent) => target.SolarSystems.Add(dependent));

                return builder;
            }
Exemple #6
0
            public static ObjectBuilder<MarketPlace> Build(MarketPlaceState state, StarCluster starCluster)
            {
                var marketPlace = new MarketPlace
                {
                    AuctionLength = state.AuctionLength,
                    SettlementDelay = state.SettlementDelay,
                    StarCluster = starCluster,
                };

                var builder = new ObjectBuilder<MarketPlace>(marketPlace);

                builder
                    .Dependents(state.Settlements)
                    .Build(Settlement.Builder.Build)
                    .Resolve((resolver, target, settlement) => target._settlements.Add(settlement));

                builder
                    .Resolve((resolver, target) => target._auctions.AddRange(state.Auctions.Select(resolver.Get<Auction>)));

                return builder;
            }