You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
223 lines
7.8 KiB
C#
223 lines
7.8 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using Otter;
|
|
using _1869_Remake;
|
|
|
|
namespace _1869_Remake.Scenes
|
|
{
|
|
|
|
// Intro ist ein ImageSequenzer, welcher die aufelisteten Images nacheinander ein- und ausblendet und beim letzten stehen bleibt
|
|
// Hier muss der User ein letztes Mal Bestätigen um ins Hauptmenü(neue Szene) zu gelangen
|
|
|
|
public class Intro : Scene
|
|
{
|
|
// Imageobjekte mit den Intro Bildschirmen
|
|
public Image IntroImage = new Image(Assets.INTRO_IMG_Company);
|
|
public Image IntroImage2 = new Image(Assets.INTRO_IMG_ART);
|
|
public Image IntroImage3 = new Image(Assets.INTRO_IMG_PROGRAMMING);
|
|
public Image IntroImage4 = new Image(Assets.INTRO_IMG_MUSIK);
|
|
public Image IntroImage5 = new Image(Assets.TITLE_IMG);
|
|
|
|
public Image BlackScreen = new Image(Assets.BLACKSCREEN);
|
|
|
|
public Image aktuellesImage = null;
|
|
|
|
//Blinkender Text
|
|
public Text enterText1 = new Text("Drücke Enter", Assets.FONT_AMIGA4EVER2, 12);
|
|
public Text enterText2 = new Text("oder", Assets.FONT_AMIGA4EVER2, 12);
|
|
public Text enterText3 = new Text("Linke Maustaste", Assets.FONT_AMIGA4EVER2, 12);
|
|
|
|
//Intromusik
|
|
public Music titleSong = new Music(Assets.MUSIC_TITLE,false);
|
|
|
|
//Nummer des gerade Angezeigten Bildes
|
|
public int ImageNummer = 0;
|
|
|
|
public const float TIMER_ANZEIGE = 720f;
|
|
//AnzeigeTimer muss hoch starten damit sofort erstes bild angezeigt wird
|
|
public float anzeigeTimer = 280f;
|
|
public float TIMER_BLINK = 60f;
|
|
public float TIMER_BLINK_FAST = 10f;
|
|
public float blinkTimer = 0f;
|
|
//Wenn auf 1 -> User hat bestätigt
|
|
public int bestätigt = 0;
|
|
public bool soundEnde = false;
|
|
|
|
|
|
public Intro()
|
|
{
|
|
Globals.aktuelleSzene = "Intro";
|
|
|
|
//Vorbereiten des Blinktextes
|
|
enterText1.Color = new Otter.Color("a01010");
|
|
enterText2.Color = new Otter.Color("a01010");
|
|
enterText3.Color = new Otter.Color("a01010");
|
|
|
|
enterText1.CenterOrigin();
|
|
enterText2.CenterOrigin();
|
|
enterText3.CenterOrigin();
|
|
|
|
enterText1.X = Globals.Remake.Width - 200;
|
|
enterText2.X = Globals.Remake.Width - 200;
|
|
enterText3.X = Globals.Remake.Width - 200;
|
|
|
|
enterText1.Y = Globals.Remake.Height - 150;
|
|
enterText2.Y = Globals.Remake.Height - 125;
|
|
enterText3.Y = Globals.Remake.Height - 100;
|
|
|
|
enterText1.Visible = false;
|
|
enterText2.Visible = false;
|
|
enterText3.Visible = false;
|
|
|
|
//Vorbereiten des Blackscreens
|
|
BlackScreen.CenterOrigin();
|
|
BlackScreen.X = Globals.Remake.HalfWidth;
|
|
BlackScreen.Y = Globals.Remake.HalfHeight;
|
|
BlackScreen.Alpha = 0f;
|
|
|
|
//Abspielen der Musik(looped nicht sondern geht am ende einfach aus)
|
|
titleSong.Play();
|
|
|
|
}
|
|
|
|
|
|
|
|
public override void Update()
|
|
{
|
|
base.Update();
|
|
|
|
//Wenn Musik zuende ohne User Eingabe -> Neubeginn
|
|
if (!titleSong.IsPlaying)
|
|
{
|
|
if (soundEnde == false)
|
|
{
|
|
AddGraphic(BlackScreen);
|
|
Tween(BlackScreen, new { Alpha = 1f }, 64f, 0f).Ease(Ease.BackInOut);
|
|
soundEnde = true;
|
|
}
|
|
|
|
if (BlackScreen.Alpha >= 0.999f)
|
|
{
|
|
Globals.LetzteSzene = "Intro";
|
|
Globals.Remake.SwitchScene(new Intro());
|
|
}
|
|
|
|
}
|
|
|
|
//Wenn Taste gedrückt dann bei nächstem Tween weiter zu nächster Szene
|
|
if ((Globals.PlayerSession.Controller.Button("Enter").Released || Globals.PlayerSession.Controller.Button("MausLinks").Released) && bestätigt == 0 && ImageNummer != 5)
|
|
{
|
|
bestätigt = 1;
|
|
|
|
AddGraphic(BlackScreen);
|
|
Tween(BlackScreen, new { Alpha = 1f }, 64f, 0f).Ease(Ease.BackInOut);
|
|
|
|
}
|
|
|
|
if (bestätigt == 1)
|
|
{
|
|
if (BlackScreen.Alpha >= 0.999f)
|
|
{
|
|
titleSong.Stop();
|
|
Globals.Remake.SwitchScene(new ConfigScreen());
|
|
}
|
|
}
|
|
|
|
anzeigeTimer++;
|
|
|
|
//Daueranzeige des letzten Screens mit blinkendem text
|
|
if (anzeigeTimer >= TIMER_ANZEIGE/2 && ImageNummer == 5)
|
|
{
|
|
blinkTimer++;
|
|
|
|
if (Globals.PlayerSession.Controller.Button("Enter").Released || Globals.PlayerSession.Controller.Button("MausLinks").Released)
|
|
{
|
|
bestätigt = 1;
|
|
TIMER_BLINK = TIMER_BLINK_FAST;
|
|
|
|
AddGraphic(BlackScreen);
|
|
Tween(BlackScreen, new { Alpha = 1f }, 64f, 0f).Ease(Ease.BackInOut);
|
|
|
|
}
|
|
|
|
if (blinkTimer >= TIMER_BLINK)
|
|
{
|
|
enterText1.Visible = !enterText1.Visible;
|
|
enterText2.Visible = !enterText2.Visible;
|
|
enterText3.Visible = !enterText3.Visible;
|
|
|
|
blinkTimer = 0;
|
|
}
|
|
|
|
if (bestätigt == 1)
|
|
{
|
|
if (BlackScreen.Alpha >= 0.999f)
|
|
{
|
|
titleSong.Stop();
|
|
Globals.Remake.SwitchScene(new ConfigScreen());
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
//Wechsel des Screens
|
|
if (anzeigeTimer >= TIMER_ANZEIGE && ImageNummer != 5)
|
|
{
|
|
|
|
|
|
//Nächstes Intro Bild
|
|
aktuellesImage = null;
|
|
ImageNummer++;
|
|
|
|
//Laden des Nächsten Bildes und beim letzten Bild Welchseln in den Titelbildschirm) [Erweiterbar um endlos viele Screens]
|
|
switch(ImageNummer)
|
|
{
|
|
case 1: aktuellesImage = IntroImage; break;
|
|
case 2: aktuellesImage = IntroImage2; break;
|
|
case 3: aktuellesImage = IntroImage3; break;
|
|
case 4: aktuellesImage = IntroImage4; break;
|
|
case 5: aktuellesImage = IntroImage5; break;
|
|
// hier eventuell einen Extra screen für Remake einfügen (evtl im Pixelstil Mensch mit Laptop und Otter symbol auf dem Laptop)
|
|
}
|
|
|
|
aktuellesImage.CenterOrigin();
|
|
aktuellesImage.X = Globals.Remake.HalfWidth;
|
|
aktuellesImage.Y = Globals.Remake.HalfHeight;
|
|
|
|
aktuellesImage.Alpha = 0f;
|
|
ClearGraphics();
|
|
AddGraphic(aktuellesImage);
|
|
|
|
// Tweenen des Alpha wertes für einen "Fade In & Out" effekt
|
|
if (ImageNummer != 5)
|
|
{
|
|
Tween(aktuellesImage, new { Alpha = 1f }, 180f, 0f)
|
|
.Ease(Ease.BackInOut)
|
|
.Reflect()
|
|
.Repeat(1)
|
|
.RepeatDelay(360f);
|
|
}
|
|
else
|
|
{
|
|
Tween(aktuellesImage, new { Alpha = 1f }, 180f, 0f)
|
|
.Ease(Ease.BackInOut);
|
|
|
|
AddGraphic(enterText1);
|
|
AddGraphic(enterText2);
|
|
AddGraphic(enterText3);
|
|
}
|
|
|
|
|
|
anzeigeTimer = 0f;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
}
|
|
}
|