Beispiel #1
0
        /// <summary>
        /// Действия при добавлении нового игрока
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Players_AddedPlayer(object sender, BaseObjects.BaseComponents.AddedPlayerEventArgs e)
        {
            IFootballPlayer pl   = _players[e.KeyNamePLayer];
            PlayerViewModel plVM = new PlayerViewModel(pl, _players.Editor, _playerEditor);

            _playersVM.AddPlayer(plVM);
        }
        /// <summary>
        /// Полное редактирование игрока с сохранением
        /// </summary>
        /// <param name="editedPl"></param>
        /// <param name="pl"></param>
        private void FullPLayerEditing(IFootballPlayer editedPl, IFootballPlayer pl)
        {
            FootballPlayerCalculator calculator = new FootballPlayerCalculator();

            (pl as FootballPlayer).CountGames       += editedPl.CountGames;
            (pl as FootballPlayer).Rating            = calculator.CalculationRating(pl, editedPl.Rating);
            (pl as FootballPlayer).BasicPlayPosition = editedPl.BasicPlayPosition;
            (pl as FootballPlayer).Name = editedPl.Name;


            for (int i = 0; i < pl.ParameterPlayerList.Count; i++)
            {
                for (byte j = 0; j < pl.ParameterPlayerList[i].SubParameterList.Count; j++)
                {
                    SubParameterPlayer  subParamPL      = (pl.ParameterPlayerList[i].SubParameterList[j] as SubParameterPlayer);
                    ISubParameterPlayer subParamEditePl = editedPl.ParameterPlayerList[i].SubParameterList[j];

                    subParamPL.Failed       += subParamEditePl.Failed;
                    subParamPL.SuccessFully += subParamEditePl.SuccessFully;
                }
            }

            calculator.CalculationEfiiciencyParameters(pl);
            (pl as FootballPlayer).BasicPlayPositionEff = calculator.CalculationEfiiciencyPosition(pl, pl.BasicPlayPosition);
            _players.Loader.SavePlayer(pl);
            SaveDataForChart(pl, calculator);
        }
        /// <summary>
        /// Закончить редактирование
        /// </summary>
        /// <param name="acceptChange"></param>
        public void EndEditing(bool acceptChanged)
        {
            if (acceptChanged)
            {
                foreach (var pair in _editedPlayers)
                {
                    IFootballPlayer editedPl = pair.Value;

                    if (_players.Present(editedPl.KeyName))
                    {
                        IFootballPlayer pl = _players[editedPl.KeyName];

                        FullPLayerEditing(editedPl, pl);
                        OnAcceptChanges();
                    }
                }
                _editedPlayers.Clear();
                CreateEditableCopy();
            }
            else
            {
                _editedPlayers.Clear();
                CreateEditableCopy();
            }
        }
        /// <summary>
        /// Загрузить игроков. Возвращает массив футболистов
        /// </summary>
        /// <returns></returns>
        public IFootballPlayer[] LoadPlayers()
        {
            List <IFootballPlayer> players = new List <IFootballPlayer>();

            //Костыль
            PlayerEditor plEditor = new PlayerEditor(null);

            if (Directory.Exists(_footballPlayersPath))
            {
                string[] playersPath = Directory.GetFiles(_footballPlayersPath);

                if (playersPath.Length > 0)
                {
                    BinaryFormatter formatter = new BinaryFormatter();

                    foreach (string path in playersPath)
                    {
                        using (FileStream fStream = new FileStream(path, FileMode.Open))
                        {
                            //Костыль
                            IFootballPlayer pl = plEditor.UpdateParametersNames((FootballPlayer)formatter.Deserialize(fStream));

                            players.Add(pl);
                        }
                    }
                }
            }
            return(players.ToArray());
        }
Beispiel #5
0
 public void Clear()
 {
     _player = null;
     _values.Clear();
     _dates    = new List <string>(0);
     _position = 0;
     Update();
 }
        /// <summary>
        /// Костыль для переименовывания параметров. ПЕРЕДЕЛАТЬ!
        /// </summary>
        /// <param name="player"></param>
        /// <returns></returns>
        internal IFootballPlayer UpdateParametersNames(IFootballPlayer player)
        {
            IList <IParameterPlayer> parameters = player.ParameterPlayerList;

            (parameters[2].SubParameterList[1] as SubParameterPlayer).Name = "Заработанные нарушения";
            (parameters[7].SubParameterList[1] as SubParameterPlayer).Name = "Полученные нарушения";

            return(player);
        }
Beispiel #7
0
 /// <summary>
 /// Удалить игрока
 /// </summary>
 /// <param name="player"></param>
 internal void Remove(IFootballPlayer player)
 {
     if (Present(player.KeyName))
     {
         _loader.DeletePlayer(player);
         ChartsDataLoader chartLoader = new ChartsDataLoader();
         chartLoader.RemoveDataForChart(player);
         _playerList.Remove(player.Name.ToLower());
     }
 }
 public void RemoveDataForChart(IFootballPlayer player)
 {
     if (Directory.Exists(_chartsDataPath))
     {
         if (File.Exists(_chartsDataPath + player.KeyName + _fileExtension))
         {
             File.Delete(_chartsDataPath + player.KeyName + _fileExtension);
         }
     }
 }
Beispiel #9
0
        /// <summary>
        /// Расчитать эффектавность игрока на позиции
        /// </summary>
        /// <param name="player"></param>
        /// <param name="position"></param>
        /// <returns></returns>
        public byte CalculationEfiiciencyPosition(IFootballPlayer player, FootballPosition position)
        {
            IList <IParameterPlayer> playerStatsInfoList = player.ParameterPlayerList;

            IdentifyDataStatistics(playerStatsInfoList);

            PlayerProfile plProfile = IdentifyProfile(position);

            return((byte)ExecuteCalculatuon(plProfile));
        }
        /// <summary>
        /// Удалить Футболиста
        /// </summary>
        /// <param name="player"></param>
        public void DeletePlayer(IFootballPlayer player)
        {
            if (player != null)
            {
                string path = _footballPlayersPath + player.KeyName + _fileExtension;

                if (File.Exists(path))
                {
                    File.Delete(path);
                }
            }
        }
Beispiel #11
0
 public void SetPlayer(IFootballPlayer player)
 {
     if (player != null)
     {
         _player   = player;
         _position = (int)player.BasicPlayPosition;
         LoadData();
     }
     else
     {
         Clear();
     }
 }
 /// <summary>
 /// Установить игрока для редактирования
 /// </summary>
 /// <param name="player"></param>
 public void SetPlayer(IFootballPlayer player)
 {
     if (player != null)
     {
         _playerEditor.SetPlayer(player);
         UpdateDSubParams();
         Update();
     }
     else
     {
         Clear();
     }
 }
        /// <summary>
        /// Установить текущую позицию
        /// </summary>
        /// <param name="player"></param>
        /// <param name="position"></param>
        public void EditCurrentPosition(IFootballPlayer player, FootballPosition position)
        {
            (player as FootballPlayer).CurrentPlayPosition = position;

            if (position != FootballPosition.Default)
            {
                //перерасчёт эффективности на текущей позиции
                FootballPlayerCalculator calculator = new FootballPlayerCalculator();
                (player as FootballPlayer).CurrentPlayPositionEff = calculator.CalculationEfiiciencyPosition(player, position);
            }

            _loader.SavePlayer(player);
        }
Beispiel #14
0
 /// <summary>
 /// Добавить футболиста в список
 /// </summary>
 /// <param name="player"></param>
 internal void Add(IFootballPlayer player)
 {
     if (!Present(player.KeyName))
     {
         _loader.SavePlayer(player);
         _playerList.Add(player.KeyName.ToLower().Trim(), player);
         CountActivePlayers++;
         OnAddedPlayer(player.KeyName);
     }
     else
     {
         throw new ArgumentException("Элемент с такам ключевым именем уже существует");
     }
 }
Beispiel #15
0
        /// <summary>
        /// Возвращает копию списка
        /// </summary>
        /// <returns></returns>
        public IFootballPlayerList GetCopy()
        {
            FootballPlayerList listCopy = new FootballPlayerList();

            foreach (var pair in _playerList)
            {
                string          keyName = pair.Key;
                IFootballPlayer player  = pair.Value.GetCopy();

                listCopy._playerList.Add(keyName, player);
                listCopy.CountActivePlayers = listCopy.Count;
            }

            return(listCopy);
        }
Beispiel #16
0
        public IReadOnlyDictionary <string, byte> GetData(IFootballPlayer player, short countDay, FootballPosition positon)
        {
            if (positon != FootballPosition.Default)
            {
                ChartsDataLoader loader = new ChartsDataLoader();

                IDataPlayerForChart allData = loader.LoadDataForChart(player);

                if (allData == null)
                {
                    return(null);
                }

                return(Filter(allData, countDay, positon));
            }

            return(null);
        }
        public IDataPlayerForChart LoadDataForChart(IFootballPlayer player)
        {
            if (Directory.Exists(_chartsDataPath))
            {
                string dataForPlayerPaht = _chartsDataPath + player.KeyName + _fileExtension;

                if (File.Exists(dataForPlayerPaht))
                {
                    BinaryFormatter formatter = new BinaryFormatter();

                    using (FileStream fs = new FileStream(dataForPlayerPaht, FileMode.Open))
                    {
                        return((IDataPlayerForChart)formatter.Deserialize(fs));
                    }
                }
            }
            return(null);
        }
        /// <summary>
        /// Срхранить футболиста
        /// </summary>
        /// <param name="player"></param>
        public void SavePlayer(IFootballPlayer player)
        {
            if (player != null)
            {
                if (!Directory.Exists(_footballPlayersPath))
                {
                    Directory.CreateDirectory(_footballPlayersPath);
                }

                BinaryFormatter formatter = new BinaryFormatter();

                string path = _footballPlayersPath + player.KeyName + _fileExtension;

                using (FileStream fStream = new FileStream(path, FileMode.OpenOrCreate))
                {
                    formatter.Serialize(fStream, (FootballPlayer)player);
                }
            }
            else
            {
                throw new NullReferenceException();
            }
        }
        /// <summary>
        /// Сохранить данные для графика
        /// </summary>
        /// <param name="player"></param>
        /// <param name="calculator"></param>
        private void SaveDataForChart(IFootballPlayer player, IFootballPlayerCalculator calculator)
        {
            Chart.ChartsDataLoader    loader = new Chart.ChartsDataLoader();
            Chart.IDataPlayerForChart data   = loader.LoadDataForChart(player);

            if (data == null)
            {
                data = new Chart.DataPlayerForChart(player.KeyName);
            }
            Dictionary <FootballPosition, byte> newData = new Dictionary <FootballPosition, byte>();

            foreach (FootballPosition fp in Enum.GetValues(typeof(FootballPosition)))
            {
                if (fp != FootballPosition.Default)
                {
                    byte posEff = calculator.CalculationEfiiciencyPosition(player, fp);
                    newData.Add(fp, posEff);
                }
            }

            data.AddData(newData);
            loader.SaveDataForChart(data);
        }
 /// <summary>
 /// Инициализация ViewModel'и игрока
 /// </summary>
 /// <param name="player"></param>
 /// <param name="editor"></param>
 public PlayerViewModel(IFootballPlayer player, IFootballPlayersListEditor editor, IEditorLocationPlayer editorLocPlayer)
 {
     _player          = player;
     _editor          = editor;
     _editorLocPlayer = editorLocPlayer;
 }
 /// <summary>
 /// Установить игрока для редактирования
 /// </summary>
 /// <param name="player"></param>
 public void SetPlayer(IFootballPlayer player)
 {
     _player = (player as FootballPlayer);
     CreateEditableCopy();
 }
 /// <summary>
 /// Установить текущий номер расположения на поле
 /// </summary>
 /// <param name="player"></param>
 /// <param name="numberLocPos"></param>
 public void EditCurrentNumberLocPos(IFootballPlayer player, byte numberLocPos)
 {
     (player as FootballPlayer).PlayBox = numberLocPos;
     _loader.SavePlayer(player);
 }