From f5268c7c6cc4e45034b7752623f5ee069c1194d4 Mon Sep 17 00:00:00 2001 From: juanjp600 Date: Tue, 11 Oct 2016 20:26:41 -0300 Subject: [PATCH] Fixes It compiles now, but it's probably really broken. --- .vs/Subsurface_Solution/v14/.suo | Bin 837120 -> 0 bytes Subsurface/Source/GUI/GUIButton.cs | 23 +- Subsurface/Source/Items/CharacterInventory.cs | 6 +- .../Source/Items/Components/DockingPort.cs | 6 +- Subsurface/Source/Items/Components/Door.cs | 8 +- .../Items/Components/Holdable/Holdable.cs | 4 +- .../Components/Machines/Deconstructor.cs | 4 +- .../Items/Components/Machines/Engine.cs | 6 +- .../Items/Components/Machines/Fabricator.cs | 4 - .../Source/Items/Components/Machines/Pump.cs | 3 - .../Source/Items/Components/Machines/Radar.cs | 8 +- .../Items/Components/Machines/Reactor.cs | 1 - .../Items/Components/Machines/Steering.cs | 1 - .../Items/Components/Power/PowerContainer.cs | 2 - .../Items/Components/Signal/Connection.cs | 1 - .../Items/Components/Signal/RelayComponent.cs | 32 +- .../Source/Items/Components/Signal/Wire.cs | 6 +- Subsurface/Source/Items/Inventory.cs | 3 +- Subsurface/Source/Items/Item.cs | 1947 +---------------- Subsurface/Source/Items/ItemSpawner.cs | 148 +- Subsurface/Source/Networking/GameClient.cs | 1 + Subsurface/Source/Networking/GameServer.cs | 4 - .../Source/Networking/RespawnManager.cs | 2 +- 23 files changed, 214 insertions(+), 2006 deletions(-) delete mode 100644 .vs/Subsurface_Solution/v14/.suo diff --git a/.vs/Subsurface_Solution/v14/.suo b/.vs/Subsurface_Solution/v14/.suo deleted file mode 100644 index 3bf8db6325515e3e2d0e115228bfcc0da66ccf38..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 837120 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

    NlPB zE1dsX&}k7>0wz6~8hE;9)}@L50#JldPZ9%?D@-{!j9K?Ucc7Fv{a_bj%!Ro&fP0N? z8kKcC3wL|MyKAM%r#Yy~CN)k&wleK7vnQ?Y)GZpXNul-Q6gm^XpNYFPW>6^4ykJHP zJ7NuCZJ4*P0wZN zm$cT{D?@d6C$FL=OR1x?Y)*rQkRQjO)@xQRF+xGl#Ig9l7qd*tC`B*nUTHss)cVsF zWiusx@V4)U9kN)>FfZnk)L2+4s%pJt*AFgSYcQp#TPs}}b8haAox3y@uoRoKAvx-{ zC;R0Xr`QY~+l%h1q4_iDwpc&Dn~xB;`?0dwS$$6dk~0Ey2LHa=`l`}v=*7;9gIxt^ zp2K$-p&}h8v(fzdYSf1HN#`}#S<{zR6LWw;Xc9FsXAys}Itx7HceL{L?`mNwnB$4p zPWQUDV=BxpkxB^_Jzk6z@ayfx$aou1wU#8@U@yQjSvpZt?=|sDBFwJ-9ftzO$;ufP zJ(+Pu`@}JqExQ7cT|P-#g}GX8E=wzQ7!;)VTT=&VK+P56d{q&PnCY5Hji(5@`_6)A<;$SiOz)=1uU)Eyi;#MrL#_igpH0`#C|@ zuB3UG%5S27*ySZ|jeTC!UC0BvV%%I08X@M0&tGRGH2}7=yu9BHTTyXZYPsEp<+LYY z@<&A6FlAjeaoeqdGAFUr(>7iO2z|W;%Cqg1PW1z5_y+{hE_FH8bD}r)w5j`jANMP^ zrogPmB5%mA)2hSx?6XB~ehA>A<<4I*lY=x%o6aq#v#y$aNnX2jnq4q*v0ec;)~HM= zMhnPg){p1ZDt_dO_Wcj|!HdD;#C@ZuL3X6ydawDzOu)OjJbALe#1XNG`Px;ry({3% zuSPFT-p-4;B(t{2UFn6BD!j*Z&XL8j}5EcTA&BWu6?Cl%qewC|7#9Z!s2#e-~_h zG1*`bC`o!tsrS=P)c#UcA5Pw@vW}wYzku6C%Rf_-;M$R@da=qJcNG7dS+Fyq zClo7%Y%M)cCecn|O@gb|Vg=yJ&uLDsHn|76mEvQZqw>e*>!R*HlfBrLkeIVQcWu>@ z#&k9p->KN0_{{WYLVs@w

    gVs$1X1A08k*)zvwN^Wm3mf}esm9<5#(X#++Y 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 attempt to equip if (IsInLimbSlot(doubleClickedItem, InvSlotType.Any)) { - TryPutItem(doubleClickedItem, doubleClickedItem.AllowedSlots.FindAll(i => i != InvSlotType.Any), true); + TryPutItem(doubleClickedItem, doubleClickedItem.AllowedSlots.FindAll(i => i != InvSlotType.Any)); } //equipped -> attempt to unequip else if (doubleClickedItem.AllowedSlots.Contains(InvSlotType.Any)) @@ -349,7 +349,7 @@ namespace Barotrauma } } } - + if (selectedSlot > -1) { UpdateSubInventory(deltaTime, selectedSlot); diff --git a/Subsurface/Source/Items/Components/DockingPort.cs b/Subsurface/Source/Items/Components/DockingPort.cs index 4d3e0aefb..f4ff2625c 100644 --- a/Subsurface/Source/Items/Components/DockingPort.cs +++ b/Subsurface/Source/Items/Components/DockingPort.cs @@ -395,9 +395,7 @@ namespace Barotrauma.Items.Components public void Undock() { if (dockingTarget == null || !docked) return; - - item.NewComponentEvent(this, false, true); - + PlaySound(ActionType.OnUse, item.WorldPosition); dockingTarget.item.Submarine.DockedTo.Remove(item.Submarine); @@ -512,8 +510,6 @@ namespace Barotrauma.Items.Components if (!item.linkedTo.Any(e => e is Hull) && !dockingTarget.item.linkedTo.Any(e => e is Hull)) { CreateHull(); - - item.NewComponentEvent(this, false, true); } } dockingState = MathHelper.Lerp(dockingState, 0.5f, deltaTime * 10.0f); diff --git a/Subsurface/Source/Items/Components/Door.cs b/Subsurface/Source/Items/Components/Door.cs index 181c873fe..1b56f16f1 100644 --- a/Subsurface/Source/Items/Components/Door.cs +++ b/Subsurface/Source/Items/Components/Door.cs @@ -455,11 +455,11 @@ namespace Barotrauma.Items.Components } } - public override void ReceiveSignal(int stepsTaken, string signal, Connection connection, Item sender, float power=0.0f) + public override void ReceiveSignal(int stepsTaken, string signal, Connection connection, Item sender, float power = 0.0f) { if (isStuck || GameMain.Client != null) return; - if (connection.Name=="toggle") + if (connection.Name == "toggle") { SetState(!isOpen, false, true); } @@ -491,7 +491,7 @@ namespace Barotrauma.Items.Components public override void ServerWrite(Lidgren.Network.NetOutgoingMessage msg, Barotrauma.Networking.Client c) { msg.Write(isOpen); - msg.WriteRangedSingle(stuck, 0.0f, 100.0f, 8); + msg.WriteRangedSingle(stuck, 0.0f, 100.0f, 8); } public override void ClientRead(Lidgren.Network.NetIncomingMessage msg) @@ -499,6 +499,6 @@ namespace Barotrauma.Items.Components SetState(msg.ReadBoolean(), true); Stuck = msg.ReadRangedSingle(0.0f, 100.0f, 8); } - + } } diff --git a/Subsurface/Source/Items/Components/Holdable/Holdable.cs b/Subsurface/Source/Items/Components/Holdable/Holdable.cs index afdd0e99d..1b1ced634 100644 --- a/Subsurface/Source/Items/Components/Holdable/Holdable.cs +++ b/Subsurface/Source/Items/Components/Holdable/Holdable.cs @@ -228,9 +228,7 @@ namespace Barotrauma.Items.Components Msg = prevMsg; attached = true; - - if (character != null) item.NewComponentEvent(this, true, true); - + return true; } diff --git a/Subsurface/Source/Items/Components/Machines/Deconstructor.cs b/Subsurface/Source/Items/Components/Machines/Deconstructor.cs index 54d7184a9..187d2dbbf 100644 --- a/Subsurface/Source/Items/Components/Machines/Deconstructor.cs +++ b/Subsurface/Source/Items/Components/Machines/Deconstructor.cs @@ -95,9 +95,7 @@ namespace Barotrauma.Items.Components SetActive(!IsActive); currPowerConsumption = IsActive ? powerConsumption : 0.0f; - - item.NewComponentEvent(this, true, true); - + return true; } diff --git a/Subsurface/Source/Items/Components/Machines/Engine.cs b/Subsurface/Source/Items/Components/Machines/Engine.cs index 297d72165..2be57d639 100644 --- a/Subsurface/Source/Items/Components/Machines/Engine.cs +++ b/Subsurface/Source/Items/Components/Machines/Engine.cs @@ -53,8 +53,7 @@ namespace Barotrauma.Items.Components button.OnClicked = (GUIButton btn, object obj) => { targetForce -= 1.0f; - item.NewComponentEvent(this, true, false); - + return true; }; @@ -62,8 +61,7 @@ namespace Barotrauma.Items.Components button.OnClicked = (GUIButton btn, object obj) => { targetForce += 1.0f; - item.NewComponentEvent(this, true, false); - + return true; }; } diff --git a/Subsurface/Source/Items/Components/Machines/Fabricator.cs b/Subsurface/Source/Items/Components/Machines/Fabricator.cs index 71f404607..b4e54a3d5 100644 --- a/Subsurface/Source/Items/Components/Machines/Fabricator.cs +++ b/Subsurface/Source/Items/Components/Machines/Fabricator.cs @@ -240,14 +240,10 @@ namespace Barotrauma.Items.Components if (fabricatedItem == null) { StartFabricating(obj as FabricableItem); - - item.NewComponentEvent(this, true, true); } else { CancelFabricating(); - - item.NewComponentEvent(this, true, true); } return true; diff --git a/Subsurface/Source/Items/Components/Machines/Pump.cs b/Subsurface/Source/Items/Components/Machines/Pump.cs index 2ae7d2425..9e60dc448 100644 --- a/Subsurface/Source/Items/Components/Machines/Pump.cs +++ b/Subsurface/Source/Items/Components/Machines/Pump.cs @@ -74,7 +74,6 @@ namespace Barotrauma.Items.Components targetLevel = null; IsActive = !IsActive; if (!IsActive) currPowerConsumption = 0.0f; - item.NewComponentEvent(this, true, true); return true; }; @@ -83,7 +82,6 @@ namespace Barotrauma.Items.Components button.OnClicked = (GUIButton btn, object obj) => { FlowPercentage -= 10.0f; - item.NewComponentEvent(this, true, true); return true; }; @@ -92,7 +90,6 @@ namespace Barotrauma.Items.Components button.OnClicked = (GUIButton btn, object obj) => { FlowPercentage += 10.0f; - item.NewComponentEvent(this, true, true); return true; }; diff --git a/Subsurface/Source/Items/Components/Machines/Radar.cs b/Subsurface/Source/Items/Components/Machines/Radar.cs index 1468c4ad4..6114b9d87 100644 --- a/Subsurface/Source/Items/Components/Machines/Radar.cs +++ b/Subsurface/Source/Items/Components/Machines/Radar.cs @@ -60,7 +60,6 @@ namespace Barotrauma.Items.Components isActiveTickBox.OnSelected = (GUITickBox box) => { IsActive = box.Selected; - item.NewComponentEvent(this, true, false); return true; }; @@ -117,12 +116,7 @@ namespace Barotrauma.Items.Components int radius = GuiFrame.Rect.Height / 2 - 30; DrawRadar(spriteBatch, new Rectangle((int)GuiFrame.Center.X - radius, (int)GuiFrame.Center.Y - radius, radius * 2, radius * 2)); } - - public override void UpdateHUD(Character character) - { - GuiFrame.Update(1.0f / 60.0f); - } - + private void DrawRadar(SpriteBatch spriteBatch, Rectangle rect) { Vector2 center = new Vector2(rect.X + rect.Width*0.5f, rect.Center.Y); diff --git a/Subsurface/Source/Items/Components/Machines/Reactor.cs b/Subsurface/Source/Items/Components/Machines/Reactor.cs index f3c5430cf..563f07c2b 100644 --- a/Subsurface/Source/Items/Components/Machines/Reactor.cs +++ b/Subsurface/Source/Items/Components/Machines/Reactor.cs @@ -324,7 +324,6 @@ namespace Barotrauma.Items.Components if (unsentChanges && sendUpdateTimer<= 0.0f) { - item.NewComponentEvent(this, true, true); sendUpdateTimer = NetworkUpdateInterval; unsentChanges = false; } diff --git a/Subsurface/Source/Items/Components/Machines/Steering.cs b/Subsurface/Source/Items/Components/Machines/Steering.cs index 40b9b0c7a..c15d606b9 100644 --- a/Subsurface/Source/Items/Components/Machines/Steering.cs +++ b/Subsurface/Source/Items/Components/Machines/Steering.cs @@ -128,7 +128,6 @@ namespace Barotrauma.Items.Components networkUpdateTimer -= deltaTime; if (networkUpdateTimer <= 0.0f) { - item.NewComponentEvent(this, true, false); networkUpdateTimer = 0.5f; valueChanged = false; } diff --git a/Subsurface/Source/Items/Components/Power/PowerContainer.cs b/Subsurface/Source/Items/Components/Power/PowerContainer.cs index 5fc5a7910..affec245a 100644 --- a/Subsurface/Source/Items/Components/Power/PowerContainer.cs +++ b/Subsurface/Source/Items/Components/Power/PowerContainer.cs @@ -86,7 +86,6 @@ namespace Barotrauma.Items.Components button.OnClicked = (GUIButton btn, object obj) => { RechargeSpeed = Math.Max(rechargeSpeed - maxRechargeSpeed * 0.1f, 0.0f); - item.NewComponentEvent(this, true, false); return true; }; @@ -95,7 +94,6 @@ namespace Barotrauma.Items.Components button.OnClicked = (GUIButton btn, object obj) => { RechargeSpeed = Math.Max(rechargeSpeed + maxRechargeSpeed * 0.1f, 0.0f); - item.NewComponentEvent(this, true, false); return true; }; diff --git a/Subsurface/Source/Items/Components/Signal/Connection.cs b/Subsurface/Source/Items/Components/Signal/Connection.cs index 68138016d..ae24c2abc 100644 --- a/Subsurface/Source/Items/Components/Signal/Connection.cs +++ b/Subsurface/Source/Items/Components/Signal/Connection.cs @@ -309,7 +309,6 @@ namespace Barotrauma.Items.Components if (!PlayerInput.LeftButtonHeld()) { - panel.Item.NewComponentEvent(panel, true, true); //draggingConnected.Drop(Character); draggingConnected = null; } diff --git a/Subsurface/Source/Items/Components/Signal/RelayComponent.cs b/Subsurface/Source/Items/Components/Signal/RelayComponent.cs index 7b93d40ad..649441f76 100644 --- a/Subsurface/Source/Items/Components/Signal/RelayComponent.cs +++ b/Subsurface/Source/Items/Components/Signal/RelayComponent.cs @@ -75,43 +75,19 @@ namespace Barotrauma.Items.Components } else if (connection.Name == "toggle") { - SetState(!IsOn,false,true); + SetState(!IsOn); } else if (connection.Name == "set_state") { - SetState(signal != "0", false, true); + SetState(signal != "0"); } } - public void SetState(bool on, bool isNetworkMessage, bool sendNetworkMessage = false) + public void SetState(bool on) { - if (GameMain.Client != null && !isNetworkMessage) return; + //if (GameMain.Client != null && !isNetworkMessage) return; IsOn = on; - if (sendNetworkMessage) - { - item.NewComponentEvent(this, false, true); - } - } - - public override bool FillNetworkData(Networking.NetworkEventType type, Lidgren.Network.NetBuffer message) - { - message.Write(IsOn); - - return true; - } - - public override void ReadNetworkData(Networking.NetworkEventType type, Lidgren.Network.NetIncomingMessage message, float sendingTime) - { - if (sendingTime < lastReceivedMessage) return; - if (GameMain.Server != null) - { - return; - } - - lastReceivedMessage = sendingTime; - - SetState(message.ReadBoolean(), true); } } } diff --git a/Subsurface/Source/Items/Components/Signal/Wire.cs b/Subsurface/Source/Items/Components/Signal/Wire.cs index 526c1e25c..2cadb11a3 100644 --- a/Subsurface/Source/Items/Components/Signal/Wire.cs +++ b/Subsurface/Source/Items/Components/Signal/Wire.cs @@ -160,9 +160,7 @@ namespace Barotrauma.Items.Components } Drawable = Nodes.Any(); - - if (!loading) Item.NewComponentEvent(this, true, true); - + return true; } @@ -255,8 +253,6 @@ namespace Barotrauma.Items.Components if (Nodes.Count > 1) { Nodes.RemoveAt(Nodes.Count - 1); - - item.NewComponentEvent(this, true, true); } Drawable = Nodes.Any(); diff --git a/Subsurface/Source/Items/Inventory.cs b/Subsurface/Source/Items/Inventory.cs index 941d17754..5c1712b03 100644 --- a/Subsurface/Source/Items/Inventory.cs +++ b/Subsurface/Source/Items/Inventory.cs @@ -400,8 +400,7 @@ namespace Barotrauma subRect.Y = subRect.Y - subRect.Height - 10; container.Inventory.slots[i].Rect = subRect; } - } - + container.Inventory.isSubInventory = true; slots[slotIndex].State = GUIComponent.ComponentState.Hover; diff --git a/Subsurface/Source/Items/Item.cs b/Subsurface/Source/Items/Item.cs index 8526eae42..156b532cd 100644 --- a/Subsurface/Source/Items/Item.cs +++ b/Subsurface/Source/Items/Item.cs @@ -14,1883 +14,6 @@ using System.ComponentModel; using System.Linq; using System.Xml.Linq; -namespace Barotrauma -{ - - public enum ActionType - { - Always, OnPicked, OnUse, OnSecondaryUse, - OnWearing, OnContaining, OnContained, - OnActive, OnFailure, OnBroken, - OnFire, InWater, - OnImpact - } - - class Item : MapEntity, IDamageable, IPropertyObject - { - public static List ItemList = new List(); - private ItemPrefab prefab; - - public static ItemSpawner Spawner = new ItemSpawner(); - public static ItemRemover Remover = new ItemRemover(); - - public static bool ShowLinks = true; - - private List tags; - - public Hull CurrentHull; - - //components that determine the functionality of the item - public List components; - public List drawableComponents; - - public PhysicsBody body; - - private float condition; - - private bool inWater; - - private Inventory parentInventory; - - //a dictionary containing lists of the status effects in all the components of the item - private Dictionary> statusEffectLists; - - public readonly Dictionary properties; - public Dictionary ObjectProperties - { - get { return properties; } - } - - private bool? hasInGameEditableProperties; - bool HasInGameEditableProperties - { - get - { - if (hasInGameEditableProperties==null) - { - hasInGameEditableProperties = GetProperties().Any(); - } - return (bool)hasInGameEditableProperties; - } - } - - //the inventory in which the item is contained in - public Inventory ParentInventory - { - get - { - return parentInventory; - } - set - { - parentInventory = value; - - if (parentInventory != null) Container = parentInventory.Owner as Item; - } - } - - public Item Container - { - get; - private set; - } - - public override bool SelectableInEditor - { - get - { - return parentInventory == null && (body == null || body.Enabled); - } - } - - public List FixRequirements; - - public override string Name - { - get { return prefab.Name; } - } - - public string Description - { - get { return prefab.Description; } - } - - public float ImpactTolerance - { - get { return prefab.ImpactTolerance; } - } - - public override Sprite Sprite - { - get { return prefab.sprite; } - } - - public float PickDistance - { - get { return prefab.PickDistance; } - } - - public override Vector2 SimPosition - { - get - { - return (body==null) ? base.SimPosition : body.SimPosition; - } - } - - protected Color spriteColor; - [Editable, HasDefaultValue("1.0,1.0,1.0,1.0", true)] - public string SpriteColor - { - get { return ToolBox.Vector4ToString(spriteColor.ToVector4()); } - set - { - spriteColor = new Color(ToolBox.ParseToVector4(value)); - } - } - - public Color Color - { - get { return spriteColor; } - } - - public float Condition - { - get { return condition; } - set - { - if (!MathUtils.IsValid(value)) return; - - float prev = condition; - condition = MathHelper.Clamp(value, 0.0f, 100.0f); - if (condition == 0.0f && prev>0.0f) - { - new NetworkEvent(this.ID, false); - - ApplyStatusEffects(ActionType.OnBroken, 1.0f, null); - foreach (FixRequirement req in FixRequirements) - { - req.Fixed = false; - } - } - } - } - - public float Health - { - get { return condition; } - } - - [Editable, HasDefaultValue("", true)] - public string Tags - { - get { return string.Join(",",tags); } - set - { - tags.Clear(); - if (value == null) return; - - string[] newTags = value.Split(','); - foreach (string tag in newTags) - { - string newTag = tag.Trim(); - if (!tags.Contains(newTag)) tags.Add(newTag); - } - - } - } - - public bool FireProof - { - get { return prefab.FireProof; } - } - - public bool CanUseOnSelf - { - get { return prefab.CanUseOnSelf; } - } - - public bool InWater - { - get - { - //if the item has an active physics body, inWater is updated in the Update method - if (body != null && body.Enabled) return inWater; - - //if not, we'll just have to check - return IsInWater(); - } - } - - public ItemPrefab Prefab - { - get { return prefab; } - } - - public string ConfigFile - { - get { return prefab.ConfigFile; } - } - - public bool Removed - { - get; - private set; - } - - //which type of inventory slots (head, torso, any, etc) the item can be placed in - public List AllowedSlots - { - get - { - Pickable p = GetComponent(); - return (p==null) ? new List() { InvSlotType.Any } : p.AllowedSlots; - } - } - - public int Capacity - { - get - { - ItemContainer c = GetComponent(); - return (c == null) ? 0 : c.Capacity; - } - } - - public List Connections - { - get - { - ConnectionPanel panel = GetComponent(); - if (panel == null) return null; - return panel.Connections; - } - } - - public Item[] ContainedItems - { - get - { - ItemContainer c = GetComponent(); - return (c == null) ? null : Array.FindAll(c.Inventory.Items, i=>i!=null); - } - } - - public override bool IsLinkable - { - get { return prefab.IsLinkable; } - } - - public override string ToString() - { - return (GameMain.DebugDraw) ? Name + "(ID: " + ID + ")" : Name; - } - - public List AllPropertyObjects - { - get - { - List pobjects = new List(); - pobjects.Add(this); - foreach (ItemComponent ic in components) - { - pobjects.Add(ic); - } - return pobjects; - } - } - - public Item(ItemPrefab itemPrefab, Vector2 position, Submarine submarine) - : this(new Rectangle( - (int)(position.X - itemPrefab.sprite.size.X / 2), - (int)(position.Y + itemPrefab.sprite.size.Y / 2), - (int)itemPrefab.sprite.size.X, - (int)itemPrefab.sprite.size.Y), - itemPrefab, submarine) - { - - } - - public Item(Rectangle newRect, ItemPrefab itemPrefab, Submarine submarine) - : base(itemPrefab, submarine) - { - prefab = itemPrefab; - - spriteColor = prefab.SpriteColor; - - linkedTo = new ObservableCollection(); - components = new List(); - drawableComponents = new List(); - FixRequirements = new List(); - tags = new List(); - - rect = newRect; - - if (submarine==null || !submarine.Loading) FindHull(); - - condition = 100.0f; - - XElement element = prefab.ConfigElement; - if (element == null) return; - - properties = ObjectProperty.InitProperties(this, element); - - foreach (XElement subElement in element.Elements()) - { - switch (subElement.Name.ToString().ToLowerInvariant()) - { - case "body": - body = new PhysicsBody(subElement, ConvertUnits.ToSimUnits(Position)); - break; - case "trigger": - case "sprite": - case "deconstruct": - break; - case "aitarget": - aiTarget = new AITarget(this); - aiTarget.SightRange = ToolBox.GetAttributeFloat(subElement, "sightrange", 1000.0f); - aiTarget.SoundRange = ToolBox.GetAttributeFloat(subElement, "soundrange", 0.0f); - break; - case "fixrequirement": - FixRequirements.Add(new FixRequirement(subElement)); - break; - default: - ItemComponent ic = ItemComponent.Load(subElement, this, prefab.ConfigFile); - if (ic == null) break; - - components.Add(ic); - - if (ic is IDrawableComponent && ic.Drawable) drawableComponents.Add(ic as IDrawableComponent); - - if (ic.statusEffectLists == null) continue; - - if (statusEffectLists == null) - statusEffectLists = new Dictionary>(); - - //go through all the status effects of the component - //and add them to the corresponding statuseffect list - foreach (List componentEffectList in ic.statusEffectLists.Values) - { - - ActionType actionType = componentEffectList.First().type; - - List statusEffectList; - if (!statusEffectLists.TryGetValue(actionType, out statusEffectList)) - { - statusEffectList = new List(); - statusEffectLists.Add(actionType, statusEffectList); - } - - foreach (StatusEffect effect in componentEffectList) - { - statusEffectList.Add(effect); - } - } - - break; - } - } - - //containers need to handle collision events to notify items inside them about the impact - if (ImpactTolerance > 0.0f || GetComponent() != null) - { - if (body != null) body.FarseerBody.OnCollision += OnCollision; - } - - InsertToList(); - ItemList.Add(this); - } - - public T GetComponent() - { - foreach (ItemComponent ic in components) - { - if (ic is T) return (T)(object)ic; - } - - return default(T); - } - - public List GetComponents() - { - List components = new List(); - foreach (ItemComponent ic in this.components) - { - if (ic is T) components.Add((T)(object)ic); - } - - return components; - } - - public void RemoveContained(Item contained) - { - ItemContainer c = GetComponent(); - if (c == null) return; - - c.RemoveContained(contained); - contained.Container = null; - } - - - public void SetTransform(Vector2 simPosition, float rotation) - { - if (body != null) - { - try - { - body.SetTransform(simPosition, rotation); - } - catch (Exception e) - { -#if DEBUG - DebugConsole.ThrowError("Failed to set item transform", e); -#endif - } - } - - Vector2 displayPos = ConvertUnits.ToDisplayUnits(simPosition); - - rect.X = (int)(displayPos.X - rect.Width / 2.0f); - rect.Y = (int)(displayPos.Y + rect.Height / 2.0f); - - FindHull(); - } - - public override void Move(Vector2 amount) - { - base.Move(amount); - - if (ItemList != null && body != null) - { - //Vector2 pos = new Vector2(rect.X + rect.Width / 2.0f, rect.Y - rect.Height / 2.0f); - body.SetTransform(body.SimPosition+ConvertUnits.ToSimUnits(amount), body.Rotation); - } - foreach (ItemComponent ic in components) - { - ic.Move(amount); - } - - if (body != null && (Submarine==null || !Submarine.Loading)) FindHull(); - } - - public Rectangle TransformTrigger(Rectangle trigger, bool world = false) - { - return world ? - new Rectangle( - WorldRect.X + trigger.X, - WorldRect.Y + trigger.Y, - (trigger.Width == 0) ? Rect.Width : trigger.Width, - (trigger.Height == 0) ? Rect.Height : trigger.Height) - : - new Rectangle( - Rect.X + trigger.X, - Rect.Y + trigger.Y, - (trigger.Width == 0) ? Rect.Width : trigger.Width, - (trigger.Height == 0) ? Rect.Height : trigger.Height); - } - - /// - /// goes through every item and re-checks which hull they are in - /// - public static void UpdateHulls() - { - foreach (Item item in ItemList) item.FindHull(); - } - - public virtual Hull FindHull() - { - if (parentInventory != null && parentInventory.Owner != null) - { - if (parentInventory.Owner is Character) - { - CurrentHull = (parentInventory.Owner as Character).AnimController.CurrentHull; - } - else if (parentInventory.Owner is Item) - { - CurrentHull = (parentInventory.Owner as Item).CurrentHull; - } - - Submarine = parentInventory.Owner.Submarine; - if (body != null) body.Submarine = Submarine; - - return CurrentHull; - } - - - CurrentHull = Hull.FindHull(WorldPosition, CurrentHull); - if (body != null && body.Enabled) - { - Submarine = CurrentHull == null ? null : CurrentHull.Submarine; - body.Submarine = Submarine; - } - - return CurrentHull; - } - - public Item GetRootContainer() - { - if (Container == null) return null; - - Item rootContainer = Container; - - while (rootContainer.Container != null) - { - rootContainer = rootContainer.Container; - } - - return rootContainer; - } - - public void AddTag(string tag) - { - if (tags.Contains(tag)) return; - tags.Add(tag); - } - - public bool HasTag(string tag) - { - if (tag == null) return true; - - return (tags.Contains(tag) || tags.Contains(tag.ToLowerInvariant())); - } - - - public void ApplyStatusEffects(ActionType type, float deltaTime, Character character = null) - { - if (statusEffectLists == null) return; - - List statusEffects; - if (!statusEffectLists.TryGetValue(type, out statusEffects)) return; - - foreach (StatusEffect effect in statusEffects) - { - ApplyStatusEffect(effect, type, deltaTime, character); - } - } - - public void ApplyStatusEffect(StatusEffect effect, ActionType type, float deltaTime, Character character = null) - { - if (condition == 0.0f && effect.type != ActionType.OnBroken) return; - if (effect.type != type) return; - - bool hasTargets = (effect.TargetNames == null); - - Item[] containedItems = ContainedItems; - if (effect.OnContainingNames!=null) - { - foreach (string s in effect.OnContainingNames) - { - if (containedItems.FirstOrDefault(x => x!=null && x.Name==s && x.Condition>0.0f) == null) return; - } - } - - List targets = new List(); - - if (containedItems != null) - { - if (effect.Targets.HasFlag(StatusEffect.TargetType.Contained)) - { - foreach (Item containedItem in containedItems) - { - if (containedItem == null) continue; - if (effect.TargetNames != null && !effect.TargetNames.Contains(containedItem.Name)) - { - bool tagFound = false; - foreach (string targetName in effect.TargetNames) - { - if (!containedItem.HasTag(targetName)) continue; - tagFound = true; - break; - } - if (!tagFound) continue; - } - - hasTargets = true; - targets.Add(containedItem); - //effect.Apply(type, deltaTime, containedItem); - //containedItem.ApplyStatusEffect(effect, type, deltaTime, containedItem); - } - } - } - - if (!hasTargets) return; - - if (effect.Targets.HasFlag(StatusEffect.TargetType.Hull) && CurrentHull != null) - { - targets.Add(CurrentHull); - } - - - if (effect.Targets.HasFlag(StatusEffect.TargetType.This)) - { - foreach (var pobject in AllPropertyObjects) - { - targets.Add(pobject); - } - } - //effect.Apply(type, deltaTime, this); - //ApplyStatusEffect(effect, type, deltaTime, this); - - if (effect.Targets.HasFlag(StatusEffect.TargetType.Character)) targets.Add(character); - //effect.Apply(type, deltaTime, null, Character); - //ApplyStatusEffect(effect, type, deltaTime, null, Character, limb); - - if (Container != null && effect.Targets.HasFlag(StatusEffect.TargetType.Parent)) targets.Add(Container); - //{ - // effect.Apply(type, deltaTime, container); - // //container.ApplyStatusEffect(effect, type, deltaTime, container); - //} - - effect.Apply(type, deltaTime, this, targets); - - } - - - public AttackResult AddDamage(IDamageable attacker, Vector2 worldPosition, Attack attack, float deltaTime, bool playSound = true) - { - float damageAmount = attack.GetStructureDamage(deltaTime); - Condition -= damageAmount; - - return new AttackResult(damageAmount, 0.0f, false); - } - - private bool IsInWater() - { - if (CurrentHull == null) return true; - - float surfaceY = CurrentHull.Surface; - - return Position.Y < surfaceY; - } - - - public override void Update(Camera cam, float deltaTime) - { - - ApplyStatusEffects(ActionType.Always, deltaTime, null); - - foreach (ItemComponent ic in components) - { - if (ic.Parent != null) ic.IsActive = ic.Parent.IsActive; - - if (!ic.WasUsed) - { - ic.StopSounds(ActionType.OnUse); - } - ic.WasUsed = false; - - if (parentInventory!=null) ic.ApplyStatusEffects(ActionType.OnContained, deltaTime); - - if (!ic.IsActive) continue; - - if (condition > 0.0f) - { - ic.Update(deltaTime, cam); - - if (ic.IsActive) ic.PlaySound(ActionType.OnActive, WorldPosition); - //ic.ApplyStatusEffects(ActionType.OnActive, deltaTime, null); - } - else - { - ic.UpdateBroken(deltaTime, cam); - } - } - - inWater = IsInWater(); - if (inWater) ApplyStatusEffects(ActionType.InWater, deltaTime); - - if (body == null || !body.Enabled) return; - - if (Math.Abs(body.LinearVelocity.X) > 0.01f || Math.Abs(body.LinearVelocity.Y) > 0.01f) - { - Submarine prevSub = Submarine; - - FindHull(); - - if (Submarine == null && prevSub != null) - { - body.SetTransform(body.SimPosition + prevSub.SimPosition, body.Rotation); - } - else if (Submarine != null && prevSub == null) - { - body.SetTransform(body.SimPosition - Submarine.SimPosition, body.Rotation); - } - - Vector2 moveAmount = body.SimPosition - body.LastSentPosition; - if (parentInventory == null && moveAmount != Vector2.Zero && moveAmount.Length() > NetConfig.ItemPosUpdateDistance) - { - new NetworkEvent(NetworkEventType.PhysicsBodyPosition, ID, false); - } - - Vector2 displayPos = ConvertUnits.ToDisplayUnits(body.SimPosition); - rect.X = (int)(displayPos.X - rect.Width / 2.0f); - rect.Y = (int)(displayPos.Y + rect.Height / 2.0f); - } - - body.MoveToTargetPosition(); - - if (!inWater || Container != null || body == null) return; - - if (body.LinearVelocity != Vector2.Zero && body.LinearVelocity.Length() > 1000.0f) - { - body.ResetDynamics(); - } - - ApplyWaterForces(); - - if(CurrentHull != null) CurrentHull.ApplyFlowForces(deltaTime, this); - - } - - /// - /// Applies buoyancy, drag and angular drag caused by water - /// - private void ApplyWaterForces() - { - if (!InWater || Container != null || body == null || !body.Enabled) return; - - float forceFactor = 1.0f; - if (CurrentHull != null) - { - float floor = CurrentHull.Rect.Y - CurrentHull.Rect.Height; - float waterLevel = (floor + CurrentHull.Volume / CurrentHull.Rect.Width); - - //forceFactor is 1.0f if the item is completely submerged, - //and goes to 0.0f as the item goes through the surface - forceFactor = Math.Min((waterLevel - Position.Y) / rect.Height, 1.0f); - if (forceFactor <= 0.0f) return; - } - - float volume = body.Mass / body.Density; - - var uplift = -GameMain.World.Gravity * forceFactor * volume; - - Vector2 drag = body.LinearVelocity * volume; - - body.ApplyForce((uplift - drag) * 10.0f); - - //apply simple angular drag - body.ApplyTorque(body.AngularVelocity * volume * -0.05f); - } - - private bool OnCollision(Fixture f1, Fixture f2, Contact contact) - { - if (GameMain.Client != null) return true; - - Vector2 normal = contact.Manifold.LocalNormal; - - float impact = Vector2.Dot(f1.Body.LinearVelocity, -normal); - - if (ImpactTolerance > 0.0f && impact > ImpactTolerance) - { - ApplyStatusEffects(ActionType.OnImpact, 1.0f); - new NetworkEvent(NetworkEventType.ApplyStatusEffect, this.ID, false, ActionType.OnImpact); - } - - var containedItems = ContainedItems; - if (containedItems != null) - { - foreach (Item contained in containedItems) - { - if (contained.body == null) continue; - contained.OnCollision(f1, f2, contact); - } - } - - return true; - } - - public override void Draw(SpriteBatch spriteBatch, bool editing, bool back = true) - { - Color color = (isSelected && editing) ? color = Color.Red : spriteColor; - if (isHighlighted) color = Color.Orange; - - if (prefab.sprite != null) - { - float depth = Sprite.Depth; - depth += (ID % 255) * 0.000001f; - - if (body == null) - { - if (prefab.ResizeHorizontal || prefab.ResizeVertical) - { - prefab.sprite.DrawTiled(spriteBatch, new Vector2(DrawPosition.X-rect.Width/2, -(DrawPosition.Y+rect.Height/2)), new Vector2(rect.Width, rect.Height), color); - } - else - { - prefab.sprite.Draw(spriteBatch, new Vector2(DrawPosition.X, -DrawPosition.Y), color, 0.0f, 1.0f, SpriteEffects.None, depth); - } - - } - else if (body.Enabled) - { - var holdable = GetComponent(); - if (holdable!=null && holdable.Picker !=null) - { - if (holdable.Picker.SelectedItems[0]==this) - { - depth = holdable.Picker.AnimController.GetLimb(LimbType.RightHand).sprite.Depth + 0.000001f; - } - else if (holdable.Picker.SelectedItems[1] == this) - { - depth = holdable.Picker.AnimController.GetLimb(LimbType.LeftArm).sprite.Depth - 0.000001f; - } - - body.Draw(spriteBatch, prefab.sprite, color, depth); - } - else - { - body.Draw(spriteBatch, prefab.sprite, color, depth); - } - } - } - - for (int i = 0; i < drawableComponents.Count; i++ ) - { - drawableComponents[i].Draw(spriteBatch, editing); - } - - //foreach (ItemComponent component in components) component.Draw(spriteBatch, editing); - - if (GameMain.DebugDraw && aiTarget!=null) aiTarget.Draw(spriteBatch); - - if (!editing || (body != null && !body.Enabled)) - { - isHighlighted = false; - return; - } - - if (isSelected || isHighlighted) - { - GUI.DrawRectangle(spriteBatch, new Vector2(DrawPosition.X - rect.Width / 2, -(DrawPosition.Y+rect.Height/2)), new Vector2(rect.Width, rect.Height), Color.Green); - - foreach (Rectangle t in prefab.Triggers) - { - Rectangle transformedTrigger = TransformTrigger(t); - - Vector2 rectWorldPos = new Vector2(transformedTrigger.X, transformedTrigger.Y); - if (Submarine!=null) rectWorldPos += Submarine.Position; - rectWorldPos.Y = -rectWorldPos.Y; - - GUI.DrawRectangle(spriteBatch, - rectWorldPos, - new Vector2(transformedTrigger.Width, transformedTrigger.Height), - Color.Green); - } - } - - if (!ShowLinks) return; - - foreach (MapEntity e in linkedTo) - { - GUI.DrawLine(spriteBatch, - new Vector2(WorldPosition.X, -WorldPosition.Y), - new Vector2(e.WorldPosition.X, -e.WorldPosition.Y), - Color.Red*0.3f); - } - } - - public override void DrawEditing(SpriteBatch spriteBatch, Camera cam) - { - if (editingHUD==null || editingHUD.UserData as Item != this) - { - editingHUD = CreateEditingHUD(); - } - - editingHUD.Draw(spriteBatch); - editingHUD.Update((float)Physics.step); - - if (!prefab.IsLinkable) return; - - if (!PlayerInput.LeftButtonClicked() || !PlayerInput.KeyDown(Keys.Space)) return; - - Vector2 position = cam.ScreenToWorld(PlayerInput.MousePosition); - - foreach (MapEntity entity in mapEntityList) - { - if (entity == this || !entity.IsHighlighted) continue; - if (linkedTo.Contains(entity)) continue; - if (!entity.IsMouseOn(position)) continue; - - linkedTo.Add(entity); - if (entity.IsLinkable && entity.linkedTo != null) entity.linkedTo.Add(this); - } - } - - public void DrawInGameEditing(SpriteBatch spriteBatch) - { - if (editingHUD == null || editingHUD.UserData as Item != this) - { - editingHUD = CreateEditingHUD(true); - } - - if (editingHUD.Rect.Height > 60) - { - editingHUD.Update((float)Physics.step); - editingHUD.Draw(spriteBatch); - } - } - - private GUIComponent CreateEditingHUD(bool inGame=false) - { - int width = 450; - int x = GameMain.GraphicsWidth/2-width/2, y = 10; - - List editableProperties = inGame ? GetProperties() : GetProperties(); - - int requiredItemCount = 0; - if (!inGame) - { - foreach (ItemComponent ic in components) - { - requiredItemCount += ic.requiredItems.Count; - } - } - - editingHUD = new GUIFrame(new Rectangle(x, y, width, 70 + (editableProperties.Count() + requiredItemCount) * 30), GUI.Style); - editingHUD.Padding = new Vector4(10, 10, 0, 0); - editingHUD.UserData = this; - - new GUITextBlock(new Rectangle(0, 0, 100, 20), prefab.Name, GUI.Style, - Alignment.TopLeft, Alignment.TopLeft, editingHUD, false, GUI.LargeFont); - - y += 20; - - if (!inGame) - { - if (prefab.IsLinkable) - { - new GUITextBlock(new Rectangle(0, 0, 0, 20), "Hold space to link to another item", - GUI.Style, Alignment.TopRight, Alignment.TopRight, editingHUD).Font = GUI.SmallFont; - y += 25; - } - foreach (ItemComponent ic in components) - { - foreach (RelatedItem relatedItem in ic.requiredItems) - { - new GUITextBlock(new Rectangle(0, y, 100, 20), ic.Name + ": " + relatedItem.Type.ToString() + " required", GUI.Style, editingHUD); - GUITextBox namesBox = new GUITextBox(new Rectangle(-10, y, 160, 20), Alignment.Right, GUI.Style, editingHUD); - - PropertyDescriptorCollection properties = TypeDescriptor.GetProperties (relatedItem); - PropertyDescriptor property = properties.Find("JoinedNames", false); - - namesBox.Text = relatedItem.JoinedNames; - namesBox.UserData = new ObjectProperty(property, relatedItem); - namesBox.OnEnterPressed = EnterProperty; - namesBox.OnTextChanged = PropertyChanged; - - y += 30; - } - } - - } - - foreach (var objectProperty in editableProperties) - { - int height = 20; - var editable = objectProperty.Attributes.OfType().FirstOrDefault(); - if (editable != null) height = (int)(Math.Ceiling(editable.MaxLength / 20.0f) * 20.0f); - - object value = objectProperty.GetValue(); - - if (value is bool) - { - GUITickBox propertyTickBox = new GUITickBox(new Rectangle(10, y, 20, 20), objectProperty.Name, - Alignment.Left, editingHUD); - - propertyTickBox.Selected = (bool)value; - - propertyTickBox.UserData = objectProperty; - propertyTickBox.OnSelected = EnterProperty; - } - else - { - - new GUITextBlock(new Rectangle(0, y, 100, 20), objectProperty.Name, Color.Transparent, Color.White, Alignment.Left, GUI.Style, editingHUD); - - GUITextBox propertyBox = new GUITextBox(new Rectangle(180, y, 250, height), GUI.Style, editingHUD); - if (height > 20) propertyBox.Wrap = true; - - if (value != null) - { - if (value is float) - { - propertyBox.Text = ((float)value).ToString("G", System.Globalization.CultureInfo.InvariantCulture); - } - else - { - - propertyBox.Text = value.ToString(); - } - } - - propertyBox.UserData = objectProperty; - propertyBox.OnEnterPressed = EnterProperty; - propertyBox.OnTextChanged = PropertyChanged; - - } - y = y + height + 10; - - } - return editingHUD; - } - - public virtual void DrawHUD(SpriteBatch spriteBatch, Character character) - { - if (condition <= 0.0f) - { - FixRequirement.DrawHud(spriteBatch, this, character); - return; - } - - if (HasInGameEditableProperties) - { - DrawInGameEditing(spriteBatch); - } - - foreach (ItemComponent ic in components) - { - ic.DrawHUD(spriteBatch, character); - } - } - - public List GetConnectedComponents(bool recursive = false) - { - List connectedComponents = new List(); - - if (recursive) - { - List alreadySearched = new List() {this}; - GetConnectedComponentsRecursive(alreadySearched, connectedComponents); - - return connectedComponents; - } - - ConnectionPanel connectionPanel = GetComponent(); - if (connectionPanel == null) return connectedComponents; - - - foreach (Connection c in connectionPanel.Connections) - { - var recipients = c.Recipients; - foreach (Connection recipient in recipients) - { - var component = recipient.Item.GetComponent(); - if (component != null) connectedComponents.Add(component); - } - } - - return connectedComponents; - } - - private void GetConnectedComponentsRecursive(List alreadySearched, List connectedComponents) - { - alreadySearched.Add(this); - - ConnectionPanel connectionPanel = GetComponent(); - if (connectionPanel == null) return; - - foreach (Connection c in connectionPanel.Connections) - { - var recipients = c.Recipients; - foreach (Connection recipient in recipients) - { - if (alreadySearched.Contains(recipient.Item)) continue; - - var component = recipient.Item.GetComponent(); - - if (component != null) - { - connectedComponents.Add(component); - } - - recipient.Item.GetConnectedComponentsRecursive(alreadySearched, connectedComponents); - - - } - } - } - - public void SendSignal(int stepsTaken, string signal, string connectionName, float power = 0.0f) - { - stepsTaken++; - - ConnectionPanel panel = GetComponent(); - if (panel == null) return; - foreach (Connection c in panel.Connections) - { - if (c.Name != connectionName) continue; - - if (stepsTaken > 10) - { - //use a coroutine to prevent infinite loops by creating a one - //frame delay if the "signal chain" gets too long - CoroutineManager.StartCoroutine(SendSignal(signal, c, power)); - } - else - { - c.SendSignal(stepsTaken, signal, this, power); - } - } - } - - private IEnumerable SendSignal(string signal, Connection connection, float power = 0.0f) - { - //wait one frame - yield return CoroutineStatus.Running; - - ConnectionPanel panel = GetComponent(); - if (panel == null) yield return CoroutineStatus.Success; - - connection.SendSignal(0, signal, this, power); - - yield return CoroutineStatus.Success; - } - - public static Item FindPickable(Vector2 position, Vector2 pickPosition, Hull hull = null, Item[] ignoredItems = null) - { - float dist; - return FindPickable(position, pickPosition, hull, ignoredItems, out dist); - } - - /// Position of the Character doing the pick, only items that are close enough to this are checked - /// the item closest to pickPosition is returned - /// If a hull is specified, only items within that hull are checked - public static Item FindPickable(Vector2 position, Vector2 pickPosition, Hull hull, Item[] ignoredItems, out float distance) - { - float closestDist = 0.0f, dist; - Item closest = null; - - Vector2 displayPos = ConvertUnits.ToDisplayUnits(position); - Vector2 displayPickPos = ConvertUnits.ToDisplayUnits(pickPosition); - - distance = 1000.0f; - - foreach (Item item in ItemList) - { - if (ignoredItems != null && ignoredItems.Contains(item)) continue; - if (item.body != null && !item.body.Enabled) continue; - - if (item.PickDistance == 0.0f && !item.prefab.Triggers.Any()) continue; - - Pickable pickableComponent = item.GetComponent(); - if (pickableComponent != null && (pickableComponent.Picker != null && !pickableComponent.Picker.IsDead)) continue; - - float pickDist = Vector2.Distance(item.WorldPosition, displayPickPos); - - bool insideTrigger = false; - foreach (Rectangle trigger in item.prefab.Triggers) - { - Rectangle transformedTrigger = item.TransformTrigger(trigger, true); - - if (!Submarine.RectContains(transformedTrigger, displayPos)) continue; - - insideTrigger = true; - - Vector2 triggerCenter = new Vector2(transformedTrigger.Center.X, transformedTrigger.Y - transformedTrigger.Height / 2); - pickDist = Math.Min(Math.Abs(triggerCenter.X - displayPickPos.X), Math.Abs(triggerCenter.Y - displayPickPos.Y)); - } - - if (!insideTrigger && item.prefab.Triggers.Any()) continue; - - if (pickDist > item.PickDistance && item.PickDistance > 0.0f) continue; - - dist = item.Sprite.Depth * 10.0f + pickDist; - if (item.IsMouseOn(displayPickPos)) dist = dist * 0.1f; - - if (closest == null || dist < closestDist) - { - if (item.PickDistance > 0.0f && Vector2.Distance(displayPos, item.WorldPosition) > item.prefab.PickDistance) continue; - - if (!item.prefab.PickThroughWalls && Screen.Selected != GameMain.EditMapScreen && !insideTrigger) - { - Body body = Submarine.CheckVisibility(item.Submarine == null ? position : position - item.Submarine.SimPosition, item.SimPosition, true); - if (body != null && body.UserData as Item != item) continue; - } - - closestDist = dist; - closest = item; - - distance = pickDist; - } - } - - return closest; - } - - public bool IsInsideTrigger(Vector2 worldPosition) - { - foreach (Rectangle trigger in prefab.Triggers) - { - Rectangle transformedTrigger = TransformTrigger(trigger, true); - - if (Submarine.RectContains(transformedTrigger, worldPosition)) return true; - } - - return false; - } - - public bool IsInPickRange(Vector2 worldPosition) - { - if (IsInsideTrigger(worldPosition)) return true; - - return Vector2.Distance(WorldPosition, worldPosition) < PickDistance; - } - - public bool Pick(Character picker, bool ignoreRequiredItems=false, bool forceSelectKey=false, bool forceActionKey=false) - { - bool hasRequiredSkills = true; - - bool picked = false, selected = false; - - Skill requiredSkill = null; - - foreach (ItemComponent ic in components) - { - bool pickHit = false, selectHit = false; - if (Screen.Selected == GameMain.EditMapScreen) - { - pickHit = picker.IsKeyHit(InputType.Select); - selectHit = picker.IsKeyHit(InputType.Select); - } - else - { - if (forceSelectKey) - { - if (ic.PickKey == InputType.Select) pickHit = true; - if (ic.SelectKey == InputType.Select) selectHit = true; - } - else if (forceActionKey) - { - if (ic.PickKey == InputType.Use) pickHit = true; - if (ic.SelectKey == InputType.Use) selectHit = true; - } - else - { - pickHit = picker.IsKeyHit(ic.PickKey); - selectHit = picker.IsKeyHit(ic.SelectKey); - } - } - - - if (!pickHit && !selectHit) continue; - - Skill tempRequiredSkill; - if (!ic.HasRequiredSkills(picker, out tempRequiredSkill)) hasRequiredSkills = false; - - if (tempRequiredSkill != null) requiredSkill = tempRequiredSkill; - - bool showUiMsg = picker == Character.Controlled && Screen.Selected != GameMain.EditMapScreen; - if (!ignoreRequiredItems && !ic.HasRequiredItems(picker, showUiMsg)) continue; - if ((ic.CanBePicked && pickHit && ic.Pick(picker)) || - (ic.CanBeSelected && selectHit && ic.Select(picker))) - { - picked = true; - ic.ApplyStatusEffects(ActionType.OnPicked, 1.0f, picker); - ic.PlaySound(ActionType.OnPicked, picker.WorldPosition); - - if (picker==Character.Controlled) GUIComponent.MouseOn = null; - - if (ic.CanBeSelected) selected = true; - } - } - - if (!picked) return false; - - System.Diagnostics.Debug.WriteLine("Item.Pick(" + picker + ", " + forceSelectKey + ")"); - - if (picker.SelectedConstruction == this) - { - if (picker.IsKeyHit(InputType.Select) || forceSelectKey) picker.SelectedConstruction = null; - } - else if (selected) - { - picker.SelectedConstruction = this; - } - - if (!hasRequiredSkills && Character.Controlled==picker && Screen.Selected != GameMain.EditMapScreen) - { - GUI.AddMessage("Your skills may be insufficient to use the item!", Color.Red, 5.0f); - if (requiredSkill != null) - { - GUI.AddMessage("("+requiredSkill.Name+" level "+requiredSkill.Level+" required)", Color.Red, 5.0f); - } - } - - if (Container!=null) Container.RemoveContained(this); - - return true; - } - - - public void Use(float deltaTime, Character character = null) - { - if (condition == 0.0f) return; - - bool remove = false; - - foreach (ItemComponent ic in components) - { - if (!ic.HasRequiredContainedItems(character == Character.Controlled)) continue; - if (ic.Use(deltaTime, character)) - { - ic.WasUsed = true; - - ic.PlaySound(ActionType.OnUse, WorldPosition); - - ic.ApplyStatusEffects(ActionType.OnUse, deltaTime, character); - - if (ic.DeleteOnUse) remove = true; - } - } - - if (remove) Remove(); - } - - public void SecondaryUse(float deltaTime, Character character = null) - { - foreach (ItemComponent ic in components) - { - if (!ic.HasRequiredContainedItems(character == Character.Controlled)) continue; - ic.SecondaryUse(deltaTime, character); - } - } - - public List GetHUDTexts(Character character) - { - List texts = new List(); - - foreach (ItemComponent ic in components) - { - if (string.IsNullOrEmpty(ic.Msg)) continue; - if (!ic.CanBePicked && !ic.CanBeSelected) continue; - - Color color = Color.Red; - if (ic.HasRequiredSkills(character) && ic.HasRequiredItems(character, false)) color = Color.Orange; - - texts.Add(new ColoredText(ic.Msg, color)); - } - - return texts; - } - - public bool Combine(Item item) - { - bool isCombined = false; - foreach (ItemComponent ic in components) - { - if (ic.Combine(item)) isCombined = true; - } - return isCombined; - } - - public void Drop(Character dropper = null, bool createNetworkEvent = true) - { - //if (dropper == Character.Controlled) - // new NetworkEvent(NetworkEventType.DropItem, ID, true); - - - //if (dropper != null) GameServer.Log(dropper.Name + " dropped " + Name, Color.Orange); - - foreach (ItemComponent ic in components) ic.Drop(dropper); - - if (Container != null) Container.RemoveContained(this); - } - - public void Equip(Character character) - { - foreach (ItemComponent ic in components) ic.Equip(character); - } - - public void Unequip(Character character) - { - character.DeselectItem(this); - foreach (ItemComponent ic in components) ic.Unequip(character); - } - - - public List GetProperties() - { - - List editableProperties = ObjectProperty.GetProperties(this); - - foreach (ItemComponent ic in components) - { - List componentProperties = ObjectProperty.GetProperties(ic); - foreach (var property in componentProperties) - { - editableProperties.Add(property); - } - } - - return editableProperties; - } - - private bool EnterProperty(GUITickBox tickBox) - { - var objectProperty = tickBox.UserData as ObjectProperty; - if (objectProperty == null) return false; - - objectProperty.TrySetValue(tickBox.Selected); - - return true; - } - - private bool EnterProperty(GUITextBox textBox, string text) - { - textBox.Color = Color.DarkGreen; - - var objectProperty = textBox.UserData as ObjectProperty; - if (objectProperty == null) return false; - - object prevValue = objectProperty.GetValue(); - - textBox.Deselect(); - - if (objectProperty.TrySetValue(text)) - { - textBox.Text = text; - - new NetworkEvent(NetworkEventType.UpdateProperty, ID, true, objectProperty.Name); - - return true; - } - else - { - if (prevValue != null) - { - textBox.Text = prevValue.ToString(); - } - return false; - } - } - - private bool PropertyChanged(GUITextBox textBox, string text) - { - textBox.Color = Color.Red; - - return true; - } - - public override XElement Save(XElement parentElement) - { - XElement element = new XElement("Item"); - - element.Add(new XAttribute("name", prefab.Name), - new XAttribute("ID", ID)); - - System.Diagnostics.Debug.Assert(Submarine != null); - - if (ResizeHorizontal || ResizeVertical) - { - element.Add(new XAttribute("rect", - (int)(rect.X - Submarine.HiddenSubPosition.X) + "," + - (int)(rect.Y - Submarine.HiddenSubPosition.Y) + "," + - rect.Width + "," + rect.Height)); - } - else - { - element.Add(new XAttribute("rect", - (int)(rect.X - Submarine.HiddenSubPosition.X) + "," + - (int)(rect.Y - Submarine.HiddenSubPosition.Y))); - } - - if (linkedTo != null && linkedTo.Count>0) - { - string[] linkedToIDs = new string[linkedTo.Count]; - - for (int i = 0; i < linkedTo.Count; i++ ) - { - linkedToIDs[i] = linkedTo[i].ID.ToString(); - } - - element.Add(new XAttribute("linked", string.Join(",", linkedToIDs))); - } - - - ObjectProperty.SaveProperties(this, element); - - foreach (ItemComponent ic in components) - { - ic.Save(element); - } - - parentElement.Add(element); - - return element; - } - - public static void Load(XElement element, Submarine submarine) - { - string rectString = ToolBox.GetAttributeString(element, "rect", "0,0,0,0"); - string[] rectValues = rectString.Split(','); - Rectangle rect = Rectangle.Empty; - if (rectValues.Length==4) - { - rect = new Rectangle( - int.Parse(rectValues[0]), - int.Parse(rectValues[1]), - int.Parse(rectValues[2]), - int.Parse(rectValues[3])); - } - else - { - rect = new Rectangle( - int.Parse(rectValues[0]), - int.Parse(rectValues[1]), - 0, 0); - } - - - string name = element.Attribute("name").Value; - - foreach (MapEntityPrefab ep in MapEntityPrefab.list) - { - ItemPrefab ip = ep as ItemPrefab; - if (ip == null) continue; - - if (ip.Name != name && (ip.Aliases == null || !ip.Aliases.Contains(name))) continue; - - if (rect.Width==0 && rect.Height==0) - { - rect.Width = (int)ip.Size.X; - rect.Height = (int)ip.Size.Y; - } - - Item item = new Item(rect, ip, submarine); - item.Submarine = submarine; - item.ID = (ushort)int.Parse(element.Attribute("ID").Value); - - item.linkedToID = new List(); - - foreach (XAttribute attribute in element.Attributes()) - { - ObjectProperty property = null; - if (!item.properties.TryGetValue(attribute.Name.ToString(), out property)) continue; - - bool shouldBeLoaded = false; - - foreach (var propertyAttribute in property.Attributes.OfType()) - { - if (propertyAttribute.isSaveable) - { - shouldBeLoaded = true; - break; - } - } - - if (shouldBeLoaded) property.TrySetValue(attribute.Value); - } - - string linkedToString = ToolBox.GetAttributeString(element, "linked", ""); - if (linkedToString!="") - { - string[] linkedToIds = linkedToString.Split(','); - for (int i = 0; i x.Name == subElement.Name.ToString()); - - if (component == null) continue; - - component.Load(subElement); - } - - break; - } - - } - - public override void OnMapLoaded() - { - FindHull(); - - foreach (ItemComponent ic in components) - { - ic.OnMapLoaded(); - } - } - - - public void NewComponentEvent(ItemComponent ic, bool isClient, bool isImportant) - { - int index = components.IndexOf(ic); - - new NetworkEvent(isImportant ? - NetworkEventType.ImportantComponentUpdate : NetworkEventType.ComponentUpdate, ID, isClient, index); - } - - public override bool FillNetworkData(NetworkEventType type, NetBuffer message, object data) - { - message.Write((byte)MathHelper.Clamp(condition*2.55f,0.0f,255.0f)); - - switch (type) - { - case NetworkEventType.DropItem: - if (body != null) body.FillNetworkData(message); - break; - case NetworkEventType.PhysicsBodyPosition: -#if DEBUG - System.Diagnostics.Debug.Assert(body != null, "Tried to send a PhysicsBodyPosition message for an item that has no physics body ("+Name+")"); -#else - if (body == null) return false; -#endif - - body.FillNetworkData(message); - break; - case NetworkEventType.ItemFixed: - byte requirementIndex = (byte)data; - - message.Write(requirementIndex); - break; - case NetworkEventType.InventoryUpdate: - var itemContainers = GetComponents(); - if (itemContainers == null || !itemContainers.Any()) return false; - - message.WriteRangedInteger(1, ItemContainer.MaxInventoryCount, itemContainers.Count); - foreach (ItemContainer container in itemContainers) - { - container.Inventory.FillNetworkData(NetworkEventType.InventoryUpdate, message, data); - } - - return true; - case NetworkEventType.ComponentUpdate: - case NetworkEventType.ImportantComponentUpdate: - - int componentIndex = (int)data; - if (componentIndex < 0 || componentIndex >= components.Count) return false; - - message.Write((byte)componentIndex); - bool sent = components[componentIndex].FillNetworkData(type, message); - if (sent) components[componentIndex].NetworkUpdateSent = true; - return sent; - case NetworkEventType.ApplyStatusEffect: - - ActionType actionType = (ActionType)data; - message.WriteRangedInteger(0, Enum.GetValues(typeof(ActionType)).Length, (int)actionType); - - return true; - case NetworkEventType.UpdateProperty: - var allProperties = GetProperties(); - - ObjectProperty objectProperty = allProperties.Find(op => op.Name == (string)data); - if (objectProperty != null) - { - message.Write((string)data); - object value = objectProperty.GetValue(); - if (value is string) - { - message.Write((byte)0); - message.Write((string)value); - } - else if (value is float) - { - message.Write((byte)1); - message.Write((float)value); - } - else if (value is int) - { - message.Write((byte)2); - message.Write((int)value); - } - else if (value is bool) - { - message.Write((byte)3); - message.Write((bool)value); - } - else - { - message.Write((byte)200); - } - } - - - break; - } - - return true; - } - - public override bool ReadNetworkData(NetworkEventType type, NetIncomingMessage message, float sendingTime, out object data) - { - data = null; - - Condition = (float)message.ReadByte()/2.55f; - - Client sender = null; - if (GameMain.Server != null) - { - sender = GameMain.Server.ConnectedClients.Find(c => c.Connection == message.SenderConnection); - if (sender == null || sender.Character == null || !sender.Character.CanAccessItem(this)) - { - return false; - } - } - - switch (type) - { - case NetworkEventType.DropItem: - if (GameMain.Server != null) - { - Drop(sender.Character, false); - if (body != null) - { - body.TargetPosition = sender.Character.SimPosition; - body.MoveToTargetPosition(); - } - } - else - { - //client should not tell the server where the item should drop - Drop(null, false); - if (body != null) - { - body.ReadNetworkData(message, sendingTime); - body.MoveToTargetPosition(); - } - } - break; - case NetworkEventType.PhysicsBodyPosition: - //clients don't have authority over item positions - if (GameMain.Server != null) return false; - if (body != null) body.ReadNetworkData(message, sendingTime); - - FindHull(); - break; - case NetworkEventType.ItemFixed: - byte requirementIndex = message.ReadByte(); - data = requirementIndex; - - if (requirementIndex >= FixRequirements.Count) return false; - - FixRequirements[requirementIndex].Fixed = true; - break; - case NetworkEventType.InventoryUpdate: - var itemContainers = GetComponents(); - if (itemContainers == null || !itemContainers.Any()) return false; - - int containerCount = message.ReadRangedInteger(1, ItemContainer.MaxInventoryCount); - for (int i = 0; i < containerCount;i++ ) - { - itemContainers[i].Inventory.ReadNetworkData(type, message, sendingTime); - } - - break; - case NetworkEventType.ComponentUpdate: - case NetworkEventType.ImportantComponentUpdate: - int componentIndex = message.ReadByte(); - - data = componentIndex; - - if (componentIndex < 0 || componentIndex > components.Count - 1) return false; - - components[componentIndex].NetworkUpdateSent = true; - components[componentIndex].ReadNetworkData(type, message, sendingTime); - break; - case NetworkEventType.ApplyStatusEffect: - - ActionType actionType = (ActionType)message.ReadRangedInteger(0, Enum.GetValues(typeof(ActionType)).Length); - - data = actionType; - - ApplyStatusEffects(actionType, 1.0f); - - break; - case NetworkEventType.UpdateProperty: - string propertyName = ""; - - try - { - propertyName = message.ReadString(); - data = propertyName; - } - catch - { - return false; - } - - var allProperties = GetProperties(); - ObjectProperty property = allProperties.Find(op => op.Name == propertyName); - if (property == null) return false; - - try - { - switch (message.ReadByte()) - { - case 0: - property.TrySetValue(message.ReadString()); - break; - case 1: - property.TrySetValue(message.ReadFloat()); - break; - case 2: - property.TrySetValue(message.ReadInt32()); - break; - case 3: - property.TrySetValue(message.ReadBoolean()); - break; - } - } - - catch - { - return false; - } - - break; - } - - return true; - } - - public override void Remove() - { - base.Remove(); - - Removed = true; - - //sprite.Remove(); - //if (body != null) body.Remove(); - - foreach (ItemComponent ic in components) - { - ic.Remove(); - } - ItemList.Remove(this); - - foreach (Item it in ItemList) - { - if (it.linkedTo.Contains(this)) - { - it.linkedTo.Remove(this); - } - } - } - - } -} - -using Barotrauma.Items.Components; -using Barotrauma.Networking; -using FarseerPhysics; -using FarseerPhysics.Dynamics; -using FarseerPhysics.Dynamics.Contacts; -using Lidgren.Network; -using Microsoft.Xna.Framework; -using Microsoft.Xna.Framework.Graphics; -using Microsoft.Xna.Framework.Input; -using System; -using System.Collections.Generic; -using System.Collections.ObjectModel; -using System.ComponentModel; -using System.Linq; -using System.Xml.Linq; - namespace Barotrauma { @@ -1916,7 +39,11 @@ namespace Barotrauma private List tags; public Hull CurrentHull; + + public bool Visible = true; + public SpriteEffects SpriteEffects = SpriteEffects.None; + //components that determine the functionality of the item public List components; public List drawableComponents; @@ -2580,6 +707,8 @@ namespace Barotrauma inWater = IsInWater(); if (inWater) ApplyStatusEffects(ActionType.InWater, deltaTime); + isHighlighted = false; + if (body == null || !body.Enabled) return; if (Math.Abs(body.LinearVelocity.X) > 0.01f || Math.Abs(body.LinearVelocity.Y) > 0.01f) @@ -2680,11 +809,30 @@ namespace Barotrauma return true; } + public override void FlipX() + { + base.FlipX(); + + if (prefab.CanSpriteFlipX) + { + SpriteEffects ^= SpriteEffects.FlipHorizontally; + } + + foreach (ItemComponent component in components) + { + component.FlipX(); + } + } + public override void Draw(SpriteBatch spriteBatch, bool editing, bool back = true) { + if (!Visible) return; Color color = (isSelected && editing) ? color = Color.Red : spriteColor; if (isHighlighted) color = Color.Orange; + SpriteEffects oldEffects = prefab.sprite.effects; + prefab.sprite.effects ^= SpriteEffects; + if (prefab.sprite != null) { float depth = Sprite.Depth; @@ -2692,7 +840,7 @@ namespace Barotrauma if (body == null) { - if (prefab.ResizeHorizontal || prefab.ResizeVertical) + if (prefab.ResizeHorizontal || prefab.ResizeVertical || SpriteEffects.HasFlag(SpriteEffects.FlipHorizontally) || SpriteEffects.HasFlag(SpriteEffects.FlipVertically)) { prefab.sprite.DrawTiled(spriteBatch, new Vector2(DrawPosition.X-rect.Width/2, -(DrawPosition.Y+rect.Height/2)), new Vector2(rect.Width, rect.Height), color); } @@ -2725,6 +873,8 @@ namespace Barotrauma } } + prefab.sprite.effects = oldEffects; + for (int i = 0; i < drawableComponents.Count; i++ ) { drawableComponents[i].Draw(spriteBatch, editing); @@ -2736,13 +886,12 @@ namespace Barotrauma if (!editing || (body != null && !body.Enabled)) { - isHighlighted = false; return; } if (isSelected || isHighlighted) { - GUI.DrawRectangle(spriteBatch, new Vector2(DrawPosition.X - rect.Width / 2, -(DrawPosition.Y+rect.Height/2)), new Vector2(rect.Width, rect.Height), Color.Green); + GUI.DrawRectangle(spriteBatch, new Vector2(DrawPosition.X - rect.Width / 2, -(DrawPosition.Y+rect.Height/2)), new Vector2(rect.Width, rect.Height), Color.Green,false,0,(int)Math.Max((1.5f/GameScreen.Selected.Cam.Zoom),1.0f)); foreach (Rectangle t in prefab.Triggers) { @@ -2755,7 +904,10 @@ namespace Barotrauma GUI.DrawRectangle(spriteBatch, rectWorldPos, new Vector2(transformedTrigger.Width, transformedTrigger.Height), - Color.Green); + Color.Green, + false, + 0, + (int)Math.Max((1.5f / GameScreen.Selected.Cam.Zoom), 1.0f)); } } @@ -2770,16 +922,17 @@ namespace Barotrauma } } - public override void DrawEditing(SpriteBatch spriteBatch, Camera cam) + public override void UpdateEditing(Camera cam) { - if (editingHUD==null || editingHUD.UserData as Item != this) + if (editingHUD == null || editingHUD.UserData as Item != this) { - editingHUD = CreateEditingHUD(); + editingHUD = CreateEditingHUD(Screen.Selected != GameMain.EditMapScreen); } - editingHUD.Draw(spriteBatch); editingHUD.Update((float)Timing.Step); + if (Screen.Selected != GameMain.EditMapScreen) return; + if (!prefab.IsLinkable) return; if (!PlayerInput.LeftButtonClicked() || !PlayerInput.KeyDown(Keys.Space)) return; @@ -2797,18 +950,9 @@ namespace Barotrauma } } - public void DrawInGameEditing(SpriteBatch spriteBatch) + public override void DrawEditing(SpriteBatch spriteBatch, Camera cam) { - if (editingHUD == null || editingHUD.UserData as Item != this) - { - editingHUD = CreateEditingHUD(true); - } - - if (editingHUD.Rect.Height > 60) - { - editingHUD.Update((float)Timing.Step); - editingHUD.Draw(spriteBatch); - } + if (editingHUD != null) editingHUD.Draw(spriteBatch); } private GUIComponent CreateEditingHUD(bool inGame=false) @@ -2915,7 +1059,7 @@ namespace Barotrauma return editingHUD; } - public virtual void DrawHUD(SpriteBatch spriteBatch, Character character) + public virtual void DrawHUD(SpriteBatch spriteBatch, Camera cam, Character character) { if (condition <= 0.0f) { @@ -2925,7 +1069,7 @@ namespace Barotrauma if (HasInGameEditableProperties) { - DrawInGameEditing(spriteBatch); + DrawEditing(spriteBatch, cam); } foreach (ItemComponent ic in components) @@ -2934,7 +1078,7 @@ namespace Barotrauma } } - public virtual void UpdateHUD(Character character) + public virtual void UpdateHUD(Camera cam, Character character) { if (condition <= 0.0f) { @@ -2942,6 +1086,11 @@ namespace Barotrauma return; } + if (HasInGameEditableProperties) + { + UpdateEditing(cam); + } + foreach (ItemComponent ic in components) { ic.UpdateHUD(character); diff --git a/Subsurface/Source/Items/ItemSpawner.cs b/Subsurface/Source/Items/ItemSpawner.cs index 8e1439dfa..6d94aa17c 100644 --- a/Subsurface/Source/Items/ItemSpawner.cs +++ b/Subsurface/Source/Items/ItemSpawner.cs @@ -85,7 +85,7 @@ namespace Barotrauma if (itemInfo.Inventory != null) { spawnedItem = new Item(itemInfo.Prefab, Vector2.Zero, null); - itemInfo.Inventory.TryPutItem(spawnedItem, spawnedItem.AllowedSlots, false); + itemInfo.Inventory.TryPutItem(spawnedItem, spawnedItem.AllowedSlots); } else { @@ -95,7 +95,8 @@ namespace Barotrauma AddToSpawnedList(spawnedItem); items.Add(spawnedItem); } - + + //if (GameMain.Server != null) GameMain.Server.SendItemSpawnMessage(items); } public void AddToSpawnedList(Item item) @@ -103,6 +104,121 @@ namespace Barotrauma spawnItems.Add(item); } + public void FillNetworkData(Lidgren.Network.NetBuffer message, List items) + { + message.Write((byte)items.Count); + + for (int i = 0; i < items.Count; i++) + { + message.Write(items[i].Prefab.Name); + message.Write(items[i].ID); + + if (items[i].ParentInventory == null || items[i].ParentInventory.Owner == null) + { + message.Write((ushort)0); + + message.Write(items[i].Position.X); + message.Write(items[i].Position.Y); + message.Write(items[i].Submarine != null ? items[i].Submarine.ID : (ushort)0); + } + else + { + message.Write(items[i].ParentInventory.Owner.ID); + + int index = items[i].ParentInventory.FindIndex(items[i]); + message.Write(index < 0 ? (byte)255 : (byte)index); + } + + if (items[i].Name == "ID Card") + { + message.Write(items[i].Tags); + } + } + } + + public void ReadNetworkData(Lidgren.Network.NetBuffer message) + { + var itemCount = message.ReadByte(); + for (int i = 0; i < itemCount; i++) + { + string itemName = message.ReadString(); + ushort itemId = message.ReadUInt16(); + + Vector2 pos = Vector2.Zero; + Submarine sub = null; + ushort inventoryId = message.ReadUInt16(); + + int inventorySlotIndex = -1; + + if (inventoryId > 0) + { + inventorySlotIndex = message.ReadByte(); + } + else + { + pos = new Vector2(message.ReadSingle(), message.ReadSingle()); + ushort subID = message.ReadUInt16(); + if (subID > 0) + { + sub = Submarine.Loaded.Find(s => s.ID == subID); + } + } + + string tags = ""; + if (itemName == "ID Card") + { + tags = message.ReadString(); + } + + var prefab = MapEntityPrefab.list.Find(me => me.Name == itemName); + if (prefab == null) continue; + + var itemPrefab = prefab as ItemPrefab; + if (itemPrefab == null) continue; + + Inventory inventory = null; + + var inventoryOwner = Entity.FindEntityByID(inventoryId); + if (inventoryOwner != null) + { + if (inventoryOwner is Character) + { + inventory = (inventoryOwner as Character).Inventory; + } + else if (inventoryOwner is Item) + { + var containers = (inventoryOwner as Item).GetComponents(); + if (containers!=null && containers.Any()) + { + inventory = containers.Last().Inventory; + } + } + } + + var item = new Item(itemPrefab, pos, sub); + + item.ID = itemId; + if (sub != null) + { + item.CurrentHull = Hull.FindHull(pos + sub.Position, null, true); + item.Submarine = item.CurrentHull == null ? null : item.CurrentHull.Submarine; + } + + if (!string.IsNullOrEmpty(tags)) item.Tags = tags; + + if (inventory != null) + { + if (inventorySlotIndex >= 0 && inventorySlotIndex < 255 && + inventory.TryPutItem(item, inventorySlotIndex, false)) + { + continue; + } + inventory.TryPutItem(item, item.AllowedSlots); + } + + } + } + public void Clear() { spawnQueue.Clear(); @@ -147,9 +263,33 @@ namespace Barotrauma items.Add(item); } - + + //if (GameMain.Server != null) GameMain.Server.SendItemRemoveMessage(items); } - + + public void FillNetworkData(Lidgren.Network.NetBuffer message, List items) + { + message.Write((byte)items.Count); + foreach (Item item in items) + { + message.Write(item.ID); + } + } + + public void ReadNetworkData(Lidgren.Network.NetBuffer message) + { + var itemCount = message.ReadByte(); + for (int i = 0; i gm.Name == modeName); diff --git a/Subsurface/Source/Networking/GameServer.cs b/Subsurface/Source/Networking/GameServer.cs index 52b142ce0..55f77c491 100644 --- a/Subsurface/Source/Networking/GameServer.cs +++ b/Subsurface/Source/Networking/GameServer.cs @@ -853,10 +853,6 @@ namespace Barotrauma.Networking if (AllowRespawn) respawnManager = new RespawnManager(this, selectedShuttle); - for (int teamID = 1; teamID <= teamCount; teamID++) - { - List teamClients = teamCount == 1 ? connectedClients : connectedClients.FindAll(c => c.TeamID == teamID); - List characterInfos = new List(); foreach (Client c in connectedClients) { diff --git a/Subsurface/Source/Networking/RespawnManager.cs b/Subsurface/Source/Networking/RespawnManager.cs index 7a1dbb3c7..564a83dfa 100644 --- a/Subsurface/Source/Networking/RespawnManager.cs +++ b/Subsurface/Source/Networking/RespawnManager.cs @@ -237,7 +237,7 @@ namespace Barotrauma.Networking foreach (Door door in shuttleDoors) { - if (door.IsOpen) door.SetState(false, false, true); + if (door.IsOpen) door.SetState(false,false,true); } var shuttleGaps = Gap.GapList.FindAll(g => g.Submarine == respawnShuttle && g.ConnectedWall != null);