Client LuaCsForBarotrauma
BarotraumaClient/ClientSource/Items/Components/EntitySpawnerComponent.cs
1 using System;
2 using Microsoft.Xna.Framework;
3 using Microsoft.Xna.Framework.Graphics;
4 
6 {
7  internal partial class EntitySpawnerComponent
8  {
9  public Vector2 DrawSize => Vector2.Zero;
10 
11  public void Draw(SpriteBatch spriteBatch, bool editing, float itemDepth = -1, Color? overrideColor = null)
12  {
13  if (!editing) { return; }
14 
15  switch (SpawnAreaShape)
16  {
17  case AreaShape.Rectangle:
18  {
19  RectangleF rect = GetAreaRectangle(SpawnAreaBounds, SpawnAreaOffset, draw: true);
20  GUI.DrawRectangle(spriteBatch, rect.Location, rect.Size, GUIStyle.Red, isFilled: false, 0f, 4f);
21 
22  if (MaximumAmountRangePadding > 0f)
23  {
24  rect.Inflate(MaximumAmountRangePadding, MaximumAmountRangePadding);
25  GUI.DrawRectangle(spriteBatch, rect.Location, rect.Size, GUIStyle.Red, isFilled: false, 0f, 2f);
26  }
27  break;
28  }
29  case AreaShape.Circle:
30  Vector2 center = item.WorldPosition;
31  center += SpawnAreaOffset;
32  center.Y = -center.Y;
33  spriteBatch.DrawCircle(center, SpawnAreaRadius, 32, GUIStyle.Red, thickness: 4f);
34 
35  if (MaximumAmountRangePadding > 0f)
36  {
37  spriteBatch.DrawCircle(center, SpawnAreaRadius + MaximumAmountRangePadding, 32, GUIStyle.Red, thickness: 2f);
38  }
39  break;
40  }
41 
42  if (!OnlySpawnWhenCrewInRange) { return; }
43 
44  switch (CrewAreaShape)
45  {
46  case AreaShape.Rectangle:
47  {
48  RectangleF rect = GetAreaRectangle(CrewAreaBounds, CrewAreaOffset, draw: true);
49  GUI.DrawRectangle(spriteBatch, rect.Location, rect.Size, GUIStyle.Green, isFilled: false, 0f, 4f);
50  break;
51  }
52  case AreaShape.Circle:
53  Vector2 center = item.WorldPosition;
54  center += CrewAreaOffset;
55  center.Y = -center.Y;
56  spriteBatch.DrawCircle(center, CrewAreaRadius, 32, GUIStyle.Green);
57  break;
58  }
59  }
60  }
61 }