- emergency siren and alarm buzzer items

- wires and alarm buzzers can be fabricated
- fixed items selecting constructions outside the hulls
- ItemLabel.TextColor works now
- removed a random dot at the corner of head5.png
- inventory is visible in wiring mode
- fixed null reference exceptions in AIObjectiveGoto and Holdable
This commit is contained in:
Regalis
2016-03-17 19:28:46 +02:00
parent 20d61b0647
commit 8df9864db9
13 changed files with 143 additions and 40 deletions

View File

@@ -104,7 +104,7 @@ namespace Barotrauma
var indoorsSteering = character.AIController.SteeringManager as IndoorsSteeringManager;
if (indoorsSteering.CurrentPath.Unreachable)
if (indoorsSteering.CurrentPath==null || indoorsSteering.CurrentPath.Unreachable)
{
indoorsSteering.SteeringWander();
}

View File

@@ -756,7 +756,7 @@ namespace Barotrauma
if (torso == null) return null;
Vector2 pos = (torso.body.TargetPosition != Vector2.Zero) ? torso.body.TargetPosition : torso.SimPosition;
Vector2 pickPos = selectedConstruction == null ? mouseSimPos : selectedConstruction.SimPosition;
Vector2 pickPos = selectedConstruction == null ? mouseSimPos : ConvertUnits.ToSimUnits(selectedConstruction.WorldPosition);
if (Submarine != null)
{

View File

@@ -241,7 +241,7 @@ namespace Barotrauma.Items.Components
public override void Update(float deltaTime, Camera cam)
{
if (!item.body.Enabled) return;
if (item.body==null || !item.body.Enabled) return;
if (!picker.HasSelectedItem(item)) IsActive = false;
ApplyStatusEffects(ActionType.OnActive, deltaTime, picker);

View File

@@ -211,7 +211,7 @@ namespace Barotrauma.Items.Components
{
DebugConsole.ThrowError("Invalid pick key in " + element + "!", e);
}
properties = ObjectProperty.InitProperties(this, element);
foreach (XElement subElement in element.Elements())
@@ -265,7 +265,15 @@ namespace Barotrauma.Items.Components
break;
case "sound":
string filePath = ToolBox.GetAttributeString(subElement, "file", "");
if (filePath=="") continue;
if (filePath == "") filePath = ToolBox.GetAttributeString(subElement, "sound", "");
if (filePath == "")
{
DebugConsole.ThrowError("Error when instantiating item ''"+item.Name+"'' - sound with no file path set");
continue;
}
if (!filePath.Contains("/") && !filePath.Contains("\\") && !filePath.Contains(Path.DirectorySeparatorChar))
{
filePath = Path.Combine(Path.GetDirectoryName(item.Prefab.ConfigFile), filePath);
@@ -447,12 +455,7 @@ namespace Barotrauma.Items.Components
//called then the item is dropped or dragged out of a "limbslot"
public virtual void Unequip(Character character) { }
public virtual bool UseOtherItem(Item item)
{
return false;
}
public virtual void ReceiveSignal(string signal, Connection connection, Item sender, float power = 0.0f)
{
@@ -462,6 +465,13 @@ namespace Barotrauma.Items.Components
case "use":
item.Use(1.0f);
break;
case "toggle":
IsActive = !isActive;
break;
case "set_active":
case "set_state":
IsActive = signal != "0";
break;
}
}

View File

@@ -26,17 +26,18 @@ namespace Barotrauma.Items.Components
set
{
textColor = new Color(ToolBox.ParseToVector4(value));
if (textBlock != null) textBlock.TextColor = textColor;
}
}
private GUITextBlock TextBlock
{
get
{
if (textBlock==null)
if (textBlock == null)
{
textBlock = new GUITextBlock(new Rectangle(item.Rect.X,-item.Rect.Y,item.Rect.Width, item.Rect.Height), "",
Color.Transparent, Color.Black,
Color.Transparent, textColor,
Alignment.TopLeft, Alignment.Center,
null, null, true);
textBlock.Font = GUI.SmallFont;
@@ -46,7 +47,7 @@ namespace Barotrauma.Items.Components
return textBlock;
}
}
public override void Move(Vector2 amount)
{
textBlock.Rect = new Rectangle(item.Rect.X, -item.Rect.Y, item.Rect.Width, item.Rect.Height);

View File

@@ -286,7 +286,7 @@ namespace Barotrauma
for (int i = 0; i<dummyCharacter.Inventory.SlotPositions.Length; i++)
{
dummyCharacter.Inventory.SlotPositions[i].X += leftPanel.Rect.Width+10;
dummyCharacter.Inventory.SlotPositions[i].X += false ? -1000 : leftPanel.Rect.Width+10;
}
Character.Controlled = dummyCharacter;
@@ -436,23 +436,16 @@ namespace Barotrauma
characterMode = !characterMode;
//button.Color = (characterMode) ? Color.Gold : Color.White;
wiringMode = false;
if (characterMode)
{
if (wiringMode) ToggleWiringMode();
CreateDummyCharacter();
}
else if (dummyCharacter != null)
{
foreach (Item item in dummyCharacter.Inventory.Items)
{
if (item == null) continue;
item.Remove();
}
dummyCharacter.Remove();
dummyCharacter = null;
{
RemoveDummyCharacter();
}
foreach (MapEntity me in MapEntity.mapEntityList)
@@ -473,22 +466,45 @@ namespace Barotrauma
{
wiringMode = !wiringMode;
if (characterMode != wiringMode) ToggleCharacterMode();
characterMode = false;
if (wiringMode)
{
CreateDummyCharacter();
var screwdriverPrefab = ItemPrefab.list.Find(ip => ip.Name == "Screwdriver") as ItemPrefab;
var item = new Item(screwdriverPrefab, Vector2.Zero, null);
dummyCharacter.Inventory.TryPutItem(item, new List<LimbSlot>() { LimbSlot.RightHand }, false);
dummyCharacter.Inventory.TryPutItem(item, new List<LimbSlot>() {LimbSlot.RightHand}, false);
wiringToolPanel = CreateWiringPanel();
}
else
{
RemoveDummyCharacter();
}
return true;
}
private void RemoveDummyCharacter()
{
if (dummyCharacter == null) return;
foreach (Item item in dummyCharacter.Inventory.Items)
{
if (item == null) continue;
item.Remove();
}
dummyCharacter.Remove();
dummyCharacter = null;
}
private GUIFrame CreateWiringPanel()
{
GUIFrame frame = new GUIFrame(new Rectangle(0,0,50,300), null, Alignment.Right | Alignment.CenterY, GUI.Style);
@@ -627,7 +643,7 @@ namespace Barotrauma
//cam.Zoom = MathHelper.Clamp(cam.Zoom + (PlayerInput.ScrollWheelSpeed / 1000.0f)*cam.Zoom, 0.1f, 2.0f);
}
if (characterMode)
if (characterMode || wiringMode)
{
if (dummyCharacter == null || Entity.FindEntityByID(dummyCharacter.ID) != dummyCharacter)
{
@@ -709,7 +725,7 @@ namespace Barotrauma
Submarine.Draw(spriteBatch, true);
if (!characterMode)
if (!characterMode && !wiringMode)
{
if (MapEntityPrefab.Selected != null) MapEntityPrefab.Selected.UpdatePlacing(spriteBatch, cam);
@@ -728,7 +744,7 @@ namespace Barotrauma
//EntityPrefab.DrawList(spriteBatch, new Vector2(20,50));
if (characterMode && dummyCharacter != null)
if ((characterMode || wiringMode) && dummyCharacter != null)
{
dummyCharacter.AnimController.FindHull(dummyCharacter.CursorWorldPosition, false);
@@ -747,14 +763,9 @@ namespace Barotrauma
if (PlayerInput.KeyHit(InputType.Select) && dummyCharacter.ClosestItem != dummyCharacter.SelectedConstruction) dummyCharacter.SelectedConstruction = null;
}
if (!wiringMode)
{
dummyCharacter.DrawHUD(spriteBatch, cam);
}
else
{
wiringToolPanel.Draw(spriteBatch);
}
dummyCharacter.DrawHUD(spriteBatch, cam);
if (wiringMode) wiringToolPanel.Draw(spriteBatch);
}
else
{