Ejemplo n.º 1
0
        public void CoalitionEquality()
        {
            List <Powers> p1 = new List <Powers>()
            {
                Powers.Austria, Powers.Germany, Powers.Turkey
            };
            List <Powers> p2 = new List <Powers>()
            {
                Powers.Austria, Powers.Germany, Powers.Turkey
            };
            List <Powers> p3 = new List <Powers>()
            {
                Powers.Austria, Powers.Germany, Powers.Russia
            };
            List <Powers> p4 = new List <Powers>()
            {
                Powers.Russia, Powers.England, Powers.France
            };

            Coalition c1 = new Coalition(p1);
            Coalition c2 = new Coalition(p2);
            Coalition c3 = new Coalition(p3);
            Coalition c4 = new Coalition(p4);

            Assert.AreEqual(c1, c2);
            Assert.AreNotEqual(c1, c3);
            Assert.AreNotEqual(c2, c3);
            Assert.AreNotEqual(c1, c4);
        }
Ejemplo n.º 2
0
        private void btnExport_Click(object sender, EventArgs e)
        {
            try
            {
                Coalition coalition = (Coalition)cbCoaltion.SelectedItem;
                string    path      = "CoalitieVoorstel_" + coalition.Name + ".txt";

                using (StreamWriter streamWriter = new StreamWriter(path))
                {
                    streamWriter.WriteLine("Coalitie voorstel " + coalition.ElectionName);
                    streamWriter.WriteLine("==============================================================");
                    streamWriter.WriteLine("Aan: Willempie");
                    streamWriter.WriteLine(" ");
                    streamWriter.WriteLine("Partij\t\tZetels\t\tLijsttrekker");
                    streamWriter.WriteLine(" ");
                    int totalSeats = 0;
                    foreach (ElectionResult res in coalition.Parties)
                    {
                        totalSeats = totalSeats + res.Seats;
                        streamWriter.WriteLine(res.Party.Abbreviation + "\t\t" + res.Seats.ToString() + "\t\t" + res.Party.LeadCandidate.Name);
                    }
                    streamWriter.WriteLine("==============================================================");
                    streamWriter.WriteLine("Totaal:\t\t" + totalSeats.ToString() + "\t\tPremier: " + coalition.Premier.Name);
                }
                MessageBox.Show("Coalitievoorstel opgeslagen als: " + path);
            }
            catch { MessageBox.Show("Er is iets mis gegaan, heeft u wel een coalitie geselecteerd?"); }
        }
Ejemplo n.º 3
0
        public void NewCoalition(Coalition coalition)
        {
            try
            {
                string sql = "INSERT INTO Coalitie(PremierId, Naam, Meerderheid) " +
                             "OUTPUT Inserted.CoalitieId " +
                             "VALUES(@id, @name, @mayority)";
                using (var db = new SqlConnection(connectionString))
                {
                    db.Open();
                    SqlCommand cmd = new SqlCommand(sql, db);
                    cmd.Parameters.Add(new SqlParameter("@id", coalition.Premier.Id));
                    cmd.Parameters.Add(new SqlParameter("@name", coalition.Name));
                    cmd.Parameters.Add(new SqlParameter("@mayority", coalition.Mayority));
                    coalition.Id = (Int32)cmd.ExecuteScalar();
                }
                foreach (ElectionResult party in coalition.Parties)
                {
                    string sql2 = "INSERT INTO CoalitiePartij(CoalitieId, PartijId) " +
                                  "VALUES(@cId, @pId)";
                    using (var db = new SqlConnection(connectionString))
                    {
                        db.Open();
                        SqlCommand cmd = new SqlCommand(sql2, db);
                        cmd.Parameters.Add(new SqlParameter("@cId", coalition.Id));
                        cmd.Parameters.Add(new SqlParameter("@pId", party.Party.Id));

                        cmd.ExecuteNonQuery();
                    }
                }
            }
            catch { }
        }
Ejemplo n.º 4
0
        public DCSMissionUnitGroup(
            string luaGroup, string luaUnit, UnitCategory category,
            int groupID, Coalition coalition, Coordinates coordinates,
            params string[] units)
        {
            LuaGroup    = luaGroup;
            LuaUnit     = luaUnit;
            Category    = category;
            Coalition   = coalition;
            GroupID     = groupID;
            Units       = units.ToList();
            Name        = $"Group #{HQTools.ValToString(GroupID)}";
            Coordinates = coordinates;

            if (units.Length == 0)
            {
                DebugLog.Instance.Log($"    WARNING: Tried to create an empty unit group at {Coordinates.ToString("F0")}.");
            }
            else
            {
                DebugLog.Instance.Log($"    Added a group of {units.Length} unit(s) ({string.Join(", ", Units)}) with ID #{GroupID} at {Coordinates.ToString("F0")}.");
            }

            CheckAbsolueMaxUnitCount();
        }
Ejemplo n.º 5
0
        public async Task <IActionResult> Put(int id, Coalition coalition)
        {
            if (id != coalition.Id)
            {
                return(BadRequest());
            }

            _context.Entry(coalition).State = EntityState.Modified;

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (await CoalitionExists(id))
                {
                    throw;
                }
                else
                {
                    return(NotFound());
                }
            }

            return(NoContent());
        }
Ejemplo n.º 6
0
        internal Tuple <DBEntryAirbase, List <int>, List <Coordinates> > GetAirbaseAndParking(
            MissionTemplateRecord template, Coordinates coordinates,
            int unitCount, Coalition coalition, UnitFamily unitFamily)
        {
            var targetAirbaseOptions =
                (from DBEntryAirbase airbaseDB in SituationDB.GetAirbases(template.OptionsMission.Contains("InvertCountriesCoalitions"))
                 where airbaseDB.Coalition == coalition && ValidateAirfieldParking(AirbaseParkingSpots[airbaseDB.DCSID], unitFamily, unitCount) && ValidateAirfieldRunway(airbaseDB, unitFamily)
                 select airbaseDB).OrderBy(x => x.Coordinates.GetDistanceFrom(coordinates));

            if (targetAirbaseOptions.Count() == 0)
            {
                throw new BriefingRoomException("No airbase found for aircraft.");
            }

            var targetAirbase              = targetAirbaseOptions.First();
            var objectiveCoordinates       = targetAirbase.Coordinates;
            var airbaseID                  = targetAirbase.DCSID;
            var parkingSpotIDsList         = new List <int>();
            var parkingSpotCoordinatesList = new List <Coordinates>();
            var parkingSpots               = GetFreeParkingSpots(airbaseID, unitCount, unitFamily);

            parkingSpotIDsList         = parkingSpots.Select(x => x.DCSID).ToList();
            parkingSpotCoordinatesList = parkingSpots.Select(x => x.Coordinates).ToList();

            return(Tuple.Create(targetAirbase, parkingSpotIDsList, parkingSpotCoordinatesList));
        }
Ejemplo n.º 7
0
        /// <summary>
        /// Sets the coalition to which the various airbases on the theater belong.
        /// </summary>
        /// <param name="mission">Mission for which airbase coalitions must be set</param>
        /// <param name="theaterAirbasesCoalitions">Airbase coalition setting</param>
        /// <param name="theaterDB">Theater database entry</param>
        public void SetupAirbasesCoalitions(DCSMission mission, CountryCoalition theaterAirbasesCoalitions, DBEntryTheater theaterDB)
        {
            mission.AirbasesCoalition.Clear();
            foreach (DBEntryTheaterAirbase ab in theaterDB.Airbases)
            {
                // Airbase ID already exists in the mission
                if (mission.AirbasesCoalition.ContainsKey(ab.DCSID))
                {
                    continue;
                }

                // Airbase is the player starting airbase, always set it to the player coalition
                if (ab.DCSID == mission.InitialAirbaseID)
                {
                    mission.AirbasesCoalition.Add(ab.DCSID, mission.CoalitionPlayer);
                    continue;
                }

                // Other airbases are assigned to a coalition according to the theater and the template settings
                Coalition airbaseCoalition = ab.Coalition;
                switch (theaterAirbasesCoalitions)
                {
                case CountryCoalition.AllBlue: airbaseCoalition = Coalition.Blue; break;

                case CountryCoalition.AllRed: airbaseCoalition = Coalition.Red; break;

                case CountryCoalition.Inverted: airbaseCoalition = (Coalition)(1 - (int)ab.Coalition); break;
                }

                mission.AirbasesCoalition.Add(ab.DCSID, airbaseCoalition);
            }
        }
Ejemplo n.º 8
0
        public void CoalitionMaxTest()
        {
            Coalition     c  = new Coalition(5);
            ValueFunction vf = new ValueFunction("");

            int[]  materials = new int[5];
            double max = 0, res = 0;

            materials[0] = 1;
            materials[1] = 5;
            materials[2] = 3;
            materials[3] = 8;
            materials[4] = 4;
            Player p1 = new Player(vf, materials);

            c.addPlayer(p1);
            p1.Materials = materials;

            foreach (var i in materials)
            {
                if (i > max)
                {
                    max = i;
                }

                if (i > c.getMaximumValue())
                {
                    res = i;
                }
            }

            Assert.AreEqual(max, res);
        }
 private void lbEllectionParties_SelectedIndexChanged(object sender, EventArgs e)
 {
     if (lbCoalition.SelectedItem != null)
     {
         Coalition coalition = (Coalition)lbCoalition.SelectedItem;
         lbCoalitionParties.DataSource = facade.GetPartiesFromCoalition(coalition.ID);
     }
 }
Ejemplo n.º 10
0
 public OverviewForm(Coalition coalition)
 {
     _connector     = new SQLServerConnector();
     _coalitionRepo = new CoalitionRepository(_connector);
     Coalition      = coalition;
     GetPrimeMinister(coalition);
     InitializeComponent();
 }
Ejemplo n.º 11
0
 internal static string GetTemplateCoalition(MissionTemplateRecord template, Coalition coalition)
 {
     if (coalition == Coalition.Red)
     {
         return(template.ContextCoalitionRed);
     }
     return(template.ContextCoalitionBlue);
 }
Ejemplo n.º 12
0
        public async Task <ActionResult <Coalition> > Post(Coalition coalition)
        {
            await _context.Coalitions.AddAsync(coalition);

            await _context.SaveChangesAsync();

            return(CreatedAtAction(nameof(Get), new { id = coalition.Id }, coalition));
        }
 /// <summary>
 /// "Shortcut" method to get <see cref="ContextCoalitionBlue"/> or <see cref="ContextCoalitionRed"/> by using a <see cref="Coalition"/> parameter.
 /// </summary>
 /// <param name="coalition">Color of the coalition to return</param>
 /// <returns><see cref="ContextCoalitionBlue"/> or <see cref="ContextCoalitionRed"/></returns>
 public string GetCoalition(Coalition coalition)
 {
     if (coalition == Coalition.Red)
     {
         return(ContextCoalitionRed);
     }
     return(ContextCoalitionBlue);
 }
Ejemplo n.º 14
0
        public bool EditCoalition(Coalition coalition)
        {
            string query = @"UPDATE [Coalitie] SET [Premier] = '@premier', [Naam] = '@naam', [Uitslag_ID] = @id";

            query = query.Replace("@premier", coalition.Premier)
                    .Replace("@naam", coalition.Name)
                    .Replace("@id", coalition.result.ID.ToString());
            return(DatabaseConnection.Delete(query));
        }
        /// <summary>
        /// Returns an unique callsign for an aircraft group.
        /// </summary>
        /// <param name="csFamily">The type of aircraft (AWACS, tanker, fighter...)</param>
        /// <param name="natoCallsign">Should this callsign be in the NATO format (true) or the Russian format (false)</param>
        /// <returns></returns>
        public MGCallsign GetCallsign(CallsignFamily csFamily, Coalition coalition)
        {
            if (CoalitionUsesNATOCallsigns[(int)coalition])
            {
                return(GetNATOCallsign(csFamily));
            }

            return(GetRussianCallsign());
        }
Ejemplo n.º 16
0
        public int AddCoalition(Coalition coalition)
        {
            string query = @"INSERT INTO [Coalitie]([Premier], [Naam], [Uitslag_ID]) VALUES('@premier', '@naam', @id)";

            query = query.Replace("@premier", coalition.Premier)
                    .Replace("@naam", coalition.Name)
                    .Replace("@id", coalition.result.ID.ToString());
            return(DatabaseConnection.Create(query));
        }
Ejemplo n.º 17
0
        private void btnLoadCoalition_Click(object sender, EventArgs e)
        {
            Coalition coalition = (Coalition)cbCoaltion.SelectedItem;

            lbCoaltionParties.Items.Clear();
            foreach (ElectionResult party in coalition.Parties)
            {
                lbCoaltionParties.Items.Add(party);
            }
        }
 private void btnAddtoCoalition_Click(object sender, EventArgs e)
 {
     if (lbEllectionParties.SelectedItem != null)
     {
         Party     party     = (Party)lbEllectionParties.SelectedItem;
         Coalition coalition = (Coalition)lbCoalition.SelectedItem;
         facade.AddPartytoCoalation(party, coalition);
         lbCoalitionParties.DataSource = facade.GetPartiesFromCoalition(coalition.ID);
     }
 }
Ejemplo n.º 19
0
        public string PrintParties(Coalition coalition)
        {
            string print = "";

            foreach (Party p in coalition.CoalitionParties)
            {
                print = @print + Environment.NewLine + @p.Name + @"      " + @p.Seats + @"        " + @p.PartyLeader;
            }
            return(print);
        }
Ejemplo n.º 20
0
        private string MakeUnitsLua(DCSMission missHQ, Coalition coalition)
        {
            string allUnitsLua = HQTools.ReadIncludeLuaFile("Mission\\CoalitionUnits.lua");

            foreach (UnitCategory uc in Enum.GetValues(typeof(UnitCategory)))
            {
                HQTools.ReplaceKey(ref allUnitsLua, uc.ToString(), MakeUnitsCategoryLua(missHQ, coalition, uc));
            }

            return(allUnitsLua);
        }
Ejemplo n.º 21
0
        private string MakeCountryList(DCSMission missionHQ, Coalition coalition)
        {
            string countryTableLua = "";

            for (int i = 0; i < missionHQ.Countries[(int)coalition].Length; i++)
            {
                countryTableLua += $"[{i + 1}] = {(int)missionHQ.Countries[(int)coalition][i]},\r\n";
            }

            return(countryTableLua);
        }
Ejemplo n.º 22
0
        internal UnitCallsign GetCallsign(UnitFamily unitFamily, Coalition coalition, Side side, bool isUsingSkynet)
        {
            UnitCallsignFamily callsignFamily = GetCallsignFamilyFromUnitFamily(unitFamily);

            if (CoalitionsDB[(int)coalition].NATOCallsigns)
            {
                return(GetNATOCallsign(callsignFamily, unitFamily, side, isUsingSkynet));
            }

            return(GetRussianCallsign(unitFamily, side, isUsingSkynet));
        }
        /// <summary>
        /// Returns an unique callsign for an aircraft group.
        /// </summary>
        /// <param name="unitFamily">The unit family</param>
        /// <param name="natoCallsign">Should this callsign be in the NATO format (true) or the Russian format (false)</param>
        /// <returns></returns>
        public UnitCallsign GetCallsign(UnitFamily unitFamily, Coalition coalition)
        {
            UnitCallsignFamily callsignFamily = GetCallsignFamilyFromUnitFamily(unitFamily);

            if (CoalitionsDB[(int)coalition].NATOCallsigns)
            {
                return(GetNATOCallsign(callsignFamily));
            }

            return(GetRussianCallsign());
        }
Ejemplo n.º 24
0
 internal void SetAirbase(int airbaseID, Coalition airbaseCoalition)
 {
     if (Airbases.ContainsKey(airbaseID))
     {
         Airbases[airbaseID] = airbaseCoalition;
     }
     else
     {
         Airbases.Add(airbaseID, airbaseCoalition);
     }
 }
Ejemplo n.º 25
0
 public int GetCoalitionStrength(Territory t, Coalition coalition)
 {
     if (Strengths.Count == 0)
     {
         throw new Exception("Must call Init first");
     }
     if (!Strengths.ContainsKey(t))
     {
         return(0);
     }
     return(Strengths[t].Where(kvp => coalition.IsMember(kvp.Key)).Sum(kvp => kvp.Value));
 }
Ejemplo n.º 26
0
        internal static Coalition?GetSpawnPointCoalition(MissionTemplateRecord template, Side side, bool forceSide = false)
        {
            // No countries spawning restriction
            if (template.OptionsMission.Contains("SpawnAnywhere") && !forceSide)
            {
                return(null);
            }

            Coalition coalition = side == Side.Ally ? template.ContextPlayerCoalition : template.ContextPlayerCoalition.GetEnemy();

            return(coalition);
        }
Ejemplo n.º 27
0
        private bool CheckFilter(Coalition coalition)
        {
            if (hasApplyFilter[0])
            {
                switch (coalition.Grade)
                {
                case 1:
                    if (!filterGrade[0])
                    {
                        return(true);
                    }
                    break;

                case 2:
                    if (!filterGrade[1])
                    {
                        return(true);
                    }
                    break;

                case 3:
                    if (!filterGrade[2])
                    {
                        return(true);
                    }
                    break;
                }
            }

            if (hasApplyFilter[1])
            {
                string[] typeIndex = { "LightArmor", "HeavyArmor", "Machine", "Doll", "Remote", "CloseIn" };
                bool     isPass    = false;

                for (int i = 0; i < filterType.Length; ++i)
                {
                    if (filterType[i] && coalition.TypeCode.Contains(typeIndex[i]))
                    {
                        isPass = true;

                        break;
                    }
                }

                if (!isPass)
                {
                    return(true);
                }
            }

            return(false);
        }
Ejemplo n.º 28
0
    private void ProcessLogLine(string line)
    {
        Match m = RE_SPAWN.Match(line);

        if (m.Success)
        {
            string    name       = m.Groups["name"].Value;
            string    country_id = m.Groups["country_id"].Value;
            Coalition coalition  = CoalitionFor(country_id);
            playerCoalitions[name] = coalition;
            Console.WriteLine("Set player {0} to coalition {1} ", name, coalition);
        }
    }
Ejemplo n.º 29
0
        public static Coalition GetOpposingCoalition(this Coalition coalition)
        {
            switch (coalition)
            {
            case Coalition.Redfor:
                return(Coalition.Bluefor);

            case Coalition.Bluefor:
                return(Coalition.Redfor);

            default:
                throw new ArgumentException($"Cannot determine opposing coalition for {coalition}");
            }
        }
Ejemplo n.º 30
0
        /// <summary>
        /// Picks a starting airbase for the player(s)
        /// </summary>
        /// <param name="mission">Mission for which the starting airbase must be set</param>
        /// <param name="template">Mission template to use</param>
        /// <param name="theaterDB">Theater database entry</param>
        /// <param name="objectiveDB">Objective database entry</param>
        /// <returns>Information about the starting airbase</returns>
        public DBEntryTheaterAirbase SelectStartingAirbase(DCSMission mission, MissionTemplate template, DBEntryTheater theaterDB, DBEntryObjective objectiveDB)
        {
            List <DBEntryTheaterAirbase[]> airbasesList = new List <DBEntryTheaterAirbase[]>();

            // Select all airbases with enough parking spots
            int requiredParkingSpots = template.GetMissionPackageRequiredParkingSpots();

            airbasesList.Add((from DBEntryTheaterAirbase ab in theaterDB.Airbases where ab.ParkingSpots.Length >= requiredParkingSpots select ab).ToArray());

            // Select all airbases belonging to the proper coalition (unless all airbase belong to the same coalition)
            if ((template.TheaterRegionsCoalitions == CountryCoalition.Default) || (template.TheaterRegionsCoalitions == CountryCoalition.Inverted))
            {
                Coalition requiredCoalition = template.TheaterRegionsCoalitions == CountryCoalition.Inverted ? mission.CoalitionEnemy : mission.CoalitionPlayer;
                airbasesList.Add((from DBEntryTheaterAirbase ab in airbasesList.Last() where ab.Coalition == requiredCoalition select ab).ToArray());
            }

            // If mission must start near water, or some player start on a carrier, select all airbases near water
            if (objectiveDB.Flags.HasFlag(DBEntryObjectiveFlags.MustStartNearWater) || !string.IsNullOrEmpty(template.PlayerCarrier))
            {
                airbasesList.Add((from DBEntryTheaterAirbase ab in airbasesList.Last() where ab.Flags.HasFlag(DBEntryTheaterAirbaseFlag.NearWater) select ab).ToArray());
            }

            // If a particular airbase name has been specified and an airbase with this name exists, pick it
            if (!string.IsNullOrEmpty(template.TheaterStartingAirbase))
            {
                string airbaseName = template.TheaterStartingAirbase.Trim();
                if (airbaseName.Contains(","))
                {
                    airbaseName = airbaseName.Substring(airbaseName.IndexOf(',')).Trim(' ', ',');
                }
                airbasesList.Add((from DBEntryTheaterAirbase airbase in theaterDB.Airbases where airbase.Name == airbaseName select airbase).ToArray());

                if (airbasesList.Last().Length == 0)
                {
                    DebugLog.Instance.WriteLine($"Airbase \"{airbaseName}\" not found or airbase doesn't have enough parking spots. Selecting a random airbase instead.", 1, DebugLogMessageErrorLevel.Warning);
                }
            }

            // Check for valid airbases in all list, starting from the last one (with the most criteria filtered, and go back to the previous ones
            // as long as no airbase is found.
            for (int i = airbasesList.Count - 1; i >= 0; i--)
            {
                if (airbasesList[i].Length > 0)
                {
                    return(Toolbox.RandomFrom(airbasesList[i]));
                }
            }

            throw new Exception($"No airbase found with {requiredParkingSpots} parking spots, cannot spawn all player aircraft.");
        }