69 lines
2.6 KiB
C#
69 lines
2.6 KiB
C#
using Microsoft.Xna.Framework;
|
|
using Microsoft.Xna.Framework.Graphics;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
|
|
namespace Barotrauma
|
|
{
|
|
class RoundSummaryScreen : Screen
|
|
{
|
|
private Sprite backgroundSprite;
|
|
private RoundSummary roundSummary;
|
|
private LocalizedString loadText;
|
|
|
|
private RectTransform prevGuiElementParent;
|
|
|
|
public Exception LoadException;
|
|
|
|
public static RoundSummaryScreen Select(Sprite backgroundSprite, RoundSummary roundSummary)
|
|
{
|
|
var summaryScreen = new RoundSummaryScreen()
|
|
{
|
|
roundSummary = roundSummary,
|
|
backgroundSprite = backgroundSprite,
|
|
prevGuiElementParent = roundSummary.Frame.RectTransform.Parent,
|
|
loadText = TextManager.Get("campaignstartingpleasewait")
|
|
};
|
|
roundSummary.Frame.RectTransform.Parent = summaryScreen.Frame.RectTransform;
|
|
summaryScreen.Select();
|
|
summaryScreen.AddToGUIUpdateList();
|
|
return summaryScreen;
|
|
}
|
|
|
|
public override void Deselect()
|
|
{
|
|
roundSummary.Frame.RectTransform.Parent = prevGuiElementParent;
|
|
}
|
|
|
|
public override void Draw(double deltaTime, GraphicsDevice graphics, SpriteBatch spriteBatch)
|
|
{
|
|
spriteBatch.Begin(SpriteSortMode.Deferred, null, GUI.SamplerState, null, GameMain.ScissorTestEnable);
|
|
|
|
if (backgroundSprite != null)
|
|
{
|
|
float scale = Math.Max(GameMain.GraphicsWidth / backgroundSprite.size.X, GameMain.GraphicsHeight / backgroundSprite.size.Y);
|
|
backgroundSprite.Draw(spriteBatch, new Vector2(GameMain.GraphicsWidth, GameMain.GraphicsHeight) / 2, Color.White, backgroundSprite.size / 2, scale: scale);
|
|
}
|
|
|
|
GUI.Draw(Cam, spriteBatch);
|
|
|
|
LocalizedString loadingText = loadText + new string('.', (int)Timing.TotalTime % 3 + 1);
|
|
Vector2 textSize = GUIStyle.LargeFont.MeasureString(loadText);
|
|
GUI.DrawString(spriteBatch, new Vector2(GameMain.GraphicsWidth / 2, GameMain.GraphicsHeight * 0.95f) - textSize / 2, loadingText, Color.White, font: GUIStyle.LargeFont);
|
|
|
|
spriteBatch.End();
|
|
}
|
|
|
|
public override void Update(double deltaTime)
|
|
{
|
|
base.Update(deltaTime);
|
|
if (LoadException != null)
|
|
{
|
|
var temp = LoadException;
|
|
LoadException = null;
|
|
System.Runtime.ExceptionServices.ExceptionDispatchInfo.Capture(temp).Throw();
|
|
}
|
|
}
|
|
}
|
|
}
|