From 28af6fa1f4a08552cf8c032e15b768f4bad5c504 Mon Sep 17 00:00:00 2001 From: Regalis11 Date: Sun, 24 Jan 2016 17:03:25 +0200 Subject: [PATCH] - Crewcommander close button & info text notifying about the hotkey - Doors can only be selected when they are broken - Fixed crashing when placing a door while no sub is loaded - Generating waypoints for an empty sub won't crash the game - Drawing characterHUD in editor --- .vs/Subsurface_Solution/v14/.suo | Bin 755712 -> 755712 bytes .../Source/Characters/AI/CrewCommander.cs | 23 +++++++++++++++--- Subsurface/Source/Items/Components/Door.cs | 7 +++++- Subsurface/Source/Items/ItemPrefab.cs | 2 +- Subsurface/Source/Map/WayPoint.cs | 6 +++++ Subsurface/Source/Screens/EditMapScreen.cs | 7 +++--- 6 files changed, 36 insertions(+), 9 deletions(-) diff --git a/.vs/Subsurface_Solution/v14/.suo b/.vs/Subsurface_Solution/v14/.suo index ef4d5c2a5a2d29b229af4d4a9aa346ac1b25d634..36e94009580317b5faad5eadde8821b33f9a0859 100644 GIT binary patch delta 2486 zcmc(hdvHuw9LMi@>@%CqvPsBfvDT7miH%Z{6e}@aqossF(~+j$??-}qBpXysnM!hF zPojoUwuDM!$x+j4g0`kInyE*NOr*w44b`FUD6s0?; zL`XiJtyfCZyJ^q$C4{~~gYAva60XImBTPH_0~o=2lZ8i)!l*_-KqI^}Foa)GBdzVT zm%^n58nlsN_W?IBdLr~!_=dnvh3y4rVcVgN@N?L^p)Z10;46mqhrR}e!0rX@2O<$S z0NNQZbcMR1^P$g!fmE?7dl38rZZLZGu!Z0*@l_+r5X za0Rb~L0<)9F+US@CeT(h3-|M2yO7HQ?F8l_ei_sZJV2Xk8~Db-wnDY>wQJqOXUn1Y zkiW&-6ucJ}L0dX$Yu$}rAY#EuYA?%;Cc)YEkGhag)OHDH$Q1QD`x)FU13IPe{WZ)TMxL%pMBTre_G$Q z=TGXp_Dt*jzwP@ltkD0~_n>L8KbDN=%h52A8cPb=#bG+9v97701m0rkd9W7t7#Z4w zM3A7Xp*GH6O5MU8N1f^k>X8}y=_sO}2>0mrhv0qjW(esjT^`anEa(i>5m9+pA1$h@ zjN!7!3et7{Bl)ytd}2O|HoL5y0ZYZ<8}WV*=d%U+fv zQ&?GY{#=)E9bntl<1|jzA7B;|*v#7c3)$@6GcfWcWHBR46vzW<@LAxigI3|1k-VSAnJ?jZX`NRT*%-=cYkvuIN!LM!g-8*V_sLNIO_N2Ab@9E1^5NWxRNZ)8 zNWh6H`8pGXCh%IF|2J)Avv>^&Byl4t6l54*DdvAm9CGs-K9#6GmrHf;a>)K8_%T*q z!mEjG+nsy01C&C2Z|hs%+?tU7v3Na|gj*U-STUerTB6cuYA1>(njJEJH2*TJdojf>e?yfn8_~jx`uxN2(CGV{|C!(K|c}=L+wjG(Y3!n2?)fuDNSw8)7 z*BG|pKWnF6Yh^eUQ;XQLhs`WM%9j#b$7|JJtlqgi(N#b8_Qi9V$D3;vTR!8Hg?A=? z=H{SA-%{>l;!Xi+Z=3SolFayx7mg>y9LwB(D7vG_=}04Faz6i*_>(x6`Yhi@OynR+ zIrL~bA?Y}mo0_|+h_c~2yXf-+=_333_(|qZel!7cyBa~e$Ib+(Ba~w=84D) zX*`DH$!Y?Qv8+()!@0Sib6`?$m3 zM&}N?@7EBKUufv5_RqFT?^kGiU?H|##c7@-8YbZjGww7m(fJqi8DZw5uIiKTk1xrv zn6EhtibbnZ5+UYZ=dDHc6Pm=&nu$PbRSMxP9fV1>0ZRn z_&vHow48~Ndst`HLrpRxgKr>WZ8o(@TRp#pqt7W>r;X7^IAaV(;oZT%Bi@WIW6VNu_9G;p8;dSC!XV3Ljo^VRjg0}wFP9RL6T delta 2608 zcmbu>4^UJ^90%~X`+mp$@!(DY1-swuWQi6a{zvHh$jq9?{@u)He!Khj?c3eo z-n;Yp6MgU2H~ZJ}*%12XJX2BtSK~ ztmJdUYO-f`UJqN(c)k*fGYw$cI75tjZyq8DmWjznz7?Q7rz)Ne<;8*Mhoh6i9Q+6E!^hVJMy z3K5UE`pHH8HWVTr=XM(2jC1#2j#894q2YdL8{IB3fVs==b(O+fx z+oCwRaY3_pi)YV>yAutgO8rftxsmVm6^;sC%aXO`;j<}9?~<7^?#6YP_$H`>MtB)= zL7&)s#Piz6Dg8*Vg_=_Ai>{OYM}JGd-uchz*W3PS`ukyS*Gs=e(O#)^v459febe*= z-wgjX!TKWpBEeaDf**!!6Rh{u6Raoa|0Y;7k)t!YA=910_Zf3b_YOM50>s=QciW+) zl^3UxzCJDU;tMzEZ-Cu66`8Oeix66n-h1NtcJUkC)DLwSkH1vthkN%`Q`v z9GK7g=XPfL@5j-?FBRe)A)hrN{AY6xFFbTFdGhDe@N33N}X+C99L<g!7?>Q_+C=o!o5met+F}4uR^x2QmyPt8k|T2>kw?6I!byst5qqT zdmvp6yq<~TLT=O2Mv(9pF_U=ZEp9@ss~ps-o{ZF-IV9a<)HWua7HVL@b;N@a)Ge4y zoMnjWi)>url-Vk$xadt|U<pZ`aY1^WbMBW8nAzkrQ-z6}Ha2CpFH8Zmi*66^F zTwSLj+Nvnq#f4nfU%G}45^57UUZ5}{Q?9oJOQ1!=&(GSoKV$FRPha8qppW1@! zi3jE}JaHD)hX;3|)6Nho!I(C_P+Fzo)67w z+;TL%Oq5ThXwiE%8Aanv8Z4b&Y>}v(VCW`>9%p@JvX6GC!n>L#iQEK>N92CZ9I|Wz zJ;KD{ekeMM>1dZgKE>HCZ*NhaTv}Q8+-d8E)S2&#@*@;2$K=z8EU=b#*_RJL((YZ- z*7c<`&C_#+el=Yry}+Vn^IEd8zzT8%{FWgyJwO#|@GSE4GKC4>VxBCV{fs8*{mEE` zb08>FtSK|QrSCPIqR#w_wH}U>XQd2U@rRSwYNb8eHlAcXX!-R^iF_%4+JCk=jcS;E zQArr@d9bQvX@xRtkMH^Y;-O3yWojAdfkJwsF;Zu&G;d?j^KfsT0 z0vh2YoPwX=XJ~?EXo1tv3TNOfoP+al0s4#bIKq#pZ`c65%Wr{rNPt8b2p&j+Tj4es z1cPA+425}DMp!p&K57df4;I2ASPV;GDLe_wARnHB0?_{!`1BDXrM;D!nC9E+(q4;k p$dTOeky>f3Wx|t2WYGVL81<}-dKRYv3=jrJFo9V*+AK#)egV5-!qxx) diff --git a/Subsurface/Source/Characters/AI/CrewCommander.cs b/Subsurface/Source/Characters/AI/CrewCommander.cs index 7840b6b54..89b172e15 100644 --- a/Subsurface/Source/Characters/AI/CrewCommander.cs +++ b/Subsurface/Source/Characters/AI/CrewCommander.cs @@ -10,11 +10,13 @@ namespace Barotrauma { class CrewCommander { - CrewManager crewManager; + private CrewManager crewManager; - GUIFrame frame; + private GUIFrame frame; //GUIListBox characterList; + private bool infoTextShown; + private int characterFrameBottom; public GUIFrame Frame @@ -39,6 +41,12 @@ namespace Barotrauma if (IsOpen) { + if (!infoTextShown) + { + GUI.AddMessage("Press " + GameMain.Config.KeyBind(InputType.CrewOrders) + " to open/close the command menu", Color.Cyan, 5.0f); + infoTextShown = true; + } + if (frame == null) CreateGUIFrame(); UpdateCharacters(); } @@ -48,7 +56,14 @@ namespace Barotrauma { frame = new GUIFrame(Rectangle.Empty, Color.Black * 0.6f); frame.Padding = new Vector4(200.0f, 100.0f, 200.0f, 100.0f); - + + GUIButton closeButton = new GUIButton(new Rectangle(0, 50, 100, 20), "Close", GUI.Style, frame); + closeButton.OnClicked = (GUIButton button, object userData) => + { + ToggleGUIFrame(); + return false; + }; + //UpdateCharacters(); int buttonWidth = 130; @@ -62,7 +77,7 @@ namespace Barotrauma Order.PrefabList.FindAll(o => o.ItemComponentType == null) : Order.PrefabList.FindAll(o=> o.ItemComponentType != null); - int startX = (int)-(buttonWidth * orders.Count + spacing * (orders.Count - 1)) / 2; + int startX = -(buttonWidth * orders.Count + spacing * (orders.Count - 1)) / 2; int i=0; foreach (Order order in orders) diff --git a/Subsurface/Source/Items/Components/Door.cs b/Subsurface/Source/Items/Components/Door.cs index 76f148d05..7aaedf08b 100644 --- a/Subsurface/Source/Items/Components/Door.cs +++ b/Subsurface/Source/Items/Components/Door.cs @@ -7,7 +7,6 @@ using FarseerPhysics.Factories; using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Graphics; using Barotrauma.Lights; -using System.Collections.Generic; namespace Barotrauma.Items.Components { @@ -250,6 +249,12 @@ namespace Barotrauma.Items.Components return true; } + public override bool Select(Character character) + { + //can only be selected if the item is broken + return item.Condition <= 0.0f; + } + public override void Update(float deltaTime, Camera cam) { if (!isStuck) diff --git a/Subsurface/Source/Items/ItemPrefab.cs b/Subsurface/Source/Items/ItemPrefab.cs index 6e1492955..35cb39684 100644 --- a/Subsurface/Source/Items/ItemPrefab.cs +++ b/Subsurface/Source/Items/ItemPrefab.cs @@ -130,7 +130,7 @@ namespace Barotrauma placePosition = Vector2.Zero; item.Submarine = Submarine.Loaded; - item.SetTransform(ConvertUnits.ToSimUnits(item.Position - Submarine.Loaded.Position), 0.0f); + item.SetTransform(ConvertUnits.ToSimUnits(Submarine.Loaded == null ? item.Position : item.Position - Submarine.Loaded.Position), 0.0f); item.FindHull(); //selected = null; diff --git a/Subsurface/Source/Map/WayPoint.cs b/Subsurface/Source/Map/WayPoint.cs index 0eedfcac7..58b28cadf 100644 --- a/Subsurface/Source/Map/WayPoint.cs +++ b/Subsurface/Source/Map/WayPoint.cs @@ -287,6 +287,12 @@ namespace Barotrauma public static void GenerateSubWaypoints() { + if (!Hull.hullList.Any()) + { + DebugConsole.ThrowError("Couldn't generate waypoints: no hulls found."); + return; + } + List existingWaypoints = WayPointList.FindAll(wp => wp.spawnType == SpawnType.Path); foreach (WayPoint wayPoint in existingWaypoints) { diff --git a/Subsurface/Source/Screens/EditMapScreen.cs b/Subsurface/Source/Screens/EditMapScreen.cs index f10f5b324..2eae21d93 100644 --- a/Subsurface/Source/Screens/EditMapScreen.cs +++ b/Subsurface/Source/Screens/EditMapScreen.cs @@ -467,8 +467,6 @@ namespace Barotrauma GUIpanel.Draw(spriteBatch); - if (selectedTab > -1) GUItabs[selectedTab].Draw(spriteBatch); - //EntityPrefab.DrawList(spriteBatch, new Vector2(20,50)); if (characterMode) @@ -497,12 +495,15 @@ namespace Barotrauma dummyCharacter.SelectedConstruction = null; } } - } + dummyCharacter.DrawHUD(spriteBatch, cam); + } else { + if (selectedTab > -1) GUItabs[selectedTab].Draw(spriteBatch); + MapEntity.Edit(spriteBatch, cam); }