public static Uniso.InStat.Game.HockeyIce GetMatchInfo(int id, out System.Drawing.SizeF size) { size = new System.Drawing.SizeF(60f, 30f); var datain = new Dictionary <string, object>(); datain.Add("match_id", id); var rqst = String.Empty; var req = Request(HOCK_PRE, "registrator_get_match_info", datain, new Dictionary <string, object>(), out rqst); var objlist = (Object[])req["data"]; if (objlist.Length == 0) { throw new Exception("Матч не найден"); } var data = (Dictionary <string, object>)objlist[0]; var match = new Match(); match.Id = id; match.Team1Native = new Game.Team { Id = Convert.ToInt32(data["f_team1"]), Name = Convert.ToString(data["team1_name_rus"]), Color = null, }; var kind = 0; if (data["c_uniform_type_team1"] != null && Int32.TryParse(data["c_uniform_type_team1"].ToString(), out kind)) { match.Team1.Color = new TeamColors { Kind = kind, NumberColor = HexToColor(Convert.ToString(data["number_color_team1"])), SelfColor1 = HexToColor(Convert.ToString(data["sweater_color_1_team1"])), SelfColor2 = HexToColor(Convert.ToString(data["sweater_color_2_team1"])), Name = Convert.ToString(data["uniform_type_team1"]), }; } match.Team2Native = new Game.Team { Id = Convert.ToInt32(data["f_team2"]), Name = Convert.ToString(data["team2_name_rus"]), Color = null, }; if (data["c_uniform_type_team2"] != null && Int32.TryParse(data["c_uniform_type_team2"].ToString(), out kind)) { match.Team2.Color = new TeamColors { Kind = kind, NumberColor = HexToColor(Convert.ToString(data["number_color_team2"])), SelfColor1 = HexToColor(Convert.ToString(data["sweater_color_1_team2"])), SelfColor2 = HexToColor(Convert.ToString(data["sweater_color_2_team2"])), Name = Convert.ToString(data["uniform_type_team2"]), }; } match.Tournament = Convert.ToString(data["tournament_name_rus"]); match.Season = Convert.ToString(data["c_season"]); var date = Convert.ToString(data["match_date"]); match.Date = DateTime.Parse(date); var gte = Game.HockeyIce.GameTypeEnum.Euro; switch (Convert.ToInt32(data["c_field_type"])) { case 1: size = new System.Drawing.SizeF(61f, 30f); gte = Game.HockeyIce.GameTypeEnum.Euro; break; case 2: size = new System.Drawing.SizeF(60.96f, 25.91f); gte = Game.HockeyIce.GameTypeEnum.NHL; break; } var game_kind = Convert.ToInt32(data["c_tournament_type"]); var game = new Game.HockeyIce( gte, game_kind == 1 ? Game.HockeyIce.KIND_1 : Game.HockeyIce.KIND_2) { Match = match }; return(game); }
/*registrator_save_del_f_match_event * * Параметры: * @action tinyint - 1 - сохранить, 2 - удалить * @id int - id маркера (для сохранения и удаления) * @match_id int - id матча * @half tinyint - номер тайма * @second float - секунда * @c_action int - id действия * @f_team int - id команды * @f_player int - id игрока * @opponent_f_team int - id команды оппонента * @opponent_f_player int - id игрока-оппонента * @pos_x float - позиция точки (X) * @pos_y float - позиция точки (Y) * @opponent_pos_x float - позиция точки назначения (X) * @opponent_pos_y float - позиция точки назначения (Y) * @c_zone tinyint - id зоны * @opponent_c_zone tinyint - id зоны назначения * @f_user int - id пользователя, сохраняющего/удаляющего данные * @ret int OUTPUT - результат операции: вернет id маркера при удаче и отрицательное значение при ошибке * @msg varchar(500) OUTPUT - вернет текст ошибки */ public static void SaveMarker(Game.HockeyIce game, Game.Marker mk) { if (mk.Compare(3, new int[] { 1, 2 }) || mk.Compare(8, 1)) { mk.Win = 0; } var datain = new Dictionary <string, object>(); datain.Add("action", mk.FlagDel ? 2 : 1); if (mk.Id > 0) { datain.Add("id", mk.Id); } datain.Add("match_id", game.Match.Id); datain.Add("half", mk.Half.Index); var time = Math.Round((float)mk.TimeVideoReal / 1000f, 3); if (Uniso.InStat.Game.HockeyIce.Role == Game.HockeyIce.RoleEnum.Online && !mk.Compare(18) && !mk.Compare(16)) { datain.Add("second_online", time); } else { datain.Add("second", time); } datain.Add("second_clear", Math.Round((float)mk.TimeActual / 1000f, 3)); datain.Add("c_action", mk.ActionCode); if (mk.Team1 != null) { datain.Add("f_team", mk.Team1.Id); } if (mk.Player1 != null) { datain.Add("f_player", mk.Player1.Id); } if (mk.Team2 != null) { datain.Add("opponent_f_team", mk.Team2.Id); } if (mk.Player2 != null) { datain.Add("opponent_f_player", mk.Player2.Id); } if (!mk.Point1.IsEmpty) { datain.Add("pos_x", mk.Point1.X); datain.Add("pos_y", mk.Point1.Y); } if (!mk.Point2.IsEmpty) { datain.Add("opponent_pos_x", mk.Point2.X); datain.Add("opponent_pos_y", mk.Point2.Y); } datain.Add("data1_int", mk.Num); datain.Add("data2_int", mk.Sync); datain.Add("f_user", mk.user_id); datain.Add("link", mk.Link); // TODO: Вот тут в datain добавлять свойства маркера. var dataout = new Dictionary <string, object>(); dataout.Add("ret", "int"); dataout.Add("msg", "varchar(500)"); var rqst = String.Empty; var req = Request(HOCK_PRE, "registrator_save_del_f_match_event_2", datain, dataout, out rqst); if (!req.ContainsKey("variables")) { throw new Exception("Error parsing saving"); } var vars = (Dictionary <string, object>)req["variables"]; if (!vars.ContainsKey("@ret")) { throw new Exception("Error parsing saving"); } var ret = Convert.ToInt32(vars["@ret"]); if (ret <= 0) { throw new Exception("Ошибка при сохранении маркера. MESSAGE: " + Convert.ToString(vars["@msg"])); } mk.Id = ret; mk.FlagUpdate = false; }