public override void RemoveSprite(SosEngine.Sprite sprite) { Pickup pickup = (Pickup)sprite; if (IsRevealingItem(pickup.Block)) { RevealHiddenItems(); } base.RemoveSprite(sprite); }
public MenuScene(Game game) : base(game, "Level01") { /* * var assembly = System.Reflection.Assembly.GetExecutingAssembly(); * using (System.IO.Stream stream = assembly.GetManifestResourceStream("Mario.Resources.mario.rec")) * { * replay = new SosEngine.Replay(stream); * } */ BackgroundColor = new Color(0, 0, 80); SosEngine.Sprite logo = new SosEngine.Sprite(game, "logo"); // Set origin of logo to its center and center horizontally logo.Origin = new Vector2(logo.BoundingBox.Width / 2, logo.BoundingBox.Height / 2); logo.CenterHorizontally(40); gameComponents.Add(logo); }
public override void Update(GameTime gameTime) { Core.UpdateInput(); lastKeyboardState = currentKeyboardState; currentKeyboardState = Keyboard.GetState(); if (mouseEnabled || SosEngine.Core.Debug) { currentMouseState = Mouse.GetState(); mouseX = (int)(Core.RenderWidth / (float)Game.GraphicsDevice.Viewport.Bounds.Width * currentMouseState.X); mouseY = (int)(Core.RenderHeight / (float)Game.GraphicsDevice.Viewport.Bounds.Height * currentMouseState.Y); if (mouseEnabled) { mouseCursor.Position = new Vector2(mouseX, mouseY); mouseCursor.SetState(currentMouseState.LeftButton == ButtonState.Pressed); } leftMouseButtonClicked = currentMouseState.LeftButton == ButtonState.Released && lastMouseState.LeftButton == ButtonState.Pressed; rightMouseButtonClicked = currentMouseState.RightButton == ButtonState.Released && lastMouseState.RightButton == ButtonState.Pressed; middleMouseButtonClicked = currentMouseState.MiddleButton == ButtonState.Released && lastMouseState.MiddleButton == ButtonState.Pressed; leftMouseButtonJustPressed = currentMouseState.LeftButton == ButtonState.Pressed && lastMouseState.LeftButton == ButtonState.Released; dragging = currentMouseState.LeftButton == ButtonState.Pressed && lastMouseState.LeftButton == ButtonState.Pressed; mouseDelta = new Vector2(mouseX, mouseY) - new Vector2(lastMouseX, lastMouseY); lastMouseX = mouseX; lastMouseY = mouseY; lastMouseState = currentMouseState; } // Update tasks bool anyUpdatedTask = false; for (int i = 0; i < tasks.Count; i++) { if (!tasks[i].IsFinished) { tasks[i].Update(gameTime); anyUpdatedTask = true; } } // Remove finished tasks if (anyUpdatedTask) { tasks.RemoveAll(task => task.IsFinished); } // Update game components foreach (GameComponent component in gameComponents) { component.Update(gameTime); } // Remove game components foreach (GameComponent component in gameComponentsToRemove) { gameComponents.Remove(component); } gameComponentsToRemove.Clear(); if (SosEngine.Core.Debug) { highlighedSprites.Clear(); foreach (GameComponent component in gameComponents) { if (component is SosEngine.Sprite) { if (((SosEngine.Sprite)component).BoundingBoxWithOffset.Contains(mouseX, mouseY)) { highlighedSprites.Add((SosEngine.Sprite)component); } } } if (leftMouseButtonJustPressed && highlighedSprites.Count > 0) { draggedObject = highlighedSprites[0]; } else if (dragging && draggedObject != null) { draggedObject.Position += mouseDelta; if (currentKeyboardState.IsKeyDown(Keys.LeftControl)) { int snappedX = (int)Math.Round(draggedObject.Position.X) / 8 * 8; int snappedY = (int)Math.Round(draggedObject.Position.Y) / 8 * 8; draggedObject.Position = new Vector2(snappedX, snappedY); } SosEngine.Core.Log(string.Format("Position of object is X: {0} Y: {1}", draggedObject.Position.X, draggedObject.Position.Y)); } else { draggedObject = null; } } base.Update(gameTime); }