commit
df49c509ad
10 changed files with 99 additions and 37 deletions
|
@ -52,6 +52,15 @@ namespace ZoFo.GameCore
|
||||||
InputMovementDirection = AppManager.Instance.InputManager.InputMovementDirection,
|
InputMovementDirection = AppManager.Instance.InputManager.InputMovementDirection,
|
||||||
InputAttackDirection = AppManager.Instance.InputManager.InputAttackDirection
|
InputAttackDirection = AppManager.Instance.InputManager.InputAttackDirection
|
||||||
});
|
});
|
||||||
|
|
||||||
|
};
|
||||||
|
AppManager.Instance.InputManager.OnInteract += () =>
|
||||||
|
{
|
||||||
|
networkManager.AddData(new UpdateInputInteraction() { });
|
||||||
|
};
|
||||||
|
AppManager.Instance.InputManager.ShootEvent += () =>
|
||||||
|
{
|
||||||
|
networkManager.AddData(new UpdateInputShoot() { });
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -88,6 +97,7 @@ namespace ZoFo.GameCore
|
||||||
List<GameObject> gameObjects = new List<GameObject>();
|
List<GameObject> gameObjects = new List<GameObject>();
|
||||||
List<Player> players = new List<Player>();
|
List<Player> players = new List<Player>();
|
||||||
List<StopObject> stopObjects = new List<StopObject>();
|
List<StopObject> stopObjects = new List<StopObject>();
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Клиент должен обнговлять игру анимаций
|
/// Клиент должен обнговлять игру анимаций
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -99,6 +109,8 @@ namespace ZoFo.GameCore
|
||||||
AppManager.Instance.debugHud.Set("GameTime", gameTime.TotalGameTime.ToString());
|
AppManager.Instance.debugHud.Set("GameTime", gameTime.TotalGameTime.ToString());
|
||||||
gameObjects[i].UpdateAnimations();
|
gameObjects[i].UpdateAnimations();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
networkManager.SendData();//set to ticks
|
||||||
}
|
}
|
||||||
internal void Draw(SpriteBatch spriteBatch)
|
internal void Draw(SpriteBatch spriteBatch)
|
||||||
{
|
{
|
||||||
|
|
|
@ -10,6 +10,7 @@ using System.Linq;
|
||||||
using System.Reflection.Metadata.Ecma335;
|
using System.Reflection.Metadata.Ecma335;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
using ZoFo.GameCore.GUI;
|
||||||
|
|
||||||
namespace ZoFo.GameCore.GameManagers
|
namespace ZoFo.GameCore.GameManagers
|
||||||
{
|
{
|
||||||
|
@ -27,9 +28,6 @@ namespace ZoFo.GameCore.GameManagers
|
||||||
private Vector2 prevInputMovementDirection;
|
private Vector2 prevInputMovementDirection;
|
||||||
public Vector2 InputAttackDirection;
|
public Vector2 InputAttackDirection;
|
||||||
private Vector2 prevInputAttackDirection;
|
private Vector2 prevInputAttackDirection;
|
||||||
|
|
||||||
public event Action TalkEvent;
|
|
||||||
|
|
||||||
public ScopeState currentScopeState; // Положение оружия. Left, Right, Straight, Back, StraightLeft, StraightRight, BackLeft, BackRight.
|
public ScopeState currentScopeState; // Положение оружия. Left, Right, Straight, Back, StraightLeft, StraightRight, BackLeft, BackRight.
|
||||||
private ScopeState prevCurrentScopeState;
|
private ScopeState prevCurrentScopeState;
|
||||||
private bool _cheatsEnabled = false;
|
private bool _cheatsEnabled = false;
|
||||||
|
@ -48,6 +46,7 @@ namespace ZoFo.GameCore.GameManagers
|
||||||
|
|
||||||
public InputManager()
|
public InputManager()
|
||||||
{
|
{
|
||||||
|
isInteract = true;
|
||||||
InputMovementDirection = new Vector2(0, 0);
|
InputMovementDirection = new Vector2(0, 0);
|
||||||
InputAttackDirection = new Vector2(0, 0);
|
InputAttackDirection = new Vector2(0, 0);
|
||||||
this.isShoot = false;
|
this.isShoot = false;
|
||||||
|
@ -173,38 +172,46 @@ namespace ZoFo.GameCore.GameManagers
|
||||||
if (keyBoardState.IsKeyDown(Keys.Up) || keyBoardState.IsKeyDown(Keys.W))
|
if (keyBoardState.IsKeyDown(Keys.Up) || keyBoardState.IsKeyDown(Keys.W))
|
||||||
{
|
{
|
||||||
currentScopeState = ScopeState.Straight;
|
currentScopeState = ScopeState.Straight;
|
||||||
|
InputMovementDirection = new Vector2(0, -1);
|
||||||
}
|
}
|
||||||
else if (keyBoardState.IsKeyDown(Keys.Down) || keyBoardState.IsKeyDown(Keys.S))
|
else if (keyBoardState.IsKeyDown(Keys.Down) || keyBoardState.IsKeyDown(Keys.S))
|
||||||
{
|
{
|
||||||
currentScopeState = ScopeState.Back;
|
currentScopeState = ScopeState.Back;
|
||||||
|
InputMovementDirection = new Vector2(0, 1);
|
||||||
}
|
}
|
||||||
else if(keyBoardState.IsKeyDown(Keys.Left) || keyBoardState.IsKeyDown(Keys.A))
|
else if(keyBoardState.IsKeyDown(Keys.Left) || keyBoardState.IsKeyDown(Keys.A))
|
||||||
{
|
{
|
||||||
currentScopeState = ScopeState.Left;
|
currentScopeState = ScopeState.Left;
|
||||||
|
InputMovementDirection = new Vector2(-1, 0);
|
||||||
}
|
}
|
||||||
else if(keyBoardState.IsKeyDown(Keys.Right) || keyBoardState.IsKeyDown(Keys.D))
|
else if(keyBoardState.IsKeyDown(Keys.Right) || keyBoardState.IsKeyDown(Keys.D))
|
||||||
{
|
{
|
||||||
currentScopeState = ScopeState.Right;
|
currentScopeState = ScopeState.Right;
|
||||||
|
InputMovementDirection = new Vector2(1, 0);
|
||||||
}
|
}
|
||||||
else if(keyBoardState.IsKeyDown(Keys.Right) && keyBoardState.IsKeyDown(Keys.Up) ||
|
else if(keyBoardState.IsKeyDown(Keys.Right) && keyBoardState.IsKeyDown(Keys.Up) ||
|
||||||
keyBoardState.IsKeyDown(Keys.D) && keyBoardState.IsKeyDown(Keys.W))
|
keyBoardState.IsKeyDown(Keys.D) && keyBoardState.IsKeyDown(Keys.W))
|
||||||
{
|
{
|
||||||
currentScopeState = ScopeState.StraightRight;
|
currentScopeState = ScopeState.StraightRight;
|
||||||
|
InputMovementDirection = new Vector2(1, 1);
|
||||||
}
|
}
|
||||||
else if(keyBoardState.IsKeyDown(Keys.Left) && keyBoardState.IsKeyDown(Keys.Up) ||
|
else if(keyBoardState.IsKeyDown(Keys.Left) && keyBoardState.IsKeyDown(Keys.Up) ||
|
||||||
keyBoardState.IsKeyDown(Keys.A) && keyBoardState.IsKeyDown(Keys.W))
|
keyBoardState.IsKeyDown(Keys.A) && keyBoardState.IsKeyDown(Keys.W))
|
||||||
{
|
{
|
||||||
currentScopeState = ScopeState.StraightLeft;
|
currentScopeState = ScopeState.StraightLeft;
|
||||||
|
InputMovementDirection = new Vector2(-1, 1);
|
||||||
}
|
}
|
||||||
else if(keyBoardState.IsKeyDown(Keys.Right) && keyBoardState.IsKeyDown(Keys.Down) ||
|
else if(keyBoardState.IsKeyDown(Keys.Right) && keyBoardState.IsKeyDown(Keys.Down) ||
|
||||||
keyBoardState.IsKeyDown(Keys.D) && keyBoardState.IsKeyDown(Keys.S))
|
keyBoardState.IsKeyDown(Keys.D) && keyBoardState.IsKeyDown(Keys.S))
|
||||||
{
|
{
|
||||||
currentScopeState = ScopeState.BackRight;
|
currentScopeState = ScopeState.BackRight;
|
||||||
|
InputMovementDirection = new Vector2(1, -1);
|
||||||
}
|
}
|
||||||
else if(keyBoardState.IsKeyDown(Keys.Left) && keyBoardState.IsKeyDown(Keys.Down) ||
|
else if(keyBoardState.IsKeyDown(Keys.Left) && keyBoardState.IsKeyDown(Keys.Down) ||
|
||||||
keyBoardState.IsKeyDown(Keys.A) && keyBoardState.IsKeyDown(Keys.S))
|
keyBoardState.IsKeyDown(Keys.A) && keyBoardState.IsKeyDown(Keys.S))
|
||||||
{
|
{
|
||||||
currentScopeState = ScopeState.BackLeft;
|
currentScopeState = ScopeState.BackLeft;
|
||||||
|
InputMovementDirection = new Vector2(-1, -1);
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
@ -247,6 +254,8 @@ namespace ZoFo.GameCore.GameManagers
|
||||||
prevInputAttackDirection = InputAttackDirection;
|
prevInputAttackDirection = InputAttackDirection;
|
||||||
prevCurrentScopeState = currentScopeState;
|
prevCurrentScopeState = currentScopeState;
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
DebugHUD.Instance.Set("controls", currentScopeState.ToString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -42,6 +42,13 @@ namespace ZoFo.GameCore.GameManagers.NetworkManager
|
||||||
|
|
||||||
public void SendData()
|
public void SendData()
|
||||||
{
|
{
|
||||||
|
for (int i = 0; i < updates.Count; i++)
|
||||||
|
{
|
||||||
|
|
||||||
|
AppManager.Instance.server.ProcessIUpdateData(updates[i]);
|
||||||
|
}
|
||||||
|
updates.Clear();
|
||||||
|
return;// TODO remove
|
||||||
byte[] bytes = Encoding.UTF8.GetBytes(JsonSerializer.Serialize(updates)); //нужно сериализовать
|
byte[] bytes = Encoding.UTF8.GetBytes(JsonSerializer.Serialize(updates)); //нужно сериализовать
|
||||||
socket.Send(bytes);
|
socket.Send(bytes);
|
||||||
}
|
}
|
||||||
|
@ -98,7 +105,7 @@ namespace ZoFo.GameCore.GameManagers.NetworkManager
|
||||||
|
|
||||||
public static IPAddress GetIp()
|
public static IPAddress GetIp()
|
||||||
{
|
{
|
||||||
string hostName = Dns.GetHostName(); // Retrive the Name of HOST
|
/*string hostName = Dns.GetHostName(); // Retrive the Name of HOST
|
||||||
var ipList = Dns.GetHostByName(hostName).AddressList;
|
var ipList = Dns.GetHostByName(hostName).AddressList;
|
||||||
|
|
||||||
foreach (var ip in ipList)
|
foreach (var ip in ipList)
|
||||||
|
@ -107,8 +114,8 @@ namespace ZoFo.GameCore.GameManagers.NetworkManager
|
||||||
{
|
{
|
||||||
return ip;
|
return ip;
|
||||||
}
|
}
|
||||||
}
|
}*/
|
||||||
return IPAddress.Loopback;
|
return IPAddress.Parse("127.0.0.1");
|
||||||
}
|
}
|
||||||
|
|
||||||
//поток 2
|
//поток 2
|
||||||
|
|
|
@ -52,17 +52,16 @@ namespace ZoFo.GameCore.GameManagers.NetworkManager
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public static IPAddress GetIp()
|
public static IPAddress GetIp()
|
||||||
{
|
{
|
||||||
string hostName = Dns.GetHostName(); // Retrive the Name of HOST
|
/*string hostName = Dns.GetHostName(); // Retrive the Name of HOST
|
||||||
var ipList = Dns.GetHostEntry(hostName).AddressList;
|
var ipList = Dns.GetHostByName(hostName).AddressList;
|
||||||
|
|
||||||
foreach (var ip in ipList)
|
foreach (var ip in ipList)
|
||||||
{
|
{
|
||||||
if (ip.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
|
if (ip.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
|
||||||
{
|
{
|
||||||
return ip;
|
return ip;
|
||||||
}
|
}
|
||||||
}
|
}*/
|
||||||
return IPAddress.Loopback;
|
return IPAddress.Parse("127.0.0.1");
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
|
@ -0,0 +1,12 @@
|
||||||
|
using System;
|
||||||
|
using ZoFo.GameCore.GameManagers.NetworkManager;
|
||||||
|
|
||||||
|
namespace ZoFo.GameCore.GameManagers.NetworkManager.Updates.ClientToServer;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// уведомляет сервер о том, что игрок взаимодействует
|
||||||
|
/// </summary>
|
||||||
|
public class UpdateInputInteraction : UpdateData
|
||||||
|
{
|
||||||
|
public UpdateInputInteraction() { UpdateType = "UpdateInputInteraction"; }
|
||||||
|
}
|
|
@ -0,0 +1,9 @@
|
||||||
|
using System;
|
||||||
|
using ZoFo.GameCore.GameManagers.NetworkManager.Updates;
|
||||||
|
|
||||||
|
namespace ZoFo.GameCore.GameManagers.NetworkManager.Updates.ClientToServer;
|
||||||
|
|
||||||
|
public class UpdateInputShoot : UpdateData
|
||||||
|
{
|
||||||
|
public UpdateInputShoot() { UpdateType = "UpdateInputShoot"; }
|
||||||
|
}
|
|
@ -2,6 +2,8 @@ namespace ZoFo.GameCore.GameManagers.NetworkManager.Updates.ServerToClient;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// При попытке взаимодействия с объектом
|
/// При попытке взаимодействия с объектом
|
||||||
|
/// отправляет пользователю разрешение на взаимодействие
|
||||||
|
/// TODO: Вероятно убрать(обсудить)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class UpdateInteraction : UpdateData
|
public class UpdateInteraction : UpdateData
|
||||||
{
|
{
|
||||||
|
|
|
@ -18,17 +18,19 @@ public class Player : LivingEntity
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Факт того, что плеер в этом апдейте пытается стрелять
|
/// Факт того, что плеер в этом апдейте пытается стрелять
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool IsTryingToShoot { get; set; }
|
//public bool IsTryingToShoot { get; set; }
|
||||||
private float speed;
|
private float speed;
|
||||||
private int health;
|
private int health;
|
||||||
public override GraphicsComponent graphicsComponent { get; } = new AnimatedGraphicsComponent(new List<string> { "player_look_down" }, "player_look_down");
|
public override GraphicsComponent graphicsComponent { get; } = new AnimatedGraphicsComponent(new List<string> { "player_look_down" }, "player_look_down");
|
||||||
private LootData lootData;
|
private LootData lootData;
|
||||||
|
//public bool isTryingToInteract { get; set; }
|
||||||
public Player(Vector2 position) : base(position)
|
public Player(Vector2 position) : base(position)
|
||||||
{
|
{
|
||||||
//InputWeaponRotation = new Vector2(0, 0);
|
|
||||||
//InputPlayerRotation = new Vector2(0, 0);
|
|
||||||
graphicsComponent.ObjectDrawRectangle = new Rectangle(0, 0, 100, 100);
|
graphicsComponent.ObjectDrawRectangle = new Rectangle(0, 0, 100, 100);
|
||||||
collisionComponent.stopRectangle = new Rectangle(0, 0, 100, 100);
|
collisionComponent.stopRectangle = new Rectangle(0, 0, 100, 100);
|
||||||
|
speed = 10;
|
||||||
|
//isTryingToInteract = false;
|
||||||
|
//IsTryingToShoot = false;
|
||||||
|
|
||||||
StartAnimation("player_look_down");
|
StartAnimation("player_look_down");
|
||||||
}
|
}
|
||||||
|
@ -39,21 +41,21 @@ public class Player : LivingEntity
|
||||||
|
|
||||||
MovementLogic();
|
MovementLogic();
|
||||||
}
|
}
|
||||||
float t;
|
|
||||||
public void MovementLogic()
|
public void MovementLogic()
|
||||||
{
|
{
|
||||||
IsTryingToShoot = true; //gslkjfsnblkjsdfnnlkjbn;zkcjnb;kkjnzx;cjkb;kzjxb;kSErgo
|
velocity = InputPlayerRotation * speed;
|
||||||
//velocity.X = 3+(float)Math.Sin(t);
|
|
||||||
t++;
|
|
||||||
if (InputPlayerRotation.X > 0.9)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
if (Keyboard.GetState().IsKeyDown(Keys.D)) velocity.X += 5;
|
|
||||||
if (Keyboard.GetState().IsKeyDown(Keys.A)) velocity.X += -5;
|
|
||||||
if (Keyboard.GetState().IsKeyDown(Keys.S)) velocity.Y += 5;
|
|
||||||
if (Keyboard.GetState().IsKeyDown(Keys.W)) velocity.Y += -5;
|
|
||||||
}
|
}
|
||||||
public void HandleNewInput(UpdateInput updateInput)
|
public void HandleNewInput(UpdateInput updateInput)
|
||||||
|
{
|
||||||
|
InputPlayerRotation = updateInput.InputMovementDirection;
|
||||||
|
InputWeaponRotation = updateInput.InputAttackDirection;
|
||||||
|
|
||||||
|
}
|
||||||
|
public void HandleInteract(UpdateInputInteraction updateInputInteraction)
|
||||||
|
{
|
||||||
|
//isTryingToInteract = true;
|
||||||
|
}
|
||||||
|
public void HandleShoot(UpdateInputShoot updateInputShoot)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,6 +12,7 @@ using ZoFo.GameCore.GameManagers.CollisionManager;
|
||||||
using ZoFo.GameCore.GameManagers.MapManager;
|
using ZoFo.GameCore.GameManagers.MapManager;
|
||||||
using ZoFo.GameCore.GameManagers.NetworkManager;
|
using ZoFo.GameCore.GameManagers.NetworkManager;
|
||||||
using ZoFo.GameCore.GameManagers.NetworkManager.Updates;
|
using ZoFo.GameCore.GameManagers.NetworkManager.Updates;
|
||||||
|
using ZoFo.GameCore.GameManagers.NetworkManager.Updates.ClientToServer;
|
||||||
using ZoFo.GameCore.GameManagers.NetworkManager.Updates.ServerToClient;
|
using ZoFo.GameCore.GameManagers.NetworkManager.Updates.ServerToClient;
|
||||||
using ZoFo.GameCore.GameObjects;
|
using ZoFo.GameCore.GameObjects;
|
||||||
using ZoFo.GameCore.GameObjects.Entities;
|
using ZoFo.GameCore.GameObjects.Entities;
|
||||||
|
@ -78,11 +79,17 @@ namespace ZoFo.GameCore
|
||||||
break;
|
break;
|
||||||
case "UpdatePlayerParametrs":
|
case "UpdatePlayerParametrs":
|
||||||
break;
|
break;
|
||||||
case "UpdatePosition":
|
case "UpdateInput":
|
||||||
|
players[0].HandleNewInput(updateData as UpdateInput);
|
||||||
break;
|
break;
|
||||||
case "UpdateTileCreated":
|
case "UpdateTileCreated":
|
||||||
break;
|
break;
|
||||||
|
case "UpdateInputInteraction":
|
||||||
|
players[0].HandleInteract(updateData as UpdateInputInteraction);
|
||||||
|
break;
|
||||||
|
case "UpdateInputShoot":
|
||||||
|
players[0].HandleShoot(updateData as UpdateInputShoot);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -131,6 +138,9 @@ namespace ZoFo.GameCore
|
||||||
//AppManager.Instance.server.RegisterGameObject(new EntittyForAnimationTests(new Vector2(0, 0)));
|
//AppManager.Instance.server.RegisterGameObject(new EntittyForAnimationTests(new Vector2(0, 0)));
|
||||||
AppManager.Instance.server.RegisterGameObject(new Player(new Vector2(740, 140)));
|
AppManager.Instance.server.RegisterGameObject(new Player(new Vector2(740, 140)));
|
||||||
AppManager.Instance.server.RegisterGameObject(new Zombie(new Vector2(1000, 1000)));
|
AppManager.Instance.server.RegisterGameObject(new Zombie(new Vector2(1000, 1000)));
|
||||||
|
AppManager.Instance.server.RegisterGameObject(new Zombie(new Vector2(1300, 1000)));
|
||||||
|
AppManager.Instance.server.RegisterGameObject(new Zombie(new Vector2(1500, 1000)));
|
||||||
|
AppManager.Instance.server.RegisterGameObject(new Zombie(new Vector2(1700, 1000)));
|
||||||
AppManager.Instance.server.RegisterGameObject(new Ammo(new Vector2(140, 440)));
|
AppManager.Instance.server.RegisterGameObject(new Ammo(new Vector2(140, 440)));
|
||||||
AppManager.Instance.server.RegisterGameObject(new Ammo(new Vector2(240, 440)));
|
AppManager.Instance.server.RegisterGameObject(new Ammo(new Vector2(240, 440)));
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue