Merge pull request #101 from Crystalwarrior/moRags
Body shoulder-grab, better CPR anims, CPR and Crit overhaul!
This commit is contained in:
@@ -13,6 +13,8 @@ namespace Barotrauma
|
||||
private static Sprite noiseOverlay, damageOverlay;
|
||||
|
||||
private static GUIButton cprButton;
|
||||
|
||||
private static GUIButton grabHoldButton;
|
||||
|
||||
private static GUIButton suicideButton;
|
||||
|
||||
@@ -41,6 +43,8 @@ namespace Barotrauma
|
||||
|
||||
if (cprButton != null && cprButton.Visible) cprButton.AddToGUIUpdateList();
|
||||
|
||||
if (grabHoldButton != null && cprButton.Visible) grabHoldButton.AddToGUIUpdateList();
|
||||
|
||||
if (suicideButton != null && suicideButton.Visible) suicideButton.AddToGUIUpdateList();
|
||||
|
||||
if (!character.IsUnconscious && character.Stun <= 0.0f)
|
||||
@@ -89,6 +93,8 @@ namespace Barotrauma
|
||||
|
||||
if (cprButton != null && cprButton.Visible) cprButton.Update(deltaTime);
|
||||
|
||||
if (grabHoldButton != null && grabHoldButton.Visible) grabHoldButton.Update(deltaTime);
|
||||
|
||||
if (suicideButton != null && suicideButton.Visible) suicideButton.Update(deltaTime);
|
||||
|
||||
if (damageOverlayTimer > 0.0f) damageOverlayTimer -= deltaTime;
|
||||
@@ -195,9 +201,37 @@ namespace Barotrauma
|
||||
};
|
||||
}
|
||||
|
||||
if (grabHoldButton == null)
|
||||
{
|
||||
grabHoldButton = new GUIButton(
|
||||
new Rectangle(character.SelectedCharacter.Inventory.SlotPositions[0].ToPoint() + new Point(320, -60), new Point(130, 20)),
|
||||
"Grabbing: " + (character.AnimController.GrabLimb == LimbType.Torso ? "Torso" : "Hands"), "");
|
||||
|
||||
grabHoldButton.OnClicked = (button, userData) =>
|
||||
{
|
||||
if (Character.Controlled == null || Character.Controlled.SelectedCharacter == null) return false;
|
||||
|
||||
Character.Controlled.AnimController.GrabLimb = Character.Controlled.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)
|
||||
{
|
||||
GameMain.Client.CreateEntityEvent(Character.Controlled, new object[] { NetEntityEvent.Type.Control });
|
||||
}
|
||||
|
||||
grabHoldButton.Text = "Grabbing: " + (Character.Controlled.AnimController.GrabLimb == LimbType.Torso ? "Torso" : "Hands");
|
||||
return true;
|
||||
};
|
||||
}
|
||||
|
||||
//cprButton.Visible = character.GetSkillLevel("Medical") > 20.0f;
|
||||
|
||||
if (cprButton.Visible) cprButton.Draw(spriteBatch);
|
||||
if (grabHoldButton.Visible) grabHoldButton.Draw(spriteBatch);
|
||||
}
|
||||
|
||||
if (character.FocusedCharacter != null && character.FocusedCharacter.CanBeSelected)
|
||||
|
||||
@@ -17,15 +17,19 @@ namespace Barotrauma
|
||||
switch ((NetEntityEvent.Type)extraData[0])
|
||||
{
|
||||
case NetEntityEvent.Type.InventoryState:
|
||||
msg.WriteRangedInteger(0, 2, 0);
|
||||
msg.WriteRangedInteger(0, 3, 0);
|
||||
inventory.ClientWrite(msg, extraData);
|
||||
break;
|
||||
case NetEntityEvent.Type.Repair:
|
||||
msg.WriteRangedInteger(0, 2, 1);
|
||||
msg.WriteRangedInteger(0, 3, 1);
|
||||
msg.Write(AnimController.Anim == AnimController.Animation.CPR);
|
||||
break;
|
||||
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((UInt16)AnimController.GrabLimb);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -91,6 +95,7 @@ namespace Barotrauma
|
||||
bool crouching = msg.ReadBoolean();
|
||||
keys[(int)InputType.Crouch].Held = crouching;
|
||||
keys[(int)InputType.Crouch].SetState(false, crouching);
|
||||
AnimController.GrabLimb = (LimbType)msg.ReadUInt16();
|
||||
}
|
||||
|
||||
bool hasAttackLimb = msg.ReadBoolean();
|
||||
@@ -367,6 +372,9 @@ namespace Barotrauma
|
||||
SetStun(0.0f, true, true);
|
||||
}
|
||||
|
||||
bool ragdolled = msg.ReadBoolean();
|
||||
IsRagdolled = ragdolled;
|
||||
|
||||
bool huskInfected = msg.ReadBoolean();
|
||||
if (huskInfected)
|
||||
{
|
||||
|
||||
@@ -320,7 +320,7 @@ namespace Barotrauma.Networking
|
||||
return true;
|
||||
};
|
||||
|
||||
y += 40;
|
||||
y += 20;
|
||||
|
||||
var voteKickBox = new GUITickBox(new Rectangle(0, y, 20, 20), "Allow vote kicking", Alignment.Left, settingsTabs[1]);
|
||||
voteKickBox.Selected = Voting.AllowVoteKick;
|
||||
@@ -357,7 +357,7 @@ namespace Barotrauma.Networking
|
||||
return true;
|
||||
};
|
||||
|
||||
y += 40;
|
||||
y += 20;
|
||||
|
||||
var randomizeLevelBox = new GUITickBox(new Rectangle(0, y, 20, 20), "Randomize level seed between rounds", Alignment.Left, settingsTabs[1]);
|
||||
randomizeLevelBox.Selected = RandomizeSeed;
|
||||
@@ -367,7 +367,7 @@ namespace Barotrauma.Networking
|
||||
return true;
|
||||
};
|
||||
|
||||
y += 40;
|
||||
y += 20;
|
||||
|
||||
var saveLogsBox = new GUITickBox(new Rectangle(0, y, 20, 20), "Save server logs", Alignment.Left, settingsTabs[1]);
|
||||
saveLogsBox.Selected = SaveServerLogs;
|
||||
@@ -378,6 +378,83 @@ namespace Barotrauma.Networking
|
||||
return true;
|
||||
};
|
||||
|
||||
y += 20;
|
||||
|
||||
var ragdollButtonBox = new GUITickBox(new Rectangle(0, y, 20, 20), "Allow ragdoll button", Alignment.Left, settingsTabs[1]);
|
||||
ragdollButtonBox.Selected = AllowRagdollButton;
|
||||
ragdollButtonBox.OnSelected = (GUITickBox) =>
|
||||
{
|
||||
AllowRagdollButton = GUITickBox.Selected;
|
||||
return true;
|
||||
};
|
||||
|
||||
y += 20;
|
||||
|
||||
var traitorRatioBox = new GUITickBox(new Rectangle(0, y, 20, 20), "Use % of players for max traitors", Alignment.Left, settingsTabs[1]);
|
||||
var traitorRatioText = new GUITextBlock(new Rectangle(20, y + 20, 20, 20), "Traitor ratio: 20 %", "", settingsTabs[1], GUI.SmallFont);
|
||||
var traitorRatioSlider = new GUIScrollBar(new Rectangle(150, y + 22, 100, 15), "", 0.1f, settingsTabs[1]);
|
||||
//Prepare the slider before the tick box
|
||||
if (traitorUseRatio)
|
||||
{
|
||||
traitorRatioSlider.UserData = traitorRatioText;
|
||||
traitorRatioSlider.Step = 0.01f; //Lots of fine-tuning
|
||||
traitorRatioSlider.BarScroll = (traitorRatio - 0.1f) / 0.9f;
|
||||
}
|
||||
else
|
||||
{
|
||||
traitorRatioSlider.UserData = traitorRatioText;
|
||||
traitorRatioSlider.Step = 1f / (maxPlayers-1);
|
||||
traitorRatioSlider.BarScroll = MathUtils.Round(traitorRatio, 1f);
|
||||
}
|
||||
//Slider END
|
||||
|
||||
traitorRatioBox.Selected = traitorUseRatio;
|
||||
traitorRatioBox.OnSelected = (GUITickBox) =>
|
||||
{
|
||||
traitorUseRatio = GUITickBox.Selected;
|
||||
//Affect the slider graphics
|
||||
if (traitorUseRatio)
|
||||
{
|
||||
traitorRatioSlider.UserData = traitorRatioText;
|
||||
traitorRatioSlider.Step = 0.01f; //Lots of fine-tuning
|
||||
traitorRatioSlider.BarScroll = 0.2f; //default values
|
||||
traitorRatioSlider.OnMoved(traitorRatioSlider, traitorRatioSlider.BarScroll); //Update the scroll bar
|
||||
}
|
||||
else
|
||||
{
|
||||
traitorRatioSlider.UserData = traitorRatioText;
|
||||
traitorRatioSlider.Step = 1f / (maxPlayers-1);
|
||||
traitorRatioSlider.BarScroll = 1; //default values
|
||||
traitorRatioSlider.OnMoved(traitorRatioSlider, traitorRatioSlider.BarScroll); //Update the scroll bar
|
||||
}
|
||||
return true;
|
||||
};
|
||||
traitorRatioSlider.OnMoved = (GUIScrollBar scrollBar, float barScroll) =>
|
||||
{
|
||||
GUITextBlock traitorText = scrollBar.UserData as GUITextBlock;
|
||||
if (traitorUseRatio)
|
||||
{
|
||||
traitorRatio = barScroll * 0.9f + 0.1f;
|
||||
traitorText.Text = "Traitor ratio: " + (int)MathUtils.Round(traitorRatio * 100.0f, 1.0f) + " %";
|
||||
}
|
||||
else
|
||||
{
|
||||
traitorRatio = MathUtils.Round(barScroll * (maxPlayers-1), 1f) + 1;
|
||||
traitorText.Text = "Traitor count: " + traitorRatio;
|
||||
}
|
||||
return true;
|
||||
};
|
||||
traitorRatioSlider.OnMoved(traitorRatioSlider, traitorRatioSlider.BarScroll);
|
||||
|
||||
y += 45;
|
||||
|
||||
var karmaButtonBox = new GUITickBox(new Rectangle(0, y, 20, 20), "Use Karma", Alignment.Left, settingsTabs[1]);
|
||||
karmaButtonBox.Selected = KarmaEnabled;
|
||||
karmaButtonBox.OnSelected = (GUITickBox) =>
|
||||
{
|
||||
KarmaEnabled = GUITickBox.Selected;
|
||||
return true;
|
||||
};
|
||||
|
||||
//--------------------------------------------------------------------------------
|
||||
// banlist
|
||||
|
||||
Reference in New Issue
Block a user