コード例 #1
0
 public override void HandleInput(InputState input)
 {
     if (input.InGameSelect)
     {
         Viewport viewport = base.ScreenManager.GraphicsDevice.Viewport;
         Vector3 nearPoint = viewport.Unproject(new Vector3(input.CursorPosition, 0f), this.projection, this.view, Matrix.Identity);
         Viewport viewport1 = base.ScreenManager.GraphicsDevice.Viewport;
         Vector3 farPoint = viewport1.Unproject(new Vector3(input.CursorPosition, 1f), this.projection, this.view, Matrix.Identity);
         Vector3 direction = farPoint - nearPoint;
         direction.Normalize();
         Ray pickRay = new Ray(nearPoint, direction);
         float k = -pickRay.Position.Z / pickRay.Direction.Z;
         Vector3 pickedPosition = new Vector3(pickRay.Position.X + k * pickRay.Direction.X, pickRay.Position.Y + k * pickRay.Direction.Y, 0f);
         if (Vector3.Distance(pickedPosition, this.planetSO.WorldBoundingSphere.Center) < this.planetSO.WorldBoundingSphere.Radius)
         {
             AudioManager.PlayCue("sd_bomb_impact_01");
             Vector3 VectorToCenter = pickedPosition - this.planetSO.WorldBoundingSphere.Center;
             VectorToCenter = Vector3.Normalize(VectorToCenter);
             VectorToCenter = this.planetSO.WorldBoundingSphere.Center + (VectorToCenter * this.planetSO.WorldBoundingSphere.Radius);
         }
     }
     this.currentMouse = input.CurrentMouseState;
     Vector2 MousePos = new Vector2((float)this.currentMouse.X, (float)this.currentMouse.Y);
     bool okcomet = true;
     foreach (UIButton b in this.Buttons)
     {
         if (!HelperFunctions.CheckIntersection(b.Rect, MousePos))
         {
             b.State = UIButton.PressState.Normal;
         }
         else
         {
             okcomet = false;
             if (b.State != UIButton.PressState.Hover && b.State != UIButton.PressState.Pressed)
             {
                 AudioManager.PlayCue("mouse_over4");
             }
             b.State = UIButton.PressState.Hover;
             if (this.currentMouse.LeftButton == ButtonState.Pressed && this.previousMouse.LeftButton == ButtonState.Pressed)
             {
                 b.State = UIButton.PressState.Pressed;
             }
             if (this.currentMouse.LeftButton != ButtonState.Pressed || this.previousMouse.LeftButton != ButtonState.Released)
             {
                 continue;
             }
             string launches = b.Launches;
             string str = launches;
             if (launches == null)
             {
                 continue;
             }
             if (str == "New Campaign")
             {
                 AudioManager.PlayCue("sd_ui_tactical_pause");
                 this.OnPlayGame();
             }
             else if (str == "Tutorials")
             {
                 AudioManager.PlayCue("sd_ui_tactical_pause");
                 base.ScreenManager.AddScreen(new TutorialScreen());
             }
             else if (str == "Load Game")
             {
                 AudioManager.PlayCue("sd_ui_tactical_pause");
                 base.ScreenManager.AddScreen(new LoadSaveScreen(this));
             }
             else if (str == "Options")
             {
                 OptionsScreen opt = new OptionsScreen(this, new Rectangle(0, 0, 600, 600))
                 {
                     TitleText = Localizer.Token(4),
                     MiddleText = Localizer.Token(4004)
                 };
                 base.ScreenManager.AddScreen(opt);
             }
             else if (str == "Mods")
             {
                 ModManager mm = new ModManager(this);
                 base.ScreenManager.AddScreen(mm);
             }
             else if (str == "Exit")
             {
                 Game1.Instance.Exit();
             }
         }
     }
     if (input.C && input.CurrentKeyboardState.IsKeyDown(Keys.LeftShift))
     {
         base.ScreenManager.AddScreen(new ShipToolScreen());
         this.ExitScreen();
     }
     if (okcomet && input.CurrentMouseState.LeftButton == ButtonState.Pressed && input.LastMouseState.LeftButton == ButtonState.Released)
     {
         MainMenuScreen.Comet c = new MainMenuScreen.Comet();
         //{
         c.Position = new Vector2(RandomMath.RandomBetween(-100f, (float)(base.ScreenManager.GraphicsDevice.PresentationParameters.BackBufferWidth + 100)), 0f);
             c.Velocity = HelperFunctions.FindVectorToTarget(c.Position, input.CursorPosition);
         //};
         c.Velocity = Vector2.Normalize(c.Velocity);
         c.Rotation = (float)MathHelper.ToRadians(HelperFunctions.findAngleToTarget(c.Position, c.Position + c.Velocity));
         this.CometList.Add(c);
     }
     this.previousMouse = input.LastMouseState;
     base.HandleInput(input);
 }
コード例 #2
0
 public override void Draw(GameTime gameTime)
 {
     float elapsedTime = (float)gameTime.ElapsedGameTime.TotalSeconds;
     MainMenuScreen mainMenuScreen = this;
     mainMenuScreen.rotate = mainMenuScreen.rotate + elapsedTime / 350f;
     if ((double)RandomMath.RandomBetween(0f, 100f) > 99.75)
     {
         MainMenuScreen.Comet c = new MainMenuScreen.Comet()
         {
             Position = new Vector2(RandomMath.RandomBetween(-100f, (float)(base.ScreenManager.GraphicsDevice.PresentationParameters.BackBufferWidth + 100)), 0f),
             Velocity = new Vector2(RandomMath.RandomBetween(-1f, 1f), 1f)
         };
         c.Velocity = Vector2.Normalize(c.Velocity);
         c.Rotation = (float)MathHelper.ToRadians(HelperFunctions.findAngleToTarget(c.Position, c.Position + c.Velocity));
         this.CometList.Add(c);
     }
     Vector2 CometOrigin = new Vector2((float)(Ship_Game.ResourceManager.TextureDict["GameScreens/comet"].Width / 2), (float)(Ship_Game.ResourceManager.TextureDict["GameScreens/comet"].Height / 2));
     if (SplashScreen.DisplayComplete)
     {
         base.ScreenManager.splashScreenGameComponent.Visible = false;
         base.ScreenManager.sceneState.BeginFrameRendering(this.view, this.projection, gameTime, base.ScreenManager.environment, true);
         base.ScreenManager.editor.BeginFrameRendering(base.ScreenManager.sceneState);
         try
         {
             base.ScreenManager.inter.BeginFrameRendering(base.ScreenManager.sceneState);
         }
         catch { }
         this.DrawNew(gameTime);
         base.ScreenManager.inter.RenderManager.Render();
         base.ScreenManager.SpriteBatch.Begin(SpriteBlendMode.AlphaBlend, SpriteSortMode.Immediate, SaveStateMode.None);
         base.ScreenManager.GraphicsDevice.RenderState.SourceBlend = Blend.InverseDestinationColor;
         base.ScreenManager.GraphicsDevice.RenderState.DestinationBlend = Blend.One;
         base.ScreenManager.GraphicsDevice.RenderState.BlendFunction = BlendFunction.Add;
         Viewport viewport = base.ScreenManager.GraphicsDevice.Viewport;
         Vector3 mp = viewport.Project(this.planetSO.WorldBoundingSphere.Center, this.projection, this.view, Matrix.Identity);
         Vector2 MoonFlarePos = new Vector2(mp.X - 40f - 2f, mp.Y - 40f + 24f) + this.FlareAdd;
         Vector2 Origin = new Vector2(184f, 184f);
         Rectangle? nullable = null;
         base.ScreenManager.SpriteBatch.Draw(Ship_Game.ResourceManager.TextureDict["MainMenu/moon_flare"], MoonFlarePos, nullable, Color.White, 0f, Origin, 0.95f, SpriteEffects.None, 1f);
         base.ScreenManager.SpriteBatch.End();
         base.ScreenManager.SpriteBatch.Begin();
         if (this.AnimationFrame >= 41 && this.AnimationFrame < 52)
         {
             float alphaStep = (float)(255 / 12);
             float Alpha = (float)(this.AnimationFrame - 41) * alphaStep;
             if (Alpha > 220f)
             {
                 Alpha = 220f;
             }
             Rectangle moon1 = new Rectangle((int)MoonFlarePos.X - 220, (int)MoonFlarePos.Y - 130, 201, 78);
             base.ScreenManager.SpriteBatch.Draw(Ship_Game.ResourceManager.TextureDict["MainMenu/moon_1"], moon1, new Color(Color.White, (byte)Alpha));
         }
         if (this.AnimationFrame >= 52 && this.AnimationFrame <= 67)
         {
             float Alpha = 220f;
             Rectangle moon1 = new Rectangle((int)MoonFlarePos.X - 220, (int)MoonFlarePos.Y - 130, 201, 78);
             base.ScreenManager.SpriteBatch.Draw(Ship_Game.ResourceManager.TextureDict["MainMenu/moon_1"], moon1, new Color(Color.White, (byte)Alpha));
         }
         if (this.AnimationFrame > 67 && this.AnimationFrame <= 95)
         {
             float alphaStep = (float)(255 / 28);
             float Alpha = 255f - (float)(this.AnimationFrame - 67) * alphaStep;
             if (Alpha < 0f)
             {
                 Alpha = 0f;
             }
             if (Alpha > 220f)
             {
                 Alpha = 220f;
             }
             Rectangle moon1 = new Rectangle((int)MoonFlarePos.X - 220, (int)MoonFlarePos.Y - 130, 201, 78);
             base.ScreenManager.SpriteBatch.Draw(Ship_Game.ResourceManager.TextureDict["MainMenu/moon_1"], moon1, new Color(Color.White, (byte)Alpha));
         }
         if (this.AnimationFrame >= 161 && this.AnimationFrame < 172)
         {
             float alphaStep = (float)(255 / 12);
             float Alpha = (float)(this.AnimationFrame - 161) * alphaStep;
             if (Alpha > 220f)
             {
                 Alpha = 220f;
             }
             Rectangle moon1 = new Rectangle((int)MoonFlarePos.X - 250, (int)MoonFlarePos.Y + 60, 254, 82);
             base.ScreenManager.SpriteBatch.Draw(Ship_Game.ResourceManager.TextureDict["MainMenu/moon_2"], moon1, new Color(Color.White, (byte)Alpha));
         }
         if (this.AnimationFrame >= 172 && this.AnimationFrame <= 187)
         {
             float Alpha = 220f;
             Rectangle moon1 = new Rectangle((int)MoonFlarePos.X - 250, (int)MoonFlarePos.Y + 60, 254, 82);
             base.ScreenManager.SpriteBatch.Draw(Ship_Game.ResourceManager.TextureDict["MainMenu/moon_2"], moon1, new Color(Color.White, (byte)Alpha));
         }
         if (this.AnimationFrame > 187 && this.AnimationFrame <= 215)
         {
             float alphaStep = (float)(255 / 28);
             float Alpha = 255f - (float)(this.AnimationFrame - 187) * alphaStep;
             if (Alpha < 0f)
             {
                 Alpha = 0f;
             }
             if (Alpha > 220f)
             {
                 Alpha = 220f;
             }
             Rectangle moon1 = new Rectangle((int)MoonFlarePos.X - 250, (int)MoonFlarePos.Y + 60, 254, 82);
             base.ScreenManager.SpriteBatch.Draw(Ship_Game.ResourceManager.TextureDict["MainMenu/moon_2"], moon1, new Color(Color.White, (byte)Alpha));
         }
         if (this.AnimationFrame >= 232 && this.AnimationFrame < 243)
         {
             float alphaStep = (float)(255 / 12);
             float Alpha = (float)(this.AnimationFrame - 232) * alphaStep;
             if (Alpha > 220f)
             {
                 Alpha = 220f;
             }
             Rectangle moon1 = new Rectangle((int)MoonFlarePos.X + 60, (int)MoonFlarePos.Y + 80, 156, 93);
             base.ScreenManager.SpriteBatch.Draw(Ship_Game.ResourceManager.TextureDict["MainMenu/moon_3"], moon1, new Color(Color.White, (byte)Alpha));
         }
         if (this.AnimationFrame >= 243 && this.AnimationFrame <= 258)
         {
             float Alpha = 220f;
             Rectangle moon1 = new Rectangle((int)MoonFlarePos.X + 60, (int)MoonFlarePos.Y + 80, 156, 93);
             base.ScreenManager.SpriteBatch.Draw(Ship_Game.ResourceManager.TextureDict["MainMenu/moon_3"], moon1, new Color(Color.White, (byte)Alpha));
         }
         if (this.AnimationFrame > 258 && this.AnimationFrame <= 286)
         {
             float alphaStep = (float)(255 / 28);
             float Alpha = 255f - (float)(this.AnimationFrame - 258) * alphaStep;
             if (Alpha < 0f)
             {
                 Alpha = 0f;
             }
             if (Alpha > 220f)
             {
                 Alpha = 220f;
             }
             Rectangle moon1 = new Rectangle((int)MoonFlarePos.X + 60, (int)MoonFlarePos.Y + 80, 156, 93);
             base.ScreenManager.SpriteBatch.Draw(Ship_Game.ResourceManager.TextureDict["MainMenu/moon_3"], moon1, new Color(Color.White, (byte)Alpha));
         }
         base.ScreenManager.SpriteBatch.End();
         base.ScreenManager.SpriteBatch.Begin(SpriteBlendMode.Additive);
         foreach (MainMenuScreen.Comet c in this.CometList)
         {
             float Alpha = 255f;
             if (c.Position.Y > 100f)
             {
                 Alpha = 25500f / c.Position.Y;
                 if (Alpha > 255f)
                 {
                     Alpha = 255f;
                 }
             }
             Rectangle? nullable1 = null;
             base.ScreenManager.SpriteBatch.Draw(Ship_Game.ResourceManager.TextureDict["GameScreens/comet2"], c.Position, nullable1, new Color(255, 255, 255, (byte)Alpha), c.Rotation, CometOrigin, 0.45f, SpriteEffects.None, 1f);
             MainMenuScreen.Comet position = c;
             position.Position = position.Position + ((c.Velocity * 2400f) * elapsedTime);
             if (c.Position.Y <= 1050f)
             {
                 continue;
             }
             this.CometList.QueuePendingRemoval(c);
         }
         this.CometList.ApplyPendingRemovals();
         base.ScreenManager.SpriteBatch.End();
         base.ScreenManager.SpriteBatch.Begin();
         int numEntries = 5;
         int k = 5;
         foreach (UIButton b in this.Buttons)
         {
             Rectangle r = b.Rect;
             float transitionOffset = MathHelper.Clamp((base.TransitionPosition - 0.5f * (float)k / (float)numEntries) / 0.5f, 0f, 1f);
             k--;
             if (base.ScreenState != Ship_Game.ScreenState.TransitionOn)
             {
                 r.X = r.X + (int)transitionOffset * 512;
             }
             else
             {
                 r.X = r.X + (int)(transitionOffset * 512f);
                 if (transitionOffset == 0f)
                 {
                     AudioManager.PlayCue("blip_click");
                 }
             }
             b.Draw(base.ScreenManager.SpriteBatch, r);
         }
         if (GlobalStats.ActiveMod != null)
         {
             base.ScreenManager.SpriteBatch.Draw(GlobalStats.ActiveMod.MainMenuTex, this.Portrait, Color.White);
         }
         base.ScreenManager.SpriteBatch.Draw(this.LogoAnimation[0], this.LogoRect, Color.White);
         if (this.LogoAnimation.Count > 1)
         {
             this.LogoAnimation.RemoveAt(0);
         }
         base.ScreenManager.SpriteBatch.End();
         base.ScreenManager.inter.EndFrameRendering();
         base.ScreenManager.editor.EndFrameRendering();
         base.ScreenManager.sceneState.EndFrameRendering();
     }
 }