示例#1
0
        // Загрузка 1 игры в список
        void Load1Game(ListViewItem lvi, System.Data.SqlServerCe.SqlCeDataReader sqlReader)
        {
            bool update = (lvi != null); //обновить существующий lvi или добавить новый?

            // Комментарий
            String str = "";

            if (!sqlReader.IsDBNull(sqlReader.GetOrdinal("Comment")))
            {
                str = sqlReader.GetString(sqlReader.GetOrdinal("Comment")).Trim();
            }
            if (update)
            {
                lvi.Text = str;
            }
            else
            {
                lvi = m_listview_Games.Items.Add(new ListViewItem(str));
            }

            // Дата
            str = "";
            if (!sqlReader.IsDBNull(sqlReader.GetOrdinal("StartDate")))
            {
                DateTime dt = sqlReader.GetDateTime(sqlReader.GetOrdinal("StartDate"));
                str = dt.ToString("dd.MM.yyyy HH") + "ч";
            }
            if (update)
            {
                lvi.SubItems[1].Text = str;
            }
            else
            {
                lvi.SubItems.Add(str);
            }

            // id (тэг)
            if (!update)
            {
                lvi.Tag = sqlReader.GetInt32(sqlReader.GetOrdinal("id"));
            }

            // Тип
            GameType t = (GameType)sqlReader.GetByte(sqlReader.GetOrdinal("Type"));

            if (!update)
            {
                switch (t)
                {
                case GameType.Robber:
                    lvi.SubItems.Add("Робб");
                    break;

                case GameType.Sport:
                    lvi.SubItems.Add("Спорт");
                    break;

                case GameType.Compensat:
                    lvi.SubItems.Add("Комп");
                    break;

                case GameType.SimpleIMP:
                    lvi.SubItems.Add("IMP");
                    break;
                }
            }

            // Строка опций:
            if (!update)
            {
                ArrayOfString arrOptions = new ArrayOfString();
                if (!sqlReader.IsDBNull(sqlReader.GetOrdinal("DealsInMatch")))
                {
                    arrOptions.Add(sqlReader.GetByte(sqlReader.GetOrdinal("DealsInMatch")).ToString() + "x");
                }
                if (!sqlReader.IsDBNull(sqlReader.GetOrdinal("GameOptions")))
                {
                    byte GOptions = sqlReader.GetByte(sqlReader.GetOrdinal("GameOptions"));
                    if (t == GameType.Robber)
                    {
                        bool BonusForOners       = ((GOptions & 1) > 0);
                        bool BonusForWholeRobber = ((GOptions & 2) > 0);
                        arrOptions.Add(BonusForWholeRobber ? "за робб" : "за гейм");
                        if (BonusForOners)
                        {
                            arrOptions.Add("за онеры");
                        }
                    }
                    if (t == GameType.Compensat)
                    {
                        BridgeGameScoring.TypeOfCompensation CompType = (BridgeGameScoring.TypeOfCompensation)(GOptions & 3); //2 bits
                        bool TenCardsIsTwoFits    = ((GOptions & 4) > 0);                                                     //3rd bit
                        bool LessCompFor2Fits23PC = ((GOptions & 8) > 0);                                                     //4th bit
                        switch (CompType)
                        {
                        case BridgeGameScoring.TypeOfCompensation.Chicago:
                            arrOptions.Add("чикаг");
                            break;

                        case BridgeGameScoring.TypeOfCompensation.Europe:
                            arrOptions.Add("европ");
                            if (TenCardsIsTwoFits)
                            {
                                arrOptions.Add("10 за 2");
                            }
                            if (LessCompFor2Fits23PC)
                            {
                                arrOptions.Add("< 23-2");
                            }
                            break;

                        case BridgeGameScoring.TypeOfCompensation.Milton_York:
                            arrOptions.Add("М-У");
                            break;

                        case BridgeGameScoring.TypeOfCompensation.Moscow:
                            arrOptions.Add("моск");
                            break;
                        }
                    }
                }

                str = "";
                if (arrOptions.Count != 0)
                {
                    for (int j = 0; j < arrOptions.Count; j++)
                    {
                        if (j > 0)
                        {
                            str += ", ";
                        }
                        str += arrOptions[j];
                    }
                }
                lvi.SubItems.Add(str);
            }

            // Место
            str = "";
            if (!sqlReader.IsDBNull(sqlReader.GetOrdinal("Place")))
            {
                str = sqlReader.GetString(sqlReader.GetOrdinal("Place")).Trim();
            }
            if (update)
            {
                lvi.SubItems[4].Text = str;
            }
            else
            {
                lvi.SubItems.Add(str);
            }

            // Игроки
            str  = "";
            str += "N: ";
            if (!sqlReader.IsDBNull(sqlReader.GetOrdinal("N")))
            {
                str += sqlReader.GetString(sqlReader.GetOrdinal("N")).Trim();
            }
            str += ", S: ";
            if (!sqlReader.IsDBNull(sqlReader.GetOrdinal("S")))
            {
                str += sqlReader.GetString(sqlReader.GetOrdinal("S")).Trim();
            }
            str += ", E: ";
            if (!sqlReader.IsDBNull(sqlReader.GetOrdinal("E")))
            {
                str += sqlReader.GetString(sqlReader.GetOrdinal("E")).Trim();
            }
            str += ", W: ";
            if (!sqlReader.IsDBNull(sqlReader.GetOrdinal("W")))
            {
                str += sqlReader.GetString(sqlReader.GetOrdinal("W")).Trim();
            }
            if (update)
            {
                lvi.SubItems[5].Text = str;
            }
            else
            {
                lvi.SubItems.Add(str);
            }
        }
示例#2
0
        void LOAD_GAME_SETTINGS___3_Compensat()
        {
            isRobber = false;
            isSplit = false;
            canbeNoContract = true;

            // ОПЦИИ
            GameSettings_Comp_Type = (BridgeGameScoring.TypeOfCompensation)(GameSettings_Options & 3); //2 bits
            GameSettings_Comp_10CardsIs2Fits = ((GameSettings_Options & 4) > 0); //3rd bit
            GameSettings_Comp_LessCompFor2Fits23PC = ((GameSettings_Options & 8) > 0); //4th bit

            // Скрыть ли сдающего в меню?
            if (GameSettings_Comp_Type == BridgeGameScoring.TypeOfCompensation.Europe)
                hide_dealer_in_menu = true;
            else
                hide_dealer_in_menu = false;

            //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! DB !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
            DB_Deals_TableName = "Deals_Sport";
            DB_Deals_ColumnsNames.Add(1, "CardsDistribution");
            DB_Deals_ColumnsNames.Add(3, "Pair");
            DB_Deals_ColumnsNames.Add(4, "Contract");
            DB_Deals_ColumnsNames.Add(5, "Result");
            DB_Deals_ColumnsNames.Add(7, "Figures");
            if (GameSettings_Comp_Type == BridgeGameScoring.TypeOfCompensation.Europe)
            {
                DB_Deals_ColumnsNames.Add(12, "Fits");
                DB_Deals_ColumnsNames.Add(13, "StrongestPair");
            }

            columnsDataClasses = new ArrayOfTypes();
            columnsDataClasses.Add(typeof(IntData));
            columnsDataClasses.Add(typeof(CardsDistribution));
            columnsDataClasses.Add(typeof(ZoneSwitcher));
            columnsDataClasses.Add(typeof(PairSwitcher));
            columnsDataClasses.Add(typeof(Contract));
            columnsDataClasses.Add(typeof(Result));
            columnsDataClasses.Add(typeof(SimpleScore));
            columnsDataClasses.Add(typeof(IntData));
            columnsDataClasses.Add(typeof(SimpleScore));
            columnsDataClasses.Add(typeof(SimpleScore));
            columnsDataClasses.Add(typeof(SimpleScore));
            columnsDataClasses.Add(typeof(QuarterSwitcher));
            if (GameSettings_Comp_Type == BridgeGameScoring.TypeOfCompensation.Europe)
            {
                columnsDataClasses.Add(typeof(FitsSwitcher));
                columnsDataClasses.Add(typeof(BoolData));
            }

            ID_NAMES.Add(0, "NO");
            ID_NAMES.Add(1, "DISTRIBUTION");
            ID_NAMES.Add(2, "ZONE");
            ID_NAMES.Add(3, "PAIR");
            ID_NAMES.Add(4, "CONTRACT");
            ID_NAMES.Add(5, "RESULT");
            ID_NAMES.Add(6, "SCORE");
            ID_NAMES.Add(7, "FIG");
            ID_NAMES.Add(8, "COMPENS");
            ID_NAMES.Add(9, "DIFF");
            ID_NAMES.Add(10, "IMP");
            ID_NAMES.Add(11, "DEALER");
            if (GameSettings_Comp_Type == BridgeGameScoring.TypeOfCompensation.Europe)
            {
                ID_NAMES.Add(12, "FITS");
                ID_NAMES.Add(13, "STRONGEST");
            }

            REFLECT_Functions.Add(3, new FuncInfo[] { new FuncInfo("NoPairIfNoContract", new string[] { "PAIR", "CONTRACT" }) });
            REFLECT_Depends.Add(3, new int[] { 3, 4 });
            REFLECT_Functions.Add(0, new FuncInfo[] { new FuncInfo("IntData_Equal", new string[] { "NO", "MDEAL_NO" }) });
            REFLECT_Constructors.Add(0, new string[] { "true" });
            REFLECT_Depends.Add(0, new int[] { -1 });
            REFLECT_Functions.Add(2, new FuncInfo[] { new FuncInfo("DefineSportZone", new string[] { "ZONE", "LINE_NO__REAL", "MATCH_NO__REAL", "MDEAL_NO", GameSettings_3Sports_ZoneSwims.ToString() }) });
            REFLECT_Depends.Add(2, new int[] { -1 });
            REFLECT_Functions.Add(5, new FuncInfo[] { new FuncInfo("CorrectResultAccordingToContract", new string[] { "RESULT", "CONTRACT", "0" }) });
            REFLECT_Depends.Add(5, new int[] { 4 });
            REFLECT_Constructors.Add(5, new string[] { "CONTRACT" });
            REFLECT_Functions.Add(6, new FuncInfo[] { new FuncInfo("SportScore", new string[] { "SCORE", "PAIR", "ZONE", "CONTRACT", "RESULT" }) });
            REFLECT_Depends.Add(6, new int[] { 2, 3, 4, 5 });

            //fig
            REFLECT_Functions.Add(7, new FuncInfo[] { new FuncInfo("FiguresPoints", new string[] { "FIG", "DISTRIBUTION", "TRUE", /*not use*/ "PAIR" }) });
            REFLECT_Depends.Add(7, new int[] { 7, 1 });
            REFLECT_Constructors.Add(7, new string[] { "true", "0", "true", "40" });

            if (GameSettings_Comp_Type == BridgeGameScoring.TypeOfCompensation.Europe)
            {
                // strongest
                REFLECT_Functions.Add(13, new FuncInfo[] { new FuncInfo("WhoIsStrongest20", new string[] { "STRONGEST", "FIG", "DISTRIBUTION", "LOADING_FROM_DB" }) });
                REFLECT_Depends.Add(13, new int[] { 1, 7 });

                //fits
                REFLECT_Functions.Add(12, new FuncInfo[] { new FuncInfo("FitsPoints", new string[] { "FITS", "DISTRIBUTION", (GameSettings_Comp_10CardsIs2Fits ? "TRUE" : "FALSE") }) });
                REFLECT_Depends.Add(12, new int[] { 12, 1 });
            }

            if (GameSettings_Comp_Type == BridgeGameScoring.TypeOfCompensation.Europe)
            {
                //comp with fits
                REFLECT_Functions.Add(8, new FuncInfo[] { new FuncInfo("GetCompensation_WithFits", new string[] { "COMPENS", "DISTRIBUTION", "FIG", "ZONE", "TRUE", /*not use*/"PAIR", /* ||||| */ "FITS", "STRONGEST", (GameSettings_Comp_10CardsIs2Fits ? "TRUE" : "FALSE"), (GameSettings_Comp_LessCompFor2Fits23PC ? "TRUE" : "FALSE") }) });
                REFLECT_Depends.Add(8, new int[] { 7, 2, 1, 12, 13 });
            }
            else
            {
                //comp
                REFLECT_Functions.Add(8, new FuncInfo[] { new FuncInfo("GetCompensation", new string[] { "COMPENS", "DISTRIBUTION", "FIG", "ZONE", "TRUE", /*not use*/"PAIR", ((int)GameSettings_Comp_Type).ToString() }) });
                REFLECT_Depends.Add(8, new int[] { 7, 2, 1 });
            }
            REFLECT_Functions.Add(9, new FuncInfo[] { new FuncInfo("ScoreSumm", new string[] { "DIFF", "SCORE", "COMPENS" }) });
            REFLECT_Depends.Add(9, new int[] { 6, 8 });
            REFLECT_Functions.Add(10, new FuncInfo[] { new FuncInfo("ConvertToIMPs", new string[] { "IMP", "DIFF" }) });
            REFLECT_Depends.Add(10, new int[] { 9 });
            REFLECT_Functions.Add(11, new FuncInfo[] { new FuncInfo("DefineSportDealer", new string[] { "DEALER", "LINE_NO__REAL", "MATCH_NO__REAL", "MDEAL_NO", "FIRST_DEALER", GameSettings_3Sports_ZoneSwims.ToString() }) });
            REFLECT_Depends.Add(11, new int[] { -1 });

            //new for match:
            REFLECT_Functions.Add((int)CONST.MATCH_TOTAL_SCORE, new FuncInfo[] { new FuncInfo("SetMatchScore", new string[] { "MATCH_TOTAL_SCORE", "MATCH_NO", "10" }), new FuncInfo("TotalScore_MatchMode", new string[] { "MATCH_TOTAL_SCORE", "MATCH_NO__REAL" }) });
            REFLECT_Depends.Add((int)CONST.MATCH_TOTAL_SCORE, new int[] { 10 });
            REFLECT_InsideFunctionsList.Add("SetMatchScore");
            REFLECT_InsideFunctionsList.Add("TotalScore_MatchMode");

            NotNecessaryValues.Add(new int[] { 1 });
            if (GameSettings_Comp_Type == BridgeGameScoring.TypeOfCompensation.Europe)
            {
                NotNecessaryValues.Add(new int[] { 13 }); //!!!!!!!!!!! указать сильную сторону все-таки обязательно, если фигур=20 !!!!!!!!!!!!
            }
            ContractColumns.Add(new int[] { 4 });
            NotNecessaryValues_NOCONTRACT.Add(new ArrayOfInt());
            NotNecessaryValues_NOCONTRACT[0].Add(new int[] { 3 });

            columnsControlsClasses = new ArrayOfTypes();
            columnsControlsClasses.Add(typeof(DealInfoControl));
            if (!hide_dealer_in_menu)
            {
                columnsControlsClasses.Add(typeof(ShowTextControl_Center)); //1...
            }
            columnsControlsClasses.Add(typeof(ShowTextControl));
            columnsControlsClasses.Add(typeof(SwitcherControl_Orange));
            columnsControlsClasses.Add(typeof(ContractSelectControl));
            columnsControlsClasses.Add(typeof(ResultSelectControl));
            columnsControlsClasses.Add(typeof(ShowSimpleScore));
            columnsControlsClasses.Add(typeof(TextBoxInTable)); //6
            if (GameSettings_Comp_Type == BridgeGameScoring.TypeOfCompensation.Europe)
            {
                columnsControlsClasses.Add(typeof(SwitcherControl_Orange)); //7
            }
            columnsControlsClasses.Add(typeof(ShowSimpleScore)); //7-8
            columnsControlsClasses.Add(typeof(ShowSimpleScore)); //8-9
            columnsControlsClasses.Add(typeof(ShowSimpleScore)); //9-10

            arrHeadersNames = new ArrayOfString();
            arrHeadersNames.Add("#");
            if (!hide_dealer_in_menu)
            {
                arrHeadersNames.Add("Сда\nющ.");
            }
            arrHeadersNames.Add("Зона");
            arrHeadersNames.Add("Па\nра");
            arrHeadersNames.Add("Контракт");
            arrHeadersNames.Add("Рез-т");
            arrHeadersNames.Add("Очки");
            arrHeadersNames.Add("Фи\nгур"); //6
            if (GameSettings_Comp_Type == BridgeGameScoring.TypeOfCompensation.Europe)
            {
                arrHeadersNames.Add("Фи\nты"); //7
            }
            arrHeadersNames.Add("Комп."); //7-8
            arrHeadersNames.Add("Раз-\nница"); //8-9
            arrHeadersNames.Add("IMP"); //9-10

            arrHeadersNames_FULL = new ArrayOfString();
            arrHeadersNames_FULL.Add("#");
            if (!hide_dealer_in_menu)
            {
                arrHeadersNames_FULL.Add("Сдающий");
            }
            arrHeadersNames_FULL.Add("Зона");
            arrHeadersNames_FULL.Add("Пара");
            arrHeadersNames_FULL.Add("Контракт");
            arrHeadersNames_FULL.Add("Рез-т");
            arrHeadersNames_FULL.Add("Очки");
            arrHeadersNames_FULL.Add("Фигуры (NS)"); //6
            if (GameSettings_Comp_Type == BridgeGameScoring.TypeOfCompensation.Europe)
            {
                arrHeadersNames_FULL.Add("Фиты"); //7
            }
            arrHeadersNames_FULL.Add("Компенсация"); //7-8
            arrHeadersNames_FULL.Add("Разница"); //8-9
            arrHeadersNames_FULL.Add("IMP"); //9-10

            arrHeadersWidths = new ArrayOfInt();
            arrHeadersWidths.Add(22);
            if (!hide_dealer_in_menu)
            {
                arrHeadersWidths.Add(33);
            }
            arrHeadersWidths.Add(new int[] { 51, 26, 69, 45, 45, 26 });
            if (GameSettings_Comp_Type == BridgeGameScoring.TypeOfCompensation.Europe)
                arrHeadersWidths.Add(25);
            arrHeadersWidths.Add(new int[] { 45, 45, 28 });

            int hidden_dealer_offset = (!hide_dealer_in_menu) ? 1 : 0; //сдвиг индексов на 1 (после #), если сдающего все-таки показывать
            CoVa_Dependences = new ArrayOfArrayOfInt();
            for (int i = 0; i < arrHeadersNames.Count; i++)
                CoVa_Dependences.Add(new ArrayOfInt());
            if (hide_dealer_in_menu)
            {
                CoVa_Dependences[0].Add(new int[] { 0, 1, 11 });
            }
            else
            {
                CoVa_Dependences[0].Add(new int[] { 0, 1 });
                CoVa_Dependences[1].Add(11);
            }
            CoVa_Dependences[1 + hidden_dealer_offset].Add(2);
            CoVa_Dependences[2 + hidden_dealer_offset].Add(3);
            CoVa_Dependences[3 + hidden_dealer_offset].Add(4);
            CoVa_Dependences[4 + hidden_dealer_offset].Add(5);
            CoVa_Dependences[5 + hidden_dealer_offset].Add(new int[] { 6 });  //относительно static
            CoVa_Dependences[6 + hidden_dealer_offset].Add(7);
            if (GameSettings_Comp_Type == BridgeGameScoring.TypeOfCompensation.Europe)
            {
                CoVa_Dependences[7 + hidden_dealer_offset].Add(new int[] { 12 });  // относительно СИЛЬНОЙ пары, так что ПОХУЙ //
                CoVa_Dependences[8 + hidden_dealer_offset].Add(new int[] { 8 });  //относительно static
                CoVa_Dependences[9 + hidden_dealer_offset].Add(new int[] { 9 });  //относительно static
                CoVa_Dependences[10 + hidden_dealer_offset].Add(new int[] { 10 });  //относительно static
            }
            else
            {
                CoVa_Dependences[7 + hidden_dealer_offset].Add(new int[] { 8 });  //относительно static
                CoVa_Dependences[8 + hidden_dealer_offset].Add(new int[] { 9 });  //относительно static
                CoVa_Dependences[9 + hidden_dealer_offset].Add(new int[] { 10 });  //относительно static
            }
        }
示例#3
0
        // create game
        private void menuItem1_Click(object sender, EventArgs e)
        {
            // Первый сдающий
            FirstDealer = Quarters.NotDefinedYet;
            if (radioButton3.Checked)
            {
                FirstDealer = Quarters.N;
            }
            else if (radioButton5.Checked)
            {
                FirstDealer = Quarters.W;
            }
            else if (radioButton6.Checked)
            {
                FirstDealer = Quarters.E;
            }
            else if (radioButton4.Checked)
            {
                FirstDealer = Quarters.S;
            }

            // Кол-во сдач в каждом матче
            DealsCount = (byte)(int)combo1.Items[combo1.SelectedIndex];

            // Плавает зона?
            ZoneSwims = radioButton2.Checked;

            // Опции
            BridgeGameScoring.TypeOfCompensation CompType = BridgeGameScoring.TypeOfCompensation.Moscow;
            if (radioButton8.Checked)
            {
                CompType = BridgeGameScoring.TypeOfCompensation.Moscow;
            }
            else if (radioButton1.Checked)
            {
                CompType = BridgeGameScoring.TypeOfCompensation.Europe;
            }
            else if (radioButton9.Checked)
            {
                CompType = BridgeGameScoring.TypeOfCompensation.Milton_York;
            }
            else if (radioButton10.Checked)
            {
                CompType = BridgeGameScoring.TypeOfCompensation.Chicago;
            }
            bool Europe_10_is_2   = checkBox1.Checked;
            bool Europe_less_23_2 = checkBox2.Checked;

            // Создать GameOptions
            GameOptions  = 0;
            GameOptions |= (byte)CompType; //2 bits
            if (Europe_10_is_2)
            {
                GameOptions |= 4; //3rd bit
            }
            if (Europe_less_23_2)
            {
                GameOptions |= 8; //4th bit
            }
            accepted          = true;
            this.DialogResult = DialogResult.OK;
        }