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(); }
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; } }
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); }