From fdf1782069b4f8141e3d4d431dac0f82621d8b07 Mon Sep 17 00:00:00 2001 From: copygirl Date: Mon, 3 May 2021 17:26:03 +0200 Subject: [PATCH] Add Saving / Loading support - Add SaveRegistry and SaveAttribute - Add Save, which handles Saving / Loading - Add SpawnRegistry and SpawnAttribute Allows spawning objects by ID or Type - PropertyDeSerializer handles de/serialization of any [Sync] and [Save] properties - Removing objects now done by removing it from the scene tree - Add "World" tab to EscapeMenu - Modify Heartbit font's 1 and V characters --- CREDITS.md | 4 +- HeartbitXX.ttf | Bin 40248 -> 40280 bytes project.godot | 2 + scene/EscapeMenu.tscn | 227 ++++++++++++++++++++++++++++---- src/CreativeBuilding.cs | 4 +- src/EscapeMenu.cs | 2 +- src/EscapeMenuMultiplayer.cs | 8 +- src/EscapeMenuWorld.cs | 133 +++++++++++++++++++ src/IO/DeSerializer.Impl.cs | 31 +++-- src/IO/DeSerializerRegistry.cs | 8 +- src/IO/PropertyDeSerializer.cs | 48 +++++++ src/IO/Save.cs | 100 +++++++++++++- src/IO/SaveRegistry.cs | 69 ++++++++++ src/Network/IntegratedServer.cs | 6 +- src/Network/Sync.cs | 66 +++++++--- src/Network/SyncClient.cs | 22 +--- src/Network/SyncRegistry.cs | 85 ++++-------- src/Network/SyncServer.cs | 54 +++----- src/Objects/Block.cs | 6 +- src/Objects/ObjectHolder.cs | 58 +++++--- src/Objects/Player.cs | 4 +- src/Objects/SpawnRegistry.cs | 70 ++++++++++ src/Scenes/Game.cs | 7 +- src/Scenes/Server.cs | 7 +- src/Utility/Extensions.cs | 36 ++++- ui_theme.tres | 2 +- 26 files changed, 837 insertions(+), 222 deletions(-) create mode 100644 src/EscapeMenuWorld.cs create mode 100644 src/IO/PropertyDeSerializer.cs create mode 100644 src/IO/SaveRegistry.cs create mode 100644 src/Objects/SpawnRegistry.cs diff --git a/CREDITS.md b/CREDITS.md index 9feccdf..7a8529b 100644 --- a/CREDITS.md +++ b/CREDITS.md @@ -5,5 +5,7 @@ **URL:** https://arcade.itch.io/heartbit **Author:** Void **License:** Custom -> You can use this font in free and personal projects, works or games. +> You can use this font in free and personal projects, works or games. > You'll need to pay the suggested price for commercial projects. + +**Notes:** Modified `1` and `V` characters. diff --git a/HeartbitXX.ttf b/HeartbitXX.ttf index 71ff9adccec13c50d3cf60a6b393bc79448de771..a3dfd696be9d81eb547bec7cdb660611509048bd 100644 GIT binary patch delta 1095 zcmYk5ZAe>Z6vv<3+{Bxk2wWZ5C zCsH%l$rhy8M#hjBB$Y8r8KrhbLXc59=|Yjxbt1uuh>Ws{lfkkgF6^eC#>3$}|NnEI zbIzCFatYcfK_p-S05FgNY%mm$pMCw))R%Jr%tshk_geRfIIywujFvOndV>s~o)<7T zQAxBXmWv(Yaq*1!zPKu`ON`e)=}x+*+-3KcN9XDGWIYeOkeBkNy#?NJ`0~DozM9|YAMnrk*8)($6X**p1a^XWus=8xTniqyQ|*cNx%NtX zJ>&`Xgsz3|gtj`Mj#C|}j(o>@7ztD1fp9*&65i>Q_jI~C`#a}4UqsZAfk-}5itI${ zT_atEuFA3Am^B!;~vea^54gZDm5=)YAR05G%7450qoi`lJj_#q^b%6Ynd=aF1w-6k=ed@4}@7^L3k{J z8N)Idq-uiw`|8jt2<&4Ol23u`Ufe(fXej`mz<)kSr)x(!`fuN&3( z=qL4S`jUY(+%!BeJU3i4&<%qP`GyP9O7@fAkw-?{7%`3+^Ts_2qG&2e^-?3$Jhe(4 zP$d&&qD3IPMcqt%NEM=z9nthu$(t)8bgia zjk(5R6V}w*G&{zVFa zy#v-e?M}OzlgWz|nU^@aJS>x-Vpc^{*5yLY_HT+D>$b0%Xkz|bl md*)q4z6^h(KzJ3s2q*!_(2p_sFIV}$D$M4P*(); + var block = server.Spawn(); block.Position = pos; block.Color = player.Color.Blend(Color.FromHsv(0.0F, 0.0F, GD.Randf(), 0.2F)); } @@ -122,7 +122,7 @@ public class CreativeBuilding : Node2D foreach (var pos in GetBlockPositions(start, direction, length)) { var block = server.GetBlockAt(pos); if (block?.Unbreakable != false) continue; - server.Sync.Destroy(block); + block.RemoveFromParent(); } } } diff --git a/src/EscapeMenu.cs b/src/EscapeMenu.cs index e0470b2..c9416ce 100644 --- a/src/EscapeMenu.cs +++ b/src/EscapeMenu.cs @@ -14,7 +14,7 @@ public class EscapeMenu : Control Return = GetNode