Separate draw/update methods for editingHUD & resizing
This commit is contained in:
@@ -918,16 +918,17 @@ namespace Barotrauma
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void DrawEditing(SpriteBatch spriteBatch, Camera cam)
|
public override void UpdateEditing(Camera cam)
|
||||||
{
|
{
|
||||||
if (editingHUD==null || editingHUD.UserData as Item != this)
|
if (editingHUD == null || editingHUD.UserData as Item != this)
|
||||||
{
|
{
|
||||||
editingHUD = CreateEditingHUD();
|
editingHUD = CreateEditingHUD(Screen.Selected != GameMain.EditMapScreen);
|
||||||
}
|
}
|
||||||
|
|
||||||
editingHUD.Draw(spriteBatch);
|
|
||||||
editingHUD.Update((float)Timing.Step);
|
editingHUD.Update((float)Timing.Step);
|
||||||
|
|
||||||
|
if (Screen.Selected != GameMain.EditMapScreen) return;
|
||||||
|
|
||||||
if (!prefab.IsLinkable) return;
|
if (!prefab.IsLinkable) return;
|
||||||
|
|
||||||
if (!PlayerInput.LeftButtonClicked() || !PlayerInput.KeyDown(Keys.Space)) return;
|
if (!PlayerInput.LeftButtonClicked() || !PlayerInput.KeyDown(Keys.Space)) return;
|
||||||
@@ -945,18 +946,9 @@ namespace Barotrauma
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void DrawInGameEditing(SpriteBatch spriteBatch)
|
public override void DrawEditing(SpriteBatch spriteBatch, Camera cam)
|
||||||
{
|
{
|
||||||
if (editingHUD == null || editingHUD.UserData as Item != this)
|
if (editingHUD != null) editingHUD.Draw(spriteBatch);
|
||||||
{
|
|
||||||
editingHUD = CreateEditingHUD(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (editingHUD.Rect.Height > 60)
|
|
||||||
{
|
|
||||||
editingHUD.Update((float)Timing.Step);
|
|
||||||
editingHUD.Draw(spriteBatch);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private GUIComponent CreateEditingHUD(bool inGame=false)
|
private GUIComponent CreateEditingHUD(bool inGame=false)
|
||||||
@@ -1063,7 +1055,7 @@ namespace Barotrauma
|
|||||||
return editingHUD;
|
return editingHUD;
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual void DrawHUD(SpriteBatch spriteBatch, Character character)
|
public virtual void DrawHUD(SpriteBatch spriteBatch, Camera cam, Character character)
|
||||||
{
|
{
|
||||||
if (condition <= 0.0f)
|
if (condition <= 0.0f)
|
||||||
{
|
{
|
||||||
@@ -1073,7 +1065,7 @@ namespace Barotrauma
|
|||||||
|
|
||||||
if (HasInGameEditableProperties)
|
if (HasInGameEditableProperties)
|
||||||
{
|
{
|
||||||
DrawInGameEditing(spriteBatch);
|
DrawEditing(spriteBatch, cam);
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach (ItemComponent ic in components)
|
foreach (ItemComponent ic in components)
|
||||||
@@ -1082,7 +1074,7 @@ namespace Barotrauma
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual void UpdateHUD(Character character)
|
public virtual void UpdateHUD(Camera cam, Character character)
|
||||||
{
|
{
|
||||||
if (condition <= 0.0f)
|
if (condition <= 0.0f)
|
||||||
{
|
{
|
||||||
@@ -1090,6 +1082,10 @@ namespace Barotrauma
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (HasInGameEditableProperties)
|
||||||
|
{
|
||||||
|
UpdateEditing(cam);
|
||||||
|
}
|
||||||
|
|
||||||
foreach (ItemComponent ic in components)
|
foreach (ItemComponent ic in components)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -149,15 +149,14 @@ namespace Barotrauma
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void DrawEditing(SpriteBatch spriteBatch, Camera cam)
|
public override void UpdateEditing(Camera cam)
|
||||||
{
|
{
|
||||||
if (editingHUD == null || editingHUD.UserData as LinkedSubmarine != this)
|
if (editingHUD == null || editingHUD.UserData as LinkedSubmarine != this)
|
||||||
{
|
{
|
||||||
editingHUD = CreateEditingHUD();
|
editingHUD = CreateEditingHUD();
|
||||||
}
|
}
|
||||||
|
|
||||||
editingHUD.Update(0.016f);
|
editingHUD.Update((float)Timing.Step);
|
||||||
editingHUD.Draw(spriteBatch);
|
|
||||||
|
|
||||||
if (!PlayerInput.LeftButtonClicked() || !PlayerInput.KeyDown(Keys.Space)) return;
|
if (!PlayerInput.LeftButtonClicked() || !PlayerInput.KeyDown(Keys.Space)) return;
|
||||||
|
|
||||||
@@ -178,6 +177,13 @@ namespace Barotrauma
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override void DrawEditing(SpriteBatch spriteBatch, Camera cam)
|
||||||
|
{
|
||||||
|
if (editingHUD == null) return;
|
||||||
|
|
||||||
|
editingHUD.Draw(spriteBatch);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
private GUIComponent CreateEditingHUD(bool inGame = false)
|
private GUIComponent CreateEditingHUD(bool inGame = false)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ namespace Barotrauma
|
|||||||
public static List<MapEntity> mapEntityList = new List<MapEntity>();
|
public static List<MapEntity> mapEntityList = new List<MapEntity>();
|
||||||
|
|
||||||
//which entities have been selected for editing
|
//which entities have been selected for editing
|
||||||
protected static List<MapEntity> selectedList = new List<MapEntity>();
|
public static List<MapEntity> selectedList = new List<MapEntity>();
|
||||||
|
|
||||||
protected static GUIComponent editingHUD;
|
protected static GUIComponent editingHUD;
|
||||||
|
|
||||||
@@ -463,18 +463,15 @@ namespace Barotrauma
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
public static void UpdateEditor(Camera cam)
|
||||||
/// Call DrawEditing() if only one entity is selected
|
|
||||||
/// </summary>
|
|
||||||
public static void Edit(SpriteBatch spriteBatch, Camera cam)
|
|
||||||
{
|
{
|
||||||
if (selectedList.Count == 1)
|
if (selectedList.Count == 1)
|
||||||
{
|
{
|
||||||
selectedList[0].DrawEditing(spriteBatch, cam);
|
selectedList[0].UpdateEditing(cam);
|
||||||
|
|
||||||
if (selectedList[0].ResizeHorizontal || selectedList[0].ResizeVertical)
|
if (selectedList[0].ResizeHorizontal || selectedList[0].ResizeVertical)
|
||||||
{
|
{
|
||||||
selectedList[0].DrawResizing(spriteBatch, cam);
|
selectedList[0].UpdateResizing(cam);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -493,6 +490,19 @@ namespace Barotrauma
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void DrawEditor(SpriteBatch spriteBatch, Camera cam)
|
||||||
|
{
|
||||||
|
if (selectedList.Count == 1)
|
||||||
|
{
|
||||||
|
selectedList[0].DrawEditing(spriteBatch, cam);
|
||||||
|
|
||||||
|
if (selectedList[0].ResizeHorizontal || selectedList[0].ResizeVertical)
|
||||||
|
{
|
||||||
|
selectedList[0].DrawResizing(spriteBatch, cam);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public static void DeselectAll()
|
public static void DeselectAll()
|
||||||
{
|
{
|
||||||
foreach (MapEntity e in selectedList)
|
foreach (MapEntity e in selectedList)
|
||||||
@@ -525,9 +535,11 @@ namespace Barotrauma
|
|||||||
Move(-relative * 2.0f);
|
Move(-relative * 2.0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public virtual void UpdateEditing(Camera cam) { }
|
||||||
|
|
||||||
public virtual void DrawEditing(SpriteBatch spriteBatch, Camera cam) {}
|
public virtual void DrawEditing(SpriteBatch spriteBatch, Camera cam) {}
|
||||||
|
|
||||||
private void DrawResizing(SpriteBatch spriteBatch, Camera cam)
|
private void UpdateResizing(Camera cam)
|
||||||
{
|
{
|
||||||
isHighlighted = true;
|
isHighlighted = true;
|
||||||
|
|
||||||
@@ -538,50 +550,43 @@ namespace Barotrauma
|
|||||||
{
|
{
|
||||||
for (int y = StartY; y < 2; y += 2)
|
for (int y = StartY; y < 2; y += 2)
|
||||||
{
|
{
|
||||||
|
|
||||||
Vector2 handlePos = cam.WorldToScreen(Position + new Vector2(x * (rect.Width * 0.5f + 5), y * (rect.Height * 0.5f + 5)));
|
Vector2 handlePos = cam.WorldToScreen(Position + new Vector2(x * (rect.Width * 0.5f + 5), y * (rect.Height * 0.5f + 5)));
|
||||||
|
|
||||||
bool highlighted = Vector2.Distance(PlayerInput.MousePosition, handlePos)<5.0f;
|
bool highlighted = Vector2.Distance(PlayerInput.MousePosition, handlePos) < 5.0f;
|
||||||
|
|
||||||
GUI.DrawRectangle(spriteBatch, handlePos - new Vector2(3.0f, 3.0f), new Vector2(6.0f, 6.0f), Color.White * (highlighted ? 1.0f : 0.6f), true,0, (int)Math.Max(1.5f / GameScreen.Selected.Cam.Zoom, 1.0f));
|
if (highlighted && PlayerInput.LeftButtonDown())
|
||||||
|
|
||||||
if (highlighted)
|
|
||||||
{
|
{
|
||||||
if (PlayerInput.LeftButtonDown())
|
selectionPos = Vector2.Zero;
|
||||||
{
|
resizeDirX = x;
|
||||||
selectionPos = Vector2.Zero;
|
resizeDirY = y;
|
||||||
resizeDirX = x;
|
resizing = true;
|
||||||
resizeDirY = y;
|
|
||||||
resizing = true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (resizing)
|
if (resizing)
|
||||||
{
|
{
|
||||||
|
|
||||||
Vector2 placePosition = new Vector2(rect.X, rect.Y);
|
Vector2 placePosition = new Vector2(rect.X, rect.Y);
|
||||||
Vector2 placeSize = new Vector2(rect.Width, rect.Height);
|
Vector2 placeSize = new Vector2(rect.Width, rect.Height);
|
||||||
|
|
||||||
Vector2 mousePos = Submarine.MouseToWorldGrid(cam, Submarine.MainSub);
|
Vector2 mousePos = Submarine.MouseToWorldGrid(cam, Submarine.MainSub);
|
||||||
|
|
||||||
if (resizeDirX >0)
|
if (resizeDirX > 0)
|
||||||
{
|
{
|
||||||
mousePos.X = Math.Max(mousePos.X, rect.X + Submarine.GridSize.X);
|
mousePos.X = Math.Max(mousePos.X, rect.X + Submarine.GridSize.X);
|
||||||
placeSize.X = mousePos.X - placePosition.X;
|
placeSize.X = mousePos.X - placePosition.X;
|
||||||
}
|
}
|
||||||
else if (resizeDirX <0)
|
else if (resizeDirX < 0)
|
||||||
{
|
{
|
||||||
mousePos.X = Math.Min(mousePos.X, rect.Right - Submarine.GridSize.X);
|
mousePos.X = Math.Min(mousePos.X, rect.Right - Submarine.GridSize.X);
|
||||||
|
|
||||||
placeSize.X = (placePosition.X + placeSize.X)-mousePos.X;
|
placeSize.X = (placePosition.X + placeSize.X) - mousePos.X;
|
||||||
placePosition.X = mousePos.X;
|
placePosition.X = mousePos.X;
|
||||||
}
|
}
|
||||||
if (resizeDirY < 0)
|
if (resizeDirY < 0)
|
||||||
{
|
{
|
||||||
mousePos.Y = Math.Min(mousePos.Y, rect.Y - Submarine.GridSize.Y);
|
mousePos.Y = Math.Min(mousePos.Y, rect.Y - Submarine.GridSize.Y);
|
||||||
placeSize.Y = placePosition.Y-mousePos.Y;
|
placeSize.Y = placePosition.Y - mousePos.Y;
|
||||||
}
|
}
|
||||||
else if (resizeDirY > 0)
|
else if (resizeDirY > 0)
|
||||||
{
|
{
|
||||||
@@ -603,6 +608,31 @@ namespace Barotrauma
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void DrawResizing(SpriteBatch spriteBatch, Camera cam)
|
||||||
|
{
|
||||||
|
isHighlighted = true;
|
||||||
|
|
||||||
|
int startX = ResizeHorizontal ? -1 : 0;
|
||||||
|
int StartY = ResizeVertical ? -1 : 0;
|
||||||
|
|
||||||
|
for (int x = startX; x < 2; x += 2)
|
||||||
|
{
|
||||||
|
for (int y = StartY; y < 2; y += 2)
|
||||||
|
{
|
||||||
|
Vector2 handlePos = cam.WorldToScreen(Position + new Vector2(x * (rect.Width * 0.5f + 5), y * (rect.Height * 0.5f + 5)));
|
||||||
|
|
||||||
|
bool highlighted = Vector2.Distance(PlayerInput.MousePosition, handlePos)<5.0f;
|
||||||
|
|
||||||
|
GUI.DrawRectangle(spriteBatch,
|
||||||
|
handlePos - new Vector2(3.0f, 3.0f),
|
||||||
|
new Vector2(6.0f, 6.0f),
|
||||||
|
Color.White * (highlighted ? 1.0f : 0.6f),
|
||||||
|
true, 0,
|
||||||
|
(int)Math.Max(1.5f / GameScreen.Selected.Cam.Zoom, 1.0f));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public static List<MapEntity> FindMapEntities(Vector2 pos)
|
public static List<MapEntity> FindMapEntities(Vector2 pos)
|
||||||
{
|
{
|
||||||
List<MapEntity> foundEntities = new List<MapEntity>();
|
List<MapEntity> foundEntities = new List<MapEntity>();
|
||||||
|
|||||||
@@ -891,6 +891,8 @@ namespace Barotrauma
|
|||||||
if (!characterMode && !wiringMode)
|
if (!characterMode && !wiringMode)
|
||||||
{
|
{
|
||||||
if (MapEntityPrefab.Selected != null) MapEntityPrefab.Selected.UpdatePlacing(cam);
|
if (MapEntityPrefab.Selected != null) MapEntityPrefab.Selected.UpdatePlacing(cam);
|
||||||
|
|
||||||
|
MapEntity.UpdateEditor(cam);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((characterMode || wiringMode) && dummyCharacter != null)
|
if ((characterMode || wiringMode) && dummyCharacter != null)
|
||||||
@@ -914,7 +916,7 @@ namespace Barotrauma
|
|||||||
{
|
{
|
||||||
if (dummyCharacter.SelectedConstruction != null)
|
if (dummyCharacter.SelectedConstruction != null)
|
||||||
{
|
{
|
||||||
dummyCharacter.SelectedConstruction.UpdateHUD(dummyCharacter);
|
dummyCharacter.SelectedConstruction.UpdateHUD(cam, dummyCharacter);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (PlayerInput.KeyHit(InputType.Select) && dummyCharacter.ClosestItem != dummyCharacter.SelectedConstruction) dummyCharacter.SelectedConstruction = null;
|
if (PlayerInput.KeyHit(InputType.Select) && dummyCharacter.ClosestItem != dummyCharacter.SelectedConstruction) dummyCharacter.SelectedConstruction = null;
|
||||||
@@ -971,7 +973,7 @@ namespace Barotrauma
|
|||||||
{
|
{
|
||||||
if (dummyCharacter.SelectedConstruction != null)
|
if (dummyCharacter.SelectedConstruction != null)
|
||||||
{
|
{
|
||||||
dummyCharacter.SelectedConstruction.DrawHUD(spriteBatch, dummyCharacter);
|
dummyCharacter.SelectedConstruction.DrawHUD(spriteBatch, cam, dummyCharacter);
|
||||||
}
|
}
|
||||||
|
|
||||||
dummyCharacter.DrawHUD(spriteBatch, cam);
|
dummyCharacter.DrawHUD(spriteBatch, cam);
|
||||||
@@ -993,7 +995,7 @@ namespace Barotrauma
|
|||||||
GUItabs[selectedTab].Draw(spriteBatch);
|
GUItabs[selectedTab].Draw(spriteBatch);
|
||||||
}
|
}
|
||||||
|
|
||||||
MapEntity.Edit(spriteBatch, cam);
|
MapEntity.DrawEditor(spriteBatch, cam);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (tutorial != null) tutorial.Draw(spriteBatch);
|
if (tutorial != null) tutorial.Draw(spriteBatch);
|
||||||
|
|||||||
@@ -113,7 +113,7 @@ namespace Barotrauma
|
|||||||
{
|
{
|
||||||
if (Character.Controlled.SelectedConstruction == Character.Controlled.ClosestItem)
|
if (Character.Controlled.SelectedConstruction == Character.Controlled.ClosestItem)
|
||||||
{
|
{
|
||||||
Character.Controlled.SelectedConstruction.UpdateHUD(Character.Controlled);
|
Character.Controlled.SelectedConstruction.UpdateHUD(cam, Character.Controlled);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Character.UpdateAll(cam, (float)deltaTime);
|
Character.UpdateAll(cam, (float)deltaTime);
|
||||||
@@ -181,7 +181,7 @@ namespace Barotrauma
|
|||||||
{
|
{
|
||||||
if (Character.Controlled.SelectedConstruction == Character.Controlled.ClosestItem)
|
if (Character.Controlled.SelectedConstruction == Character.Controlled.ClosestItem)
|
||||||
{
|
{
|
||||||
Character.Controlled.SelectedConstruction.DrawHUD(spriteBatch, Character.Controlled);
|
Character.Controlled.SelectedConstruction.DrawHUD(spriteBatch, cam, Character.Controlled);
|
||||||
}
|
}
|
||||||
else if (!Character.Controlled.SelectedConstruction.IsInPickRange(Character.Controlled.WorldPosition))
|
else if (!Character.Controlled.SelectedConstruction.IsInPickRange(Character.Controlled.WorldPosition))
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user