コード例 #1
0
ファイル: CelestialObject.cs プロジェクト: andy-uq/Echo
            public static Builder For(CelestialObject celestialObject)
            {
                if (celestialObject is AsteroidBelt)
                    return new AsteroidBeltBuilder();

                if (celestialObject is Planet)
                    return new PlanetBuilder();

                return new Builder();
            }
コード例 #2
0
ファイル: CelestialObject.cs プロジェクト: andy-uq/Echo
            public CelestialObjectState Save(CelestialObject celestialObject)
            {
                State = new CelestialObjectState
                {
                    ObjectId = celestialObject.Id,
                    Name = celestialObject.Name,
                    CelestialObjectType = celestialObject.CelestialObjectType,
                    LocalCoordinates = celestialObject.Position.LocalCoordinates,
                    Orbits = celestialObject.Position.Location.AsObjectReference(),
                    Mass = celestialObject.Mass,
                    Size = celestialObject.Size
                };

                return SaveCelestialObject(celestialObject);
            }
コード例 #3
0
ファイル: SolarSystem.cs プロジェクト: andy-uq/Echo
            private static void CheckOrbitDistance(OrbitingObject @object, CelestialObject parent, double orbitDistance)
            {
                if (orbitDistance > parent.Size)
                {
                    return;
                }

                throw new InvalidOperationException(
                    string.Format("{0} cannot orbit {1} as the orbit is decaying", @object.Name, parent.Name));
            }
コード例 #4
0
ファイル: CelestialObject.cs プロジェクト: andy-uq/Echo
            protected virtual ObjectBuilder<CelestialObject> Build()
            {
                CelestialObject celestialObject;

                switch (State.CelestialObjectType)
                {
                    case CelestialObjectType.Planet:
                        celestialObject = new Planet();
                        break;

                    case CelestialObjectType.Moon:
                        celestialObject = new Moon();
                        break;

                    case CelestialObjectType.Object:
                    default:
                        celestialObject = new CelestialObject();
                        break;
                }

                return new ObjectBuilder<CelestialObject>(celestialObject);
            }
コード例 #5
0
ファイル: CelestialObject.cs プロジェクト: andy-uq/Echo
                protected override CelestialObjectState SaveCelestialObject(CelestialObject celestialObject)
                {
                    var state = base.SaveCelestialObject(celestialObject);
                    state.Orbits = null;

                    return state;
                }
コード例 #6
0
ファイル: CelestialObject.cs プロジェクト: andy-uq/Echo
                protected override CelestialObjectState SaveCelestialObject(CelestialObject celestialObject)
                {
                    var asteroidBelt = (AsteroidBelt) celestialObject;

                    var state = base.SaveCelestialObject(asteroidBelt);
                    state.AsteroidBelt = new AsteroidBeltState
                    {
                        AmountRemaining = asteroidBelt.AmountRemaining,
                        Richness = asteroidBelt.Richness,
                    };

                    return state;
                }
コード例 #7
0
ファイル: CelestialObject.cs プロジェクト: andy-uq/Echo
 protected virtual CelestialObjectState SaveCelestialObject(CelestialObject celestialObject)
 {
     return State;
 }
コード例 #8
0
ファイル: Orbiter.cs プロジェクト: andy-uq/Echo
 private double Speed(CelestialObject celestialBody)
 {
     return System.Math.PI / 1000;
 }