From eb89ae4de9eee7111ec5601358628d680303dc01 Mon Sep 17 00:00:00 2001
From: AnloGames <7383an@gmail.com>
Date: Fri, 18 Aug 2023 16:50:18 +0300
Subject: [PATCH] GameOver NetworkSupport
---
DangerousD/GameCore/GameObjects/GameObject.cs | 1 +
.../LivingEntities/Monsters/Zombie.cs | 20 +++++++++----
DangerousD/GameCore/Managers/AppManager.cs | 13 ++++++++-
DangerousD/GameCore/Network/NetworkTask.cs | 29 +++++++++----------
.../Network/NetworkTaskOperationEnum.cs | 2 +-
5 files changed, 43 insertions(+), 22 deletions(-)
diff --git a/DangerousD/GameCore/GameObjects/GameObject.cs b/DangerousD/GameCore/GameObjects/GameObject.cs
index 8526427..60009ee 100644
--- a/DangerousD/GameCore/GameObjects/GameObject.cs
+++ b/DangerousD/GameCore/GameObjects/GameObject.cs
@@ -15,6 +15,7 @@ namespace DangerousD.GameCore
protected Vector2 _pos;
public Vector2 Pos => _pos;
public int id;
+ public bool isChildEntity = false;
public bool isIdFromHost = false;
public int Width { get; set; }
public int Height { get; set; }
diff --git a/DangerousD/GameCore/GameObjects/LivingEntities/Monsters/Zombie.cs b/DangerousD/GameCore/GameObjects/LivingEntities/Monsters/Zombie.cs
index c1737f2..c8c685c 100644
--- a/DangerousD/GameCore/GameObjects/LivingEntities/Monsters/Zombie.cs
+++ b/DangerousD/GameCore/GameObjects/LivingEntities/Monsters/Zombie.cs
@@ -8,6 +8,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
using DangerousD.GameCore.Managers;
+using DangerousD.GameCore.Network;
namespace DangerousD.GameCore.GameObjects.LivingEntities.Monsters
{
@@ -62,6 +63,10 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities.Monsters
}
public override void Attack()
+ {
+ AppManager.Instance.GameManager.GetPlayer1.Death(name);
+ }
+ public void PlayAttackAnimation()
{
velocity.X = 0;
isAttaking = true;
@@ -71,7 +76,6 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities.Monsters
{
GraphicsComponent.StartAnimation("ZombieRightAttack");
}
- AppManager.Instance.GameManager.players[0].Death(name);
}
else if (!isGoRight)
{
@@ -79,7 +83,6 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities.Monsters
{
GraphicsComponent.StartAnimation("ZombieLeftAttack");
}
- AppManager.Instance.GameManager.players[0].Death(name);
}
}
@@ -120,12 +123,19 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities.Monsters
}
public override void OnCollision(GameObject gameObject)
{
- if(gameObject is Player)
+ if (gameObject.id == AppManager.Instance.GameManager.GetPlayer1.id && AppManager.Instance.GameManager.GetPlayer1.IsAlive)
{
- if (AppManager.Instance.GameManager.players[0].IsAlive)
+ if (AppManager.Instance.multiPlayerStatus != MultiPlayerStatus.Client)
{
Attack();
-
+ }
+ }
+ else if (gameObject is Player)
+ {
+ if (AppManager.Instance.multiPlayerStatus == MultiPlayerStatus.Host)
+ {
+ NetworkTask task = new NetworkTask();
+ AppManager.Instance.NetworkTasks.Add(task.KillPlayer(gameObject.id, name));
}
}
base.OnCollision(gameObject);
diff --git a/DangerousD/GameCore/Managers/AppManager.cs b/DangerousD/GameCore/Managers/AppManager.cs
index 5a2cf29..12616f9 100644
--- a/DangerousD/GameCore/Managers/AppManager.cs
+++ b/DangerousD/GameCore/Managers/AppManager.cs
@@ -220,7 +220,12 @@ namespace DangerousD.GameCore
{
switch (networkTask.operation)
{
- case NetworkTaskOperationEnum.TakeDamage:
+ case NetworkTaskOperationEnum.DeleteObject:
+ GameObject gameObject = GameManager.GetAllGameObjects.Find(x => x.id == networkTask.objId);
+ if (gameObject != null)
+ {
+ GameManager.Remove(gameObject);
+ }
break;
case NetworkTaskOperationEnum.SendSound:
SoundManager.StartSound(networkTask.name, networkTask.position, GameManager.GetPlayer1.Pos);
@@ -276,6 +281,12 @@ namespace DangerousD.GameCore
remoteConnectedPlayer.id = networkTask.objId;
remoteConnectedPlayer.GetGraphicsComponent().parentId = networkTask.objId;
break;
+ case NetworkTaskOperationEnum.KillPlayer:
+ Player player1 = GameManager.players.Find(x => x.id==networkTask.objId);
+ player1.Death(networkTask.name);
+ NetworkTask task1 = new NetworkTask();
+ NetworkTasks.Add(task1.DeleteObject(player1.id));
+ break;
default:
break;
}
diff --git a/DangerousD/GameCore/Network/NetworkTask.cs b/DangerousD/GameCore/Network/NetworkTask.cs
index 8611d78..f9b6072 100644
--- a/DangerousD/GameCore/Network/NetworkTask.cs
+++ b/DangerousD/GameCore/Network/NetworkTask.cs
@@ -20,18 +20,6 @@ namespace DangerousD.GameCore.Network
public Type type { get; set; }
public NetworkTask() { }
- ///
- /// Нанести урон сущности
- ///
- ///
- ///
- public NetworkTask(int LivingEntityId, int Damage)
- {
- operation = NetworkTaskOperationEnum.TakeDamage;
- objId = LivingEntityId;
- value = Damage;
- }
-
///
/// Проиграть звук на позиции
///
@@ -49,14 +37,12 @@ namespace DangerousD.GameCore.Network
///
///
///
- ///
///
- public NetworkTask(Type EntityType, Vector2 EntityPosition, Vector2 EntityVelocity, int ParentId)
+ public NetworkTask(Type EntityType, Vector2 EntityPosition, int ParentId)
{
operation = NetworkTaskOperationEnum.CreateEntity;
type = EntityType;
position = EntityPosition;
- velocity = EntityVelocity;
objId = ParentId;
}
@@ -134,5 +120,18 @@ namespace DangerousD.GameCore.Network
position = playerPosition;
return this;
}
+ public NetworkTask DeleteObject(int objectId)
+ {
+ operation = NetworkTaskOperationEnum.DeleteObject;
+ objId = objectId;
+ return this;
+ }
+ public NetworkTask KillPlayer(int playerId, string mosterName)
+ {
+ operation = NetworkTaskOperationEnum.KillPlayer;
+ name = mosterName;
+ objId = playerId;
+ return this;
+ }
}
}
diff --git a/DangerousD/GameCore/Network/NetworkTaskOperationEnum.cs b/DangerousD/GameCore/Network/NetworkTaskOperationEnum.cs
index 7fad430..5b746f5 100644
--- a/DangerousD/GameCore/Network/NetworkTaskOperationEnum.cs
+++ b/DangerousD/GameCore/Network/NetworkTaskOperationEnum.cs
@@ -9,6 +9,6 @@ namespace DangerousD.GameCore.Network
[Serializable]
public enum NetworkTaskOperationEnum
{
- TakeDamage, SendSound, CreateEntity, SendPosition, ChangeState, ConnectToHost, GetClientPlayerId, AddConnectedPlayer
+ DeleteObject, SendSound, CreateEntity, SendPosition, ChangeState, ConnectToHost, GetClientPlayerId, AddConnectedPlayer, KillPlayer
}
}