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 bad73f7..88813cd 160000 --- a/Strife.Engine +++ b/Strife.Engine @@ -1 +1 @@ -Subproject commit bad73f726ee4ff3b3acd2aafb77d5e33faca4341 +Subproject commit 88813cdb00f56edbbcb470e8600ff82e493fde33 diff --git a/assets/MultiplayerDemo.sfProj b/assets/MultiplayerDemo.sfProj new file mode 100644 index 0000000..cc1282a --- /dev/null +++ b/assets/MultiplayerDemo.sfProj @@ -0,0 +1,16 @@ +{ + "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": "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 new file mode 100644 index 0000000..2f7fb67 --- /dev/null +++ b/assets/Prefabs/castle.sfFab @@ -0,0 +1,8 @@ +{ + "name": "castle", + "entityType": "castle", + "type": "prefab", + "properties": [ + {"name": "sprite", "value": "castleSprite"} + ] +} \ No newline at end of file diff --git a/assets/Scenes/erebor.sfSce b/assets/Scenes/erebor.sfSce new file mode 100644 index 0000000..f8ea381 --- /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", "prefab": "castle", "properties": [ + {"name": "position", "value": "736.0 736.0"} + ]}, + {"name": "castle2", "prefab": "castle", "properties": [ + {"name": "position", "value": "1904.0 736.0"} + ]}, + {"name": "castle3", "prefab": "castle", "properties": [ + {"name": "position", "value": "3088.0 736.0"} + ]}, + {"name": "castle4", "prefab": "castle", "properties": [ + {"name": "position", "value": "736.0 1939.0"} + ]}, + {"name": "castle5", "prefab": "castle", "properties": [ + {"name": "position", "value": "3088.0 1952.0"} + ]}, + {"name": "castle6", "prefab": "castle", "properties": [ + {"name": "position", "value": "736.0 3149.0"} + ]}, + {"name": "castle7", "prefab": "castle", "properties": [ + {"name": "position", "value": "1943.0 3152.0"} + ]}, + {"name": "castle7", "prefab": "castle", "properties": [ + {"name": "position", "value": "3088.0 3148.0"} + ]} + ] +} \ 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 02e399f..eacda37 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("castle"); + spriteComponent = AddComponent("castleSprite"); Vector2 size{ 67 * 5, 55 * 5 }; SetDimensions(size); @@ -103,3 +104,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 fdd3d32..42a4412 100755 --- a/src/PlayerEntity.cpp +++ b/src/PlayerEntity.cpp @@ -70,6 +70,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) @@ -118,15 +131,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); } @@ -196,5 +209,6 @@ void PlayerEntity::Attack(Entity* entity) void PlayerEntity::DoSerialize(EntitySerializer& serializer) { - + serializer + .Add("color", _playerColor); } diff --git a/src/main.cpp b/src/main.cpp index 4f51289..7dd0128 100755 --- a/src/main.cpp +++ b/src/main.cpp @@ -21,14 +21,13 @@ 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"); 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"); } @@ -39,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"); } }