public static Enemy GetRandomEnemy() { Enemy Enemy = new Enemy(); using (var db = new Data.Database.AppDataContext()) { var Ships = db.Ships .Include(x => x.Class) .Include(x => x.Health) .Include(x => x.Profile) .Include(x => x.WeaponMounts).ThenInclude(m => m.PossibleWeapons).ThenInclude(w => w.Weapon).ThenInclude(w => w.Damage) .Include(x => x.WeaponMounts).ThenInclude(m => m.PossibleWeapons).ThenInclude(w => w.Weapon).ThenInclude(w => w.Range) .ToList(); Data.Database.Ship RandomEnemy = (Data.Database.Ship)Dice.RandomFromList(Ships); Enemy.Class = RandomEnemy.Class.ClassName; Enemy.UIName = RandomEnemy.Name + " Class " + RandomEnemy.Class.ClassName; Enemy.MaxHealth = RandomEnemy.Health.WeightedRandom(2); Enemy.CurrentHealth = Enemy.MaxHealth; Enemy.Profile = RandomEnemy.Profile.WeightedRandom(2); Enemy.DistanceToPlayer = Dice.RandomBetweenTwo(10000, 20000); Enemy.DBID = RandomEnemy.ShipID; foreach (Data.Database.WeaponMount Mount in RandomEnemy.WeaponMounts) { var PossibleWeapons = Mount.PossibleWeapons.Select(x => x.Weapon).ToList(); var DBWeapon = PossibleWeapons[Dice.RandomBetweenTwo(0, PossibleWeapons.Count())]; Weapon W = new Weapon(DBWeapon, Mount); Enemy.Armament.Add(W); } } return(Enemy); }
public void DrawScoreGrid() { using (var db = new Data.Database.AppDataContext()) { int YPos = 5; foreach (var DBClass in db.Class) { String Class = DBClass.ClassName; String Number = "0"; string Dots = ""; int NumberOfDots = ScoreBoxWidth - (Number.Length + Class.Length); for (int i = 0; i < NumberOfDots; i++) { Dots += "."; } string ScoreLine = String.Format("{0}{1}{2}", Class, Dots, Number); int ScoreLineStart = Program.Width - (2 * ScoreBoxWidth); ScoreConsole.Print(ScoreLineStart, YPos, ScoreLine); ClassScorePosition.Add(new ScoreLine { Class = Class, Position = new Point(ScoreLineStart + ScoreBoxWidth, YPos) }); YPos++; } } }
public List <string> GetCaptainsIntel() { using (var db = new Data.Database.AppDataContext()) { List <String> Intel = new List <string>(); var DBShip = db.Ships .Include(x => x.Health) .Include(x => x.WeaponMounts).ThenInclude(m => m.PossibleWeapons).ThenInclude(w => w.Weapon).ThenInclude(w => w.Damage) .Include(x => x.WeaponMounts).ThenInclude(m => m.PossibleWeapons).ThenInclude(w => w.Weapon).ThenInclude(w => w.Range) .Where(x => x.ShipID == DBID).FirstOrDefault(); Intel.Add(String.Format("Captains Intel Book: {0}", UIName)); Intel.Add(""); Intel.Add(String.Format("Aprox resiliance to weapon systems")); foreach (var Weapon in Program.Player.Armament) { int LowDam = (int)Math.Ceiling((double)DBShip.Health.Min / (double)Weapon.Damage.Max); int HighDam = (int)Math.Ceiling((double)DBShip.Health.Max / (double)Weapon.Damage.Min); Intel.Add(String.Format("{0} ({1}-{2}m): ~{3}-{4} to sink", Weapon.UIName, Weapon.Range.Min, Weapon.Range.Max, LowDam, HighDam)); } Intel.Add(""); Intel.Add(String.Format("Possible Armament:")); foreach (var Mount in DBShip.WeaponMounts) { Intel.Add(String.Format("{0}", Mount.MountName, Mount.AlwaysExists ? "": " not always on Class")); foreach (var Weapon in Mount.PossibleWeapons.Select(x => x.Weapon)) { int LowDam = (int)Math.Ceiling((double)Program.Player.CurrentHealth / (double)Weapon.Damage.Max); int HighDam = (int)Math.Ceiling((double)Program.Player.CurrentHealth / (double)Weapon.Damage.Min); Intel.Add(String.Format(" - {0}: {1}-{2}m Range. ~{3}-{4} Shots to kill at our current state", Weapon.Name, Weapon.Range.Min, Weapon.Range.Max, LowDam, HighDam)); } } return(Intel); } }