/// <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()); }
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); }
/// <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); } } }
/// <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); } } }
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); }
/// <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("Элемент с такам ключевым именем уже существует"); } }
/// <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); }
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); }