From ca7febfcab5afc744fcdaf5ba856854a8d4d321f Mon Sep 17 00:00:00 2001 From: Regalis Date: Mon, 4 Jan 2016 22:36:39 +0200 Subject: [PATCH] Option to hide waypoints and spawnpoints in editor, fixed cam "twitching" in multiplayer, additional light sprites for lightcomponents, wire bugfixes, fixed excessive camera shake when firing the railgun --- Launcher2/LauncherMain.cs | 22 ++++++++++++- Subsurface/Content/Items/Electricity/lamp.png | Bin 2823 -> 2842 bytes .../Content/Items/Electricity/lights.xml | 4 ++- .../Content/Items/Electricity/signalcomp.png | Bin 7614 -> 7551 bytes .../Content/Items/Electricity/signalitems.xml | 2 +- Subsurface/Content/Items/Weapons/railgun.xml | 2 +- Subsurface/Content/UI/style.xml | 2 +- Subsurface/Source/Characters/Limb.cs | 2 +- Subsurface/Source/GUI/GUITextBox.cs | 13 ++++++++ .../Items/Components/Signal/Connection.cs | 4 ++- .../Items/Components/Signal/LightComponent.cs | 27 +++++++--------- .../Source/Items/Components/Signal/Wire.cs | 6 ++++ Subsurface/Source/Map/Lights/LightManager.cs | 11 ++++++- Subsurface/Source/Map/Lights/LightSource.cs | 9 +++++- Subsurface/Source/Map/SubmarineBody.cs | 25 +++++++++------ Subsurface/Source/Map/WayPoint.cs | 13 +++++++- Subsurface/Source/Particles/Particle.cs | 2 +- Subsurface/Source/Screens/EditMapScreen.cs | 30 ++++++++---------- Subsurface/Source/Sprite.cs | 4 +-- Subsurface_Solution.v12.suo | Bin 819200 -> 846848 bytes 20 files changed, 123 insertions(+), 55 deletions(-) diff --git a/Launcher2/LauncherMain.cs b/Launcher2/LauncherMain.cs index 3c943314b..8bc7d87d4 100644 --- a/Launcher2/LauncherMain.cs +++ b/Launcher2/LauncherMain.cs @@ -367,7 +367,27 @@ namespace Launcher2 xml = xml.Remove(0, _byteOrderMarkUtf8.Length); } - return XDocument.Parse(xml); + try + { + return XDocument.Parse(xml); + } + + catch + { + } + + try + { + int index = xml.IndexOf('<'); + xml = xml.Substring(index, xml.Length-index); + + return XDocument.Parse(xml); + } + + catch + { + return null; + } } private bool CheckUpdateXML(XDocument doc) diff --git a/Subsurface/Content/Items/Electricity/lamp.png b/Subsurface/Content/Items/Electricity/lamp.png index 253cfec456566f879c2445f8f9671de1e1260dff..05848b2ae7417588a221d9bde2e6f4c596d09029 100644 GIT binary patch delta 2804 zcmVQTWm|&cEM6C|62>TKJZtKfP(shq6rc;XaX;q z7$lJg6M6Cx)F{08B1I*Nn23-T<&UYMz_x{LyDi=BcH6SuKlksJPos!hD5=xe7^=@`peE>8fqp zw!PfiBp2p%sZ?rhs7FRd79M%z=RZDrbb_NtCzzZ(iq`sUO-E}jwAQZHe_Cp-Ju`hX zTi>Nw<9wKXo!Qw1azTzgdqy|k`PDn09zS?s=+aBpGdMU%p%9V_0&rYToIJ^EyLS^s z5%)iE|08#O{Tn~>eV>cgjhros3o{+-nAHG#re=PiM#zKj90oY=d-r|!i6e&(3~g9H z!YwymPk(0A942E+EZk zGA0lK$}$t1i1!ol&iEmA?A-Z-S6+U3{TDxX1JZR_y>bPsR;^;$z##p7y|}_#0SCYDa?X z&4)eDJ^Rev=dT#x%8eVDIPwmctiPCnfkArvN`zq!?Kn6>P{`*QIByxBzGf58Jo~qG zufF=qjhi=b+TLNw+XVQ4XTYoh1`S|oKpqDU0X1_^Bcmbj(**hUfw3$1AKX8D?WU_4 zSYBdoc7|o868-&se}wrwuIr*5hhk5Wo}MDPz-QH}l{6X+_V3@n4cOj6n|H0*lDq?4 z09*^K26}*^A>}0S58xm$W0{0K)FJ}L#>O^O>otZ32PhN^1i2hx7$RL4;kr0R`o8Cp z5A%d!p8o!R!Z2ifeEj0GApI8j&`5A2FaWFv&Igtm0$ig3e}{p!z+a6fq)Rx+CIJHj z14BB6Vow1t2nmZl$RH#r^x%0OQpzR?j)UiW_(6bh1fG-t`Lh7tHEQn}X1z3IK)Xzxl(2CzPBh83rN=`2mx-+aEn%o9K#&}%fqHTM_Ixjy3~UNgkS8RErt$X_`WskT|005M6-~F5r;Q=XD1{pRe6{hg9p+PS15Ep4XIcnx>!yqEW|nJ+%4r zeUJYB{rsUx?U{| zf15(7lt!bD)|ynO=v0%YF^P&uR6GalW^ z)cRRX(QQIx)?^(iT%k1%Q4~?GREZi9f8~WTxm<{&!4U!%K^#RSNkWn+;wU0b(@to> z2N9zz3A03v?^xv6>G4u~B2|*0b;{no`-mG6jVNMnexAO*UVe|e0X zZ@P(r!2!H5KuU@0demzTgb=J;xf0Lw*}Ly8jvYJJ381=7i!05vxm4y{w&r)NV|K4a z|I_#Yjc^5?@8fwMxm=EXAy2N5$8nlkrPHPf_4f7Ch$56y)M_=SL(shK8z2DXP^PNgUCrmk~na z=oBYOP3oJXfOi!OAiW2IzW=;^tF;NneBnfdGQ>j#_R4bGh7MPu#BS{ig zuU@skL*RAB)|K_ywZdY~XhC3AeyOPq8kR}enzYCS#Kw&q-@N>aD_$SnvzK>I&QNbO zs8wq;>UA3RI!Y;2l2ERcf2mZeD5W@j_z;7G0}Nky;qzyhfUL7?{piH%0;g8Evu(ab zQrUbDtroemz%Mcf(NJmpg$==?&%F-~ z4-ePQun)+BZ)J8ZFvktJnnjARh^v}@KpA+~kd~+ZW|jL`&1)}D3wa%BkR_^arfQd{Jrmc6Jujz zolJdG3y@7f)${~kGax@szF$HfGQ)3R+E%b8I-7jaH?L(Bh}VoZBN?%-95|Ol_~1$R$4b{Q%DWk+uPM#@-M)*G-^Z z$2i;GTIwaKln?Q;l;oo`Y)PK6x5Pe51T00y|LkQyO4g%GK$n0n0bK&R1at}L63``} zOF)-^E&*Kvx&(9y=n~K+pi4lPfGz=D0=fir3HTU|{|*4z`Y~h0{SMRs0000E7KaugiBL{Q4GJ0x0000DNk~Le0000W0000W2nGNE0CReJ^pPP%e~n2* zK~#9!WR_cuUDbWYf9tZZ=bV{2W6zB1@%T1lW1Cok7K0({lCnhHT^w6P0U%znS!bW2Z<#M^b zbLY+@d-v}BS(+xNMn*;m!w`TtDj}srsyp$A48dr%sV13H$zf-^-7E^YQQdzRy7aAaNWsadzVVM<0E3|Ah;aLvbM{3`3Mw2q6(d z&~A5FymgB>j@Y+v-^+jYf6d3gueC;;{NN10iof{ocaEHR|Jatzo5px#_m}DG>!qi! zm!49Izze9$lYjYFUVY`27dO1L;XgmV`N`tj2j6-2*wLd~ z%Kg1aq42auD~(bLr4#^ZmZ6nmaBz^>nHhfk>MJj9+_3RY*%L>l-~8&$Cw_0$0QYX+ zPPtTM>z2)I+_0Xtf5XEJ4Ggeik46Nwqf%|swyW{VV9zXuxm->nY{my}3 zJ+73bSSX^TAn<(x-y;kH0?+Ffq>w_Ow4#5-3XUH?KKk2t-~EdG=)&Z^Qx~T;+nI-L$ve^XPtuFhQh?BvC%4W*tE zT5E(5%k5WEA(cc5ffNEECBi{eC{U}`xp?v7!+LUZa$B?AVrX!HLa{&)hD1@6SF9AG z3-mpYIEsm)n7+O~qA23hrAwQO#o`0?W>X9f4j`oHiVi^Fuvh~CqFY2>kVJbPAAa=F zHa##fFyt&0e@g|tAR;Q3&_P5{DB*eDGAkhjp6}rY0a8djtpVcR-riwrYm0dX9Yq$vvvw^+B% z;+#WDiSPTOr?=O2IbyBDT1&gxMoNKF5`jQSfw2x_e+*cM1B8+&DTSV%o<;ztKR8XT zwn(GVrdTLYF6V777K=nt#KOWY=H_OpR_mPqXp%Hd@jNZ&=H?IrYPBj_DNJS%0+duB z1it41kYyQZl2WVINKJ;#4241wJv%##_B5lL$9VWlUu1S>jz9kTpD?s)6=4{lq{28y z(&^wNf2W0X?FaZDIRblPotdV0}XqohPBjdPYPGYDBBh$1>k zLXxC}QHb{az$vBZ=_#Q-iBb|BcnB$RPLdf*<{&W!>i{8%q6p9T(OMHlp%X%&Jlz%H zov*b9hXC@{1E|{>;k1+z0a$Ah2(Z+^5ILEr6q;HSqI>xF_uoJjdNX)by%B{nS{(_ zSS+{F{?A=YF#XK^kUsa{vy7$Le5s*t2fLY8G@nITOQthH#ZoiWDdE^-)?VY{8Q)}jPhf54IF zv9n8sx~?6S(DlXidG~Gx1_$t>AWt;q(Qb8+e^N3$JdEf0oIC#^*RNk^c6QcyzE81KB=GZng+dYS zsa(7&AI+ID2nl`=k{Lr~;TH9J9i3~yA(h1QeLT-23`62VOjw9>3!!i}w^vVZADtw@ z7(=Vo5_blTTxKmr_c|u!r}Ups!6ZpB#?WrHgw|Ty%ve0F@jZp_X#!tkf3lP;&5%+c zgu|GWdaa7dGJ1P^F~(wykxD7&aJLVZ-4qm{weF^5E_9P+Ao37$&XH!BltV*9O=Aqr zW{WIM=(Oud=@8B$GK(+{X)P{IN!l%{wF+sPkfteGd-atAE2~0CvMlQ=+#;n|RzJ%f z${muXDbD4iSt(VOpBo=Pe^)B@WH)ZilO!4KR(pA4lBM|=O;Z|;290KedaXvKvPhO? zjEtj>2x|Y8+C5pxJj#>FgtgHQ>Q-Qp@$wkHMVKfuUl!xS04H5Yf39Bl|`&0XWD&j zm-SKsNtRGwtTH}6e|~D~)~#=;ef$23O`FEfOiy3?!u~hjTnn&%{RWaGZ-3=hh54H| znY(d=lP6Dc@X$LLWBB0@|NiN1+qO+KnsvrTH=dcBo%zCv-<@2GfG933WipvD`I}`l znoT~LpJ#aWYF>KjAD-T}?d}QP6-)a&Pd)vuE7#`UIDYiEe_O1Bv5gxj6^ay#MQZgL zm#w!QVbVIy$z0spUe@{_}4?^{uPd=H58^?vX9d%~34o*L0;7S(?#o zHmKaH(7&Re=bn4+`O(qQ{l;X7v**tt1YEs(jfI8E`rjOQ>qr0g%U|xjRjCj~QTIN$ z00Xy?o`f6sjH`QhQ=pRQZCj+HA{GBY=ewU%qwa{Pb)`oND~fBp5n^Yioht;h37 z+HIti?0n#XnP+8ET nIy!p#$tR!uh3DOg|K9-shrMUKreT>n00000NkvXXu0mjfQ)_<0 diff --git a/Subsurface/Content/Items/Electricity/lights.xml b/Subsurface/Content/Items/Electricity/lights.xml index eb34a1660..2bf2cc9eb 100644 --- a/Subsurface/Content/Items/Electricity/lights.xml +++ b/Subsurface/Content/Items/Electricity/lights.xml @@ -10,7 +10,9 @@ - + + + diff --git a/Subsurface/Content/Items/Electricity/signalcomp.png b/Subsurface/Content/Items/Electricity/signalcomp.png index 8ff3fb93c4129601fcebf7d67dd18d014d81a49c..82ca40a94e01248ed23700b9707eefbe29c55fe7 100644 GIT binary patch literal 7551 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 diff --git a/Subsurface/Content/Items/Electricity/signalitems.xml b/Subsurface/Content/Items/Electricity/signalitems.xml index 048e4981d..4cf60b7d2 100644 --- a/Subsurface/Content/Items/Electricity/signalitems.xml +++ b/Subsurface/Content/Items/Electricity/signalitems.xml @@ -221,7 +221,7 @@ - + diff --git a/Subsurface/Content/Items/Weapons/railgun.xml b/Subsurface/Content/Items/Weapons/railgun.xml index 4d423b81d..2601f3a2b 100644 --- a/Subsurface/Content/Items/Weapons/railgun.xml +++ b/Subsurface/Content/Items/Weapons/railgun.xml @@ -13,7 +13,7 @@ rotationlimits="180,360" powerconsumption="500.0"> - + diff --git a/Subsurface/Content/UI/style.xml b/Subsurface/Content/UI/style.xml index 52dcfec9d..de7bb89eb 100644 --- a/Subsurface/Content/UI/style.xml +++ b/Subsurface/Content/UI/style.xml @@ -55,7 +55,7 @@ diff --git a/Subsurface/Source/Characters/Limb.cs b/Subsurface/Source/Characters/Limb.cs index 974531362..24c7ef5dd 100644 --- a/Subsurface/Source/Characters/Limb.cs +++ b/Subsurface/Source/Characters/Limb.cs @@ -499,7 +499,7 @@ namespace Barotrauma damagedSprite.Draw(spriteBatch, new Vector2(body.DrawPosition.X, -body.DrawPosition.Y), - color*Math.Min(damage/50.0f,1.0f), sprite.origin, + color*Math.Min(damage/50.0f,1.0f), sprite.Origin, -body.DrawRotation, 1.0f, spriteEffect, depth); } diff --git a/Subsurface/Source/GUI/GUITextBox.cs b/Subsurface/Source/GUI/GUITextBox.cs index 735e84a1c..ade97466e 100644 --- a/Subsurface/Source/GUI/GUITextBox.cs +++ b/Subsurface/Source/GUI/GUITextBox.cs @@ -70,6 +70,19 @@ namespace Barotrauma } } + public override Color HoverColor + { + get + { + return base.HoverColor; + } + set + { + base.HoverColor = value; + textBlock.HoverColor = value; + } + } + public bool CaretEnabled; public String Text diff --git a/Subsurface/Source/Items/Components/Signal/Connection.cs b/Subsurface/Source/Items/Components/Signal/Connection.cs index b604bc0ba..887dea405 100644 --- a/Subsurface/Source/Items/Components/Signal/Connection.cs +++ b/Subsurface/Source/Items/Components/Signal/Connection.cs @@ -325,10 +325,12 @@ namespace Barotrauma.Items.Components if (index>-1 && wireComponent!=null && !Wires.Contains(wireComponent)) { + bool alreadyConnected = wireComponent.IsConnectedTo(item); + wireComponent.RemoveConnection(item); Wires[index] = wireComponent; - wireComponent.Connect(this); + wireComponent.Connect(this, !alreadyConnected); } } //far away -> disconnect if the wire is linked to this connector diff --git a/Subsurface/Source/Items/Components/Signal/LightComponent.cs b/Subsurface/Source/Items/Components/Signal/LightComponent.cs index 6ab43eafa..433096815 100644 --- a/Subsurface/Source/Items/Components/Signal/LightComponent.cs +++ b/Subsurface/Source/Items/Components/Signal/LightComponent.cs @@ -13,13 +13,11 @@ namespace Barotrauma.Items.Components private Color lightColor; - //private Sprite sprite; + private LightSource light; - LightSource light; + private float range; - float range; - - float lightBrightness; + private float lightBrightness; private float flicker; @@ -81,18 +79,17 @@ namespace Barotrauma.Items.Components public LightComponent(Item item, XElement element) : base (item, element) { - //foreach (XElement subElement in element.Elements()) - //{ - // if (subElement.Name.ToString().ToLower() != "sprite") continue; - // sprite = new Sprite(subElement); - // break; - //} - light = new LightSource(item.Position, 100.0f, Color.White, item.CurrentHull == null ? null : item.CurrentHull.Submarine); IsActive = true; - //lightColor = new Color(ToolBox.GetAttributeVector4(element, "color", Vector4.One)); + foreach (XElement subElement in element.Elements()) + { + if (subElement.Name.ToString().ToLower() != "sprite") continue; + light.LightSprite = new Sprite(subElement); + light.LightSprite.Origin = light.LightSprite.size / 2.0f; + break; + } } public override void Update(float deltaTime, Camera cam) @@ -101,9 +98,7 @@ namespace Barotrauma.Items.Components if (item.CurrentHull != null) { light.Submarine = item.CurrentHull.Submarine; - } - - + } if (item.container != null) { diff --git a/Subsurface/Source/Items/Components/Signal/Wire.cs b/Subsurface/Source/Items/Components/Signal/Wire.cs index 5d1c2b33c..6fa379a41 100644 --- a/Subsurface/Source/Items/Components/Signal/Wire.cs +++ b/Subsurface/Source/Items/Components/Signal/Wire.cs @@ -57,6 +57,12 @@ namespace Barotrauma.Items.Components return null; } + public bool IsConnectedTo(Item item) + { + if (connections[0] != null && connections[0].Item == item) return true; + return (connections[1] != null && connections[1].Item == item); + } + public void RemoveConnection(Item item) { for (int i = 0; i<2; i++) diff --git a/Subsurface/Source/Map/Lights/LightManager.cs b/Subsurface/Source/Map/Lights/LightManager.cs index 93eeba402..446f522c3 100644 --- a/Subsurface/Source/Map/Lights/LightManager.cs +++ b/Subsurface/Source/Map/Lights/LightManager.cs @@ -8,7 +8,16 @@ namespace Barotrauma.Lights class LightManager { //public static Vector2 ViewPos; - public static Entity ViewTarget; + private static Entity viewTarget; + + public static Entity ViewTarget + { + get { return viewTarget; } + set { + if (viewTarget == value) return; + viewTarget = value; + } + } public Color AmbientLight; diff --git a/Subsurface/Source/Map/Lights/LightSource.cs b/Subsurface/Source/Map/Lights/LightSource.cs index f0194a173..f867e7e63 100644 --- a/Subsurface/Source/Map/Lights/LightSource.cs +++ b/Subsurface/Source/Map/Lights/LightSource.cs @@ -19,6 +19,8 @@ namespace Barotrauma.Lights private Texture2D texture; + public Sprite LightSprite; + public Entity Submarine; //what was the range of the light when HullsInRange were last updated @@ -85,7 +87,7 @@ namespace Barotrauma.Lights this.range = range; this.color = color; - texture = lightTexture; + texture = LightTexture; GameMain.LightManager.AddLight(this); } @@ -106,6 +108,11 @@ namespace Barotrauma.Lights Vector2 center = new Vector2(LightTexture.Width / 2, LightTexture.Height / 2); float scale = range / (lightTexture.Width / 2.0f); spriteBatch.Draw(lightTexture, new Vector2(WorldPosition.X, -WorldPosition.Y), null, color, 0, center, scale, SpriteEffects.None, 1); + + if (LightSprite != null) + { + LightSprite.Draw(spriteBatch, new Vector2(WorldPosition.X, -WorldPosition.Y), Color); + } } public void Remove() diff --git a/Subsurface/Source/Map/SubmarineBody.cs b/Subsurface/Source/Map/SubmarineBody.cs index 62efe1c17..41fa8f50a 100644 --- a/Subsurface/Source/Map/SubmarineBody.cs +++ b/Subsurface/Source/Map/SubmarineBody.cs @@ -35,7 +35,7 @@ namespace Barotrauma private Body body; - private Vector2 targetPosition; + private Vector2? targetPosition; float mass = 10000.0f; @@ -60,7 +60,7 @@ namespace Barotrauma public Vector2 TargetPosition { - get { return targetPosition; } + //get { return targetPosition; } set { if (!MathUtils.IsValid(value)) return; @@ -210,26 +210,33 @@ namespace Barotrauma public void Update(float deltaTime) { - if (targetPosition != Vector2.Zero && targetPosition != Position) + if (targetPosition != null && targetPosition != Position) { - float dist = Vector2.Distance(targetPosition, Position); + Vector2 targetSimPos = ConvertUnits.ToSimUnits((Vector2)targetPosition); + float dist = Vector2.Distance((Vector2)targetPosition, Position); if (dist > 1000.0f) { - body.SetTransform(ConvertUnits.ToSimUnits(targetPosition), 0.0f); - targetPosition = Vector2.Zero; + body.SetTransform(targetSimPos, 0.0f); + targetPosition = null; } else if (dist > 50.0f) { - body.SetTransform((ConvertUnits.ToSimUnits(targetPosition) - body.Position) * 0.01f, 0.0f); + Vector2 moveAmount = Vector2.Normalize(targetSimPos - body.Position); + moveAmount *= Math.Min(dist, 100.0f); + + body.SetTransform(body.Position + moveAmount * deltaTime, 0.0f); + } + else + { + targetPosition = null; } } else { - targetPosition = Vector2.Zero; + targetPosition = null; } - //------------------------- Vector2 totalForce = CalculateBuoyancy(); diff --git a/Subsurface/Source/Map/WayPoint.cs b/Subsurface/Source/Map/WayPoint.cs index 96518f06a..ca740db60 100644 --- a/Subsurface/Source/Map/WayPoint.cs +++ b/Subsurface/Source/Map/WayPoint.cs @@ -15,6 +15,8 @@ namespace Barotrauma { public static List WayPointList = new List(); + public static bool ShowWayPoints, ShowSpawnPoints; + private SpawnType spawnType; //characters spawning at the waypoint will be given an ID card with these tags @@ -84,6 +86,15 @@ namespace Barotrauma { if (!editing && !GameMain.DebugDraw) return; + if (spawnType == SpawnType.Path) + { + if (!GameMain.DebugDraw && !ShowWayPoints) return; + } + else + { + if (!GameMain.DebugDraw && !ShowSpawnPoints) return; + } + Rectangle drawRect = Submarine == null ? rect : new Rectangle((int)(Submarine.DrawPosition.X + rect.X), (int)(Submarine.DrawPosition.Y + rect.Y), rect.Width, rect.Height); @@ -96,7 +107,7 @@ namespace Barotrauma foreach (MapEntity e in linkedTo) { GUI.DrawLine(spriteBatch, - new Vector2(drawRect.X, -drawRect.Y), + new Vector2(drawRect.X+rect.Width/2.0f, -drawRect.Y+rect.Height/2.0f), new Vector2(e.DrawPosition.X, -e.DrawPosition.Y), Color.Green); } diff --git a/Subsurface/Source/Particles/Particle.cs b/Subsurface/Source/Particles/Particle.cs index 6481ef1e3..3cdf3ea91 100644 --- a/Subsurface/Source/Particles/Particle.cs +++ b/Subsurface/Source/Particles/Particle.cs @@ -271,7 +271,7 @@ namespace Barotrauma.Particles prefab.Sprites[spriteIndex].Draw(spriteBatch, new Vector2(drawPosition.X, -drawPosition.Y), color * alpha, - prefab.Sprites[spriteIndex].origin, drawRotation, + prefab.Sprites[spriteIndex].Origin, drawRotation, drawSize, SpriteEffects.None, prefab.Sprites[spriteIndex].Depth); prevPosition = position; diff --git a/Subsurface/Source/Screens/EditMapScreen.cs b/Subsurface/Source/Screens/EditMapScreen.cs index 4ee8a0fe2..a83713ed8 100644 --- a/Subsurface/Source/Screens/EditMapScreen.cs +++ b/Subsurface/Source/Screens/EditMapScreen.cs @@ -143,28 +143,24 @@ namespace Barotrauma } - - button = new GUIButton(new Rectangle(0, y+50, 0, 20), "Character mode", Alignment.Left, GUI.Style, GUIpanel); + y+=50; + button = new GUIButton(new Rectangle(0, y, 0, 20), "Character mode", Alignment.Left, GUI.Style, GUIpanel); button.ToolTip = "Allows you to pick up and use items. Useful for things such as placing items inside closets, turning devices on/off and doing the wiring."; button.OnClicked = ToggleCharacterMode; - - button = new GUIButton(new Rectangle(0, y+100, 0, 20), "Generate waypoints", Alignment.Left, GUI.Style, GUIpanel); + + y+=50; + button = new GUIButton(new Rectangle(0, y, 0, 20), "Generate waypoints", Alignment.Left, GUI.Style, GUIpanel); button.OnClicked = GenerateWaypoints; + + y+=50; + new GUITextBlock(new Rectangle(0, y, 0, 20), "Show:", GUI.Style, GUIpanel); - - //GUItabs[0] = new GUIFrame(new Rectangle(GameMain.GraphicsWidth/2-width/2, GameMain.GraphicsHeight/2-height/2, width, height), GUI.Style); - //GUItabs[0].Padding = new Vector4(10.0f, 10.0f, 10.0f, 10.0f); - //GUIListBox itemList = new GUIListBox(new Rectangle(0, 0, 0, 0), Color.White * 0.7f, GUI.Style, GUItabs[0]); - //itemList.OnSelected = SelectPrefab; - //itemList.CheckSelected = MapEntityPrefab.GetSelected; - - //GUItabs[1] = new GUIFrame(new Rectangle(GameMain.GraphicsWidth / 2 - width / 2, GameMain.GraphicsHeight / 2 - height / 2, width, height), GUI.Style); - //GUItabs[1].Padding = new Vector4(10.0f, 10.0f, 10.0f, 10.0f); - //GUIListBox structureList = new GUIListBox(new Rectangle(0, 0, 0, 0), Color.White * 0.7f, GUI.Style, GUItabs[1]); - //structureList.OnSelected = SelectPrefab; - //structureList.CheckSelected = MapEntityPrefab.GetSelected; - + var tickBox = new GUITickBox(new Rectangle(0,y+20,20,20), "Waypoints", Alignment.TopLeft, GUIpanel); + tickBox.OnSelected = (GUITickBox obj) => { WayPoint.ShowWayPoints = !WayPoint.ShowWayPoints; return true; }; + tickBox = new GUITickBox(new Rectangle(0, y + 40, 20, 20), "Spawnpoints", Alignment.TopLeft, GUIpanel); + tickBox.OnSelected = (GUITickBox obj) => { WayPoint.ShowSpawnPoints = !WayPoint.ShowSpawnPoints; return true; }; + } public override void Select() diff --git a/Subsurface/Source/Sprite.cs b/Subsurface/Source/Sprite.cs index 1d520df66..cbc1ed45e 100644 --- a/Subsurface/Source/Sprite.cs +++ b/Subsurface/Source/Sprite.cs @@ -22,7 +22,7 @@ namespace Barotrauma //the offset used when drawing the sprite Vector2 offset; - public Vector2 origin; + private Vector2 origin; //the size of the drawn sprite, if larger than the source, //the sprite is tiled to fill the target size @@ -43,7 +43,7 @@ namespace Barotrauma public float Depth { get { return depth; } - set { depth = Math.Min(Math.Max(value, 0.0f), 1.0f); } + set { depth = MathHelper.Clamp(value, 0.0f, 1.0f); } } public Vector2 Origin diff --git a/Subsurface_Solution.v12.suo b/Subsurface_Solution.v12.suo index 807cd1d1bc3db50ea6d5c2192c18859b4f5bcd9c..eb1deec25061791bd9ed810b1a0c2bae27cd8a69 100644 GIT binary patch delta 11383 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 Y*c{LO>D-f=UQU2O$aB1Y{JD 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