Exemplo n.º 1
0
    /// <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);
    }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
 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");
     }
 }
Exemplo n.º 4
0
 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;
     }
 }
Exemplo n.º 5
0
        /// <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);
        }
Exemplo n.º 6
0
        /// <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));
        }
Exemplo n.º 7
0
        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();
            }
        }