public LevelSelectButton(RectCollider collider, LevelSelectScrollBar scrollBar, int levelNo) : base(collider) { LevelNo = levelNo; ScrollBar = scrollBar; if (LoadedLevelManager.HighestUnlockedLevel == levelNo) { ButtonSprite = new Sprite(Assets.LevelSelect.Images.UnclearedLevelButton); } else if (LoadedLevelManager.HighestUnlockedLevel > levelNo) { ButtonSprite = new Sprite(Assets.LevelSelect.Images.ClearedLevelButton); } else { ButtonSprite = new Sprite(Assets.LevelSelect.Images.LockedLevelButton); LockInteraction(); unlockedLevel = false; } LevelNoFont = Assets.LevelSelect.Fonts.LevelNo; ButtonSprite.Position = collider.TopLeft; var textDimensions = LevelNoFont.MeasureString((LevelNo + 1).ToString()); TextPosition = (ButtonSprite.Bounds - textDimensions) / 2f + collider.TopLeft; }
public override void Construct(MultiformTransmissionData args) { // We have to set this value to false so that it doesn't automatically start out as // true when we reconstruct this multiform, which would cause the player to automatically // go back into the last level they selected. buttonPressed = false; HasScrollBar = false; int BUTTON_WIDTH = Assets.LevelSelect.Images.ClearedLevelButton.Width; int BUTTON_HEIGHT = Assets.LevelSelect.Images.ClearedLevelButton.Height; int xOffset = INITIAL_LEVEL_SELECT_X_OFFSET; int yOffset = INITIAL_LEVEL_SELECT_Y_OFFSET; int rowNum = LoadedLevelManager.SequentialLevels.Length / BUTTONS_PER_ROW, totalWidth = (BUTTON_WIDTH + LEVEL_SELECT_BUTTON_GAP_X - 2) * BUTTONS_PER_ROW, totalHeight = rowNum * BUTTON_HEIGHT + (rowNum - 1) * LEVEL_SELECT_BUTTON_GAP_Y + 200, scrollBarHeight = DisplayManager.WindowResolution.Height - 2 * INITIAL_LEVEL_SELECT_Y_OFFSET; LevelSelectScrollBar scrollBar = null; // We only add a scrollbar if there is not enough room onscreen to fit everything. This occurs // when the total vertical space taken up by the level select buttons is greater than that which // would've been taken up by the scrollbar. if (totalHeight > scrollBarHeight) { var topLeft = new Vector2(xOffset + totalWidth + 20, yOffset - 10); scrollBar = new LevelSelectScrollBar(topLeft, scrollBarHeight, totalHeight, 12, true); RegisterForm(ScrollBarFormName, scrollBar); HasScrollBar = true; } // Construct all the buttons. int xIndex, yIndex; LevelSelectButton button; for (int i = 0; i < LoadedLevelManager.SequentialLevels.Length; i++) { xIndex = i % BUTTONS_PER_ROW; yIndex = i / BUTTONS_PER_ROW; button = new LevelSelectButton( new RectCollider( xOffset + xIndex * (BUTTON_WIDTH + LEVEL_SELECT_BUTTON_GAP_X), yOffset + yIndex * (BUTTON_HEIGHT + LEVEL_SELECT_BUTTON_GAP_Y), BUTTON_WIDTH, BUTTON_HEIGHT), scrollBar, i); RegisterForm(button); } RegisterForm(BackButtonFormName, new GUIButton(BackButtonInfo, BackButtonBottomLeft, PositionType.BottomLeft)); RegisterForm(new ClickParticleSpawnerForm()); FadeIn(20, Color.White, Update_Main, Render_Main); }