Update() public method

Compares the previous charge with the current attack charge. If the charge level has changed it changes the power gem image. Once it reaches full charge it will loop the max charge animation.
public Update ( ) : void
return void
示例#1
0
        public override void TeleopPeriodic()
        {
            Scheduler.Instance.Run();
            Joystick stick = Oi.Pilot;
            //train._drive.ArcadeDrive(1, 1);

            stick.SetRumble(RumbleType.LeftRumble, stick.GetRawAxis(XboxMap.LeftTrigger));
            stick.SetRumble(RumbleType.RightRumble, stick.GetRawAxis(XboxMap.RightTrigger));

            SmartDashboard.PutNumber("POV", Oi.Pilot.GetPOV(0));
			SmartDashboard.PutString("Drive Mode", Oi.DriveStyle.ToString());
			SmartDashboard.PutString("Gear", Oi.ShifterGear.ToString());

            SmartDashboard.PutData("Compressor On", new CompressorOnCommand());
            SmartDashboard.PutData("Compressor Off", new CompressorOffCommand());

            Air.Update();
            Match.Update();
            Power.Update();

        }
示例#2
0
        public void Update(GameTime gameTime, Map map)
        {
            try
            {
                if (State == PlayerState.Done)
                {
                    return;
                }
                if (WaterPosition != null)
                {
                    return;
                }

                LastPosistion = Node.WorldPosition - Node.Velocity * 5;
                if (Teleporting && TeleportDelay > TimeSpan.Zero)
                {
                    TeleportDelay -= gameTime.ElapsedGameTime;
                    return;
                }
                if ((State == PlayerState.Ready || State == PlayerState.Bounced) && Velocity.Length() > 0.01f)
                {
                    State    = State == PlayerState.Bounced ? PlayerState.Bounced : PlayerState.Started;
                    IdleTime = TimeSpan.Zero;
                }
                if ((State == PlayerState.Started || State == PlayerState.Bounced) && Velocity.Length() < 0.09f)
                {
                    IdleTime += gameTime.ElapsedGameTime;
                }
                else
                {
                    IdleTime = TimeSpan.Zero;
                }
                if (State == PlayerState.Started || State == PlayerState.Bounced)
                {
                    GolfBall.Update(gameTime);
                }
                if (IdleTime > new TimeSpan(0, 0, 0, 3))
                {
                    State    = PlayerState.Finished;
                    Velocity = Vector2.Zero;
                }
                if (State == PlayerState.Ready)
                {
                    Power.Update(gameTime.ElapsedGameTime);
                    return;
                }

                if (map.GetTile(this, 1) == 0 && map.GetTile(this, 2) == 0) //Out of map
                {
                    Node         = new Node(map.StartWorldCenter, 2.5f, 1, Vector2.Zero, Vector2.Zero, map.StartLayer);
                    State        = PlayerState.Finished;
                    PreviousTile = map.GetPlayerTile(this);
                    LastTile     = PreviousTile;
                }


                OnTile = map.GetTile(this, Layer);


                CurrentTile = map.GetPlayerTile(this);
                var tileToWorldTranslation = new Point(CurrentTile.X * map.TileSet.TileWidth, CurrentTile.Y * map.TileSet.TileWidth);
                var pointOnTile            = new Vector2(Node.WorldPosition.X - tileToWorldTranslation.X, Node.WorldPosition.Y - tileToWorldTranslation.Y);

                var walls = map.GetWalls(this);
                if (OnTile == 53 || OnTile == 54 || OnTile == 62 || OnTile == 63)
                {
                    walls =
                        walls.Union(
                            WorldHelpers.AddWallRails(
                                WorldHelpers.GetLineSpecialSegments(OnTile,
                                                                    new Point((int)(Node.WorldPosition.X - tileToWorldTranslation.X),
                                                                              (int)(Node.WorldPosition.Y - tileToWorldTranslation.Y))), Layer)).ToList();
                }
                Node.Update(gameTime);

                walls = map.GetWalls(this);
                if (OnTile == 53 || OnTile == 54 || OnTile == 62 || OnTile == 63)
                {
                    walls =
                        walls.Union(
                            WorldHelpers.AddWallRails(
                                WorldHelpers.GetLineSpecialSegments(OnTile,
                                                                    new Point((int)(Node.WorldPosition.X - tileToWorldTranslation.X),
                                                                              (int)(Node.WorldPosition.Y - tileToWorldTranslation.Y))), Layer)).ToList();
                }

                if (map.EndLayer == Layer && Vector2.Distance(map.EndWorldCenter, Node.WorldPosition) < 5 + Node.Radius)
                {
                    if (Node.Velocity.Length() < 3.5f)
                    {
                        Node  = new Node(map.StartWorldCenter, 2.5f, 1, Vector2.Zero, Vector2.Zero, map.StartLayer);
                        State = PlayerState.Done;
                        Game.Sounds.Hole.Play();
                    }
                }

                #region Elevations

                LastImidiateLayer = Layer;
                // Layer = WorldHelpers.LayerMod()
                if (LastTile != CurrentTile)
                {
                    BouncePlayed =
                        !(OnTile == 53 && !(pointOnTile.Y > 23) || OnTile == 54 && !(pointOnTile.Y > 72) ||
                          OnTile == 62 && !(pointOnTile.X > 72) || OnTile == 63 && !(pointOnTile.X < 23));
                    PreviousLayer = LastLayer;
                    LastLayer     = Layer;
                    //Need to test elevation vertical horizontal
                    if (Layer == 1 && map.GetElevation(LastTile) != Elevation.Flat)
                    {
                        if (WorldHelpers.IsTopLevel(map.Layer2.GetTile(CurrentTile.X, CurrentTile.Y)) &&
                            PreviousLayer != 2)
                        {
                            Layer = 2;
                        }
                    }
                    else if (Layer == 2 && map.GetElevation(CurrentTile) != Elevation.Flat)
                    {
                        Layer = 1;
                    }

                    PreviousTile = LastTile;
                    LastTile     = CurrentTile;
                }
                if (!BouncePlayed && (OnTile == 53 || OnTile == 54 || OnTile == 62 || OnTile == 63))
                {
                    switch (OnTile)
                    {
                    case 53:
                    {
                        if (pointOnTile.Y < 23)
                        {
                            BouncePlayed = true;
                            Game.Sounds.DropBounce.Play();
                        }
                        break;
                    }

                    case 54:
                    {
                        if (pointOnTile.Y > 72)
                        {
                            BouncePlayed = true;
                            Game.Sounds.DropBounce.Play();
                        }
                        break;
                    }

                    case 62:
                    {
                        if (pointOnTile.X > 72)
                        {
                            BouncePlayed = true;
                            Game.Sounds.DropBounce.Play();
                        }
                        break;
                    }

                    case 63:
                    {
                        if (pointOnTile.X < 23)
                        {
                            BouncePlayed = true;
                            Game.Sounds.DropBounce.Play();
                        }
                        break;
                    }
                    }
                }
                if (Layer == 1)
                {
                    Node.Acceleration += WorldHelpers.GetForce(map.Layer1.GetTile(CurrentTile.X, CurrentTile.Y),
                                                               pointOnTile);
                }


                #endregion

                Node.DetectCollisions(map.GetBouncers(this), walls, tileToWorldTranslation);
                Node.DetectCollisions(map.Players.Where(p => p.State != PlayerState.Done));
                if (
                    map.GetWater(this)
                    .Any(
                        r =>
                        r.Contains(pointOnTile)))
                {
                    WaterPosition            = Node.WorldPosition;
                    Sprites.Splash.OnFinish += SplashFinished;
                    Sprites.Splash.Animation = AnimationState.Play;
                    Game.Sounds.Splash.Play();
                }
                var ballTileRect = new Rectangle((int)(Node.WorldPosition.X - tileToWorldTranslation.X),
                                                 (int)(Node.WorldPosition.Y - tileToWorldTranslation.Y), (int)GolfBall.Width, (int)GolfBall.Height);
                var rects = map.GetTeleports(this);
                if (!Teleporting && rects.Any())
                {
                    var exits = rects.Where(r => r.Key.Intersects(ballTileRect)).SelectMany(r => r.Value).ToList();
                    if (exits.Any())
                    {
                        var v = Golf.Random.Next(exits.Count);
                        var r = exits[v];
                        //  r = new Rectangle(39, 46, 6, 10);
                        Teleport = new Rectangle(r.X + tileToWorldTranslation.X, r.Y + tileToWorldTranslation.Y,
                                                 r.Width,
                                                 r.Height);

                        Node.Velocity      = WorldHelpers.GetTeleporterVelocity(68, r.Center); //will need to get tile type
                        Node.WorldPosition = new Vector2(Teleport.Center.X, Teleport.Center.Y);
                        TeleportDelay      = new TimeSpan(0, 0, 0, 0, 500);
                        Teleporting        = true;
                        Game.Sounds.Bouncing.Play();
                    }
                }
                else
                {
                    Teleporting =
                        Teleport.Intersects(new Rectangle(ballTileRect.X + tileToWorldTranslation.X,
                                                          ballTileRect.Y + tileToWorldTranslation.Y, (int)GolfBall.Width, (int)GolfBall.Height));
                }
            }
            catch (Exception)
            {
                //Somthing bad happened reset
                Node =
                    new Node(
                        new Vector2(Math.Max(map.Start.X, 0) * map.TileSet.TileWidth,
                                    Math.Max(map.Start.Y, 0) * map.TileSet.TileHeight) +
                        WorldHelpers.GetStartOffset(map.StartSide), 2.5f, 1, Vector2.Zero, Vector2.Zero, map.StartLayer);
                State        = PlayerState.Finished;
                PreviousTile = map.GetPlayerTile(this);
                LastTile     = PreviousTile;
            }
        }
示例#3
0
 public static GameElements.State RunUpdate(ContentManager content, GameWindow window, GameTime gameTime)
 {
     GameElements.bakgrund.Update(window);
     GameElements.player.Update(window, gameTime);
     foreach (Fiender f in GameElements.Fiende.ToList <Fiender>())
     {
         foreach (Bullet b in GameElements.player.AntSkott.ToList <Bullet>())
         {
             if (f.CheckCollision(b))
             {
                 f.Liv = false;
                 GameElements.player.poäng++;
                 if (!GameElements.player.PenetratingBullets)
                 {
                     GameElements.player.AntSkott.Remove(b);
                 }
                 else if (GameElements.player.PenetratingBullets)
                 {
                     if (gameTime.get_TotalGameTime().TotalSeconds > GameElements.player.PenetratingBulletsTime + 2.0)
                     {
                         GameElements.player.PenetratingBullets = false;
                     }
                 }
             }
         }
         if (f.Liv)
         {
             if (f.CheckCollision(GameElements.player))
             {
                 GameElements.playerLiv--;
                 GameElements.player.Liv = false;
             }
             f.Update(window);
         }
         else
         {
             GameElements.Fiende.Remove(f);
         }
         if (!f.FKoll)
         {
             GameElements.Fiende.Remove(f);
             GameElements.playerLiv--;
         }
     }
     if (GameElements.boss1.Liv)
     {
         foreach (Bullet b in GameElements.player.AntSkott.ToList <Bullet>())
         {
             if (GameElements.boss1.CheckCollision(b))
             {
                 GameElements.player.AntSkott.Remove(b);
                 GameElements.boss1Liv--;
             }
         }
         GameElements.boss1.Update(window);
     }
     if (GameElements.boss1Liv == 0)
     {
         GameElements.boss1.Liv = false;
     }
     GameElements.State result;
     if (!GameElements.boss1.Liv)
     {
         GameElements.Reset(window, content);
         result = GameElements.State.Menu;
     }
     else
     {
         Random random  = new Random();
         int    newMynt = random.Next(1, 200);
         if (newMynt == 1)
         {
             int rndX = random.Next(0, window.get_ClientBounds().Width - GameElements.guldMyntSprite.get_Width());
             int rndY = random.Next(0, window.get_ClientBounds().Height - GameElements.guldMyntSprite.get_Height());
             GameElements.guldMynt.Add(new GuldMynt(GameElements.guldMyntSprite, (float)rndX, (float)rndY));
         }
         foreach (GuldMynt gc in GameElements.guldMynt.ToList <GuldMynt>())
         {
             if (gc.Liv)
             {
                 gc.Update(gameTime);
                 if (gc.CheckCollision(GameElements.player))
                 {
                     GameElements.guldMynt.Remove(gc);
                     GameElements.player.Poäng++;
                 }
             }
             else
             {
                 GameElements.guldMynt.Remove(gc);
             }
         }
         Random rnd        = new Random();
         int    newPowerup = rnd.Next(1, 300);
         if (newPowerup == 1)
         {
             int rndX = rnd.Next(0, window.get_ClientBounds().Width - GameElements.SuperskeppSprite.get_Width());
             int rndY = rnd.Next(0, window.get_ClientBounds().Height - GameElements.SuperskeppSprite.get_Height());
             GameElements.SuperSkepp.Add(new Powerup(GameElements.SuperskeppSprite, (float)rndX, (float)rndY));
         }
         foreach (Powerup Power in GameElements.SuperSkepp.ToList <Powerup>())
         {
             if (Power.Liv)
             {
                 Power.Update(gameTime);
                 if (Power.CheckCollision(GameElements.player))
                 {
                     GameElements.SuperSkepp.Remove(Power);
                     GameElements.player.SuperSkepp     = true;
                     GameElements.player.SuperSkeppTime = gameTime.get_TotalGameTime().TotalSeconds;
                 }
             }
             else
             {
                 GameElements.SuperSkepp.Remove(Power);
             }
         }
         Random rnd2       = new Random();
         int    NewPowerup = rnd2.Next(1, 300);
         if (NewPowerup == 1)
         {
             int rndX = rnd2.Next(0, window.get_ClientBounds().Width - GameElements.PenetratingbulletsSprite.get_Width());
             int rndY = rnd2.Next(0, window.get_ClientBounds().Height - GameElements.PenetratingbulletsSprite.get_Height());
             GameElements.PenetratingBullets.Add(new Powerup(GameElements.PenetratingbulletsSprite, (float)rndX, (float)rndY));
         }
         foreach (Powerup P in GameElements.PenetratingBullets.ToList <Powerup>())
         {
             if (P.Liv)
             {
                 P.Update(gameTime);
                 if (P.CheckCollision(GameElements.player))
                 {
                     GameElements.PenetratingBullets.Remove(P);
                     GameElements.player.PenetratingBullets     = true;
                     GameElements.player.PenetratingBulletsTime = gameTime.get_TotalGameTime().TotalSeconds;
                 }
             }
             else
             {
                 GameElements.PenetratingBullets.Remove(P);
             }
         }
         if (!GameElements.player.Liv || GameElements.playerLiv == 0)
         {
             GameElements.Reset(window, content);
             result = GameElements.State.Menu;
         }
         else
         {
             result = GameElements.State.Run;
         }
     }
     return(result);
 }