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++; }
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, }); }
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, }, }); }
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(), }); }
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; }
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; }
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(), }); } }
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(), }); } }
public void Update(HelmDefinition def) { m_that = def; }
public RemoteHelm(IServer client, HelmDefinition def) { m_that = def; m_client = client; }
public void Update(HelmDefinition def) { this.m_ship.Update(def); this.m_that = def; }
public RemoteHelm(IServer client, HelmDefinition def) { this.m_that = def; this.m_client = client; this.m_ship = new RemoteShip(def); }