public SortieMapFilterKey(IMapMasterInfo rpMap, EventMapDifficulty rpDifficulty = EventMapDifficulty.None)
 {
     Map = rpMap;
     IsEventMap = rpDifficulty != EventMapDifficulty.None;
     EventMapDifficulty = rpDifficulty;
 }
Exemplo n.º 2
0
 public SortieMapFilterKey(IMapMasterInfo rpMap, EventMapDifficulty rpDifficulty = EventMapDifficulty.None)
 {
     Map                = rpMap;
     IsEventMap         = rpDifficulty != EventMapDifficulty.None;
     EventMapDifficulty = rpDifficulty;
 }
        public IList<EnemyFleet> GetEncounters(int rpMap, int rpNode, EventMapDifficulty? rpDifficulty)
        {
            var rFleets = new Dictionary<long, EnemyFleet>();

            using (var rCommand = r_Connection.CreateCommand())
            {
                rCommand.CommandText = "SELECT composition.id AS id, group_concat(ship) AS ships, formation FROM fleet JOIN composition ON fleet.composition = composition.id WHERE map = @map AND node = @node AND difficulty = @difficulty GROUP BY id, formation;";
                rCommand.Parameters.AddWithValue("@map", rpMap);
                rCommand.Parameters.AddWithValue("@node", rpNode);
                rCommand.Parameters.AddWithValue("@difficulty", (int?)rpDifficulty ?? 0);

                using (var rReader = rCommand.ExecuteReader())
                    while (rReader.Read())
                    {
                        var rID = Convert.ToInt64(rReader["id"]);

                        EnemyFleet rFleet;
                        if (!rFleets.TryGetValue(rID, out rFleet))
                        {
                            var rShips = (string)rReader["ships"];
                            var rShipIDs = rShips.Split(',').Select(int.Parse);
                            rFleets.Add(rID, rFleet = new EnemyFleet(rShipIDs));
                        }

                        var rFormation = (Formation)Convert.ToInt32(rReader["formation"]);
                        rFleet.Formations.Add(rFormation);
                    }
            }

            return rFleets.Values.ToList();
        }