Changed Map Mode Lines

- Lines are now hidden if their parent is hidden
- Better Line Color
This commit is contained in:
Ben C 2022-02-06 12:11:04 -05:00
parent 67372d3bf6
commit 1b320f6fc1
3 changed files with 44 additions and 12 deletions

View File

@ -168,10 +168,12 @@ namespace NewHorizons.Builder.General
const float unviewedIconOffset = 15;
ShipLogAstroObject astroObject = nodeGO.AddComponent<ShipLogAstroObject>();
astroObject._id = GetAstroObjectId(node.mainBody);
string imagePath = node.mainBody.Config.ShipLog?.mapMode?.revealedSprite ?? "DEFAULT";
string outlinePath = node.mainBody.Config.ShipLog?.mapMode?.outlineSprite ?? imagePath;
astroObject._imageObj = CreateImage(nodeGO, node.mainBody.Mod.Assets, imagePath, node.mainBody.Config.Name + " Revealed", layer);
astroObject._outlineObj = CreateImage(nodeGO, node.mainBody.Mod.Assets, outlinePath, node.mainBody.Config.Name + " Outline", layer);
astroObject._unviewedObj = Object.Instantiate(referenceUnviewedSprite, nodeGO.transform, false);
if (node.mainBody.Config.FocalPoint != null)
{
@ -181,6 +183,7 @@ namespace NewHorizons.Builder.General
astroObject.transform.localScale = node.lastSibling.astroObject.transform.localScale;
}
astroObject._invisibleWhenHidden = node.mainBody.Config.ShipLog?.mapMode?.invisibleWhenHidden ?? false;
Rect imageRect = astroObject._imageObj.GetComponent<RectTransform>().rect;
astroObject._unviewedObj.transform.localPosition = new Vector3(imageRect.width / 2 + unviewedIconOffset, imageRect.height / 2 + unviewedIconOffset, 0);
node.astroObject = astroObject;
@ -190,16 +193,28 @@ namespace NewHorizons.Builder.General
{
Vector2 fromPosition = node.astroObject.transform.localPosition;
Vector2 toPosition = node.lastSibling.astroObject.transform.localPosition;
GameObject newLink = new GameObject(node.mainBody.Config.Name + " To " + node.lastSibling.mainBody.Config.Name + " Link_ShipLog");
GameObject newLink = new GameObject("Line_ShipLog");
newLink.layer = node.astroObject.gameObject.layer;
newLink.SetActive(false);
RectTransform transform = newLink.AddComponent<RectTransform>();
transform.SetParent(node.astroObject.transform.parent);
Vector2 center = toPosition + (fromPosition - toPosition) / 2;
transform.localPosition = new Vector3(center.x, center.y, -1);
transform.localRotation = Quaternion.identity;
transform.localScale = node.level % 2 == 0 ? new Vector3(node.astroObject.transform.localScale.x / 5f, Mathf.Abs(fromPosition.y - toPosition.y) / 100f, 1) : new Vector3(Mathf.Abs(fromPosition.x - toPosition.x) / 100f, node.astroObject.transform.localScale.y / 5f , 1);
newLink.AddComponent<Image>();
Image linkImage = newLink.AddComponent<Image>();
linkImage.color = new Color(0.28f, 0.28f, 0.5f, 0.28f);
ShipLogModule.ShipLogDetailInfo linkDetailInfo = new ShipLogModule.ShipLogDetailInfo()
{
invisibleWhenHidden = node.mainBody.Config.ShipLog?.mapMode?.invisibleWhenHidden ?? false
};
ShipLogDetail linkDetail = newLink.AddComponent<ShipLogDetail>();
linkDetail.Init(linkDetailInfo, linkImage, linkImage);
transform.SetParent(node.astroObject.transform);
transform.SetAsFirstSibling();
newLink.SetActive(true);

View File

@ -2,6 +2,7 @@
using OWML.Common;
using UnityEngine;
using UnityEngine.UI;
using Logger = NewHorizons.Utility.Logger;
namespace NewHorizons.Components
{
@ -20,17 +21,26 @@ namespace NewHorizons.Components
outlineImage.enabled = false;
}
public void UpdateState(bool parentRevealed)
public void UpdateState(ShipLogEntry.State parentState)
{
if (parentRevealed)
switch (parentState)
{
revealedImage.enabled = true;
outlineImage.enabled = false;
}
else
{
revealedImage.enabled = false;
outlineImage.enabled = !detailInfo.invisibleWhenHidden;
case ShipLogEntry.State.Explored:
outlineImage.enabled = false;
revealedImage.enabled = true;
break;
case ShipLogEntry.State.Rumored:
revealedImage.enabled = false;
outlineImage.enabled = true;
break;
case ShipLogEntry.State.Hidden:
revealedImage.enabled = false;
outlineImage.enabled = !detailInfo.invisibleWhenHidden;
break;
case ShipLogEntry.State.None:
revealedImage.enabled = false;
outlineImage.enabled = false;
break;
}
}
}

View File

@ -544,10 +544,17 @@ namespace NewHorizons.Tools
Component detail;
if (child.TryGetComponent(typeof(ShipLogDetail), out detail))
{
(detail as ShipLogDetail)?.UpdateState(__instance._state == ShipLogEntry.State.Explored);
(detail as ShipLogDetail)?.UpdateState(__instance._state);
}
}
}
Transform lineObject = __instance.transform.Find("Line_ShipLog");
if (lineObject != null)
{
ShipLogDetail lineDetail = lineObject.gameObject.GetComponent<ShipLogDetail>();
lineDetail.UpdateState(__instance._state);
}
}
public static bool DisableShipLogSandFunnel()