Ejemplo n.º 1
0
        public override void DoUpdate(GameTime gameTime)
        {
            if (TimeAlive > 10)
            {
                IsAlive = false;
            }
            else
            {
                //Todo: slowdown with air friction
                //todo: change damage based on speed
                if (AffectedByGravity)
                {
                    Speed += FightingZone.GravityVector;
                }

                if (Speed != Vector2.Zero && ActiveProjectileInfo.RotatationAllowed)
                {
                    Angle = (float)Math.Atan2(Speed.Y, Speed.X);
                }

                Owner.SetAttackContext(this, Owner, Angle, Collision.ListCollisionPolygon[0].Center);

                if (ProjectileAnimation != null)
                {
                    ProjectileAnimation.Angle = Angle;
                    ProjectileAnimation.Update(gameTime);
                }

                if (TrailAnimation != null)
                {
                    TrailAnimation.Angle = Angle;
                    TrailAnimation.Update(gameTime);
                }
            }
        }
Ejemplo n.º 2
0
        public override void Update(GameTime gameTime)
        {
            if (TeleportAnimation != null)
            {
                TeleportAnimation.Update(gameTime);
            }

            if (Owner.IsOfflineOrServer)
            {
                PolygonCollisionResult FinalCollisionResult = new PolygonCollisionResult(Vector2.Zero, -1);

                foreach (Player ActivePlayer in Map.ListAllPlayer)
                {
                    foreach (Polygon EnemyCollision in ActivePlayer.InGameRobot.Collision.ListCollisionPolygon)
                    {
                        PolygonCollisionResult CollisionResult = Polygon.PolygonCollisionSAT(TeleportPolygon, EnemyCollision, ActivePlayer.InGameRobot.Speed);

                        if (CollisionResult.Distance >= 0 && CollisionResult.Distance > FinalCollisionResult.Distance)
                        {
                            Owner.PrepareNextLevel(_NextLevelPath);
                            HasEnded = true;
                        }
                    }
                }
            }
        }
Ejemplo n.º 3
0
 public void Update()
 {
     animation.Update();
     Duration--;
     if (Duration == 0)
     {
         Game.World.Remove(this);
         Game.World.Add(new FadeOut(Game.Restart));
     }
 }
Ejemplo n.º 4
0
        public void Update()
        {
            Animation.Update();
            duration--;

            if (duration == 0)
            {
                World.Remove(this);
                return;
            }
        }
Ejemplo n.º 5
0
        public override void Update(GameTime gameTime)
        {
            if (GameOverAnimation.ActiveAnimation.ActiveKeyFrame + 1 < GameOverAnimation.ActiveAnimation.LoopEnd)
            {
                GameOverAnimation.Update(gameTime);
            }

            if (InputHelper.InputConfirmPressed())
            {
                RemoveAllScreens();
                PushScreen(new MainMenu());
            }
        }
Ejemplo n.º 6
0
 public void Update()
 {
     Animation.Update();
     if (
         X > ((1000 + World.SPACE_BETWEEN_THINGS) * 11) + 100 &&
         Y <= 3000 + World.SPACE_BETWEEN_THINGS &&
         VerticalSpeed == 0)
     {
         HorizontalSpeed = -250;
     }
     else
     {
         HorizontalSpeed = 0;
     }
     UpdateHandler.Update();
 }
Ejemplo n.º 7
0
        public override void Update(GameTime gameTime)
        {
            TeleportAnimation.Update(gameTime);

            PolygonCollisionResult FinalCollisionResult = new PolygonCollisionResult(Vector2.Zero, -1);

            foreach (Player ActivePlayer in Map.ListAllPlayer)
            {
                foreach (Polygon EnemyCollision in ActivePlayer.InGameRobot.Collision.ListCollisionPolygon)
                {
                    PolygonCollisionResult CollisionResult = Polygon.PolygonCollisionSAT(TeleportPolygon, EnemyCollision, ActivePlayer.InGameRobot.Speed);

                    if (CollisionResult.Distance >= 0 && CollisionResult.Distance > FinalCollisionResult.Distance)
                    {
                        ActivePlayer.InGameRobot.Speed += _TeleportSpeed;
                        ActivePlayer.InGameRobot.Move(_TeleportOffset);
                        Owner.ChangeRobotLayer(ActivePlayer.InGameRobot, _LayerIndex);
                    }
                }
            }
        }
Ejemplo n.º 8
0
        public override void Update(GameTime gameTime)
        {
            JumpPadAnimation.Update(gameTime);

            foreach (Player ActivePlayer in Map.ListAllPlayer)
            {
                PolygonCollisionResult FinalCollisionResult = new PolygonCollisionResult(Vector2.Zero, -1);
                foreach (Polygon EnemyCollision in ActivePlayer.InGameRobot.Collision.ListCollisionPolygon)
                {
                    PolygonCollisionResult CollisionResult = Polygon.PolygonCollisionSAT(JumpPadPolygon, EnemyCollision, ActivePlayer.InGameRobot.Speed);

                    if (FinalCollisionResult.Distance < 0 || (CollisionResult.Distance >= 0 && CollisionResult.Distance > FinalCollisionResult.Distance))
                    {
                        FinalCollisionResult = CollisionResult;
                    }
                }

                if (FinalCollisionResult.Distance >= 0)
                {
                    ActivePlayer.InGameRobot.Speed.Y = -_JumpSpeed;
                }
            }
        }
Ejemplo n.º 9
0
        public override void Update(GameTime gameTime)
        {
            JumpPadAnimation.Update(gameTime);

            foreach (RobotAnimation ActiveRobot in Owner.DicRobot.Values)
            {
                PolygonCollisionResult FinalCollisionResult = new PolygonCollisionResult(Vector2.Zero, -1);
                foreach (CollisionPolygon EnemyCollision in ActiveRobot.ListCollisionPolygon)
                {
                    PolygonCollisionResult CollisionResult = Polygon.PolygonCollisionSAT(JumpPadPolygon, EnemyCollision.ActivePolygon, ActiveRobot.Speed);

                    if (FinalCollisionResult.Distance < 0 || (CollisionResult.Distance >= 0 && CollisionResult.Distance > FinalCollisionResult.Distance))
                    {
                        FinalCollisionResult = CollisionResult;
                    }
                }

                if (FinalCollisionResult.Distance >= 0)
                {
                    ActiveRobot.Speed.Y = -_JumpSpeed;
                }
            }
        }
Ejemplo n.º 10
0
        public void Update(GameTime gameTime)
        {
            lock (ListDelayedOnlineCommand)
            {
                foreach (DelayedExecutableOnlineScript ActiveCommand in ListDelayedOnlineCommand)
                {
                    ActiveCommand.ExecuteOnMainThread();
                }

                ListDelayedOnlineCommand.Clear();
            }

            for (int A = ListVisualEffects.Count - 1; A >= 0; --A)
            {
                SimpleAnimation ActiveVisualEffect = ListVisualEffects[A];
                ActiveVisualEffect.Update(gameTime);

                if (ActiveVisualEffect.HasEnded)
                {
                    ListVisualEffects.RemoveAt(A);
                }
            }

            for (int A = 0; A < ListAttackCollisionBox.Count; A++)
            {
                AttackBox ActiveAttackBox = (AttackBox)ListAttackCollisionBox[A];
                if (!ActiveAttackBox.IsAlive)
                {
                    continue;
                }

                ActiveAttackBox.Update(gameTime);

                foreach (KeyValuePair <uint, RobotAnimation> ActiveRobot in DicRobot)
                {
                    UpdateAttackCollisionWithRobot(gameTime, ActiveAttackBox, ActiveRobot.Value);
                }

                UpdateAttackCollisionWithWorld(ActiveAttackBox);

                ActiveAttackBox.Move(gameTime);
            }

            for (int A = ListImages.Count - 1; A >= 0; --A)
            {
                SimpleAnimation ActiveAnimation = ListImages[A];
                ActiveAnimation.Update(gameTime);

                if (ActiveAnimation.HasEnded)
                {
                    ListImages.RemoveAt(A);
                }
            }

            for (int P = ListProp.Count - 1; P >= 0; --P)
            {
                if (ListProp[P].HasEnded)
                {
                    ListProp.RemoveAt(P);
                }
                else
                {
                    ListProp[P].Update(gameTime);
                }
            }

            #region Robot Update

            foreach (RobotAnimation ActiveRobot in DicRobot.Values)
            {
                if (!ActiveRobot.IsUpdated)
                {
                    continue;
                }

                if (ActiveRobot.RobotAI != null && !Owner.UsePreview)
                {
                    ActiveRobot.RobotAI.UpdateStep(gameTime);
                }

                ActiveRobot.Update(gameTime, DicRobot);
            }

            foreach (RobotAnimation RobotToAdd in ListRobotToAdd)
            {
                SpawnRobot(RobotToAdd);
            }

            ListRobotToAdd.Clear();

            for (int R = ListRobotToRemove.Count - 1; R >= 0; R--)
            {
                DicRobot.Remove(ListRobotToRemove[R]);
                ListRobotToRemove.RemoveAt(R);

                if (ListRobotToRemove.Count == 0)
                {
                    Owner.CheckIfAllEnemiesAreDead();
                }
            }

            #endregion
        }