Unstable 0.17.1.0

This commit is contained in:
Markus Isberg
2022-03-17 01:25:04 +09:00
parent 3974067915
commit 6d410cc1b7
302 changed files with 5878 additions and 3317 deletions
@@ -12,6 +12,16 @@ namespace Barotrauma.Items.Components
{
partial class Holdable : Pickable, IServerSerializable, IClientSerializable
{
private readonly struct EventData : IEventData
{
public readonly Vector2 AttachPos;
public EventData(Vector2 attachPos)
{
AttachPos = attachPos;
}
}
const float MaxAttachDistance = 150.0f;
//the position(s) in the item that the Character grabs
@@ -155,8 +165,8 @@ namespace Barotrauma.Items.Components
[Editable, Serialize(false, IsPropertySaveable.No, description: "Should the item swing around when it's being used (for example, when firing a weapon or a welding tool).")]
public bool SwingWhenUsing { get; set; }
[ConditionallyEditable(ConditionallyEditable.ConditionType.Attachable, MinValueFloat = 0.0f, MaxValueFloat = 0.999f, DecimalCount = 3), Serialize(0.85f, IsPropertySaveable.No, description: "Sprite depth that's used when the item is attached to a wall.")]
public float SpriteDepthWhenAttached
[ConditionallyEditable(ConditionallyEditable.ConditionType.Attachable, MinValueFloat = 0.0f, MaxValueFloat = 0.999f, DecimalCount = 3), Serialize(0.55f, IsPropertySaveable.No, description: "Sprite depth that's used when the item is NOT attached to a wall.")]
public float SpriteDepthWhenDropped
{
get;
set;
@@ -244,12 +254,12 @@ namespace Barotrauma.Items.Components
}
}
private bool loadedFromXml;
private bool loadedFromInstance;
public override void Load(ContentXElement componentElement, bool usePrefabValues, IdRemap idRemap)
{
base.Load(componentElement, usePrefabValues, idRemap);
loadedFromXml = true;
loadedFromInstance = true;
if (usePrefabValues)
{
@@ -583,7 +593,7 @@ namespace Barotrauma.Items.Components
Attached = true;
#if CLIENT
item.DrawDepthOffset = SpriteDepthWhenAttached - item.SpriteDepth;
item.DrawDepthOffset = 0.0f;
#endif
}
@@ -600,6 +610,9 @@ namespace Barotrauma.Items.Components
requiredItems.Clear();
DisplayMsg = "";
PickKey = InputType.Select;
#if CLIENT
item.DrawDepthOffset = SpriteDepthWhenDropped - item.SpriteDepth;
#endif
}
public override void ParseMsg()
@@ -663,12 +676,7 @@ namespace Barotrauma.Items.Components
{
#if CLIENT
Vector2 attachPos = ConvertUnits.ToSimUnits(GetAttachPosition(character));
GameMain.Client.CreateEntityEvent(item, new object[]
{
NetEntityEvent.Type.ComponentState,
item.GetComponentIndex(this),
attachPos
});
item.CreateClientEvent(this, new EventData(attachPos));
#endif
}
return false;
@@ -867,8 +875,8 @@ namespace Barotrauma.Items.Components
{
if (!attachable) { return; }
//a mod has overridden the item, and the base item didn't have a Holdable component = a mod made the item movable/detachable
if (item.Prefab.IsOverride && !loadedFromXml)
//the Holdable component didn't get loaded from an instance of the item, just the prefab xml = a mod or update must've made the item movable/detachable
if (!loadedFromInstance)
{
if (attachedByDefault)
{
@@ -67,7 +67,6 @@ namespace Barotrauma.Items.Components
[Serialize("#ffffff", IsPropertySaveable.Yes, alwaysUseInstanceValues: true)]
public Color OwnerSkinColor { get; set; }
#warning TODO: figure out how to set Vector2.Zero as the default here
[Serialize("0,0", IsPropertySaveable.Yes, alwaysUseInstanceValues: true)]
public Vector2 OwnerSheetIndex { get; set; }
@@ -436,13 +436,10 @@ namespace Barotrauma.Items.Components
#if SERVER
if (GameMain.Server != null && targetCharacter != null) //TODO: Log structure hits
{
GameMain.Server.CreateEntityEvent(item, new object[]
{
Networking.NetEntityEvent.Type.ApplyStatusEffect,
GameMain.Server.CreateEntityEvent(item, new Item.ApplyStatusEffectEventData(
success ? ActionType.OnUse : ActionType.OnFailure,
null, //itemcomponent
targetCharacter.ID, targetLimb
});
targetItemComponent: null,
targetCharacter, targetLimb));
string logStr = picker?.LogName + " used " + item.Name;
if (item.ContainedItems != null && item.ContainedItems.Any())
@@ -282,12 +282,12 @@ namespace Barotrauma.Items.Components
}
}
public virtual void ServerWrite(IWriteMessage msg, Client c, object[] extraData = null)
public virtual void ServerEventWrite(IWriteMessage msg, Client c, NetEntityEvent.IData extraData = null)
{
msg.Write(activePicker == null ? (ushort)0 : activePicker.ID);
msg.Write(activePicker?.ID ?? (ushort)0);
}
public virtual void ClientRead(ServerNetObject type, IReadMessage msg, float sendingTime)
public virtual void ClientEventRead(IReadMessage msg, float sendingTime)
{
ushort pickerID = msg.ReadUInt16();
if (pickerID == 0)
@@ -178,11 +178,11 @@ namespace Barotrauma.Items.Components
throwDone = true;
IsActive = true;
if (GameMain.NetworkMember != null && GameMain.NetworkMember.IsServer)
if (GameMain.NetworkMember is { IsServer: true })
{
GameMain.NetworkMember.CreateEntityEvent(item, new object[] { NetEntityEvent.Type.ApplyStatusEffect, ActionType.OnSecondaryUse, this, CurrentThrower.ID });
GameMain.NetworkMember.CreateEntityEvent(item, new Item.ApplyStatusEffectEventData(ActionType.OnSecondaryUse, this, CurrentThrower));
}
if (GameMain.NetworkMember == null || GameMain.NetworkMember.IsServer)
if (!(GameMain.NetworkMember is { IsClient: true }))
{
//Stun grenades, flares, etc. all have their throw-related things handled in "onSecondaryUse"
ApplyStatusEffects(ActionType.OnSecondaryUse, deltaTime, CurrentThrower, user: CurrentThrower);