From 2900ff9d4262ae1193473940e1773b1632388fb1 Mon Sep 17 00:00:00 2001 From: "Patrick M. Howard" Date: Tue, 29 Dec 2020 12:08:19 -0500 Subject: [PATCH 1/3] Continue work on project expansion --- MultiplayerDemo.json | 2 +- Strife.Engine | 2 +- assets/MultiplayerDemo.sfProj | 17 +++++++++++++++++ assets/Prefabs/castle.sfFab | 7 +++++++ assets/Scenes/erebor.sfSce | 32 ++++++++++++++++++++++++++++++++ src/CastleEntity.cpp | 7 ++++++- src/CastleEntity.hpp | 2 ++ src/PlayerEntity.cpp | 34 ++++++++++++++++++++++++---------- 8 files changed, 90 insertions(+), 13 deletions(-) create mode 100644 assets/MultiplayerDemo.sfProj create mode 100644 assets/Prefabs/castle.sfFab create mode 100644 assets/Scenes/erebor.sfSce diff --git a/MultiplayerDemo.json b/MultiplayerDemo.json index e18df6f..78457ce 100755 --- a/MultiplayerDemo.json +++ b/MultiplayerDemo.json @@ -23,7 +23,7 @@ }, { "type": "sprite", - "name": "castle", + "name": "castleSprite", "path": "Sprites/castle.png" } ] diff --git a/Strife.Engine b/Strife.Engine index 7923528..c6043b5 160000 --- a/Strife.Engine +++ b/Strife.Engine @@ -1 +1 @@ -Subproject commit 79235286109ab5d56d6fad671959fa85ae93bb9f +Subproject commit c6043b5ba0b400a4e5ea0f39ccb0e84d60e2c2d7 diff --git a/assets/MultiplayerDemo.sfProj b/assets/MultiplayerDemo.sfProj new file mode 100644 index 0000000..e9f53de --- /dev/null +++ b/assets/MultiplayerDemo.sfProj @@ -0,0 +1,17 @@ +{ + "name": "MultiplayerDemo", + "project-properties": { + "author": "Johnny Appleseed", + "version": [ 0, 0, 0, 0 ], + "editor-version": [ 0, 20, 12, 2 ] + }, + "scenes": [ + {"name": "erebor", "path": "Scenes/erebor.sfSce"} + ], + "resources": [ + {"name": "erebor", "type": "tiled-tilemap", "path": "Tilemaps/Erebor.tmx"}, + {"name": "isengard", "type": "tiled-tilemap", "path": "Tilemaps/Isegard.tmx"}, + {"name": "castleEntity", "type": "prefab", "path": "Prefabs/castle.sfFab"}, + {"name": "castleSprite", "type": "sprite", "path": "Sprites/castle.png"} + ] +} \ No newline at end of file diff --git a/assets/Prefabs/castle.sfFab b/assets/Prefabs/castle.sfFab new file mode 100644 index 0000000..fff1598 --- /dev/null +++ b/assets/Prefabs/castle.sfFab @@ -0,0 +1,7 @@ +{ + "name": "castle", + "type": "castle", + "properties": [ + {"name": "sprite", "value": "castle"} + ] +} \ No newline at end of file diff --git a/assets/Scenes/erebor.sfSce b/assets/Scenes/erebor.sfSce new file mode 100644 index 0000000..716d8d9 --- /dev/null +++ b/assets/Scenes/erebor.sfSce @@ -0,0 +1,32 @@ +{ + "name": "erebor", + "entities": [ + {"name": "erebor", "type": "tilemap", "properties": [ + {"name": "position", "value": "0.0 0.0"} + ]}, + {"name": "castle1", "type": "castle", "prefab": "castle", "properties": [ + {"name": "position", "value": "736.0 736.0"} + ]}, + {"name": "castle2", "type": "castle", "prefab": "castle", "properties": [ + {"name": "position", "value": "1904.0 736.0"} + ]}, + {"name": "castle3", "type": "castle", "prefab": "castle", "properties": [ + {"name": "position", "value": "3088.0 736.0"} + ]}, + {"name": "castle4", "type": "castle", "prefab": "castle", "properties": [ + {"name": "position", "value": "736.0 1939.0"} + ]}, + {"name": "castle5", "type": "castle", "prefab": "castle", "properties": [ + {"name": "position", "value": "3088.0 1952.0"} + ]}, + {"name": "castle6", "type": "castle", "prefab": "castle", "properties": [ + {"name": "position", "value": "736.0 3149.0"} + ]}, + {"name": "castle7", "type": "castle", "prefab": "castle", "properties": [ + {"name": "position", "value": "1943.0 3152.0"} + ]}, + {"name": "castle7", "type": "castle", "prefab": "castle", "properties": [ + {"name": "position", "value": "3088.0 3148.0"} + ]} + ] +} \ No newline at end of file diff --git a/src/CastleEntity.cpp b/src/CastleEntity.cpp index c67ff20..fb927e9 100755 --- a/src/CastleEntity.cpp +++ b/src/CastleEntity.cpp @@ -10,7 +10,7 @@ void CastleEntity::OnAdded() { - spriteComponent = AddComponent("castle"_sid); + spriteComponent = AddComponent("castleSprite"_sid); Vector2 size{ 67 * 5, 55 * 5 }; SetDimensions(size); @@ -103,3 +103,8 @@ void CastleEntity::ReceiveEvent(const IEntityEvent& ev) } } } + +void CastleEntity::DoSerialize(EntitySerializer& serializer) +{ + +} diff --git a/src/CastleEntity.hpp b/src/CastleEntity.hpp index 8d647fc..0d9ab9e 100755 --- a/src/CastleEntity.hpp +++ b/src/CastleEntity.hpp @@ -8,6 +8,8 @@ DEFINE_ENTITY(CastleEntity, "castle") { + void DoSerialize(EntitySerializer& serializer) override; + void OnAdded() override; void OnDestroyed() override; void Update(float deltaTime) override; diff --git a/src/PlayerEntity.cpp b/src/PlayerEntity.cpp index 24d6d70..50b7ca6 100755 --- a/src/PlayerEntity.cpp +++ b/src/PlayerEntity.cpp @@ -69,6 +69,19 @@ void PlayerEntity::OnAdded() outDecision.action = PlayerAction::Down; }; } + + { + static EntitySerializer serializer{ + EntitySerializerMode::Read, + std::unordered_map{ + std::pair("color", "115 221 131 255"), + std::pair("teststr", "Hello World!"), + std::pair("position", "100 100") + } + }; + + this->DoSerialize(serializer); + } } void PlayerEntity::ReceiveServerEvent(const IEntityEvent& ev) @@ -117,15 +130,15 @@ void PlayerEntity::Render(Renderer* renderer) // Render player { - Color c[5] = { - Color::CornflowerBlue(), - Color::Green(), - Color::Orange(), - Color::HotPink(), - Color::Yellow() - }; - - auto color = c[net->ownerClientId]; +// Color c[5] = { +// Color::CornflowerBlue(), +// Color::Green(), +// Color::Orange(), +// Color::HotPink(), +// Color::Yellow() +// }; + +// auto color = c[net->ownerClientId]; renderer->RenderRectangle(Rectangle(position - Dimensions() / 2, Dimensions()), _playerColor, -0.99); } @@ -195,5 +208,6 @@ void PlayerEntity::Attack(Entity* entity) void PlayerEntity::DoSerialize(EntitySerializer& serializer) { - serializer.Add("color", _playerColor); + serializer + .Add("color", _playerColor); } From 3674511352ce71256dfef09c62f9b5aa9e90b620 Mon Sep 17 00:00:00 2001 From: "Patrick M. Howard" Date: Tue, 5 Jan 2021 12:16:29 -0500 Subject: [PATCH 2/3] Continue work on entity serializer on game end --- MultiplayerDemo.json | 2 +- Strife.Engine | 2 +- assets/MultiplayerDemo.sfProj | 2 +- assets/Prefabs/castle.sfFab | 1 - assets/Scenes/erebor.sfSce | 16 ++++++++-------- src/CastleEntity.cpp | 6 +++++- src/main.cpp | 1 + 7 files changed, 17 insertions(+), 13 deletions(-) diff --git a/MultiplayerDemo.json b/MultiplayerDemo.json index 78457ce..e18df6f 100755 --- a/MultiplayerDemo.json +++ b/MultiplayerDemo.json @@ -23,7 +23,7 @@ }, { "type": "sprite", - "name": "castleSprite", + "name": "castle", "path": "Sprites/castle.png" } ] diff --git a/Strife.Engine b/Strife.Engine index c6043b5..646ba35 160000 --- a/Strife.Engine +++ b/Strife.Engine @@ -1 +1 @@ -Subproject commit c6043b5ba0b400a4e5ea0f39ccb0e84d60e2c2d7 +Subproject commit 646ba358f6a7517fca1a235457ccaf7b6e1a6768 diff --git a/assets/MultiplayerDemo.sfProj b/assets/MultiplayerDemo.sfProj index e9f53de..4b48ceb 100644 --- a/assets/MultiplayerDemo.sfProj +++ b/assets/MultiplayerDemo.sfProj @@ -11,7 +11,7 @@ "resources": [ {"name": "erebor", "type": "tiled-tilemap", "path": "Tilemaps/Erebor.tmx"}, {"name": "isengard", "type": "tiled-tilemap", "path": "Tilemaps/Isegard.tmx"}, - {"name": "castleEntity", "type": "prefab", "path": "Prefabs/castle.sfFab"}, + {"name": "castle", "type": "prefab", "path": "Prefabs/castle.sfFab"}, {"name": "castleSprite", "type": "sprite", "path": "Sprites/castle.png"} ] } \ No newline at end of file diff --git a/assets/Prefabs/castle.sfFab b/assets/Prefabs/castle.sfFab index fff1598..c166677 100644 --- a/assets/Prefabs/castle.sfFab +++ b/assets/Prefabs/castle.sfFab @@ -1,6 +1,5 @@ { "name": "castle", - "type": "castle", "properties": [ {"name": "sprite", "value": "castle"} ] diff --git a/assets/Scenes/erebor.sfSce b/assets/Scenes/erebor.sfSce index 716d8d9..f8ea381 100644 --- a/assets/Scenes/erebor.sfSce +++ b/assets/Scenes/erebor.sfSce @@ -4,28 +4,28 @@ {"name": "erebor", "type": "tilemap", "properties": [ {"name": "position", "value": "0.0 0.0"} ]}, - {"name": "castle1", "type": "castle", "prefab": "castle", "properties": [ + {"name": "castle1", "prefab": "castle", "properties": [ {"name": "position", "value": "736.0 736.0"} ]}, - {"name": "castle2", "type": "castle", "prefab": "castle", "properties": [ + {"name": "castle2", "prefab": "castle", "properties": [ {"name": "position", "value": "1904.0 736.0"} ]}, - {"name": "castle3", "type": "castle", "prefab": "castle", "properties": [ + {"name": "castle3", "prefab": "castle", "properties": [ {"name": "position", "value": "3088.0 736.0"} ]}, - {"name": "castle4", "type": "castle", "prefab": "castle", "properties": [ + {"name": "castle4", "prefab": "castle", "properties": [ {"name": "position", "value": "736.0 1939.0"} ]}, - {"name": "castle5", "type": "castle", "prefab": "castle", "properties": [ + {"name": "castle5", "prefab": "castle", "properties": [ {"name": "position", "value": "3088.0 1952.0"} ]}, - {"name": "castle6", "type": "castle", "prefab": "castle", "properties": [ + {"name": "castle6", "prefab": "castle", "properties": [ {"name": "position", "value": "736.0 3149.0"} ]}, - {"name": "castle7", "type": "castle", "prefab": "castle", "properties": [ + {"name": "castle7", "prefab": "castle", "properties": [ {"name": "position", "value": "1943.0 3152.0"} ]}, - {"name": "castle7", "type": "castle", "prefab": "castle", "properties": [ + {"name": "castle7", "prefab": "castle", "properties": [ {"name": "position", "value": "3088.0 3148.0"} ]} ] diff --git a/src/CastleEntity.cpp b/src/CastleEntity.cpp index fb927e9..3dd7d60 100755 --- a/src/CastleEntity.cpp +++ b/src/CastleEntity.cpp @@ -8,9 +8,10 @@ #include "Net/ReplicationManager.hpp" #include "MessageHud.hpp" + void CastleEntity::OnAdded() { - spriteComponent = AddComponent("castleSprite"_sid); + spriteComponent = AddComponent("castle"_sid); Vector2 size{ 67 * 5, 55 * 5 }; SetDimensions(size); @@ -106,5 +107,8 @@ void CastleEntity::ReceiveEvent(const IEntityEvent& ev) void CastleEntity::DoSerialize(EntitySerializer& serializer) { + Vector2 position; + serializer.Add("position", position); + SetCenter(position); } diff --git a/src/main.cpp b/src/main.cpp index ac178c2..adec295 100755 --- a/src/main.cpp +++ b/src/main.cpp @@ -20,6 +20,7 @@ struct Game : IGame config .SetDefaultScene("erebor"_sid) .SetWindowCaption("Breakout") + .SetProjectFile(std::filesystem::current_path()/"../assets/MultiplayerDemo.sfProj") .SetGameName("breakout") .ExecuteUserConfig("user.cfg") .EnableDevConsole("console-font") From 847b7e991e46971ee1b3249defa63c9b72c98d4a Mon Sep 17 00:00:00 2001 From: "Patrick M. Howard" Date: Tue, 12 Jan 2021 15:13:16 -0500 Subject: [PATCH 3/3] Update multiplayer demo --- MultiplayerDemo.json | 30 ------------------------- Strife.Engine | 2 +- assets/MultiplayerDemo.sfProj | 1 - assets/Prefabs/castle.sfFab | 4 +++- assets/Tilemaps/Erebor.tmx | 42 ----------------------------------- src/CastleEntity.cpp | 5 +---- src/main.cpp | 6 ++--- 7 files changed, 8 insertions(+), 82 deletions(-) delete mode 100755 MultiplayerDemo.json diff --git a/MultiplayerDemo.json b/MultiplayerDemo.json deleted file mode 100755 index e18df6f..0000000 --- a/MultiplayerDemo.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "projectName": "MultiplayerDemo", - "resourceDirectory": "assets", - "resources": [ - { - "type": "spritefont", - "name": "console-font", - "data": { - "spritePath": "Sprites/Spritesheets/font.png", - "rows": 16, - "cols": 16 - } - }, - { - "type": "tilemap", - "name": "isengard", - "path": "Tilemaps/Isengard.tmx" - }, - { - "type": "tilemap", - "name": "erebor", - "path": "Tilemaps/Erebor.tmx" - }, - { - "type": "sprite", - "name": "castle", - "path": "Sprites/castle.png" - } - ] -} diff --git a/Strife.Engine b/Strife.Engine index 646ba35..88813cd 160000 --- a/Strife.Engine +++ b/Strife.Engine @@ -1 +1 @@ -Subproject commit 646ba358f6a7517fca1a235457ccaf7b6e1a6768 +Subproject commit 88813cdb00f56edbbcb470e8600ff82e493fde33 diff --git a/assets/MultiplayerDemo.sfProj b/assets/MultiplayerDemo.sfProj index 4b48ceb..cc1282a 100644 --- a/assets/MultiplayerDemo.sfProj +++ b/assets/MultiplayerDemo.sfProj @@ -10,7 +10,6 @@ ], "resources": [ {"name": "erebor", "type": "tiled-tilemap", "path": "Tilemaps/Erebor.tmx"}, - {"name": "isengard", "type": "tiled-tilemap", "path": "Tilemaps/Isegard.tmx"}, {"name": "castle", "type": "prefab", "path": "Prefabs/castle.sfFab"}, {"name": "castleSprite", "type": "sprite", "path": "Sprites/castle.png"} ] diff --git a/assets/Prefabs/castle.sfFab b/assets/Prefabs/castle.sfFab index c166677..2f7fb67 100644 --- a/assets/Prefabs/castle.sfFab +++ b/assets/Prefabs/castle.sfFab @@ -1,6 +1,8 @@ { "name": "castle", + "entityType": "castle", + "type": "prefab", "properties": [ - {"name": "sprite", "value": "castle"} + {"name": "sprite", "value": "castleSprite"} ] } \ No newline at end of file diff --git a/assets/Tilemaps/Erebor.tmx b/assets/Tilemaps/Erebor.tmx index 6752dd7..2a96761 100644 --- a/assets/Tilemaps/Erebor.tmx +++ b/assets/Tilemaps/Erebor.tmx @@ -672,46 +672,4 @@ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/CastleEntity.cpp b/src/CastleEntity.cpp index 6262202..eacda37 100755 --- a/src/CastleEntity.cpp +++ b/src/CastleEntity.cpp @@ -11,7 +11,7 @@ void CastleEntity::OnAdded() { - spriteComponent = AddComponent("castle"); + spriteComponent = AddComponent("castleSprite"); Vector2 size{ 67 * 5, 55 * 5 }; SetDimensions(size); @@ -107,8 +107,5 @@ void CastleEntity::ReceiveEvent(const IEntityEvent& ev) void CastleEntity::DoSerialize(EntitySerializer& serializer) { - Vector2 position; - serializer.Add("position", position); - SetCenter(position); } diff --git a/src/main.cpp b/src/main.cpp index 5d8c5d0..7dd0128 100755 --- a/src/main.cpp +++ b/src/main.cpp @@ -28,8 +28,6 @@ struct Game : IGame auto resourceManager = ResourceManager::GetInstance(); resourceManager->SetBaseAssetPath("../assets"); - resourceManager->LoadResourceFromFile("Sprites/castle.png", "castle"); - resourceManager->LoadResourceFromFile("Tilemaps/Erebor.tmx", "erebor"); resourceManager->LoadResourceFromFile("Sprites/Spritesheets/font.png", "console-font", ".sfnt"); } @@ -40,12 +38,14 @@ struct Game : IGame void BuildScene(Scene* scene) override { - if (scene->MapSegmentName() != "empty-map"_sid) + if (scene->SceneName() != "empty-map"_sid) { scene->AddService(); scene->AddService(scene->isServer); scene->AddService(); + scene->GetCameraFollower()->FollowMouse(); + //scene->GetEngine()->GetConsole()->Execute("light 0"); } }