public ChallengeStartScreen(GameCore game)
: base(game)
{
savegameMenu = new Menu (this, DisplayLayer.ScreenUI + DisplayLayer.Menu);
savegameMenu.Bounds.Position = ScreenContentBounds.Position;
savegameMenu.Bounds.Size = new ScreenPoint (this, 0.300f, ScreenContentBounds.Size.Relative.Y);
savegameMenu.Bounds.Padding = new ScreenPoint (this, 0.010f, 0.010f);
savegameMenu.ItemAlignX = HorizontalAlignment.Left;
savegameMenu.ItemAlignY = VerticalAlignment.Center;
savegameMenu.ItemBackgroundColor = Design.ComboBoxItemBackgroundColorFunc;
savegameMenu.ItemForegroundColor = Design.ComboBoxItemForegroundColorFunc;
savegameMenu.RelativeItemHeight = Design.DataItemHeight;
lines.AddPoints (.000f, .050f, .030f, .970f, .620f, .895f, .740f, .970f, .760f, .895f, .880f, .970f, .970f, .050f, 1.000f);
title = new TextItem (screen: this, drawOrder: DisplayLayer.ScreenUI + DisplayLayer.MenuItem, text: "Start Challenge");
title.Bounds.Position = ScreenTitleBounds.Position;
title.Bounds.Size = ScreenTitleBounds.Size;
title.ForegroundColorFunc = (s) => Color.White;
infoTitle = new TextItem (screen: this, drawOrder: DisplayLayer.ScreenUI + DisplayLayer.MenuItem, text: "Challenge Info:");
infoTitle.Bounds.Position = new ScreenPoint (this, 0.45f, 0.62f);
infoTitle.Bounds.Size = new ScreenPoint (this, 0.900f, 0.050f);
infoTitle.ForegroundColorFunc = (s) => Color.White;
challengeInfo = new Menu (this, DisplayLayer.ScreenUI + DisplayLayer.Menu);
challengeInfo.Bounds.Position = new ScreenPoint (this, 0.47f, 0.70f);
challengeInfo.Bounds.Size = new ScreenPoint (this, 0.300f, 0.500f);
challengeInfo.Bounds.Padding = new ScreenPoint (this, 0.010f, 0.010f);
challengeInfo.ItemAlignX = HorizontalAlignment.Left;
challengeInfo.ItemAlignY = VerticalAlignment.Center;
// Erstelle einen Parser für das Dateiformat
ChallengeFileIO fileFormat = new ChallengeFileIO ();
// Erstelle einen Spielstand-Loader
loader = new SavegameLoader<Challenge, ChallengeMetaData> (fileFormat, "index-challenges");
// Preview
Bounds previewBounds = new Bounds (this, 0.45f, 0.1f, 0.48f, 0.5f);
previewWorld = new World (
screen: this,
drawOrder: DisplayLayer.ScreenUI + DisplayLayer.GameWorld,
bounds: previewBounds
);
previewRenderer = new KnotRenderer (screen: this, position: Vector3.Zero);
previewWorld.Add (previewRenderer);
previewBorder = new Border (
screen: this,
drawOrder: DisplayLayer.GameWorld,
bounds: previewBounds,
lineWidth: 2,
padding: 0
);
previewInput = new KnotInputHandler (screen: this, world: previewWorld);
previewMouseHandler = new ModelMouseHandler (screen: this, world: previewWorld);
backButton = new Button (
screen: this,
drawOrder: DisplayLayer.ScreenUI + DisplayLayer.MenuItem,
name: "Back",
onClick: (time) => NextScreen = Game.Screens.Where ((s) => !(s is ChallengeStartScreen)).ElementAt (0)
);
backButton.AddKey (Keys.Escape);
backButton.SetCoordinates (left: 0.770f, top: 0.910f, right: 0.870f, bottom: 0.960f);
backButton.AlignX = HorizontalAlignment.Center;
Action<GameTime> loadSelectedChallenge = (time) => {
NextScreen = new ChallengeModeScreen (
game: Game,
challenge: loader.FileFormat.Load (previewChallenge.MetaData.Filename)
);
};
startButton = new Button (
screen: this,
drawOrder: DisplayLayer.ScreenUI + DisplayLayer.MenuItem,
name: "Start",
onClick: loadSelectedChallenge
);
startButton.IsVisible = false;
startButton.AddKey (Keys.Enter);
startButton.SetCoordinates (left: 0.630f, top: 0.910f, right: 0.730f, bottom: 0.960f);
startButton.AlignX = HorizontalAlignment.Center;
}