Beispiel #1
0
        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);
        }
Beispiel #2
0
        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++;
                }
            }
        }
Beispiel #3
0
        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);
            }
        }