Files
LuaCsForBarotraumaEP/Barotrauma/BarotraumaClient/ClientSource/Screens/RoundSummaryScreen.cs
2022-02-26 02:43:01 +09:00

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();
}
}
}
}