From 595bcc514e62f71090cb848f95bf77c20bc8e325 Mon Sep 17 00:00:00 2001 From: Ellpeck Date: Tue, 2 Jun 2020 23:23:43 +0200 Subject: [PATCH] splash screen --- TouchyTickets/Content/Textures/Ui.aseprite | Bin 1749 -> 1906 bytes TouchyTickets/Content/Textures/Ui.png | Bin 2782 -> 3028 bytes TouchyTickets/GameImpl.cs | 3 ++ TouchyTickets/TouchyTickets.csproj | 2 +- TouchyTickets/Ui.cs | 40 ++++++++++++++++----- 5 files changed, 36 insertions(+), 9 deletions(-) diff --git a/TouchyTickets/Content/Textures/Ui.aseprite b/TouchyTickets/Content/Textures/Ui.aseprite index 009b0ca8507344e1ebb5fe8f73419d65ef19e3dd..9b495363f551f5dc47253bb7ab10fd71a2f06319 100644 GIT binary patch delta 1412 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 m0kg3Q6#k zG^%(ss$;$9b*%TiwO?r3#x<)mwk$S3vBAh^o6Wi7i;Qr%Oy`a-x+AR_;BMgC0}Zsf`}X6%f69{`m?cLLnNNSacr+?W3fI>cCGA-6dEc>s znMy$V^&iUg%b!hWyzv+IMif*Dm`{J}KH}4&D*$+TS^#Fy=8`^}G&?i+w>{Ud1FtnH zG8~bV-j}2UuQh4+uP#}?JKh-g4Sut^9}bsk=_5NNNq<)^A5yw2Fl|VpA^>cxV6gYk z*Drg>Dsb|4)4kYf?pDC&CpH*+U#wF@eTCHm7>lMnH{4KPA<5YSum`>*Eq!E%l2;E) zlH&16$MNxax@AE{0JvHJMeFZpNpsH#1hoLnr@kb;cd%L8p6l0p2b(?3|5Lq{lB9KO zk_v~*lz+T>*c13tI{3}9k~be%XhM>6?@i2Nd! z*nbvkG%>facB;41x1Ya#*JQ}d12Dt06j+ku$!>2AWU_C6A%r1Qg-l~yINu77E1!7uBK#u93Oaz&wstMBqPz5B^9tpY4q zj%mP|X}j#~L2m9#@*Nm-mi6W@UDA-}ZA+=tltyC-Nz%oUSl-72$nZS?H+R6>1KrG% zW@Zh{v{zq>I9dZk*Zj|47p}_d#v`dI$9|?62|x2aUICN>YZ_3J8ox8M4q!A9(tnaF z!`k|#x$`7vAo`UXx@PFU%jtUOz=grkx~8SZ(j^V~R{&#IH84D)_9s{9;z+EZ3Ltgk z7F_@=XpS*}?#o};vdpKo{i*FvbLL5MJ>mVzImZA1%pb=Xz_Mt~eBKLyIp!DxSW|!h zoL%_j5G?>;zLiPVyZLka?L58^41df&s|8>V$Tfd$xu;NM?5Y|Yf?Eec`F`pB7r)f0 zOIHYfpagiP0V88qH4*d9tNW$pl5bD1tznD-C?%c>prWE&ib)j>xxE9BtJGM;IyZpQ z;Hd!W!d1F5Iwnb~tPbaVqQ$p@2ld92H$CSDF#mkJ0Cvgi*8>l(T)bFPI)C_YOyA6U zG55Iv%&)*MfZZaWA-h|yIfI+!Vcjzo*UfUDR>O^W;JE?JpNw6AVhcKVDmCR<+n+Di z_5=CL+6Bl*ZH@n!L2@$q+@rCC^;TaY`Ys2&T?8PjoVozHsH@0c#_!yhqO8&`45x;M-a}{ z;2gmZlm^Ebz>=D(J3bCD5sT?kl+}AcDezwktn>>yLG$*R^0JoUZ9t%8_$~#O(*N^L z(3*fudD+Ua6c{KS8J7ZQTDqIdvR;<{0;Mgm3*eTm*`ITlfi3`0GCUPP#wL2U;LVgz z-~<0(x?5X~?$%b;?SBJzslfSoci?Y5eY)Ve`wyF&t#duy-_IHVphWlvV^>RyAxTTB zt0hUJlj(W;_P)NngZIPcW@Bx8yCkW$u1+U9JAEsGzwTV0S4-oEZ=a+h0cI&<5SbN0 zA%QQYgMVvJkGh|F%1Sf$?UlfxXC5o4o3Z2Y87cu_7CZs8^?&={4h+U*GNq4?=N5GK z;D3D29!b)~__)q?b?Navdwg30zu5E*qpI99F6oe%n$~ZQ{wwP}Y-(MWwNg2HdWZ@H z3!3#o5PP5B*tXjD&#!DI{YQ>yYfq0(bav`QXQ!Im+9ahb0=G?Tn~XD&bXViE!E5?# zaOP{j_Wd)FNq=ox+vK^v-#v{@qyql{+@1#X3!bUrgvuWdUhUW2+G^x7Fc|s#bE^f= zf8>ZHskyC9XS=$rGMm;m8L#~OB}vjh{_;mXx^kr?>9c_WNs>L!{H@>aH;$gYkIi!^GyvW99xrFW^{5gstGh zDoGFNSu5uuNpkEzE9vZ?64LthhJ7u7`<@c1X@8peKo-`Vn;AUGWJ-GHbjE}73I1IC zH4{wfbQ`DKX1MM xItyt004mb_CNW&Ym$f8ML+-m002ovPDHLkV1jw<` - + all diff --git a/TouchyTickets/Ui.cs b/TouchyTickets/Ui.cs index 9642418..737368f 100644 --- a/TouchyTickets/Ui.cs +++ b/TouchyTickets/Ui.cs @@ -100,7 +100,7 @@ namespace TouchyTickets { }, OnPressed = e => { var backUi = new Group(Anchor.BottomLeft, new Vector2(1)); - backUi.AddChild(new Button(Anchor.AutoInlineIgnoreOverflow, new Vector2(1, 20), Localization.Get("Back")) { + backUi.AddChild(new Button(Anchor.AutoInlineIgnoreOverflow, new Vector2(1, 30), Localization.Get("Back")) { OnPressed = e2 => this.FadeUi(false, () => this.uiSystem.Remove(e2.Root.Name)) }); // we want this to render below the main ui while it fades away @@ -130,10 +130,10 @@ namespace TouchyTickets { map.PlacingPosition = new Point(MathHelper.Clamp(posX, 0, map.Width - attraction.Value.Width), MathHelper.Clamp(posY, 0, map.Height - attraction.Value.Height)); var yesNoUi = new Group(Anchor.BottomLeft, new Vector2(1)); - yesNoUi.AddChild(new Button(Anchor.AutoInlineIgnoreOverflow, new Vector2(0.5F, 20), Localization.Get("Back")) { + yesNoUi.AddChild(new Button(Anchor.AutoInlineIgnoreOverflow, new Vector2(0.5F, 30), Localization.Get("Back")) { OnPressed = e2 => this.FadeUi(false, () => this.uiSystem.Remove(e2.Root.Name)) }); - yesNoUi.AddChild(new Button(Anchor.AutoInlineIgnoreOverflow, new Vector2(0.5F, 20), Localization.Get("Place")) { + yesNoUi.AddChild(new Button(Anchor.AutoInlineIgnoreOverflow, new Vector2(0.5F, 30), Localization.Get("Place")) { OnPressed = e2 => { GameImpl.Instance.Tickets -= price; map.Place(map.PlacingPosition, map.PlacingAttraction); @@ -171,9 +171,9 @@ namespace TouchyTickets { IsHidden = true, OnDrawn = (e, time, batch, alpha) => batch.Draw(batch.GetBlankTexture(), e.DisplayArea, ColorExtensions.FromHex(0xff86bccf) * alpha) }; - var upgradeHeader = upgradeUi.AddChild(new Group(Anchor.AutoLeft, new Vector2(1, 0.25F), false)); + var upgradeHeader = upgradeUi.AddChild(new Group(Anchor.AutoLeft, new Vector2(1, 0.27F), false)); upgradeHeader.AddChild(new Paragraph(Anchor.AutoCenter, 1, p => GameImpl.Instance.Stars + "", true) {TextScale = 0.3F}); - upgradeHeader.AddChild(new Button(Anchor.AutoCenter, new Vector2(0.8F, 20), Localization.Get("EarnStar")) { + upgradeHeader.AddChild(new Button(Anchor.AutoCenter, new Vector2(0.8F, 30), Localization.Get("EarnStar")) { PositionOffset = new Vector2(0, 4), OnUpdated = (e, time) => ((Button) e).IsDisabled = GameImpl.Instance.Tickets < GameImpl.Instance.GetStarPrice(), OnPressed = e => { @@ -182,10 +182,10 @@ namespace TouchyTickets { }; var panel = infoBox.AddChild(new Panel(Anchor.Center, new Vector2(0.8F), Vector2.Zero, true)); panel.AddChild(new Paragraph(Anchor.AutoLeft, 1, Localization.Get("ReallyEarnStar"))); - panel.AddChild(new Button(Anchor.AutoLeft, new Vector2(0.5F, 20), Localization.Get("Back")) { + panel.AddChild(new Button(Anchor.AutoLeft, new Vector2(0.5F, 30), Localization.Get("Back")) { OnPressed = e2 => this.uiSystem.Remove(e2.Root.Name) }); - panel.AddChild(new Button(Anchor.AutoInlineIgnoreOverflow, new Vector2(0.5F, 20), Localization.Get("Yes")) { + panel.AddChild(new Button(Anchor.AutoInlineIgnoreOverflow, new Vector2(0.5F, 30), Localization.Get("Yes")) { OnPressed = e2 => { this.uiSystem.Remove(e2.Root.Name); var game = GameImpl.Instance; @@ -201,7 +201,7 @@ namespace TouchyTickets { upgradeHeader.AddChild(new Paragraph(Anchor.AutoCenter, 1, p => string.Format(Localization.Get("RequiresTickets"), PrettyPrintNumber(GameImpl.Instance.GetStarPrice())), true) { PositionOffset = new Vector2(0, 2) }); - var upgradeList = upgradeUi.AddChild(new Panel(Anchor.AutoLeft, new Vector2(1, 0.75F), Vector2.Zero, false, true, new Point(10, 30), false) { + var upgradeList = upgradeUi.AddChild(new Panel(Anchor.AutoLeft, new Vector2(1, 0.73F), Vector2.Zero, false, true, new Point(10, 30), false) { ChildPadding = new Padding(5, 15, 5, 5) }); foreach (var upgrade in Upgrade.Upgrades.Values) { @@ -276,6 +276,30 @@ namespace TouchyTickets { } } + public IEnumerator DisplaySplash() { + var splash = new Group(Anchor.TopLeft, Vector2.One, false) { + OnDrawn = (e, time, batch, alpha) => batch.Draw(batch.GetBlankTexture(), e.DisplayArea, Color.Black * alpha) + }; + var center = splash.AddChild(new Group(Anchor.Center, new Vector2(0.5F, 0.5F), false) {DrawAlpha = 0}); + center.AddChild(new Image(Anchor.AutoCenter, new Vector2(1, -1), Texture[4, 0])); + center.AddChild(new Paragraph(Anchor.AutoCenter, 10000, "A game by Ellpeck", true)); + this.uiSystem.Add("Splash", splash); + while (center.DrawAlpha < 1) { + center.DrawAlpha += 0.01F; + yield return new WaitEvent(CoroutineEvents.Update); + } + yield return new WaitSeconds(1.5); + while (center.DrawAlpha > 0) { + center.DrawAlpha -= 0.01F; + yield return new WaitEvent(CoroutineEvents.Update); + } + while (splash.DrawAlpha > 0) { + splash.DrawAlpha -= 0.01F; + yield return new WaitEvent(CoroutineEvents.Update); + } + this.uiSystem.Remove(splash.Root.Name); + } + private void ResetSwipe() { this.finishingSwipe = false; this.swipeProgress = 0;