Beispiel #1
0
 public void BigBangTest()
 {
     for (int i = 0; i < 100; i++)
     {
         var h = Random.NextAngle();
         var a = Random.NextDouble();
         var classification = Catalog.Instance.ShipClasses.Values.First();
         var missile        = Catalog.Instance.MissileClasses.Values.First();
         var helm           = new HelmDefinition
         {
             Acceleration  = a * classification.MaximumAcceleration,
             AccelerateTo  = a * classification.MaximumAcceleration,
             ClassName     = classification.Name,
             Heading       = h,
             HeadingTo     = h,
             Nation        = "Солярианская Лига",
             ShipName      = "Бандит-" + (generation > 0 ? generation + "-" : "") + (i + 1),
             MissileNumber = 1,
             MissileName   = missile.Name,
             Position      = 300000000 * (Random.NextDouble() + Random.NextDouble()) * Random.NextDirection(),
             Speed         = 300000 * (Random.NextDouble() + Random.NextDouble()) * Random.NextDirection(),
         };
         m_helms.Add(helm.ShipName, Helm.Load(helm));
     }
     for (int i = 0; i < 1000; i++)
     {
         var h = Random.NextAngle();
         var classification = Catalog.Instance.MissileClasses.Values.First();
         var from           = m_helms.Values.RandomOf(Random);
         var to             = m_helms.Values.RandomOf(Random);
         var missile        = new Missile(from.Ship, true, to.Ship, 1, Time);
         m_missiles.Add(missile);
     }
     generation++;
 }
Beispiel #2
0
        public static IHelm Load(HelmDefinition that)
        {
            var shipClass = Catalog.Instance.GetShipClass(that.ClassName);

            if (shipClass == null)
            {
                throw new NullReferenceException("Undefined ship class " + that.ClassName);
            }
            MissileClass missileClass = null;

            if (!string.IsNullOrEmpty(that.MissileName))
            {
                missileClass = Catalog.Instance.GetMissileClass(that.MissileName);
                if (missileClass == null)
                {
                    throw new NullReferenceException("Undefined Missile class " + that.MissileName);
                }
            }
            var shipDynamics = new Dynamics(shipClass, that, TimeSpan.Zero);

            return(new Helm
            {
                Id = that.Id == Guid.Empty ? Guid.NewGuid() : that.Id,
                Class = shipClass,
                Name = that.Name,
                Nation = that.Nation,
                Dynamics = shipDynamics,
                Missile = missileClass,
                Missiles = that.Missiles,
                State = that.State,
                Health = that.Health,
            });
        }
Beispiel #3
0
        public static IHelm Load(HelmDefinition that)
        {
            var shipClass = Catalog.Instance.GetShipClass(that.ClassName);

            if (shipClass == null)
            {
                throw new NullReferenceException("Undefined ship class " + that.ClassName);
            }
            MissileClass missileClass = null;

            if (!string.IsNullOrEmpty(that.MissileName))
            {
                missileClass = Catalog.Instance.GetMissileClass(that.MissileName);
                if (missileClass == null)
                {
                    throw new NullReferenceException("Undefined Missile class " + that.MissileName);
                }
            }
            var shipDynamics = new Dynamics(shipClass, that, TimeSpan.Zero);

            return(new Helm
            {
                Ship = new Ship
                {
                    Name = that.ShipName,
                    Class = shipClass,
                    Nation = that.Nation,
                    Dynamics = shipDynamics,
                    Missile = missileClass,
                    Missiles = that.MissileNumber,
                },
            });
        }
Beispiel #4
0
 public View GetView()
 {
     return(new View
     {
         Time = Instance.Time,
         Helm = HelmDefinition.Store(this.m_helm),
         Ships = Instance.GetVisibleShips(this.m_helm).Select(ShipDefinition.Store).ToArray(),
         Missiles = Instance.GetVisibleMissiles(this.m_helm).Select(MissileDefinition.Store).ToArray(),
         Stars = Instance.GetStars().ToArray(),
     });
 }
Beispiel #5
0
 public Dynamics(ShipClass Class, HelmDefinition Def, TimeSpan time)
 {
     this.t1                = this.t0 = time.TotalSeconds;
     this.S                 = Def.Position;
     this.V                 = this.v0 = Def.Speed;
     this.Roll              = new LinearValue(this.t0, Def.Roll, Def.RollTo, 2 * Math.PI / Class.RoundRollTime, 2 * Math.PI);
     this.Heading           = new LinearValue(this.t0, Def.Heading, Def.HeadingTo, 2 * Math.PI / Class.FullTurnTime, 2 * Math.PI);
     this.Acceleration      = new LinearValue(this.t0, Def.Acceleration, Def.AccelerateTo, Class.MaximumAcceleration / Class.FullAccelerationTime, 0);
     this.AccelerationValue = this.Acceleration.FromValue;
     this.HeadingValue      = this.Heading.FromValue;
     this.RollValue         = this.Roll.FromValue;
 }
Beispiel #6
0
 public Dynamics(ShipClass Class, HelmDefinition Def, TimeSpan time)
 {
     t1                = t0 = time.TotalSeconds;
     S                 = Def.Position;
     V                 = v0 = Def.Speed;
     Roll              = new LinearValue(t0, Def.Roll, Def.RollTo, 2 * Math.PI / Class.RoundRollTime, 2 * Math.PI);
     Heading           = new LinearValue(t0, Def.Heading, Def.HeadingTo, 2 * Math.PI / Class.FullTurnTime, 2 * Math.PI);
     Acceleration      = new LinearValue(t0, Def.Thrust, Def.ThrustTo, Class.MaximumAcceleration / Class.FullAccelerationTime, 0);
     AccelerationValue = Acceleration.FromValue;
     HeadingValue      = Heading.FromValue;
     RollValue         = Roll.FromValue;
 }
Beispiel #7
0
 public View GetView(IHelm me)
 {
     lock (m_locker)
     {
         bool blind = me.State == ShipState.Annihilated || me.State == ShipState.Junk || me.State == ShipState.Hyperspace;
         return(new View
         {
             Time = Time,
             Helm = HelmDefinition.Store(me),
             Ships = blind ? new ShipDefinition[0] : GetVisibleShips(me).Select(ShipDefinition.Store).ToArray(),
             Missiles = blind ? new MissileDefinition[0] : GetVisibleMissiles(me).Select(MissileDefinition.Store).ToArray(),
             Stars = GetStars().ToArray(),
         });
     }
 }
Beispiel #8
0
 public View GetView(IHelm me)
 {
     lock (m_locker)
     {
         bool blind = me.IsDead() || !me.InSpace();
         return(new View
         {
             Time = Time,
             Helm = HelmDefinition.Store(me),
             Ships = blind ? new ShipDefinition[0] : GetVisibleShips(me).Select(ShipDefinition.Store).ToArray(),
             Missiles = blind ? new MissileDefinition[0] : GetVisibleMissiles(me).Select(MissileDefinition.Store).ToArray(),
             Stars = GetStars().ToArray(),
         });
     }
 }
Beispiel #9
0
 public void Update(HelmDefinition def)
 {
     m_that = def;
 }
Beispiel #10
0
 public RemoteHelm(IServer client, HelmDefinition def)
 {
     m_that   = def;
     m_client = client;
 }
Beispiel #11
0
 public void Update(HelmDefinition def)
 {
     this.m_ship.Update(def);
     this.m_that = def;
 }
Beispiel #12
0
 public RemoteHelm(IServer client, HelmDefinition def)
 {
     this.m_that   = def;
     this.m_client = client;
     this.m_ship   = new RemoteShip(def);
 }