From eacd653d3085329b7c2c4beab8088bb531dae883 Mon Sep 17 00:00:00 2001 From: Ellpeck Date: Sat, 13 Mar 2021 20:00:34 +0100 Subject: [PATCH] added a main menu --- GreatSpringGameJam/Content/Maps/Level1.tmx | 10 +-- .../Content/Textures/Stuff.aseprite | Bin 760 -> 1065 bytes GreatSpringGameJam/Content/Textures/Stuff.png | Bin 866 -> 1364 bytes GreatSpringGameJam/GameImpl.cs | 75 ++++++++++++------ GreatSpringGameJam/GreatSpringGameJam.csproj | 16 ++-- GreatSpringGameJam/Icon.bmp | Bin 0 -> 262282 bytes GreatSpringGameJam/Icon.ico | Bin 0 -> 204862 bytes NuGet.config | 3 + 8 files changed, 71 insertions(+), 33 deletions(-) create mode 100644 GreatSpringGameJam/Icon.bmp create mode 100644 GreatSpringGameJam/Icon.ico diff --git a/GreatSpringGameJam/Content/Maps/Level1.tmx b/GreatSpringGameJam/Content/Maps/Level1.tmx index b017e9b..d4aa722 100644 --- a/GreatSpringGameJam/Content/Maps/Level1.tmx +++ b/GreatSpringGameJam/Content/Maps/Level1.tmx @@ -30,11 +30,11 @@ 0,0,0,0,0,84,85,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,0,0,0,17,18,18,18,18,18,18,18,4,2,2,2,2,3,0,0,0,17,18,18,18,18,18,18,18,18,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,66,67,0,55,54,0, 0,0,0,0,0,100,101,102,103,104,0,0,0,0,0,0,0,0,39,0,0,0,0,0,0,0,0,1,2,2,2,3,0,0,0,17,18,18,18,18,18,18,18,18,18,18,18,18,19,0,0,1,5,4,2,2,2,5,18,18,18,19,39,39,0,0,0,0,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2, 0,0,0,0,0,0,0,0,0,0,0,0,1,2,2,2,2,2,2,3,0,0,0,0,0,0,0,17,18,18,18,19,0,0,0,17,4,2,2,2,2,5,18,18,18,18,18,18,19,0,0,9,10,10,21,18,18,18,18,18,18,4,2,2,3,0,0,0,17,18,18,18,18,18,18,18,18,18,18,18,18,18,18, -0,0,0,0,0,0,0,0,0,0,0,0,17,18,18,18,18,18,18,19,0,0,0,0,38,39,0,17,4,2,5,19,0,0,0,17,18,18,18,18,18,18,18,18,4,2,2,5,19,0,0,0,0,0,17,18,18,18,18,18,18,18,18,18,19,0,0,0,17,4,2,2,2,2,2,5,18,18,18,18,18,18,18, -2,2,2,2,2,2,2,2,2,2,2,2,5,18,4,2,2,2,5,19,0,0,0,1,2,2,2,5,18,18,18,19,0,0,0,17,18,18,18,18,18,18,18,18,18,18,18,18,19,0,0,0,82,0,17,18,4,2,2,2,2,2,2,5,19,0,0,0,17,18,18,18,18,18,18,18,18,4,2,2,2,5,18, -18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,19,0,0,0,17,18,18,18,18,18,18,18,19,0,0,0,17,18,18,4,2,2,2,2,2,2,5,18,18,19,0,37,0,0,0,17,18,18,18,18,18,18,18,18,18,19,0,0,0,17,18,18,18,18,18,18,18,18,18,18,18,18,18,18, -18,18,18,18,18,18,4,2,2,2,2,2,5,18,18,18,18,18,18,19,0,0,0,17,4,2,2,2,2,5,18,19,0,0,0,17,18,18,18,18,18,18,18,18,18,18,18,18,19,0,1,2,2,2,5,18,18,18,18,18,4,2,2,5,19,0,0,0,17,18,18,18,4,2,2,2,2,2,5,18,18,18,18, -18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,19,0,0,0,17,18,18,18,18,18,18,18,19,0,0,0,17,18,18,18,18,18,18,18,18,18,18,18,18,19,0,9,21,18,18,18,18,18,18,18,18,18,18,18,18,19,0,0,0,17,18,18,18,18,18,18,18,18,18,18,18,18,18,18, +0,0,0,0,0,0,0,0,0,0,0,0,17,18,18,18,18,18,18,19,0,0,0,0,38,39,0,17,4,2,5,19,0,0,0,17,18,18,18,18,18,18,18,18,4,2,2,5,19,38,0,0,0,0,17,18,18,18,18,18,18,18,18,18,19,0,0,0,17,4,2,2,2,2,2,5,18,18,18,18,18,18,18, +2,2,2,2,2,2,2,2,2,2,2,2,5,18,4,2,2,2,5,19,0,0,0,1,2,2,2,5,18,18,18,19,0,0,0,17,18,18,18,18,18,18,18,18,18,18,18,18,4,3,0,0,82,0,17,18,4,2,2,2,2,2,2,5,19,0,0,0,17,18,18,18,18,18,18,18,18,4,2,2,2,5,18, +18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,19,0,0,0,17,18,18,18,18,18,18,18,19,0,0,0,17,18,18,4,2,2,2,2,2,2,5,18,18,18,19,0,0,0,0,17,18,18,18,18,18,18,18,18,18,19,0,0,0,17,18,18,18,18,18,18,18,18,18,18,18,18,18,18, +18,18,18,18,18,18,4,2,2,2,2,2,5,18,18,18,18,18,18,19,0,0,0,17,4,2,2,2,2,5,18,19,0,0,0,17,18,18,18,18,18,18,18,18,18,18,18,18,20,11,0,1,2,2,5,18,18,18,18,18,4,2,2,5,19,0,0,0,17,18,18,18,4,2,2,2,2,2,5,18,18,18,18, +18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,19,0,0,0,17,18,18,18,18,18,18,18,19,0,0,0,17,18,18,18,18,18,18,18,18,18,18,18,18,19,0,0,17,18,18,18,18,18,18,18,18,18,18,18,18,19,0,0,0,17,18,18,18,18,18,18,18,18,18,18,18,18,18,18, 18,4,2,2,2,5,18,18,18,18,4,2,2,2,2,2,2,5,18,19,0,0,0,17,18,4,2,2,2,2,5,19,0,0,0,17,4,2,2,2,2,5,18,18,18,18,18,18,19,0,0,17,4,2,2,2,2,2,5,18,18,18,18,18,19,0,0,0,17,4,2,2,2,2,2,5,18,18,18,18,18,18,18, 18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,19,0,0,0,17,18,18,18,18,18,18,18,19,0,0,0,17,18,18,18,18,18,18,18,18,18,18,18,18,19,0,0,17,18,18,18,18,18,18,18,18,18,18,18,18,19,0,0,0,17,18,18,18,18,18,18,18,18,18,18,18,18,18,18 diff --git a/GreatSpringGameJam/Content/Textures/Stuff.aseprite b/GreatSpringGameJam/Content/Textures/Stuff.aseprite index 4705a0e17820a8d7c82b9a64f74c42930d74b4f1..cd146a4655a659d18b324b2c8b682669c1395c7c 100644 GIT binary patch delta 710 zcmV;%0y+Ko1*r%EDFl%Megdfjk%ISsumS)81t0(b1poyA{{jF200000001=rIRJQ^ z?V7(z1ThfC_c<&C!A{$Q6D{ood$GUvUck=wEG%vB9W1RZd;$*y-$3vcR_0(}9A}c5 zNsimB`@yicnm^w!$z?Cec3sykUO#$_ZUo{S^SkfnxhTWzY~4eg99)T!E9>ij{Uy{M zPY>%JB9fO1`v*B_P>!4H_~TU6Lb*mlU^;Tf7J4|253 z1L91r^Ps$Q(WFU}+SKasbX4E(&&!J*VoY2^W9nCno?g8|o}qA|58#RVfjm6CWx#KG z3~ye^PiY%(mdD%YKeP*6;Xajrp8ChY-?GyGqFmATMJC|ENHL**dbRLHeBD3Kiu#=T zw4~$yY1HT|;3;7`dOZKt?r^WAg|(>USqmsLvQGjYkjcvic`+a_y-#sTA@y0wz7O_Q z%1bRKO`Or2pDV%xf;r*scK#=#&$^n5@PNQO-N(SsLtrYA#I$curJ`$p?rHr!4%OOo z9g0$WuB{69@>=dIy4Ozk-jQqH{=9g<@>82B<)5=?^N+_hgT^F{KMxan^DyP+ sA8G7q-wBCHOCy!Z^HXo$e)7mN|3#lW`3;+NC delta 403 zcmV;E0c`%M2>1m8_yUmvegb#`k%ISse*pjh1t0(b1poyA{{jF200000001-q8vuBm z?U+4k!$1&)_Z%(^fpm5&u!&1|f%GQ5T3;ZYTc>d8R(Eje%0*5PgCREvEeY2MJEdbEbA=4Ex1U}!$^6;8@bF~x9QCcazCVwDre5sd z3lCdrrLZ<+kd_Rqm-W?kGFdXnx^NC0w@x3S@OLG7EV-=W+OTiTuVLwuBnuh($^wNv zeP*Gw|2u;Q4eGwOUke)oN6Xr^#FGF3 diff --git a/GreatSpringGameJam/Content/Textures/Stuff.png b/GreatSpringGameJam/Content/Textures/Stuff.png index 1310c0a8479be6cebc655128d61cc9a24642c38f..75762ebf529a1f92ee7936f2eeae7c59d3a64b51 100644 GIT binary patch delta 1289 zcmV+k1@`*l2Gk0WFneB9KiA4wjt+G@KR|&DhZ7ugk&{g4K2+c zq=KYEC|-KV!9ovRNIfqFQEiPLIiu*(qfmk8YxJ$D4R(C*o#m+m69T_ z2Yu_y_}=`VUCn+!5O#KUb~4QG_kQzd-y1~$007W-a;^`?mwz^uo}RsN(YYL6L1yqp zM6P}Dw{k6u)9s9H=Gr$Mjp_XLirTL}mYz3@dU`|jA8=}PS2>%g1SA|hiWCAIdX z9+-F{2bF8~#(x_G--qwcF_U2B$7C%r3f=m@`+ikKM0CKT1Rvp8D}dI_pnK`yYXmczps;PU)DmtBc+_?5u2&oD zi1VWof?3Z2=C}6b)`fHOY;hy@ia+@9U%CD8qCCCZDZO9q$iv&4GEsIfZw6bNTig*5 zk

fW1o`{>2U5uvjxXFf!io`t9Radzw!RpKfaYq<+^n}yX#dox40vtL!F{uz073L zNP^^icYomILSEe)UWvVvXQnGk2i31*hh9$8!8X~Ff&@s;c^NplkWX~d)>SU3(c)2y z{_;#gZI^1+fUWiq$f*3;cy9}~X>M^xR{IB%Y#t6dTToZIpzd_PkbA=`xu}((t6XR# z&z zU4eH3@7K>dTdm9U|9a%7U)B!ZEWa*A*%uL!YnS^ZC$&f$NWin@n*ecwuYLCXQxQ4n zR;K$FE?@p3&Z>|h-&?_PgP)t2wSLbvAFY$wk3s+Z_O*2y0A4mTT~T^00NRWhc#@#` zGJow564uyANxk>(l~!*?TWWfTkg<`H8XGAok%PYfdIXSnBoLaTsh4HrOPi|p(OnTa z8enQ-^iT6O?GSKmr0$c0kw1Famk6VO+LG(J19*kFe(6K&IZpz2*Q?6bP0O}S&~oMz zN1_T^ch=u;OXg1V+ks)1OKV%=ewQS0OMm?`(6!TTmBKsE6{s*(#&0>gjzwga_Mi&j z3asC&YuayJ-f7#mgjpY6=Bxl6JvVb^Wt(KQ|Yo+!3YucT_sE>=I zL&T$W8X-}FrE(SEdM5Dv)}Dw+;3(rLfeQQZ=(x`*hC^4mpv)m(VNIRyRr;Up^ElnW z%uXfxebjXz0yFS&k|0e4K3$Oy0p?&4Z&lFK-Xt+c8k@^_my26vbRu|Pk&t<8b_Lrt ztzRb(2bh}c4N4lnB+%vGJPg>X0%b`Mj$-O;R8YN-Bcn_+WBVE+ipL zaM7lP3xgI3Qo!6=BF}p=Z2|_g?` z9h`evlHLwAMa@=XLRA;qT#I1gN6dG0SYJq(lBye7k03*XQ6owB9^K7r^y!{lGK^r} zTnk_;F`-aX)U(&u)CDC;&t61)8+K?gnsfLzc;~hx-MQ6c<~}C(Ej(#^7$Gw<^2iGSI!z5n%_SxJ%&Je%-wFs>tjb(EoJvf*2VUl?bO`vDH3rY7k?7zd*t$?687gh2N+-8P<#0~ zt;82|zVXf5ztuTfq4|fUs(zZ%Xy=l8Bi`3L!?woaDM?aCYw4cz6vW~1Y(!@d&Se6( z*b_8YE?!UXfByDLm64?DebyHeW-OjkM{B9gPo7BYQpGdVZ%&|uWq zQ2k!)uz%NCHf$%iqM!is=lO47e=L;Oq^&FxHXSXyJ^D#e*sS$Txdt{{-=GeCPw%^h z?KBooX|}#0pU1-v&mL4337f9qruy1u0@;oPWsz{Yc)Eg{8c7zX&v_L==6i_N)#(p= zj?LCL@S^G=@f-oxdZq%3g-m}eWSjvOidUeSg;_!Hhil)Jz>#FJXRr0L`lm|oKh16L zOrKSYwj@c7wKWQ8Dys)1@WS#ffLy}29<1J%wEbF{eYbGB_H8b=LIL?M1?L)mpm*5y y@4SxV_!R8NpkH5}yKV!M5d|xgAO##39JRmVog^|mcd_>X0000("Fonts/Regular")); this.UiSystem.Style.TextScale = 0.075F; this.UiSystem.Style.TextColor = ColorHelper.FromHexRgb(0xebd5bd); + this.UiSystem.Style.ButtonTexture = new NinePatch(this.SpriteBatch.GenerateSquareTexture(ColorHelper.FromHexRgb(0x594e6f) * 0.35F), 0); this.UiSystem.AutoScaleWithScreen = true; + this.UiSystem.Controls.HandleKeyboard = false; + this.UiSystem.Controls.HandleGamepad = false; + this.UiSystem.Controls.HandleTouch = false; this.UiSystem.TextFormatter.AddImage("Flower", Entity.StuffTexture[0, 1]); this.UiSystem.TextFormatter.AddImage("Gnome", Entity.StuffTexture[1, 1]); this.UiSystem.TextFormatter.AddImage("Snow", Entity.StuffTexture[2, 1]); @@ -56,28 +62,52 @@ namespace GreatSpringGameJam { this.mapLoader = new ContentManager(this.Services, this.Content.RootDirectory); var scores = GetScoreFile(); if (scores.Exists) { - using (var reader = new JsonTextReader(scores.OpenText())) - this.Scores = Serializer.Deserialize>(reader); + using var reader = new JsonTextReader(scores.OpenText()); + this.Scores = Serializer.Deserialize>(reader); } - this.Camera = new Camera(this.GraphicsDevice) { AutoScaleWithScreen = true, Scale = 4 }; - this.StartMap("Overworld"); + + // open the main menu + var group = new Group(Anchor.TopLeft, Vector2.One, false); + group.AddChild(new Image(Anchor.TopCenter, new Vector2(0.45F, -0.5F), Entity.StuffTexture[0, 2, 4, 2]) { + OnUpdated = (e, time) => e.PositionOffset = new Vector2(0, 50 + MathF.Sin((float) time.TotalGameTime.TotalSeconds * 2) * 5) + }); + group.AddChild(new Paragraph(Anchor.BottomCenter, 1, "Created by Ellpeck for the Great Spring Game Jam: 2021", true) { + TextScale = 0.06F + }); + var buttons = group.AddChild(new Group(Anchor.BottomCenter, new Vector2(500)) {PositionOffset = new Vector2(0, 125)}); + buttons.AddChild(new Button(Anchor.AutoCenter, new Vector2(1, 60), " Play ") { + OnPressed = e => { + if (!this.IsInCutscene) + this.StartLevel("Overworld", Color.White); + } + }); + buttons.AddChild(new VerticalSpace(10)); + buttons.AddChild(new Button(Anchor.AutoLeft, new Vector2(245, 50), "View on itch")); + buttons.AddChild(new Button(Anchor.AutoInlineIgnoreOverflow, new Vector2(245, 50), "View source") { + PositionOffset = new Vector2(10, 0), + OnPressed = e => Process.Start(new ProcessStartInfo("https://git.ellpeck.de/Ellpeck/GreatSpringGameJam") {UseShellExecute = true}) + }); + this.UiSystem.Add("MainMenu", group); } protected override void DoUpdate(GameTime gameTime) { base.DoUpdate(gameTime); - this.Map.Update(gameTime); - if (!this.IsInCutscene) - this.FocusCameraOnPlayer(); + if (this.Map != null) { + this.Map.Update(gameTime); + if (this.Player != null && !this.IsInCutscene) + this.FocusCameraOnPlayer(); + } } protected override void DoDraw(GameTime gameTime) { this.GraphicsDevice.Clear(ColorHelper.FromHexRgb(0x729cd4)); base.DoDraw(gameTime); - this.Map.Draw(gameTime, this.SpriteBatch, this.Camera); + if (this.Map != null) + this.Map.Draw(gameTime, this.SpriteBatch, this.Camera); } public void Finish() { @@ -143,7 +173,7 @@ namespace GreatSpringGameJam { CoroutineHandler.Start(this.FadeAndStartLevel(name, fadeColor)); } - private IEnumerable FadeAndStartLevel(string map, Color fadeColor) { + private IEnumerable FadeAndStartLevel(string mapName, Color fadeColor) { var fadeOverlay = new Group(Anchor.TopLeft, Vector2.One, false) { OnDrawn = (e, time, batch, a) => batch.FillRectangle(e.DisplayArea.ToExtended(), fadeColor * a), DrawAlpha = 0 @@ -156,8 +186,20 @@ namespace GreatSpringGameJam { yield return new Wait(0.25F); this.UiSystem.Remove("EndCard"); - this.StartMap(map); + this.UiSystem.Remove("MainMenu"); + // load next map + this.mapLoader.Unload(); + var map = new Map(this.mapLoader.Load($"Maps/{mapName}"), mapName); + var spawnPoint = map.SpawnPoint.ToVector2(); + if (mapName == "Overworld" && this.Map != null && this.Map.Name != mapName) + spawnPoint = (map.GetLevelEntrances().First(e => e.Name == this.Map.Name).Position / map.TileSize).FloorCopy(); + this.Player = new Player(map, spawnPoint); + this.Map = map; + this.Map.AddEntity(this.Player); + this.FocusCameraOnPlayer(1); + + // fade back in yield return new Wait(0.25F); while (fadeOverlay.DrawAlpha > 0) { fadeOverlay.DrawAlpha -= 0.04F; @@ -173,19 +215,6 @@ namespace GreatSpringGameJam { this.Camera.ConstrainWorldBounds(Vector2.Zero, this.Map.SizeInPixels.ToVector2()); } - private void StartMap(string name) { - // dispose loaded maps so that edits don't persist - this.mapLoader.Unload(); - var map = new Map(this.mapLoader.Load($"Maps/{name}"), name); - var spawnPoint = map.SpawnPoint.ToVector2(); - if (name == "Overworld" && this.Map != null && this.Map.Name != name) - spawnPoint = (map.GetLevelEntrances().First(e => e.Name == this.Map.Name).Position / map.TileSize).FloorCopy(); - this.Player = new Player(map, spawnPoint); - this.Map = map; - this.Map.AddEntity(this.Player); - this.FocusCameraOnPlayer(1); - } - private static FileInfo GetScoreFile() { var appData = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData); return new FileInfo(Path.Combine(appData, $"{Assembly.GetExecutingAssembly().GetName().Name}.dat")); diff --git a/GreatSpringGameJam/GreatSpringGameJam.csproj b/GreatSpringGameJam/GreatSpringGameJam.csproj index 0f8d3fe..a4ad4e4 100644 --- a/GreatSpringGameJam/GreatSpringGameJam.csproj +++ b/GreatSpringGameJam/GreatSpringGameJam.csproj @@ -5,13 +5,14 @@ net5.0 false false + A Breath of Spring Air - - - + + + @@ -29,8 +30,13 @@ + + Icon.ico + - - + + + Icon.bmp + \ No newline at end of file diff --git a/GreatSpringGameJam/Icon.bmp b/GreatSpringGameJam/Icon.bmp new file mode 100644 index 0000000000000000000000000000000000000000..d46330f5029a19251374c3d5555dbd3fd9a16d15 GIT binary patch literal 262282 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 MpPR7V>C@l;19qTGJ^%m! literal 0 HcmV?d00001 diff --git a/NuGet.config b/NuGet.config index c6e98bd..558b476 100644 --- a/NuGet.config +++ b/NuGet.config @@ -1,4 +1,7 @@ + + +