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");
}
}