Merge branch 'NetworkchangeStateAndMonstersSupport'
This commit is contained in:
commit
39b9fa9242
5 changed files with 65 additions and 25 deletions
|
@ -30,6 +30,7 @@ namespace DangerousD.GameCore
|
|||
|
||||
LoadContent();
|
||||
AppManager.Instance.GameManager.Register(this);
|
||||
GraphicsComponent.parentId = id;
|
||||
}
|
||||
|
||||
public virtual void OnCollision(GameObject gameObject)
|
||||
|
@ -68,5 +69,9 @@ namespace DangerousD.GameCore
|
|||
}
|
||||
|
||||
}
|
||||
public GraphicsComponent GetGraphicsComponent()
|
||||
{
|
||||
return this.GraphicsComponent;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -31,6 +31,8 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities
|
|||
private int bullets;
|
||||
public bool FallingThroughPlatform = false;
|
||||
public bool isUping = false;
|
||||
public bool isNetworkPlayer;
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -39,6 +41,7 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities
|
|||
public Player(Vector2 position, bool isNetworkPlayer = false) : base(position)
|
||||
|
||||
{
|
||||
this.isNetworkPlayer = isNetworkPlayer;
|
||||
Width = 16;
|
||||
Height = 32;
|
||||
|
||||
|
@ -47,8 +50,6 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities
|
|||
AppManager.Instance.InputManager.ShootEvent += Shoot;
|
||||
AppManager.Instance.InputManager.MovEventJump += Jump;
|
||||
AppManager.Instance.InputManager.MovEventDown += MoveDown;
|
||||
}
|
||||
|
||||
velocity = new Vector2(0, 0);
|
||||
rightBorder = (int)position.X + 100;
|
||||
leftBorder = (int)position.X - 100;
|
||||
|
@ -67,6 +68,8 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities
|
|||
};
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public bool IsAlive { get { return isAlive; } }
|
||||
|
||||
protected override GraphicsComponent GraphicsComponent { get; } = new(new List<string> { "playerMoveLeft", "playerMoveRight", "DeathFromZombie", "playerRightStay", "playerStayLeft",
|
||||
|
@ -252,6 +255,5 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities
|
|||
FallingThroughPlatform = true;
|
||||
isOnGround = false;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
using DangerousD.GameCore.Managers;
|
||||
using DangerousD.GameCore.Network;
|
||||
using Microsoft.Xna.Framework;
|
||||
using Microsoft.Xna.Framework.Content;
|
||||
using Microsoft.Xna.Framework.Graphics;
|
||||
|
@ -18,6 +19,7 @@ namespace DangerousD.GameCore.Graphics
|
|||
private List<string> texturesNames;
|
||||
private AnimationContainer currentAnimation;
|
||||
static private int scaling = 4;
|
||||
public int parentId;
|
||||
public AnimationContainer CurrentAnimation
|
||||
{
|
||||
get
|
||||
|
@ -105,6 +107,14 @@ namespace DangerousD.GameCore.Graphics
|
|||
|
||||
public void StartAnimation(string startedanimationId)
|
||||
{
|
||||
if (startedanimationId == "playerShootRight" && parentId == 17)
|
||||
{
|
||||
string a = "2";
|
||||
}
|
||||
if (AppManager.Instance.multiPlayerStatus != MultiPlayerStatus.SinglePlayer && startedanimationId != GetCurrentAnimation)
|
||||
{
|
||||
AppManager.Instance.NetworkTasks.Add(new NetworkTask(parentId, startedanimationId, Vector2.Zero));
|
||||
}
|
||||
currentFrame = 0;
|
||||
currentAnimation = animations.Find(x => x.Id == startedanimationId);
|
||||
|
||||
|
|
|
@ -111,9 +111,8 @@ namespace DangerousD.GameCore
|
|||
{
|
||||
if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed || Keyboard.GetState().IsKeyDown(Keys.Escape))
|
||||
Exit();
|
||||
|
||||
if (GameManager.GetPlayer1 != null)
|
||||
DebugHUD.Set("Objid: ", GameManager.GetPlayer1.id.ToString());
|
||||
DebugHUD.Set("id: ", GameManager.GetPlayer1.id.ToString());
|
||||
InputManager.Update();
|
||||
SoundManager.Update();
|
||||
|
||||
|
@ -229,9 +228,10 @@ namespace DangerousD.GameCore
|
|||
case NetworkTaskOperationEnum.CreateEntity:
|
||||
break;
|
||||
case NetworkTaskOperationEnum.SendPosition:
|
||||
if (networkTask.objId != GameManager.GetPlayer1.id)
|
||||
if (networkTask.objId != GameManager.GetPlayer1.id )
|
||||
{
|
||||
LivingEntity entity = GameManager.livingEntities.Find(x => x.id == networkTask.objId);
|
||||
if (entity != null)
|
||||
entity.SetPosition(networkTask.position);
|
||||
if (multiPlayerStatus == MultiPlayerStatus.Host)
|
||||
{
|
||||
|
@ -240,6 +240,20 @@ namespace DangerousD.GameCore
|
|||
}
|
||||
break;
|
||||
case NetworkTaskOperationEnum.ChangeState:
|
||||
if (networkTask.objId != GameManager.GetPlayer1.id)
|
||||
{
|
||||
List<GraphicsComponent> gcs = new List<GraphicsComponent>();
|
||||
foreach (var player in GameManager.players)
|
||||
{
|
||||
gcs.Add(player.GetGraphicsComponent());
|
||||
}
|
||||
LivingEntity entity = GameManager.livingEntities.Find(x => x.id == networkTask.objId);
|
||||
if (entity != null)
|
||||
{
|
||||
GraphicsComponent gc = entity.GetGraphicsComponent();
|
||||
gc.StartAnimation(networkTask.name);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case NetworkTaskOperationEnum.ConnectToHost:
|
||||
Player connectedPlayer = new Player(Vector2.Zero, true);
|
||||
|
@ -257,13 +271,15 @@ namespace DangerousD.GameCore
|
|||
if (!GameManager.GetPlayer1.isIdFromHost)
|
||||
{
|
||||
GameManager.GetPlayer1.id = networkTask.objId;
|
||||
GraphicsComponent gcsd = GameManager.GetPlayer1.GetGraphicsComponent();
|
||||
gcsd.parentId = networkTask.objId;
|
||||
GameManager.GetPlayer1.isIdFromHost = true;
|
||||
}
|
||||
break;
|
||||
case NetworkTaskOperationEnum.AddConnectedPlayer:
|
||||
Player remoteConnectedPlayer = new Player(networkTask.position, true);
|
||||
remoteConnectedPlayer.id = networkTask.objId;
|
||||
|
||||
remoteConnectedPlayer.GetGraphicsComponent().parentId = networkTask.objId;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
|
|
@ -150,14 +150,21 @@ namespace DangerousD.GameCore
|
|||
}
|
||||
else
|
||||
|
||||
|
||||
{
|
||||
for (int i = 0; i < livingEntitiesWithoutPlayers.Count; i++)
|
||||
{
|
||||
livingEntitiesWithoutPlayers[i].PlayAnimation();
|
||||
}
|
||||
}
|
||||
foreach (Player player in players)
|
||||
{
|
||||
if (player.id != GetPlayer1.id)
|
||||
{
|
||||
player.PlayAnimation();
|
||||
}
|
||||
}
|
||||
GetPlayer1.Update(gameTime);
|
||||
|
||||
foreach (var item in otherObjects)
|
||||
item.Update(gameTime);
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue