public void SwitchLaunchers() { foreach (IBallLauncher launcher in m_launchers) { if (launcher.GetType() == typeof(AssistBallLauncherComponent)) { AssistBallLauncherComponent teamLauncher = (AssistBallLauncherComponent)launcher; if (teamLauncher.Team == m_leftGoal.Team) { teamLauncher.Team = m_rightGoal.Team; } else { teamLauncher.Team = m_leftGoal.Team; } } } }
void InitLaunchers() { foreach (IBallLauncher launcher in m_launchers) { if (launcher.GetType() == typeof(AssistBallLauncherComponent)) { AssistBallLauncherComponent teamLauncher = (AssistBallLauncherComponent)launcher; if (Vector2.DistanceSquared(teamLauncher.GetWorldTransform().Position, m_leftGoal.Position) < Vector2.DistanceSquared(teamLauncher.GetWorldTransform().Position, m_rightGoal.Position)) { teamLauncher.Team = m_leftGoal.Team; } else { teamLauncher.Team = m_rightGoal.Team; } } } }
public void SelectALauncher(Team team) { m_selectedLauncher = null; if (m_lDSettings.LaunchersSelection == LaunchersSelectionType.Random) { int randomIndex = Engine.Random.Next(0, m_launchers.Count); m_selectedLauncher = m_launchers[randomIndex]; m_selectedLauncher.Scan(); } else if (m_lDSettings.LaunchersSelection == LaunchersSelectionType.KickOffTeam) { m_selectedLauncher = Game.Arena.Launchers[0]; float shortestPlayerDist = float.MaxValue; for (int i = 0; i < Game.Arena.Launchers.Count; i++) { AssistBallLauncherComponent launcher = (AssistBallLauncherComponent)Game.Arena.Launchers[i]; if (launcher.Team != team) { continue; } launcher.Scan(); if (launcher.PlayerToAim != null) { LBE.Core.Transform launcherParent = new LBE.Core.Transform(launcher.Owner.Position, launcher.Owner.Orientation); LBE.Core.Transform launcherWorld = launcherParent.Compose(launcher.Transform); float launcherToPlayerDist = Vector2.Distance(launcherWorld.Position, launcher.PlayerToAim.Position); if (launcherToPlayerDist < shortestPlayerDist) { shortestPlayerDist = launcherToPlayerDist; m_selectedLauncher = launcher; } } } } else if (m_lDSettings.LaunchersSelection == LaunchersSelectionType.Central) { m_selectedLauncher = Game.Arena.Launchers[0]; int randomIndex = Engine.Random.Next(0, m_launchers.Count); m_selectedLauncher = m_launchers[randomIndex]; for (int i = 0; i < Game.Arena.Launchers.Count; i++) { CentralBallLauncherComponent launcher = (CentralBallLauncherComponent)Game.Arena.Launchers[i]; launcher.Team = team; Vector2 goalPosition; if (launcher.Team == m_leftGoal.Team) { goalPosition = m_leftGoal.Position; } else { goalPosition = m_rightGoal.Position; } Vector2 launcherToGoalDir = goalPosition - launcher.GetWorldTransform().Position; launcherToGoalDir.Normalize(); launcher.Owner.Orientation = launcherToGoalDir.Angle(); launcher.Scan(); } } }