Using enum flags instead of direct hex values for inputs

This commit is contained in:
juanjp600
2016-12-24 09:01:11 -03:00
parent e4744e8385
commit 511bcdca22
+41 -30
View File
@@ -25,12 +25,23 @@ namespace Barotrauma
{ {
get { return netStateID; } get { return netStateID; }
} }
private byte dequeuedInput = 0;
private byte prevDequeuedInput = 0;
private enum InputNetFlags : UInt16
{
None = 0x0,
Left = 0x1,
Right = 0x2,
Up = 0x4,
Down = 0x8,
FacingLeft = 0x10,
Run = 0x20,
Select = 0x40,
}
private InputNetFlags dequeuedInput = 0;
private InputNetFlags prevDequeuedInput = 0;
private int isStillCountdown = 5; private int isStillCountdown = 5;
private List<byte> memInput = new List<byte>(); private List<InputNetFlags> memInput = new List<InputNetFlags>();
private List<Vector2> memMousePos = new List<Vector2>(); private List<Vector2> memMousePos = new List<Vector2>();
private List<PosInfo> memPos = new List<PosInfo>(); private List<PosInfo> memPos = new List<PosInfo>();
@@ -665,22 +676,22 @@ namespace Barotrauma
switch (inputType) switch (inputType)
{ {
case InputType.Left: case InputType.Left:
return ((dequeuedInput & 0x1) > 0) && !((prevDequeuedInput & 0x1) > 0); return (dequeuedInput.HasFlag(InputNetFlags.Left)) && !(prevDequeuedInput.HasFlag(InputNetFlags.Left));
//break; //break;
case InputType.Right: case InputType.Right:
return ((dequeuedInput & 0x2) > 0) && !((prevDequeuedInput & 0x2) > 0); return (dequeuedInput.HasFlag(InputNetFlags.Right)) && !(prevDequeuedInput.HasFlag(InputNetFlags.Right));
//break; //break;
case InputType.Up: case InputType.Up:
return ((dequeuedInput & 0x4) > 0) && !((prevDequeuedInput & 0x4) > 0); return (dequeuedInput.HasFlag(InputNetFlags.Up)) && !(prevDequeuedInput.HasFlag(InputNetFlags.Up));
//break; //break;
case InputType.Down: case InputType.Down:
return ((dequeuedInput & 0x8) > 0) && !((prevDequeuedInput & 0x8) > 0); return (dequeuedInput.HasFlag(InputNetFlags.Down)) && !(prevDequeuedInput.HasFlag(InputNetFlags.Down));
//break; //break;
case InputType.Run: case InputType.Run:
return ((dequeuedInput & 0x20) > 0) && !((prevDequeuedInput & 0x20) > 0); return (dequeuedInput.HasFlag(InputNetFlags.Run)) && !(prevDequeuedInput.HasFlag(InputNetFlags.Run));
//break; //break;
case InputType.Select: case InputType.Select:
return ((dequeuedInput & 0x40) > 0) && !((prevDequeuedInput & 0x40) > 0); return (dequeuedInput.HasFlag(InputNetFlags.Select)) && !(prevDequeuedInput.HasFlag(InputNetFlags.Select));
//break; //break;
default: default:
return false; return false;
@@ -699,22 +710,22 @@ namespace Barotrauma
switch (inputType) switch (inputType)
{ {
case InputType.Left: case InputType.Left:
retVal = (dequeuedInput & 0x1) > 0; retVal = dequeuedInput.HasFlag(InputNetFlags.Left);
break; break;
case InputType.Right: case InputType.Right:
retVal = (dequeuedInput & 0x2) > 0; retVal = dequeuedInput.HasFlag(InputNetFlags.Right);
break; break;
case InputType.Up: case InputType.Up:
retVal = (dequeuedInput & 0x4) > 0; retVal = dequeuedInput.HasFlag(InputNetFlags.Up);
break; break;
case InputType.Down: case InputType.Down:
retVal = (dequeuedInput & 0x8) > 0; retVal = dequeuedInput.HasFlag(InputNetFlags.Down);
break; break;
case InputType.Run: case InputType.Run:
retVal = (dequeuedInput & 0x20) > 0; retVal = dequeuedInput.HasFlag(InputNetFlags.Run);
break; break;
case InputType.Select: case InputType.Select:
retVal = (dequeuedInput & 0x40) > 0; retVal = dequeuedInput.HasFlag(InputNetFlags.Select);
break; break;
} }
return retVal; return retVal;
@@ -835,7 +846,7 @@ namespace Barotrauma
if (GameMain.Server != null && Character.Controlled != this) if (GameMain.Server != null && Character.Controlled != this)
{ {
if ((dequeuedInput & 0x10) > 0) if (dequeuedInput.HasFlag(InputNetFlags.FacingLeft))
{ {
AnimController.TargetDir = Direction.Left; AnimController.TargetDir = Direction.Left;
} }
@@ -1307,7 +1318,7 @@ namespace Barotrauma
cursorPosition = memMousePos[memMousePos.Count - 1]; cursorPosition = memMousePos[memMousePos.Count - 1];
memInput.RemoveAt(memInput.Count - 1); memInput.RemoveAt(memInput.Count - 1);
memMousePos.RemoveAt(memMousePos.Count - 1); memMousePos.RemoveAt(memMousePos.Count - 1);
if (dequeuedInput == 0) if (dequeuedInput == InputNetFlags.None)
{ {
if (isStillCountdown<=0) if (isStillCountdown<=0)
{ {
@@ -1344,14 +1355,14 @@ namespace Barotrauma
{ {
memLocalPos.Add(new PosInfo(SimPosition, AnimController.TargetDir, LastNetworkUpdateID)); memLocalPos.Add(new PosInfo(SimPosition, AnimController.TargetDir, LastNetworkUpdateID));
byte newInput = 0; InputNetFlags newInput = InputNetFlags.None;
newInput |= IsKeyDown(InputType.Left) ? (byte)0x1 : (byte)0; if (IsKeyDown(InputType.Left)) newInput |= InputNetFlags.Left;
newInput |= IsKeyDown(InputType.Right) ? (byte)0x2 : (byte)0; if (IsKeyDown(InputType.Right)) newInput |= InputNetFlags.Right;
newInput |= IsKeyDown(InputType.Up) ? (byte)0x4 : (byte)0; if (IsKeyDown(InputType.Up)) newInput |= InputNetFlags.Up;
newInput |= IsKeyDown(InputType.Down) ? (byte)0x8 : (byte)0; if (IsKeyDown(InputType.Down)) newInput |= InputNetFlags.Down;
newInput |= (AnimController.TargetDir == Direction.Left) ? (byte)0x10 : (byte)0; if (AnimController.TargetDir == Direction.Left) newInput |= InputNetFlags.FacingLeft;
newInput |= IsKeyDown(InputType.Run) ? (byte)0x20 : (byte)0; if (IsKeyDown(InputType.Run)) newInput |= InputNetFlags.Run;
newInput |= IsKeyHit(InputType.Select) ? (byte)0x40 : (byte)0; if (IsKeyDown(InputType.Select)) newInput |= InputNetFlags.Select;
memInput.Insert(0, newInput); memInput.Insert(0, newInput);
memMousePos.Insert(0, closestItem!=null ? closestItem.Position : cursorPosition); memMousePos.Insert(0, closestItem!=null ? closestItem.Position : cursorPosition);
LastNetworkUpdateID++; LastNetworkUpdateID++;
@@ -1939,8 +1950,8 @@ namespace Barotrauma
msg.Write(inputCount); msg.Write(inputCount);
for (int i = 0; i < inputCount; i++) for (int i = 0; i < inputCount; i++)
{ {
msg.Write(memInput[i]); msg.Write((byte)memInput[i]);
if ((memInput[i] & 0x40) > 0) if (memInput[i].HasFlag(InputNetFlags.Select))
{ {
msg.Write(memMousePos[i].X); msg.Write(memMousePos[i].X);
msg.Write(memMousePos[i].Y); msg.Write(memMousePos[i].Y);
@@ -1956,9 +1967,9 @@ namespace Barotrauma
for (int i = 0; i < inputCount; i++) for (int i = 0; i < inputCount; i++)
{ {
byte newInput = msg.ReadByte(); InputNetFlags newInput = (InputNetFlags)msg.ReadByte();
Vector2 newMousePos = Position; Vector2 newMousePos = Position;
if ((newInput & 0x40) > 0) if (newInput.HasFlag(InputNetFlags.Select))
{ {
newMousePos.X = msg.ReadSingle(); newMousePos.X = msg.ReadSingle();
newMousePos.Y = msg.ReadSingle(); newMousePos.Y = msg.ReadSingle();