Sending keypresses instead of targetmovement
This commit is contained in:
@@ -460,6 +460,23 @@ namespace Subsurface
|
|||||||
{
|
{
|
||||||
if (isDead) return;
|
if (isDead) return;
|
||||||
|
|
||||||
|
Vector2 targetMovement = Vector2.Zero;
|
||||||
|
if (GetInputState(InputType.Left)) targetMovement.X -= 1.0f;
|
||||||
|
if (GetInputState(InputType.Right)) targetMovement.X += 1.0f;
|
||||||
|
if (GetInputState(InputType.Up)) targetMovement.Y += 1.0f;
|
||||||
|
if (GetInputState(InputType.Down)) targetMovement.Y -= 1.0f;
|
||||||
|
|
||||||
|
//the vertical component is only used for falling through platforms and climbing ladders when not in water,
|
||||||
|
//so the movement can't be normalized or the character would walk slower when pressing down/up
|
||||||
|
if (AnimController.InWater)
|
||||||
|
{
|
||||||
|
float length = targetMovement.Length();
|
||||||
|
if (length > 0.0f) targetMovement = targetMovement / length;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Math.Sign(targetMovement.X) == Math.Sign(AnimController.Dir) && GetInputState(InputType.Run))
|
||||||
|
targetMovement *= 3.0f;
|
||||||
|
|
||||||
//find the closest item if selectkey has been hit, or if the character is being
|
//find the closest item if selectkey has been hit, or if the character is being
|
||||||
//controlled by the player (in order to highlight it)
|
//controlled by the player (in order to highlight it)
|
||||||
if (controlled == this)
|
if (controlled == this)
|
||||||
@@ -560,22 +577,15 @@ namespace Subsurface
|
|||||||
|
|
||||||
if (!DisableControls)
|
if (!DisableControls)
|
||||||
{
|
{
|
||||||
if (PlayerInput.KeyDown(Keys.W)) targetMovement.Y += 1.0f;
|
keys[(int)InputType.Left].SetState(PlayerInput.KeyDown(Keys.A));
|
||||||
if (PlayerInput.KeyDown(Keys.S)) targetMovement.Y -= 1.0f;
|
keys[(int)InputType.Right].SetState(PlayerInput.KeyDown(Keys.D));
|
||||||
if (PlayerInput.KeyDown(Keys.A)) targetMovement.X -= 1.0f;
|
keys[(int)InputType.Up].SetState(PlayerInput.KeyDown(Keys.W));
|
||||||
if (PlayerInput.KeyDown(Keys.D)) targetMovement.X += 1.0f;
|
keys[(int)InputType.Down].SetState(PlayerInput.KeyDown(Keys.S));
|
||||||
|
|
||||||
//the vertical component is only used for falling through platforms and climbing ladders when not in water,
|
|
||||||
//so the movement can't be normalized or the character would walk slower when pressing down/up
|
|
||||||
if (AnimController.InWater)
|
|
||||||
{
|
|
||||||
float length = targetMovement.Length();
|
|
||||||
if (length > 0.0f) targetMovement = targetMovement / length;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (Keyboard.GetState().IsKeyDown(Keys.LeftShift) && Math.Sign(targetMovement.X) == Math.Sign(AnimController.Dir))
|
|
||||||
targetMovement *= 3.0f;
|
|
||||||
|
|
||||||
|
//if (PlayerInput.KeyDown(Keys.W)) targetMovement.Y += 1.0f;
|
||||||
|
//if (PlayerInput.KeyDown(Keys.S)) targetMovement.Y -= 1.0f;
|
||||||
|
//if () targetMovement.X -= 1.0f;
|
||||||
|
//if (PlayerInput.KeyDown(Keys.D)) targetMovement.X += 1.0f;
|
||||||
|
|
||||||
keys[(int)InputType.Select].SetState(PlayerInput.KeyHit(Keys.E));
|
keys[(int)InputType.Select].SetState(PlayerInput.KeyHit(Keys.E));
|
||||||
keys[(int)InputType.ActionHit].SetState(PlayerInput.LeftButtonClicked());
|
keys[(int)InputType.ActionHit].SetState(PlayerInput.LeftButtonClicked());
|
||||||
@@ -1013,9 +1023,15 @@ namespace Subsurface
|
|||||||
|
|
||||||
message.Write(keys[(int)InputType.ActionHeld].Dequeue);
|
message.Write(keys[(int)InputType.ActionHeld].Dequeue);
|
||||||
message.Write(keys[(int)InputType.SecondaryHeld].Dequeue);
|
message.Write(keys[(int)InputType.SecondaryHeld].Dequeue);
|
||||||
|
|
||||||
message.Write((float)NetTime.Now);
|
message.Write((float)NetTime.Now);
|
||||||
|
|
||||||
|
message.Write(keys[(int)InputType.Left].Dequeue);
|
||||||
|
message.Write(keys[(int)InputType.Right].Dequeue);
|
||||||
|
|
||||||
|
message.Write(keys[(int)InputType.Up].Dequeue);
|
||||||
|
message.Write(keys[(int)InputType.Down].Dequeue);
|
||||||
|
|
||||||
// Write byte = move direction
|
// Write byte = move direction
|
||||||
message.WriteRangedSingle(MathHelper.Clamp(AnimController.TargetMovement.X, -10.0f, 10.0f), -10.0f, 10.0f, 8);
|
message.WriteRangedSingle(MathHelper.Clamp(AnimController.TargetMovement.X, -10.0f, 10.0f), -10.0f, 10.0f, 8);
|
||||||
message.WriteRangedSingle(MathHelper.Clamp(AnimController.TargetMovement.Y, -10.0f, 10.0f), -10.0f, 10.0f, 8);
|
message.WriteRangedSingle(MathHelper.Clamp(AnimController.TargetMovement.Y, -10.0f, 10.0f), -10.0f, 10.0f, 8);
|
||||||
@@ -1114,6 +1130,9 @@ namespace Subsurface
|
|||||||
bool targetDir = false;
|
bool targetDir = false;
|
||||||
Vector2 cursorPos = Vector2.Zero;
|
Vector2 cursorPos = Vector2.Zero;
|
||||||
|
|
||||||
|
bool leftKeyState = false, rightKeyState = false;
|
||||||
|
bool upKeyState = false, downKeyState = false;
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
actionKeyState = message.ReadBoolean();
|
actionKeyState = message.ReadBoolean();
|
||||||
@@ -1121,9 +1140,14 @@ namespace Subsurface
|
|||||||
|
|
||||||
sendingTime = message.ReadFloat();
|
sendingTime = message.ReadFloat();
|
||||||
|
|
||||||
targetMovement = new Vector2(message.ReadRangedSingle(-10.0f, 10.0f, 8), message.ReadRangedSingle(-10.0f, 10.0f, 8));
|
leftKeyState = message.ReadBoolean();
|
||||||
targetMovement.X = MathUtils.Round(targetMovement.X, 0.1f);
|
rightKeyState = message.ReadBoolean();
|
||||||
targetMovement.Y = MathUtils.Round(targetMovement.Y, 0.1f);
|
upKeyState = message.ReadBoolean();
|
||||||
|
downKeyState = message.ReadBoolean();
|
||||||
|
|
||||||
|
//targetMovement = new Vector2(message.ReadRangedSingle(-10.0f, 10.0f, 8), message.ReadRangedSingle(-10.0f, 10.0f, 8));
|
||||||
|
//targetMovement.X = MathUtils.Round(targetMovement.X, 0.1f);
|
||||||
|
//targetMovement.Y = MathUtils.Round(targetMovement.Y, 0.1f);
|
||||||
|
|
||||||
targetDir = message.ReadBoolean();
|
targetDir = message.ReadBoolean();
|
||||||
|
|
||||||
@@ -1145,6 +1169,12 @@ namespace Subsurface
|
|||||||
keys[(int)InputType.ActionHeld].State = actionKeyState;
|
keys[(int)InputType.ActionHeld].State = actionKeyState;
|
||||||
keys[(int)InputType.SecondaryHeld].State = secondaryKeyState;
|
keys[(int)InputType.SecondaryHeld].State = secondaryKeyState;
|
||||||
|
|
||||||
|
keys[(int)InputType.Left].State = leftKeyState;
|
||||||
|
keys[(int)InputType.Right].State = rightKeyState;
|
||||||
|
|
||||||
|
keys[(int)InputType.Up].State = upKeyState;
|
||||||
|
keys[(int)InputType.Down].State = downKeyState;
|
||||||
|
|
||||||
if (sendingTime <= LastNetworkUpdate) return;
|
if (sendingTime <= LastNetworkUpdate) return;
|
||||||
|
|
||||||
cursorPosition = cursorPos;
|
cursorPosition = cursorPos;
|
||||||
|
|||||||
@@ -68,7 +68,6 @@ namespace Subsurface
|
|||||||
|
|
||||||
MasterServerUrl = ToolBox.GetAttributeString(doc.Root, "masterserverurl", "");
|
MasterServerUrl = ToolBox.GetAttributeString(doc.Root, "masterserverurl", "");
|
||||||
|
|
||||||
|
|
||||||
foreach (XElement subElement in doc.Root.Elements())
|
foreach (XElement subElement in doc.Root.Elements())
|
||||||
{
|
{
|
||||||
switch (subElement.Name.ToString().ToLower())
|
switch (subElement.Name.ToString().ToLower())
|
||||||
@@ -92,6 +91,8 @@ namespace Subsurface
|
|||||||
doc.Add(new XElement("config"));
|
doc.Add(new XElement("config"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
doc.Root.Add(new XAttribute("masterserverurl", MasterServerUrl));
|
||||||
|
|
||||||
XElement gMode = doc.Root.Element("graphicsmode");
|
XElement gMode = doc.Root.Element("graphicsmode");
|
||||||
if (gMode == null)
|
if (gMode == null)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -4,7 +4,14 @@ using Microsoft.Xna.Framework.Input;
|
|||||||
namespace Subsurface
|
namespace Subsurface
|
||||||
{
|
{
|
||||||
|
|
||||||
public enum InputType { Select, ActionHit, ActionHeld, SecondaryHit, SecondaryHeld }
|
public enum InputType
|
||||||
|
{
|
||||||
|
Select,
|
||||||
|
ActionHit, ActionHeld,
|
||||||
|
SecondaryHit, SecondaryHeld,
|
||||||
|
Left, Right, Up, Down,
|
||||||
|
Run
|
||||||
|
}
|
||||||
|
|
||||||
class Key
|
class Key
|
||||||
{
|
{
|
||||||
|
|||||||
Binary file not shown.
Reference in New Issue
Block a user