Fixed networking

This commit is contained in:
Alex Noir
2017-12-08 15:32:37 +03:00
parent 8788efa007
commit 286f290e57
3 changed files with 20 additions and 7 deletions
@@ -213,10 +213,16 @@ namespace Barotrauma
character.AnimController.GrabLimb = character.AnimController.GrabLimb == LimbType.None ? LimbType.Torso : LimbType.None; character.AnimController.GrabLimb = character.AnimController.GrabLimb == LimbType.None ? LimbType.Torso : LimbType.None;
foreach (Limb limb in Character.Controlled.SelectedCharacter.AnimController.Limbs)
{
limb.pullJoint.Enabled = false;
}
if (GameMain.Client != null) if (GameMain.Client != null)
{ {
GameMain.Client.CreateEntityEvent(Character.Controlled, new object[] { NetEntityEvent.Type.Repair }); GameMain.Client.CreateEntityEvent(Character.Controlled, new object[] { NetEntityEvent.Type.Control });
} }
grabHoldButton.Text = "Grabbing: " + (character.AnimController.GrabLimb == LimbType.Torso ? "Torso" : "Hands"); grabHoldButton.Text = "Grabbing: " + (character.AnimController.GrabLimb == LimbType.Torso ? "Torso" : "Hands");
return true; return true;
}; };
@@ -17,15 +17,19 @@ namespace Barotrauma
switch ((NetEntityEvent.Type)extraData[0]) switch ((NetEntityEvent.Type)extraData[0])
{ {
case NetEntityEvent.Type.InventoryState: case NetEntityEvent.Type.InventoryState:
msg.WriteRangedInteger(0, 2, 0); msg.WriteRangedInteger(0, 3, 0);
inventory.ClientWrite(msg, extraData); inventory.ClientWrite(msg, extraData);
break; break;
case NetEntityEvent.Type.Repair: case NetEntityEvent.Type.Repair:
msg.WriteRangedInteger(0, 2, 1); msg.WriteRangedInteger(0, 3, 1);
msg.Write(AnimController.Anim == AnimController.Animation.CPR); msg.Write(AnimController.Anim == AnimController.Animation.CPR);
break; break;
case NetEntityEvent.Type.Status: case NetEntityEvent.Type.Status:
msg.WriteRangedInteger(0, 2, 2); msg.WriteRangedInteger(0, 3, 2);
break;
case NetEntityEvent.Type.Control:
msg.WriteRangedInteger(0, 3, 3);
msg.Write((int)AnimController.GrabLimb);
break; break;
} }
} }
@@ -91,7 +95,7 @@ namespace Barotrauma
bool crouching = msg.ReadBoolean(); bool crouching = msg.ReadBoolean();
keys[(int)InputType.Crouch].Held = crouching; keys[(int)InputType.Crouch].Held = crouching;
keys[(int)InputType.Crouch].SetState(false, crouching); keys[(int)InputType.Crouch].SetState(false, crouching);
AnimController.GrabLimb = (LimbType)msg.ReadInt16(); AnimController.GrabLimb = (LimbType)msg.ReadInt32();
} }
bool hasAttackLimb = msg.ReadBoolean(); bool hasAttackLimb = msg.ReadBoolean();
@@ -324,7 +324,7 @@ namespace Barotrauma
break; break;
case ClientNetObject.ENTITY_STATE: case ClientNetObject.ENTITY_STATE:
int eventType = msg.ReadRangedInteger(0,2); int eventType = msg.ReadRangedInteger(0,3);
switch (eventType) switch (eventType)
{ {
case 0: case 0:
@@ -356,6 +356,9 @@ namespace Barotrauma
Kill(lastAttackCauseOfDeath); Kill(lastAttackCauseOfDeath);
} }
break; break;
case 3:
AnimController.GrabLimb = (LimbType)msg.ReadInt32();
break;
} }
break; break;
} }
@@ -435,7 +438,7 @@ namespace Barotrauma
if (AnimController is HumanoidAnimController) if (AnimController is HumanoidAnimController)
{ {
tempBuffer.Write(((HumanoidAnimController)AnimController).Crouching); tempBuffer.Write(((HumanoidAnimController)AnimController).Crouching);
tempBuffer.Write((int)((HumanoidAnimController)AnimController).GrabLimb); tempBuffer.Write((int)AnimController.GrabLimb);
} }
bool hasAttackLimb = AnimController.Limbs.Any(l => l != null && l.attack != null); bool hasAttackLimb = AnimController.Limbs.Any(l => l != null && l.attack != null);