85 lines
2.8 KiB
C#
85 lines
2.8 KiB
C#
using Barotrauma.Media;
|
|
using Microsoft.Xna.Framework;
|
|
using Microsoft.Xna.Framework.Graphics;
|
|
using System;
|
|
|
|
namespace Barotrauma
|
|
{
|
|
class CampaignEndScreen : Screen
|
|
{
|
|
private readonly CreditsPlayer creditsPlayer;
|
|
|
|
private readonly Camera cam;
|
|
|
|
public Action OnFinished;
|
|
|
|
protected SlideshowPlayer slideshowPlayer;
|
|
|
|
public CampaignEndScreen()
|
|
{
|
|
creditsPlayer = new CreditsPlayer(new RectTransform(Vector2.One, Frame.RectTransform), "Content/Texts/Credits.xml")
|
|
{
|
|
AutoRestart = false,
|
|
ScrollBarEnabled = false,
|
|
AllowMouseWheelScroll = false
|
|
};
|
|
new GUIButton(new RectTransform(new Vector2(0.1f), creditsPlayer.RectTransform, Anchor.BottomRight, maxSize: new Point(300, 50)) { AbsoluteOffset = new Point(GUI.IntScale(20)) },
|
|
TextManager.Get("close"))
|
|
{
|
|
OnClicked = (btn, userdata) =>
|
|
{
|
|
creditsPlayer.Scroll = 1.0f;
|
|
return true;
|
|
}
|
|
};
|
|
cam = new Camera();
|
|
}
|
|
|
|
public override void Select()
|
|
{
|
|
base.Select();
|
|
if (SlideshowPrefab.Prefabs.TryGet("campaignending".ToIdentifier(), out var slideshow))
|
|
{
|
|
slideshowPlayer = new SlideshowPlayer(GUICanvas.Instance, slideshow);
|
|
}
|
|
creditsPlayer.Restart();
|
|
creditsPlayer.Visible = false;
|
|
SteamAchievementManager.UnlockAchievement("campaigncompleted".ToIdentifier(), unlockClients: true);
|
|
}
|
|
|
|
public override void Deselect()
|
|
{
|
|
GUI.HideCursor = false;
|
|
SoundPlayer.OverrideMusicType = Identifier.Empty;
|
|
}
|
|
|
|
public override void Update(double deltaTime)
|
|
{
|
|
slideshowPlayer?.UpdateManually((float)deltaTime);
|
|
if (creditsPlayer.Finished)
|
|
{
|
|
OnFinished?.Invoke();
|
|
SoundPlayer.OverrideMusicType = Identifier.Empty;
|
|
}
|
|
}
|
|
|
|
public override void Draw(double deltaTime, GraphicsDevice graphics, SpriteBatch spriteBatch)
|
|
{
|
|
spriteBatch.Begin(SpriteSortMode.Deferred, null, GUI.SamplerState, null, GameMain.ScissorTestEnable);
|
|
graphics.Clear(Color.Black);
|
|
SoundPlayer.OverrideMusicType = "ending".ToIdentifier();
|
|
if (slideshowPlayer != null && !slideshowPlayer.Finished)
|
|
{
|
|
slideshowPlayer.DrawManually(spriteBatch);
|
|
}
|
|
else
|
|
{
|
|
GUI.HideCursor = false;
|
|
creditsPlayer.Visible = true;
|
|
}
|
|
GUI.Draw(cam, spriteBatch);
|
|
spriteBatch.End();
|
|
}
|
|
}
|
|
}
|