/// <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; } }
/// <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; } }
/// <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; } }