/// <summary>
        /// 防守机器鱼在禁区内犯规时最大停留时间(单位:毫秒)
        /// </summary>
        #endregion

        #region 对抗赛5VS5仿真使命控制规则具体处理过程

        #region 进球判断及处理


        // Added by renjing 20110310 Modified by LiYoubing 20110515
        /// <summary>
        /// 进球处理
        /// </summary>
        private void GoalHandler()
        {
            MyMission mymission = MyMission.Instance();
            int       j;

            if (CommonPara.IsExchangedHalfCourt == false)
            {
                RoboFish f1 = Teams[0].Fishes[0];
                for (j = 1; j < 4; j++)
                {
                    RoboFish f2 = Teams[1].Fishes[j];
                    CollisionDetectionResult result = new CollisionDetectionResult();
                    result = CollisionDetection.DetectCollisionBetweenTwoFishes(ref f1, ref f2);
                    if (result.Intersect == true && gool[j - 1] == 0)
                    {
                        Teams[0].Para.Score++;
                        gool[j - 1] = 1;
                        string strMsg          = "";
                        int    Shootouttime    = CommonPara.TotalSeconds * 1000 - CommonPara.RemainingCycles * mymission.ParasRef.MsPerCycle;
                        int    ShootouttimeSec = Shootouttime / 1000;
                        ltime   = Shootouttime;
                        strMsg += string.Format("Congradulations!shootouttime is: {1:00}:{2:00}:{3:00}.",
                                                Teams[0].Para.Score, ShootouttimeSec / 60, ShootouttimeSec % 60, Shootouttime % 1000);
                        MatchHelper.MissionMessageBox(ref MyMission.Instance().MissionRef, strMsg,
                                                      "Confirming", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    }
                }
            }
            else
            {
                RoboFish f1 = Teams[1].Fishes[0];
                for (j = 1; j < 4; j++)
                {
                    RoboFish f2 = Teams[0].Fishes[j];
                    CollisionDetectionResult result = new CollisionDetectionResult();
                    result = CollisionDetection.DetectCollisionBetweenTwoFishes(ref f1, ref f2);
                    if (result.Intersect == true && goor[j - 1] == 0)
                    {
                        Teams[1].Para.Score++;
                        goor[j - 1] = 1;
                        string strMsg          = "";
                        int    Shootouttime    = CommonPara.TotalSeconds * 1000 / 2 - CommonPara.RemainingCycles * mymission.ParasRef.MsPerCycle;
                        int    ShootouttimeSec = Shootouttime / 1000;
                        rtime   = Shootouttime;
                        strMsg += string.Format("Congradulations!shootouttime is: {1:00}:{2:00}:{3:00}.",
                                                Teams[0].Para.Score, ShootouttimeSec / 60, ShootouttimeSec % 60, Shootouttime % 1000);
                        MatchHelper.MissionMessageBox(ref MyMission.Instance().MissionRef, strMsg,
                                                      "Confirming", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    }
                }
            }
            if (CommonPara.IsExchangedHalfCourt == false && Teams[0].Para.Score == 3)
            {
                CommonPara.RemainingCycles = CommonPara.TotalSeconds * 1000 / CommonPara.MsPerCycle / 2;
            }
            else if (CommonPara.IsExchangedHalfCourt == true && Teams[1].Para.Score == 3)
            {
                CommonPara.RemainingCycles = 0;
            }
        }
Exemple #2
0
        /// <summary>
        /// 防守机器鱼在禁区内犯规时最大停留时间(单位:毫秒)
        /// </summary>
        #endregion

        #region 对抗赛5VS5仿真使命控制规则具体处理过程

        #region 进球判断及处理


        // Added by renjing 20110310 Modified by LiYoubing 20110515
        /// <summary>
        /// 进球处理
        /// </summary>
        private void GoalHandler()
        {
            MyMission mymission = MyMission.Instance();

            String strMsg    = "";
            bool   pauseFlag = false;

            if (touch[0] == 0)
            {
                RoboFish fish     = Teams[0].Fishes[0];
                Ball     thisball = Env.Balls[0];
                CollisionDetectionResult result = CollisionDetection.DetectCollisionBetweenFishAndBall(ref fish, ref thisball);
                if (result.Intersect == true)
                {
                    pauseFlag = true;
                    touch[0]  = 1;
                    int Shootouttime    = CommonPara.TotalSeconds * 1000 - CommonPara.RemainingCycles * mymission.ParasRef.MsPerCycle;
                    int ShootouttimeSec = Shootouttime / 1000;
                    strMsg += string.Format("Congradulations!The first touching time is: {1:00}:{2:00}:{3:00}.",
                                            Teams[0].Para.Score, ShootouttimeSec / 60, ShootouttimeSec % 60, Shootouttime % 1000);
                }
            }
            else if (touch[0] == 1 && goal[0] == 0)
            {
                Ball   thisball = Env.Balls[0];
                double distance = (thisball.PositionMm.X - 1900) * (thisball.PositionMm.X - 1900) + (thisball.PositionMm.Z + 1200) * (thisball.PositionMm.Z + 1200);
                if (distance <= 484.00)
                {
                    pauseFlag = true;
                    goal[0]   = 1;
                    int Shootouttime    = CommonPara.TotalSeconds * 1000 - CommonPara.RemainingCycles * mymission.ParasRef.MsPerCycle;
                    int ShootouttimeSec = Shootouttime / 1000;
                    strMsg += string.Format("Congradulations!The first goal time is: {1:00}:{2:00}:{3:00}.",
                                            Teams[0].Para.Score, ShootouttimeSec / 60, ShootouttimeSec % 60, Shootouttime % 1000);
                }
            }
            else if (goal[0] == 1 && touch[1] == 0)
            {
                RoboFish fish     = Teams[0].Fishes[0];
                Ball     thisball = Env.Balls[1];
                CollisionDetectionResult result = CollisionDetection.DetectCollisionBetweenFishAndBall(ref fish, ref thisball);
                if (result.Intersect == true)
                {
                    pauseFlag = true;
                    touch[1]  = 1;
                    int Shootouttime    = CommonPara.TotalSeconds * 1000 - CommonPara.RemainingCycles * mymission.ParasRef.MsPerCycle;
                    int ShootouttimeSec = Shootouttime / 1000;
                    strMsg += string.Format("Congradulations!The first touching time is: {1:00}:{2:00}:{3:00}.",
                                            Teams[0].Para.Score, ShootouttimeSec / 60, ShootouttimeSec % 60, Shootouttime % 1000);
                }
            }
            else if (touch[1] == 1 && goal[1] == 0)
            {
                Ball   thisball = Env.Balls[1];
                double distance = (thisball.PositionMm.X - 1900) * (thisball.PositionMm.X - 1900) + (thisball.PositionMm.Z - 1200) * (thisball.PositionMm.Z - 1200);
                if (distance <= 484.00)
                {
                    pauseFlag = true;
                    goal[1]   = 1;
                    int Shootouttime    = CommonPara.TotalSeconds * 1000 - CommonPara.RemainingCycles * mymission.ParasRef.MsPerCycle;
                    int ShootouttimeSec = Shootouttime / 1000;
                    strMsg += string.Format("Congradulations!The first goal time is: {1:00}:{2:00}:{3:00}.",
                                            Teams[0].Para.Score, ShootouttimeSec / 60, ShootouttimeSec % 60, Shootouttime % 1000);
                }
            }

            if (pauseFlag)
            {
                MatchHelper.MissionMessageBox(ref MyMission.Instance().MissionRef, strMsg,
                                              "Confirming", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
            if (goal[1] == 1)
            {
                CommonPara.RemainingCycles = 0;
            }
        }
Exemple #3
0
        /// <summary>
        /// 防守机器鱼在禁区内犯规时最大停留时间(单位:毫秒)
        /// </summary>
        #endregion

        #region 对抗赛5VS5仿真使命控制规则具体处理过程

        #region 进球判断及处理


        // Added by renjing 20110310 Modified by LiYoubing 20110515
        /// <summary>
        /// 进球处理
        /// </summary>
        private void GoalHandler()
        {
            MyMission mymission = MyMission.Instance();
            int       j;

            if (CommonPara.IsExchangedHalfCourt == false)
            {
                for (j = 0; j < 2; j++)
                {
                    RoboFish f11;
                    Ball     f22;
                    CollisionDetectionResult result;

                    for (int i = 0; i < 2; i++)
                    {
                        f11    = Teams[0].Fishes[i];
                        f22    = Env.Balls[j];
                        result = new CollisionDetectionResult();
                        result = CollisionDetection.DetectCollisionBetweenFishAndBall(ref f11, ref f22);


                        if (result.Intersect == true && touchL == false)
                        {
                            int Shootouttime    = CommonPara.TotalSeconds * 1000 - CommonPara.RemainingCycles * mymission.ParasRef.MsPerCycle;
                            int ShootouttimeSec = Shootouttime / 1000;
                            touchL   = true;
                            ltime[0] = Shootouttime;
                            string strMsg = "";
                            strMsg += string.Format("First Touch!Touch Time is: {1:00}:{2:00}:{3:00}.",
                                                    Teams[0].Para.Score, ShootouttimeSec / 60, ShootouttimeSec % 60, Shootouttime % 1000);
                            MatchHelper.MissionMessageBox(ref MyMission.Instance().MissionRef, strMsg,
                                                          "Confirming", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                        }
                    }


                    if (Env.Balls[j].PositionMm.X >= 1850 && Env.Balls[j].PositionMm.X <= 2250 && Env.Balls[j].PositionMm.Z >= -500 && Env.Balls[j].PositionMm.Z <= 500 && gool[j] == 0)
                    {
                        Teams[0].Para.Score++;

                        gool[j] = 1;
                        string strMsg          = "";
                        int    Shootouttime    = CommonPara.TotalSeconds * 1000 - CommonPara.RemainingCycles * mymission.ParasRef.MsPerCycle;
                        int    ShootouttimeSec = Shootouttime / 1000;
                        ltime[Teams[0].Para.Score] = Shootouttime;
                        strMsg += string.Format("Congradulations!Rescue Time is: {1:00}:{2:00}:{3:00}.",
                                                Teams[0].Para.Score, ShootouttimeSec / 60, ShootouttimeSec % 60, Shootouttime % 1000);
                        MatchHelper.MissionMessageBox(ref MyMission.Instance().MissionRef, strMsg,
                                                      "Confirming", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    }
                }

                /*      for (j = 1; j < 4; j++)
                 *    {
                 *        RoboFish f2 = Teams[1].Fishes[j];
                 *        CollisionDetectionResult result = new CollisionDetectionResult();
                 *        result = CollisionDetection.DetectCollisionBetweenTwoFishes(ref f1, ref f2);
                 *        if (result.Intersect == true && gool[j - 1] == 0)
                 *        {
                 *            Teams[0].Para.Score++;
                 *            gool[j - 1] = 1;
                 *            string strMsg = "";
                 *            int Shootouttime = CommonPara.TotalSeconds * 1000 - CommonPara.RemainingCycles * mymission.ParasRef.MsPerCycle;
                 *            int ShootouttimeSec = Shootouttime / 1000;
                 *            ltime = Shootouttime;
                 *            strMsg += string.Format("Congradulations!shootouttime is: {1:00}:{2:00}:{3:00}.",
                 *       Teams[0].Para.Score, ShootouttimeSec / 60, ShootouttimeSec % 60, Shootouttime % 1000);
                 *            MatchHelper.MissionMessageBox(ref MyMission.Instance().MissionRef, strMsg,
                 * "Confirming", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                 *        }
                 *    }*/
            }
            else
            {
                for (j = 0; j < 2; j++)
                {
                    RoboFish f11;
                    Ball     f22;
                    CollisionDetectionResult result;

                    for (int i = 0; i < 2; i++)
                    {
                        f11    = Teams[1].Fishes[i];
                        f22    = Env.Balls[j];
                        result = new CollisionDetectionResult();
                        result = CollisionDetection.DetectCollisionBetweenFishAndBall(ref f11, ref f22);

                        if (result.Intersect == true && touchR == false)
                        {
                            int Shootouttime    = CommonPara.TotalSeconds * 1000 / 2 - CommonPara.RemainingCycles * mymission.ParasRef.MsPerCycle;
                            int ShootouttimeSec = Shootouttime / 1000;
                            touchR   = true;
                            rtime[0] = Shootouttime;
                            string strMsg = "";
                            strMsg += string.Format("First Touch!Touch Time is: {1:00}:{2:00}:{3:00}.",
                                                    Teams[0].Para.Score, ShootouttimeSec / 60, ShootouttimeSec % 60, Shootouttime % 1000);
                            MatchHelper.MissionMessageBox(ref MyMission.Instance().MissionRef, strMsg,
                                                          "Confirming", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                        }
                    }


                    if (Env.Balls[j].PositionMm.X >= 1850 && Env.Balls[j].PositionMm.X <= 2250 && Env.Balls[j].PositionMm.Z >= -500 && Env.Balls[j].PositionMm.Z <= 500 && goor[j] == 0)
                    {
                        Teams[1].Para.Score++;
                        goor[j] = 1;
                        string strMsg = "";

                        int Shootouttime    = CommonPara.TotalSeconds * 1000 / 2 - CommonPara.RemainingCycles * mymission.ParasRef.MsPerCycle;
                        int ShootouttimeSec = Shootouttime / 1000;
                        rtime[Teams[1].Para.Score] = Shootouttime;


                        strMsg += string.Format("Congradulations!Rescue Time is: {1:00}:{2:00}:{3:00}.",
                                                Teams[0].Para.Score, ShootouttimeSec / 60, ShootouttimeSec % 60, Shootouttime % 1000);
                        MatchHelper.MissionMessageBox(ref MyMission.Instance().MissionRef, strMsg,
                                                      "Confirming", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    }
                }

                /*  for (j = 1; j < 4; j++)
                 * {
                 *    RoboFish f2 = Teams[0].Fishes[j];
                 *    CollisionDetectionResult result = new CollisionDetectionResult();
                 *    result = CollisionDetection.DetectCollisionBetweenTwoFishes(ref f1, ref f2);
                 *    if (result.Intersect == true && goor[j - 1] == 0)
                 *    {
                 *        Teams[1].Para.Score++;
                 *        goor[j - 1] = 1;
                 *        string strMsg = "";
                 *        int Shootouttime = CommonPara.TotalSeconds * 1000 / 2 - CommonPara.RemainingCycles * mymission.ParasRef.MsPerCycle;
                 *        int ShootouttimeSec = Shootouttime / 1000;
                 *        rtime = Shootouttime;
                 *        strMsg += string.Format("Congradulations!shootouttime is: {1:00}:{2:00}:{3:00}.",
                 *            Teams[0].Para.Score, ShootouttimeSec / 60, ShootouttimeSec % 60, Shootouttime % 1000);
                 *        MatchHelper.MissionMessageBox(ref MyMission.Instance().MissionRef, strMsg,
                 * "Confirming", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                 *    }
                 * }*/
            }
            if (CommonPara.IsExchangedHalfCourt == false && Teams[0].Para.Score == 2)
            {
                CommonPara.RemainingCycles = CommonPara.TotalSeconds * 1000 / CommonPara.MsPerCycle / 2;
            }
            else if (CommonPara.IsExchangedHalfCourt == true && Teams[1].Para.Score == 2)
            {
                CommonPara.RemainingCycles = 0;
            }
        }