/// <summary> Draws the currently open <see cref="MenuObject"/>s on the screen </summary> /// <param name="game"> <see cref="Game"/> to draw to </param> /// <param name="sheet"> <see cref="Sprite"/> to use as a sheet </param> /// <param name="offset"> Offset on screen </param> public void Draw(Game game, Sprite sheet, Vector2Int?offset) { if (!Panels.Any()) { return; } Vector2Int screenOffset = offset ?? Vector2Int.zero; foreach (var panel in Panels) { panel.Draw(game, sheet, screenOffset); screenOffset += WindowOffset; } Pixel.Mode previousPixelMode = game.PixelMode; game.PixelMode = Pixel.Mode.Mask; MenuObject last = Panels.Last(); Vector2Int patchSize = last.PatchSize; game.DrawPartialSprite(last.CursorPos, sheet, CURSOR_PATCH * patchSize, patchSize.x * 2, 2 * patchSize.y); game.PixelMode = previousPixelMode; }
/// <summary> Close any open menus, and show the given <see cref="MenuObject"/>. </summary> /// <param name="menuObject"> <see cref="MenuObject"/> to show. </param> public void Open(MenuObject menuObject) { Close(); Panels.AddLast(menuObject); }