Exemple #1
0
        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);
        }
Exemple #2
0
        /*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;
        }