diff --git a/src/Client/GameModel.cs b/src/Client/GameModel.cs index e8fbf3e..326767c 100644 --- a/src/Client/GameModel.cs +++ b/src/Client/GameModel.cs @@ -141,39 +141,12 @@ private Entity createEntity(Shared.Messages.NewEntity message) if (message.hasAppearance) { - var isSpice = message.hasSpicePower && !message.hasWorm; - if (isSpice) - { - createSpiceAppearance(message, entity); - } - else if (message.hasHead) - { - Texture2D texture = m_contentManager.Load("Textures/sandworm_head"); - entity.add(new Components.Sprite(texture)); - } else if (message.hasTail) - { - Texture2D texture = m_contentManager.Load("Textures/sandworm_tail"); - entity.add(new Components.Sprite(texture)); - } else if (message.hasWorm) - { - Texture2D texture = m_contentManager.Load("Textures/sandworm_body"); - entity.add(new Components.Sprite(texture)); - } else if (message.hasWall) - { - Texture2D texture = m_contentManager.Load("Textures/wall"); - entity.add(new Components.Sprite(texture)); - } - else - { - Texture2D texture = m_contentManager.Load(message.texture); - entity.add(new Components.Sprite(texture)); - } + createAppearance(message, entity); } if (message.hasPosition) { entity.add(new Shared.Components.Position(message.position, message.orientation)); } - if (message.hasSize) { entity.add(new Shared.Components.Size(message.size)); @@ -255,6 +228,40 @@ private Entity createEntity(Shared.Messages.NewEntity message) return entity; } + private void createAppearance(NewEntity message, Entity entity) + { + var isSpice = message.hasSpicePower && !message.hasWorm; + if (isSpice) + { + createSpiceAppearance(message, entity); + } + else if (message.hasHead) + { + Texture2D texture = m_contentManager.Load("Textures/sandworm_head"); + entity.add(new Components.Sprite(texture)); + } + else if (message.hasTail) + { + Texture2D texture = m_contentManager.Load("Textures/sandworm_tail"); + entity.add(new Components.Sprite(texture)); + } + else if (message.hasWorm) + { + Texture2D texture = m_contentManager.Load("Textures/sandworm_body"); + entity.add(new Components.Sprite(texture)); + } + else if (message.hasWall) + { + Texture2D texture = m_contentManager.Load("Textures/wall"); + entity.add(new Components.Sprite(texture)); + } + else + { + Texture2D texture = m_contentManager.Load(message.texture); + entity.add(new Components.Sprite(texture)); + } + } + private void createSpiceAppearance(NewEntity message, Entity entity) { int row = 0; diff --git a/src/Server/Systems/CollisionDetection.cs b/src/Server/Systems/CollisionDetection.cs index b8d66cb..baf700e 100644 --- a/src/Server/Systems/CollisionDetection.cs +++ b/src/Server/Systems/CollisionDetection.cs @@ -212,39 +212,23 @@ private void handleHitOtherWorm(Entity head, List worm, Entity otherWorm // Check if we hit head on head if (otherWormPart.contains()) { - - - // The longer worm survives - List otherWorm = WormMovement.getWormFromHead(otherWormPart, m_entities); - if (worm.Count > otherWorm.Count) - { - WormKill(head); - // Other worm dies - handleRemoveWormAndGenerateSpice(otherWorm); - // Let everyone know about the collision - MessageQueueServer.instance.broadcastMessage(new Collision(worm[0].id, otherWormPart.id, - Collision.CollisionType.ReceiverDies, worm[0].get())); - } - else - { - Entity otherHead = WormMovement.getHead(otherWormPart, m_entities); - WormKill(otherHead); - - // This worm dies - handleRemoveWormAndGenerateSpice(worm); - MessageQueueServer.instance.broadcastMessage(new Collision(worm[0].id, otherWormPart.id, - Collision.CollisionType.SenderDies, worm[0].get())); - } + var otherWorm = WormMovement.getWormFromHead(otherWormPart, m_entities); + // Both worms die + // Let everyone know about the collision + MessageQueueServer.instance.broadcastMessage(new Collision(worm[0].id, otherWormPart.id, + Collision.CollisionType.ReceiverDies, worm[0].get())); + handleRemoveWormAndGenerateSpice(worm); + MessageQueueServer.instance.broadcastMessage(new Collision(otherWormPart.id,worm[0].id, + Collision.CollisionType.SenderDies, worm[0].get())); + handleRemoveWormAndGenerateSpice(otherWorm); } else // Hit the side of other worm, so this worm dies { // Let everyone know about the collision MessageQueueServer.instance.broadcastMessage(new Collision(worm[0].id, otherWormPart.id, Collision.CollisionType.SenderDies, worm[0].get())); - Entity otherHead = WormMovement.getHead(otherWormPart, m_entities); WormKill(otherHead); - handleRemoveWormAndGenerateSpice(worm); } } @@ -252,7 +236,6 @@ private void handleHitOtherWorm(Entity head, List worm, Entity otherWorm private void WormKill(Entity head) { if (!head.contains()) return; - Stats stats = head.get(); stats.Kills++; stats.Score += 100; diff --git a/src/Shared/Components/Appearance.cs b/src/Shared/Components/Appearance.cs index d38e23f..c493e3f 100644 --- a/src/Shared/Components/Appearance.cs +++ b/src/Shared/Components/Appearance.cs @@ -3,10 +3,6 @@ namespace Shared.Components.Appearance { public class Appearance : Component { - public Appearance(string texture) - { - this.texture = texture; - } - public string texture { get; private set; } + } } diff --git a/src/Shared/Entities/Background.cs b/src/Shared/Entities/Background.cs deleted file mode 100644 index ba44fe7..0000000 --- a/src/Shared/Entities/Background.cs +++ /dev/null @@ -1,21 +0,0 @@ -using Microsoft.Xna.Framework; -using Shared.Components; -using Shared.Components.Appearance; - -namespace Shared.Entities -{ - public class Background - { - public static Entity create(string texture, Vector2 position, float size) - { - Entity entity = new Entity(); - - entity.add(new Appearance(texture)); - entity.add(new Position(position)); - entity.add(new Size(new Vector2(size, size))); - - return entity; - } - } -} - diff --git a/src/Shared/Entities/DeadWormSpice.cs b/src/Shared/Entities/DeadWormSpice.cs index ec687dd..bc15586 100644 --- a/src/Shared/Entities/DeadWormSpice.cs +++ b/src/Shared/Entities/DeadWormSpice.cs @@ -11,7 +11,7 @@ public static Entity create(Vector2 position) { float size = 50; Entity entity = new(); - entity.add(new Appearance("Textures/deadWormSpice")); + entity.add(new Appearance()); entity.add(new Position(position)); entity.add(new Size(new Vector2(size, size))); entity.add(new Collidable()); diff --git a/src/Shared/Entities/Spice.cs b/src/Shared/Entities/Spice.cs index ecdc356..8cf9dab 100644 --- a/src/Shared/Entities/Spice.cs +++ b/src/Shared/Entities/Spice.cs @@ -12,7 +12,7 @@ public static Entity create(Vector2 position) int power = random.Next(1, 10); float size = 3 * power + 10; Entity entity = new(); - entity.add(new Appearance("Textures/spice")); + entity.add(new Appearance()); entity.add(new Position(position)); entity.add(new Size(new Vector2(size, size))); entity.add(new Collidable()); diff --git a/src/Shared/Entities/Wall.cs b/src/Shared/Entities/Wall.cs index 3bf726e..3485971 100644 --- a/src/Shared/Entities/Wall.cs +++ b/src/Shared/Entities/Wall.cs @@ -9,7 +9,7 @@ public class Wall public static Entity create(Vector2 position, int size) { Entity entity = new Entity(); - entity.add(new Appearance("Textures/dune_wall")); + entity.add(new Appearance()); entity.add(new Position(position)); entity.add(new Size(new Vector2(size, size))); entity.add(new Collidable()); diff --git a/src/Shared/Entities/WormHead.cs b/src/Shared/Entities/WormHead.cs index db020bf..e5eab7c 100644 --- a/src/Shared/Entities/WormHead.cs +++ b/src/Shared/Entities/WormHead.cs @@ -14,7 +14,7 @@ public static Entity create(Vector2 position, string name, int clientId) { Entity entity = new(); entity.add(new Position(position)); - entity.add(new Appearance("Textures/sandworm_head")); + entity.add(new Appearance()); entity.add(new Size(new Vector2(size, size))); entity.add(new Movement(moveRate, rotateRate)); entity.add(new ClientId(clientId)); diff --git a/src/Shared/Entities/WormSegment.cs b/src/Shared/Entities/WormSegment.cs index 4e399f6..ee2148a 100644 --- a/src/Shared/Entities/WormSegment.cs +++ b/src/Shared/Entities/WormSegment.cs @@ -13,7 +13,7 @@ public static Entity create(Vector2 position, uint parent, int clientId) { Entity entity = new Entity(); entity.add(new Position(position)); - entity.add(new Appearance("Textures/sandworm_body")); + entity.add(new Appearance()); entity.add(new Size(new Vector2(size, size))); entity.add(new Movement(moveRate, rotateRate)); entity.add(new ClientId(clientId)); diff --git a/src/Shared/Entities/WormTail.cs b/src/Shared/Entities/WormTail.cs index 06ef949..7af8ce3 100644 --- a/src/Shared/Entities/WormTail.cs +++ b/src/Shared/Entities/WormTail.cs @@ -15,7 +15,7 @@ public static Entity create(Vector2 position, uint parent, int clientId) { Entity entity = new Entity(); entity.add(new Position(position)); - entity.add(new Appearance("Textures/sandworm_tail")); + entity.add(new Appearance()); entity.add(new Size(new Vector2(size, size))); entity.add(new ParentId(parent)); entity.add(new Movement(moveRate, rotateRate)); diff --git a/src/Shared/Messages/NewEntity.cs b/src/Shared/Messages/NewEntity.cs index fbc4548..0486c76 100644 --- a/src/Shared/Messages/NewEntity.cs +++ b/src/Shared/Messages/NewEntity.cs @@ -15,7 +15,6 @@ public NewEntity(Entity entity) : base(Type.NewEntity) if (entity.contains()) { this.hasAppearance = true; - this.texture = entity.get().texture; } else { @@ -456,14 +455,6 @@ private int parseAppearance(byte[] data, int offset) { this.hasAppearance = BitConverter.ToBoolean(data, offset); offset += sizeof(bool); - if (hasAppearance) - { - int textureSize = BitConverter.ToInt32(data, offset); - offset += sizeof(Int32); - this.texture = Encoding.UTF8.GetString(data, offset, textureSize); - offset += textureSize; - } - return offset; } @@ -568,11 +559,6 @@ private void serializePosition(List data) private void serializeAppearance(List data) { data.AddRange(BitConverter.GetBytes(hasAppearance)); - if (hasAppearance) - { - data.AddRange(BitConverter.GetBytes(texture.Length)); - data.AddRange(Encoding.UTF8.GetBytes(texture)); - } } } }