// Загрузка 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); } }
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 } }
// 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; }