/// <summary> /// /// </summary> /// <param name="propToValueMap"></param> /// <returns></returns> public static ParticipantIdentity DictionaryToParticipantIdentity(Dictionary <String, Object> propToValueMap) { ParticipantIdentity participantIdentity = new ParticipantIdentity(); #region ParticipantId Property if (propToValueMap.ContainsKey(ParticipantIdentity.PropertyNames.ParticipantId) && propToValueMap[ParticipantIdentity.PropertyNames.ParticipantId] is int) { participantIdentity.ParticipantId = (int)propToValueMap[ParticipantIdentity.PropertyNames.ParticipantId]; } #endregion #region Player Property if (propToValueMap.ContainsKey(ParticipantIdentity.PropertyNames.Player) && propToValueMap[ParticipantIdentity.PropertyNames.Player] is Dictionary <string, object> ) { Dictionary <String, Object> participantIdentityPropValueMap = (Dictionary <String, Object>)propToValueMap[ParticipantIdentity.PropertyNames.Player]; Player player = PlayerConverter.DictionaryToPlayer(participantIdentityPropValueMap); participantIdentity.Player = player; } #endregion return(participantIdentity); }
public IWindow ResolveWindow() { ConnectionProperties connectionProperties = new ConnectionProperties(); RestClient restClient = new RestClient(connectionProperties); ConverterJson converterJson = new ConverterJson(); IUserDao userDao = new UserDao(restClient, converterJson); IPlayerDao playerDao = new PlayerDao(restClient, converterJson); IFactionDao factionDao = new FactionDao(restClient, converterJson); IFactionPlayerDao factionPlayerDao = new FactionPlayerDao(restClient, converterJson); //Mapper mapper = new Mapper(); Converter <Player, PlayerDto> playerConverter = new PlayerConverter(); IUserService userService = new UserService(userDao); IPlayerService playerService = new PlayerService(playerDao); IFactionService factionService = new FactionService(factionDao); IFactionPlayerService factionPlayerService = new FactionPlayerService(factionPlayerDao); IVMFacade vmFacade = new VMFacade(factionPlayerService, factionService, playerService); IPlayerVmFacade playerVmFacade = new PlayerVmFacade(factionPlayerService, factionService, playerService); IFactionVmFacade factionVmFacade = new FactionVmFacade(factionPlayerService, factionService, playerService); IUserViewModel userViewModel = new UserViewModel(vmFacade, userService); IPlayerViewModel playerViewModel = new PlayerViewModel(playerVmFacade); IFactionViewModel factionViewModel = new FactionViewModel(factionVmFacade); IMainViewModel mainViewModel = new MainViewModel(connectionProperties, playerViewModel, factionViewModel, userViewModel); ViewModelFactory vmFactory = new ViewModelFactory(mainViewModel); Window main = new Main(); _window = new MainWindowAdapter(main, vmFactory); //vmFactory.CreatePlayerVM(_window); return(_window); }
public string CheckButtons() { try { foreach (var button in playerButtons) { if (button.ButtonClicked()) { exceptionLabel.Text = ""; shop.SelectedPlayer = party.Players.Find(x => x.Name == button.Text); } } foreach (var button in placeButtons) { if (button.ButtonClicked()) { exceptionLabel.Text = ""; shop.GenerateOffer(button.Text); offerLabel.Text = "Offer:\r\n" + shop.Offer.ToString(1); currentLabel.Text = "Currently wearing:\r\n" + shop.SelectedPlayer.Items[placeButtons.IndexOf(button) + 2]; } } if (okButton.ButtonClicked()) { party = shop.PurcasheItem(); var converter = new PlayerConverter(); var dalParty = converter.GameToDAO(party); shop.SaveChanges(dalParty); moneyLabel.Text = party.Money.ToString(); return("reload"); } if (menuButton.ButtonClicked()) { return("MainMenu"); } return("Shop"); } catch (Exception ex) { exceptionLabel.Text = ex.Message; return("Shop"); } }
private void createParty() { try { if (party.Players.Count == 4) { dao.Number = selectedParty; var converter = new PlayerConverter(); var dalParty = converter.GameToDAO(party); dao.Update(dalParty); } else { throw new Exception("Party not yet full"); } } catch (Exception ex) { infoLabel.Text = ex.Message; } }
/// <summary> /// Updates a player in the PES Game database files. /// </summary> /// <param name="player"></param> /// <returns></returns> public async Task <List <Player> > UpdatePlayersAsync(List <Player> players, string path) { // ToDo: Later, use updateRequests and save the changes in a kind of BIO. // ToDo: Maybe also update team assignments here? List <PESPlayer> pesPlayers = await PlayerConverter.ConvertBackMany(players); MemoryStream memory = await this.CreateMemoryStreamAsync(path + playerPath); BinaryWriter writer = new BinaryWriter(memory); foreach (PESPlayer pesPlayer in pesPlayers) { writer.BaseStream.Position = pesPlayer.Position; writer.Write(pesPlayer.Id); // Update names writer.BaseStream.Position = pesPlayer.Position + 90; writer.Write(pesPlayer.ShirtName.ToCharArray()); while (writer.BaseStream.Position < pesPlayer.Position + 136) { writer.Write('\0'); } writer.BaseStream.Position = pesPlayer.Position + 136; writer.Write(pesPlayer.Name.ToCharArray()); while (writer.BaseStream.Position < pesPlayer.Position + 182) { writer.Write('\0'); } } // Create byte array from altered memory stream. byte[] ss13 = this.CreateWriteableBytes(memory.ToArray()); await File.WriteAllBytesAsync(path + playerPath, ss13); return(players); }
/// <summary> /// Exports all players from the games database. /// </summary> /// <param name="path"></param> /// <returns></returns> public async Task <List <Player> > ReadPlayersAsync(string path) { MemoryStream memory = await this.CreateMemoryStreamAsync(path + playerPath); var reader = new BinaryReader(memory); int index; int length = Convert.ToInt32((reader.BaseStream.Length - 4) / playerBlock); List <PESPlayer> tempList = new List <PESPlayer>(); for (int i = 0; i < length; i++) { index = (i * playerBlock) + 4; reader.BaseStream.Position = index; // Read the 11 4-Byte uint values which contain all the player data. uint value1 = reader.ReadUInt32(); uint value2 = reader.ReadUInt32(); uint value3 = reader.ReadUInt32(); uint value4 = reader.ReadUInt32(); uint value5 = reader.ReadUInt32(); uint value6 = reader.ReadUInt32(); uint value7 = reader.ReadUInt32(); uint value8 = reader.ReadUInt32(); uint value9 = reader.ReadUInt32(); uint value10 = reader.ReadUInt32(); uint value11 = reader.ReadUInt32(); // Read names reader.BaseStream.Position = index + 44; string japName = System.Text.Encoding.UTF8.GetString(reader.ReadBytes(46)).TrimEnd('\0'); reader.BaseStream.Position = index + 90; string shirtName = System.Text.Encoding.UTF8.GetString(reader.ReadBytes(46)).TrimEnd('\0'); reader.BaseStream.Position = index + 136; string name = System.Text.Encoding.UTF8.GetString(reader.ReadBytes(46)).TrimEnd('\0'); // Fill all the data into the PESPlayer object. PESPlayer temp = new PESPlayer() { Position = index, Id = value1, Name = name, ShirtName = shirtName, SetPieces = (value2 >> 26) + 40, Height = ((value2 << 6) >> 24) + 100, Nationality = (value2 << 14) >> 23, Nationality2 = (value2 << 23) >> 23, Clearing = (value3 >> 26) + 40, LowPass = ((value3 << 2) >> 26) + 40, LeftBack = value4 >> 30, Coverage = ((value4 << 2) >> 26) + 40, Jump = ((value4 << 8) >> 26) + 40, Header = ((value4 << 14) >> 26) + 40, BallControl = ((value4 << 20) >> 26) + 40, DefenseProwess = ((value4 << 26) >> 26) + 40, GK = value5 >> 30, Curve = ((value5 << 2) >> 26) + 40, Goalkeeping = ((value5 << 8) >> 26) + 40, Reflexes = ((value5 << 14) >> 26) + 40, BallWinning = ((value5 << 20) >> 26) + 40, Speed = ((value5 << 26) >> 26) + 40, Penalty = (value6 >> 30) + 1, Catching = ((value6 << 2) >> 26) + 40, KickingPower = ((value6 << 8) >> 26) + 40, Dribbling = ((value6 << 14) >> 26) + 40, ExplosivePower = ((value6 << 20) >> 26) + 40, Stamina = ((value6 << 26) >> 26) + 40, Attitude = (value7 >> 30), LoftedPass = ((value7 << 2) >> 26) + 40, Finishing = ((value7 << 8) >> 26) + 40, PhysicalContact = ((value7 << 14) >> 26) + 40, BodyControl = ((value7 << 20) >> 26) + 40, AttackProwess = ((value7 << 20) >> 26) + 40, }; tempList.Add(temp); } return(await PlayerConverter.ConvertMany(tempList)); }
private void DoLoadMatchData(object ids) { try { sync.Execute(() => pictureBox1.Visible = true); ShowStatus("Загрузка данных матча...", 0); Web.GetTeamColorsKind(); var idm = Int32.Parse(ids.ToString()); SizeF sizef; game = Web.GetMatchInfo(idm, out sizef); if (game == null) { throw new Exception("Нет матча или выбран неверный тип игры!"); } if (game.Match.Team1 == null || game.Match.Team1.Id == 0) { throw new Exception("Нет команды 1"); } if (game.Match.Team2 == null || game.Match.Team2.Id == 0) { throw new Exception("Нет команды 2"); } if (!sizef.IsEmpty) { game.FieldSize = sizef; } ShowStatus("Загрузка игроков команды " + game.Match.Team2.ToString() + "...", 0); Web.GetPlayers(game.Match.Team2); if (game.Match.Team2.Players.Count == 0) { throw new Exception("Нет состава команды " + game.Match.Team2); } ShowStatus("Загрузка игроков команды " + game.Match.Team1.ToString() + "...", 0); Web.GetPlayers(game.Match.Team1); if (game.Match.Team1.Players.Count == 0) { throw new Exception("Нет состава команды " + game.Match.Team1); } ShowStatus("Загрузка параметров матча...", 0); game.Match.Team1.FinePlaces.Clear(); game.Match.Team1.FinePlayers.Clear(); game.Match.Team2.FinePlaces.Clear(); game.Match.Team2.FinePlayers.Clear(); Web.GetTeamColors(game.Match.Team1); Web.GetTeamColors(game.Match.Team2); var txt = game.Match.Team1.Name + " - " + game.Match.Team2.Name; game.Markers.Clear(); sync.Execute(() => { label1.Text = game.Match.Tournament + " " + game.Match.Date.ToShortDateString() + " " + game.Match.Date.ToLongTimeString(); textBox4.Text = txt; }); ShowStatus("Загрузка маркеров...", 0); var lstSrv = Web.GetMarkers(game, game.Match.Id); List <Marker> lstLoc = MarkerList.LoadFromFile(game, game.Match.Id); foreach (Game.Marker mk in lstLoc) { mk.game = game; } foreach (var mk in lstLoc.Where(o => !o.FlagDel).OrderBy(o => o.Half.Index).ThenBy(o => o.TimeVideo)) { var period = mk.Half.Index; var half = game.HalfList.FirstOrDefault(o => o.Index == period); mk.Half = half; } game.Union(lstLoc, lstSrv); foreach (Game.Marker mk in game.Markers) { mk.row = null; } ShowStatus("Синхронизация...", 0); var pl = game.Match.Team1.Players.Concat(game.Match.Team2.Players).ToList <Player>(); //Восстановление и контроль составов foreach (var mk in game.Markers.Where(o => o.ActionId == 16)) { Team tm = null; try { tm = GetTeam(mk.team1_id, mk); mk.Team1 = tm; } catch (TeamMarkerException ex) { mk.FlagDel = true; ShowStatus(ex.Message, FormShowStatusCode.Error); Thread.Sleep(100); continue; } if (pl.Exists(o => o.Id == mk.player1_id)) { var p = pl.First(o => o.Id == mk.player1_id); if (mk is Game.Marker) { var mkg = (Game.Marker)mk; if (mkg.Num > 0) { p.Number = mkg.Num; } } var tm2 = game.Match.Team1 == tm ? game.Match.Team2 : game.Match.Team1; if (tm2.Players.Exists(o => o.Id == p.Id)) { throw new Exception(String.Format((string)"Ошибка в маркере расстановки {0}. Игрок {1} был в составе {2}, а теперь указан в команде соперника", (object)mk.Id, (object)p, tm2)); } p.Team = tm; mk.Player1 = p; if (!tm.Players.Exists(o => o.Id == p.Id)) { tm.Players.Add(p); } } else { if (mk.player1_id <= 0) { continue; } var p = Web.GetPlayer(mk.player1_id); if (p != null) { p.Team = tm; mk.Player1 = p; if (!tm.Players.Exists(o => o.Id == p.Id)) { tm.Players.Add(p); } if (!pl.Exists(o => o.Id == p.Id)) { pl.Add(p); } } else { throw new Exception("Критическая ошибка: не могу загрузить игрока ID=" + mk.player1_id + " из состава команды " + tm.Name); } } } game.Match.Team1.Players.AddRange( pl.Where(o => o.Team != null && o.Team.Id == game.Match.Team1.Id && !game.Match.Team1.Players.Exists(o1 => o1.Id == o.Id))); game.Match.Team2.Players.AddRange( pl.Where(o => o.Team != null && o.Team.Id == game.Match.Team2.Id && !game.Match.Team2.Players.Exists(o1 => o1.Id == o.Id))); var errmklist = new List <Marker>(); foreach (var mk in game.Markers.Where(o => o.ActionId != 16)) { if (mk.player1_id > 0) { var pla = pl.FirstOrDefault(o => o.Id == mk.player1_id); if (pla == null) { try { mk.Player1 = Web.GetPlayer(mk.player1_id); } catch { mk.FlagDel = true; errmklist.Add(mk); } } else { mk.Player1 = pla; } } else if (mk.team1_id > 0) { try { mk.Team1 = GetTeam(mk.team1_id, mk); } catch (Exception ex) { } } if (mk.player2_id > 0) { var opp = pl.FirstOrDefault(o => o.Id == mk.player2_id); if (opp == null) { try { mk.Player2 = Web.GetPlayer(mk.player2_id);; } catch { mk.FlagDel = true; errmklist.Add(mk); } } else { mk.Player2 = opp; } } else if (mk.team2_id > 0) { try { mk.Team2 = GetTeam(mk.team2_id, mk); } catch (Exception ex) { } } } game.RefreshOvertimes(); sync.Execute(() => { label1.Text = game.Match.Tournament + " " + game.Match.Date.ToShortDateString() + " " + game.Match.Date.ToLongTimeString(); textBox4.Text = txt; }); TeamDataRestore(game.Match.Team1); TeamDataRestore(game.Match.Team2); PlayerConverter.RefreshData(game.Match); TeamConverter.RefreshData(game.Match); sync.Execute(() => { checkBox1.Checked = !game.Match.Team1.Tactics[1].IsValid; checkBox2.Checked = !game.Match.Team1.Tactics[1].IsValid; comboBox1.Items.Clear(); foreach (var tc in game.Match.Team1.TeamColorsKind.Values) { comboBox1.Items.Add(tc); if (tc.Kind == game.Match.Team1.Color.Kind) { comboBox1.SelectedItem = tc; } } comboBox2.Items.Clear(); foreach (var tc in game.Match.Team2.TeamColorsKind.Values) { comboBox2.Items.Add(tc); if (tc.Kind == game.Match.Team2.Color.Kind) { comboBox2.SelectedItem = tc; } } changed_colors = false; }); if (errmklist.Count > 0) { var errmks = String.Empty; for (var i = 0; i < errmklist.Count; i++) { if (i <= 2) { if (i > 0) { errmks += ","; } errmks += errmklist[i].Id; if (i == 2) { errmks += "..."; } } } ShowStatus(String.Format("Ошибочно указаны некоторые игроки. Эти маркеры {0} помечены на удаление.", errmks), FormShowStatusCode.Error); } else { } game.RecalcActualTime(game.Markers, null); sync.Execute(() => hockeyField1.Game = game); ShowStatus("Готово", 0); } catch (Exception ex) { game = null; ShowStatus(ex.Message, FormShowStatusCode.Error); HockeyGui.InvalidateRect(); } finally { sync.Execute(() => { HockeyGui.InvalidateRect(); pictureBox1.Visible = false; }); loading = false; UpdateUI(); } }