Esempio n. 1
0
        public override void OnInitGeometry()
        {
            var rbCmp = Arena.Owner.RigidBodyCmp;

            m_wallTimer         = new Timer(Engine.GameTime.Source, 1500);
            m_wallTimerEvent    = new TimerEvent(StartRotation);
            m_wallTimer.OnTime += m_wallTimerEvent;

            Asset <GameObjectDefinition> centerObjDef = Engine.AssetManager.GetAsset <GameObjectDefinition>("Arenas/JungleArena2/Center.lua::Center");

            m_centerPieceObject = new GameObject(centerObjDef);
            var centerPieceObjBodyCmp = m_centerPieceObject.FindComponent <RigidBodyComponent>();

            centerPieceObjBodyCmp.Body.CollidesWith        = (Category)CollisionType.All | (Category)CollisionType.Ball;
            centerPieceObjBodyCmp.Body.CollisionCategories = (Category)CollisionType.Wall;

            Engine.World.EventManager.AddListener((int)EventId.FirstPeriod, OnFirstPeriod);
            Engine.World.EventManager.AddListener((int)EventId.HalfTime, OnHalfTime);
            Engine.World.EventManager.AddListener((int)EventId.HalfTimeTransition, OnHalfTimeTransition);
            Engine.World.EventManager.AddListener((int)EventId.SecondPeriod, OnSecondPeriod);
            Engine.World.EventManager.AddListener((int)EventId.MatchEnd, OnMatchEnd);

            m_launchersInitTransform = new LBE.Core.Transform[Arena.Launchers.Count];

            for (int i = 0; i < Arena.Launchers.Count; i++)
            {
                LauncherComponent launcher = (LauncherComponent)Arena.Launchers[i];
                m_launchersInitTransform[i] = new LBE.Core.Transform(launcher.Position, launcher.Owner.Orientation);
            }

            rbCmp.Body.CollidesWith        = (Category)CollisionType.All | (Category)CollisionType.Ball;
            rbCmp.Body.CollisionCategories = (Category)CollisionType.Wall;
        }
Esempio n. 2
0
        protected override void DoDraw(Sprite sprite, LBE.Core.Transform transform)
        {
            Matrix world = Matrix.Identity;

            world *= Matrix.CreateScale(sprite.Size.X * 0.5f * sprite.Scale.X, sprite.Size.Y * 0.5f * Sprite.Scale.Y, 1);
            world *= Matrix.CreateRotationZ(transform.Orientation);
            world *= Matrix.CreateTranslation(new Vector3(transform.Position, 0));

            m_effect.World   = world;
            m_effect.Texture = sprite.Texture;
            m_effect.Mask    = m_mask;
            m_effect.Color1  = m_color1;
            m_effect.Color2  = m_color2;
            m_effect.Color3  = m_color3;
            m_effect.Color4  = m_color4;
            m_effect.Alpha   = sprite.Alpha;

            Engine.Renderer.DrawMesh(m_quadMesh, m_effect);
        }
Esempio n. 3
0
        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();
                }
            }
        }