GUIMessageBoxes are drawn on top of everything else (they were obstructed by shiftsummary), placing background sprites based on level seed, instructions for dealing with broken junction boxes in tutorial

This commit is contained in:
Regalis
2016-05-01 18:55:44 +03:00
parent 63bb78b3ef
commit 3f22b2e4df
5 changed files with 46 additions and 43 deletions

View File

@@ -1132,6 +1132,8 @@ namespace FarseerPhysics.Dynamics
Debug.Assert(!_bodyRemoveList.Contains(body),
"The body is already marked for removal. You are removing the body more than once.");
Debug.Assert(body != null);
if (!_bodyRemoveList.Contains(body))
_bodyRemoveList.Add(body);

View File

@@ -148,7 +148,7 @@ namespace Barotrauma
Vector2 dir = (closestEdge.point1 - closestEdge.point2) / length;
Vector2 pos = closestEdge.Center;
pos = closestEdge.point2 + dir * Rand.Range(prefab.Sprite.size.X / 2.0f, length - prefab.Sprite.size.X / 2.0f);
pos = closestEdge.point2 + dir * Rand.Range(prefab.Sprite.size.X / 2.0f, length - prefab.Sprite.size.X / 2.0f, false);
if (prefab.Alignment.HasFlag(Alignment.Top))
{

View File

@@ -300,8 +300,6 @@ namespace Barotrauma
if (!paused) Screen.Selected.Update(deltaTime);
GUI.Update((float)deltaTime);
if (NetworkMember != null)
{
NetworkMember.Update((float)deltaTime);
@@ -310,6 +308,9 @@ namespace Barotrauma
{
NetworkEvent.Events.Clear();
}
GUI.Update((float)deltaTime);
}
CoroutineManager.Update((float)deltaTime, paused ? 0.0f : (float)deltaTime);

View File

@@ -36,7 +36,7 @@ namespace Barotrauma.Tutorials
Door tutorialDoor = Item.ItemList.Find(i => i.HasTag("tutorialdoor")).GetComponent<Door>();
while (!tutorialDoor.IsOpen)
while (!tutorialDoor.IsOpen && Character.Controlled.WorldPosition.X < tutorialDoor.Item.WorldPosition.X)
{
yield return CoroutineStatus.Running;
}
@@ -382,7 +382,7 @@ namespace Barotrauma.Tutorials
Character.Controlled.ClosestItem != null && Character.Controlled.ClosestItem.Name == "Diving Suit")
{
infoBox = CreateInfoFrame("There can only be one item in each inventory slot, so you need to take off "
+"the jumpsuit if you wish to wear a diving suit.");
+ "the jumpsuit if you wish to wear a diving suit.");
divingMaskSelected = true;
}
@@ -450,7 +450,7 @@ namespace Barotrauma.Tutorials
yield return CoroutineStatus.Running;
}
moloch.AnimController.SetPosition(ConvertUnits.ToSimUnits(Character.Controlled.WorldPosition + Vector2.UnitY*1000.0f));
moloch.AnimController.SetPosition(ConvertUnits.ToSimUnits(Character.Controlled.WorldPosition + Vector2.UnitY * 1000.0f));
infoBox = CreateInfoFrame("Now we're ready to shoot! Select the railgun controller.");
@@ -523,10 +523,41 @@ namespace Barotrauma.Tutorials
infoBox = CreateInfoFrame("The two pumps inside the ballast tanks "
+ "are connected straight to the navigation terminal and can't be manually controlled unless you mess with their wiring, " +
"so you should only use the pump in the middle room to pump out the water. Select it, turn it on and adjust the pumping speed " +
"to start pumping water out.");
"to start pumping water out.", true);
while (infoBox != null)
{
yield return CoroutineStatus.Running;
}
bool brokenMsgShown = false;
while (pump.Item.CurrentHull.Volume > 1000.0f)
{
if (!brokenMsgShown && pump.Voltage < pump.MinVoltage && Character.Controlled.SelectedConstruction == pump.Item)
{
brokenMsgShown = true;
infoBox = CreateInfoFrame("Looks like the pump isn't getting any power. The water must have short-circuited some of the junction "
+"boxes. You can check which boxes are broken by selecting them.");
while (true)
{
if (Character.Controlled.SelectedConstruction!=null &&
Character.Controlled.SelectedConstruction.GetComponent<PowerTransfer>() != null &&
Character.Controlled.SelectedConstruction.Condition == 0.0f)
{
infoBox = CreateInfoFrame("Here's our problem: this junction box is broken. Luckily engineers are adept at fixing electrical devices - "
+"you just need to find a spare wire and click the ''Fix''-button to repair the box.");
break;
}
if (pump.Voltage > pump.MinVoltage) break;
yield return CoroutineStatus.Running;
}
}
yield return CoroutineStatus.Running;
}
@@ -535,30 +566,10 @@ namespace Barotrauma.Tutorials
yield return new WaitForSeconds(4.0f);
float endPreviewLength = 10.0f;
DateTime endTime = DateTime.Now + new TimeSpan(0, 0, 0, 0, (int)(1000.0f * endPreviewLength));
float secondsLeft = endPreviewLength;
Character.Controlled = null;
GameMain.GameScreen.Cam.TargetPos = Vector2.Zero;
GameMain.LightManager.LosEnabled = false;
//do
//{
// secondsLeft = (float)(endTime - DateTime.Now).TotalSeconds;
// float camAngle = (float)((DateTime.Now - endTime).TotalSeconds / endPreviewLength) * MathHelper.TwoPi;
// Vector2 offset = (new Vector2(
// (float)Math.Cos(camAngle) * (Submarine.Borders.Width / 2.0f),
// (float)Math.Sin(camAngle) * (Submarine.Borders.Height / 2.0f)));
// GameMain.GameScreen.Cam.TargetPos = offset * 0.8f;
// //Game1.GameScreen.Cam.MoveCamera((float)deltaTime);
// yield return CoroutineStatus.Running;
//} while (secondsLeft > 0.0f);
var cinematic = new TransitionCinematic(Submarine.Loaded, GameMain.GameScreen.Cam, 5.0f);
while (cinematic.Running)

View File

@@ -106,13 +106,6 @@ namespace Barotrauma
}
}
//backgroundPos = new Vector2(cam.WorldView.X, cam.WorldView.Y) + dustOffset;
////if (Level.Loaded != null) backgroundPos -= Level.Loaded.Position;
//Rectangle viewRect = cam.WorldView;
//viewRect.Y = -viewRect.Y;
spriteBatch.End();
spriteBatch.Begin(SpriteSortMode.BackToFront,
@@ -124,10 +117,6 @@ namespace Barotrauma
if (backgroundCreatureManager!=null) backgroundCreatureManager.Draw(spriteBatch);
//new Vector2((-offset.X*cam.Zoom) % 1024, (-offset.Y*cam.Zoom) % 1024)
spriteBatch.End();
@@ -136,11 +125,9 @@ namespace Barotrauma
SamplerState.LinearWrap, DepthStencilState.Default, null, null,
cam.Transform);
//float multiplier = 0.9f;
for (int i = 1; i < 2; i++)
{
Vector2 offset = new Vector2(cam.WorldView.X, cam.WorldView.Y);// *multiplier;
Vector2 offset = new Vector2(cam.WorldView.X, cam.WorldView.Y);
dustParticles.SourceRect = new Rectangle((int)(offset.X), (int)(-offset.Y), (int)(1024), (int)(1024));
@@ -171,14 +158,16 @@ namespace Barotrauma
foreach (GraphEdge edge in cell.edges)
{
GUI.DrawLine(spriteBatch, new Vector2(edge.point1.X, -edge.point1.Y),
new Vector2(edge.point2.X, -edge.point2.Y), Color.White);
new Vector2(edge.point2.X, -edge.point2.Y), cell.body==null ? Color.Gray : Color.White);
}
foreach (Vector2 point in cell.bodyVertices)
{
GUI.DrawRectangle(spriteBatch, new Vector2(point.X, -point.Y), new Vector2(10.0f, 10.0f), Color.White, true);
}
}
}
//RuinGeneration.RuinGenerator.Draw(spriteBatch);
}