mirror of
https://github.com/Outer-Wilds-New-Horizons/new-horizons.git
synced 2025-12-11 20:15:44 +01:00
Added grayscale if a planet is rumored but not explored
This commit is contained in:
parent
464484a94d
commit
3d200a19db
@ -47,9 +47,10 @@ namespace NewHorizons.Builder.ShipLog
|
|||||||
public static ShipLogAstroObject[][] ConstructMapMode(string systemName, GameObject transformParent, int layer)
|
public static ShipLogAstroObject[][] ConstructMapMode(string systemName, GameObject transformParent, int layer)
|
||||||
{
|
{
|
||||||
MapModeObject rootObject = ConstructPrimaryNode(systemName);
|
MapModeObject rootObject = ConstructPrimaryNode(systemName);
|
||||||
|
Material greyScaleMaterial = GameObject.Find(ShipLogHandler.PAN_ROOT_PATH + "/TimberHearth/Sprite").GetComponent<Image>().material;
|
||||||
if (rootObject.mainBody != null)
|
if (rootObject.mainBody != null)
|
||||||
{
|
{
|
||||||
MakeAllNodes(ref rootObject, transformParent, layer);
|
MakeAllNodes(ref rootObject, transformParent, greyScaleMaterial, layer);
|
||||||
}
|
}
|
||||||
|
|
||||||
int maxAmount = Main.BodyDict[Main.Instance.CurrentStarSystem].Count;
|
int maxAmount = Main.BodyDict[Main.Instance.CurrentStarSystem].Count;
|
||||||
@ -80,13 +81,13 @@ namespace NewHorizons.Builder.ShipLog
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void MakeAllNodes(ref MapModeObject parentNode, GameObject parent, int layer)
|
private static void MakeAllNodes(ref MapModeObject parentNode, GameObject parent, Material greyScaleMaterial, int layer)
|
||||||
{
|
{
|
||||||
MakeNode(ref parentNode, parent, layer);
|
MakeNode(ref parentNode, parent, greyScaleMaterial, layer);
|
||||||
for (var i = 0; i < parentNode.children.Count; i++)
|
for (var i = 0; i < parentNode.children.Count; i++)
|
||||||
{
|
{
|
||||||
MapModeObject child = parentNode.children[i];
|
MapModeObject child = parentNode.children[i];
|
||||||
MakeAllNodes(ref child, parent, layer);
|
MakeAllNodes(ref child, parent, greyScaleMaterial, layer);
|
||||||
parentNode.children[i] = child;
|
parentNode.children[i] = child;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -117,7 +118,7 @@ namespace NewHorizons.Builder.ShipLog
|
|||||||
return newImageGO;
|
return newImageGO;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void CreateShipLogAstroObject(GameObject nodeGO, ref MapModeObject node, GameObject referenceUnviewedSprite, int layer)
|
private static void CreateShipLogAstroObject(GameObject nodeGO, ref MapModeObject node, GameObject referenceUnviewedSprite, Material greyScaleMaterial, int layer)
|
||||||
{
|
{
|
||||||
const float unviewedIconOffset = 15;
|
const float unviewedIconOffset = 15;
|
||||||
ShipLogAstroObject astroObject = nodeGO.AddComponent<ShipLogAstroObject>();
|
ShipLogAstroObject astroObject = nodeGO.AddComponent<ShipLogAstroObject>();
|
||||||
@ -126,6 +127,14 @@ namespace NewHorizons.Builder.ShipLog
|
|||||||
string imagePath = node.mainBody.Config.ShipLog?.mapMode?.revealedSprite ?? "DEFAULT";
|
string imagePath = node.mainBody.Config.ShipLog?.mapMode?.revealedSprite ?? "DEFAULT";
|
||||||
string outlinePath = node.mainBody.Config.ShipLog?.mapMode?.outlineSprite ?? imagePath;
|
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._imageObj = CreateImage(nodeGO, node.mainBody.Mod.Assets, imagePath, node.mainBody.Config.Name + " Revealed", layer);
|
||||||
|
if (ShipLogHandler.BodyHasEntries(node.mainBody))
|
||||||
|
{
|
||||||
|
Image revealedImage = astroObject._imageObj.GetComponent<Image>();
|
||||||
|
astroObject._greyscaleMaterial = greyScaleMaterial;
|
||||||
|
revealedImage.material = greyScaleMaterial;
|
||||||
|
revealedImage.color = Color.white;
|
||||||
|
astroObject._image = revealedImage;
|
||||||
|
}
|
||||||
astroObject._outlineObj = CreateImage(nodeGO, node.mainBody.Mod.Assets, outlinePath, node.mainBody.Config.Name + " Outline", layer);
|
astroObject._outlineObj = CreateImage(nodeGO, node.mainBody.Mod.Assets, outlinePath, node.mainBody.Config.Name + " Outline", layer);
|
||||||
|
|
||||||
astroObject._unviewedObj = Object.Instantiate(referenceUnviewedSprite, nodeGO.transform, false);
|
astroObject._unviewedObj = Object.Instantiate(referenceUnviewedSprite, nodeGO.transform, false);
|
||||||
@ -143,7 +152,7 @@ namespace NewHorizons.Builder.ShipLog
|
|||||||
node.astroObject = astroObject;
|
node.astroObject = astroObject;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void ConnectNodeToLastSibling(MapModeObject node)
|
private static void ConnectNodeToLastSibling(MapModeObject node, Material greyScaleMaterial)
|
||||||
{
|
{
|
||||||
Vector2 fromPosition = node.astroObject.transform.localPosition;
|
Vector2 fromPosition = node.astroObject.transform.localPosition;
|
||||||
Vector2 toPosition = node.lastSibling.astroObject.transform.localPosition;
|
Vector2 toPosition = node.lastSibling.astroObject.transform.localPosition;
|
||||||
@ -167,14 +176,14 @@ namespace NewHorizons.Builder.ShipLog
|
|||||||
};
|
};
|
||||||
|
|
||||||
ShipLogDetail linkDetail = newLink.AddComponent<ShipLogDetail>();
|
ShipLogDetail linkDetail = newLink.AddComponent<ShipLogDetail>();
|
||||||
linkDetail.Init(linkDetailInfo, linkImage, linkImage);
|
linkDetail.Init(linkDetailInfo, linkImage, linkImage, greyScaleMaterial);
|
||||||
|
|
||||||
transform.SetParent(node.astroObject.transform);
|
transform.SetParent(node.astroObject.transform);
|
||||||
transform.SetAsFirstSibling();
|
transform.SetAsFirstSibling();
|
||||||
newLink.SetActive(true);
|
newLink.SetActive(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void MakeDetail(ShipLogModule.ShipLogDetailInfo info, Transform parent, IModAssets assets)
|
private static void MakeDetail(ShipLogModule.ShipLogDetailInfo info, Transform parent, IModAssets assets, Material greyScaleMaterial)
|
||||||
{
|
{
|
||||||
GameObject detailGameObject = new GameObject("Detail");
|
GameObject detailGameObject = new GameObject("Detail");
|
||||||
detailGameObject.transform.SetParent(parent);
|
detailGameObject.transform.SetParent(parent);
|
||||||
@ -192,11 +201,11 @@ namespace NewHorizons.Builder.ShipLog
|
|||||||
Image outlineImage = CreateImage(detailGameObject, assets, outlinePath, "Detail Outline", parent.gameObject.layer).GetComponent<Image>();
|
Image outlineImage = CreateImage(detailGameObject, assets, outlinePath, "Detail Outline", parent.gameObject.layer).GetComponent<Image>();
|
||||||
|
|
||||||
ShipLogDetail detail = detailGameObject.AddComponent<ShipLogDetail>();
|
ShipLogDetail detail = detailGameObject.AddComponent<ShipLogDetail>();
|
||||||
detail.Init(info, revealedImage, outlineImage);
|
detail.Init(info, revealedImage, outlineImage, greyScaleMaterial);
|
||||||
detailGameObject.SetActive(true);
|
detailGameObject.SetActive(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void MakeDetails(MapModeObject node)
|
private static void MakeDetails(MapModeObject node, Material greyScaleMaterial)
|
||||||
{
|
{
|
||||||
if (node.mainBody.Config.ShipLog?.mapMode?.details?.Length > 0)
|
if (node.mainBody.Config.ShipLog?.mapMode?.details?.Length > 0)
|
||||||
{
|
{
|
||||||
@ -211,13 +220,13 @@ namespace NewHorizons.Builder.ShipLog
|
|||||||
|
|
||||||
foreach (ShipLogModule.ShipLogDetailInfo detailInfo in node.mainBody.Config.ShipLog.mapMode.details)
|
foreach (ShipLogModule.ShipLogDetailInfo detailInfo in node.mainBody.Config.ShipLog.mapMode.details)
|
||||||
{
|
{
|
||||||
MakeDetail(detailInfo, detailsTransform, node.mainBody.Mod.Assets);
|
MakeDetail(detailInfo, detailsTransform, node.mainBody.Mod.Assets, greyScaleMaterial);
|
||||||
}
|
}
|
||||||
detailsParent.SetActive(true);
|
detailsParent.SetActive(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void MakeNode(ref MapModeObject node, GameObject parent, int layer)
|
private static void MakeNode(ref MapModeObject node, GameObject parent, Material greyScaleMaterial, int layer)
|
||||||
{
|
{
|
||||||
const float padding = 250f;
|
const float padding = 250f;
|
||||||
|
|
||||||
@ -246,9 +255,9 @@ namespace NewHorizons.Builder.ShipLog
|
|||||||
transform.localPosition = new Vector3(position.x, position.y, 0);
|
transform.localPosition = new Vector3(position.x, position.y, 0);
|
||||||
transform.localRotation = Quaternion.identity;
|
transform.localRotation = Quaternion.identity;
|
||||||
transform.localScale = Vector3.one * scale;
|
transform.localScale = Vector3.one * scale;
|
||||||
CreateShipLogAstroObject(newNodeGO, ref node, GameObject.Find("Ship_Body/Module_Cabin/Systems_Cabin/ShipLogPivot/ShipLog/ShipLogPivot/ShipLogCanvas/MapMode/ScaleRoot/PanRoot/TimberHearth/UnviewedIcon"), layer);
|
CreateShipLogAstroObject(newNodeGO, ref node, GameObject.Find(ShipLogHandler.PAN_ROOT_PATH + "/TimberHearth/UnviewedIcon"), greyScaleMaterial, layer);
|
||||||
if (node.lastSibling != null) ConnectNodeToLastSibling(node);
|
if (node.lastSibling != null) ConnectNodeToLastSibling(node, greyScaleMaterial);
|
||||||
MakeDetails(node);
|
MakeDetails(node, greyScaleMaterial);
|
||||||
transform.SetAsFirstSibling();
|
transform.SetAsFirstSibling();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,4 +1,5 @@
|
|||||||
using NewHorizons.External;
|
using System;
|
||||||
|
using NewHorizons.External;
|
||||||
using OWML.Common;
|
using OWML.Common;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
using UnityEngine.UI;
|
using UnityEngine.UI;
|
||||||
@ -8,17 +9,19 @@ namespace NewHorizons.Components
|
|||||||
{
|
{
|
||||||
public class ShipLogDetail : MonoBehaviour
|
public class ShipLogDetail : MonoBehaviour
|
||||||
{
|
{
|
||||||
private Image revealedImage;
|
private Image _revealedImage;
|
||||||
private Image outlineImage;
|
private Image _outlineImage;
|
||||||
private ShipLogModule.ShipLogDetailInfo detailInfo;
|
private Material _greyScaleMaterial;
|
||||||
|
private ShipLogModule.ShipLogDetailInfo _detailInfo;
|
||||||
|
|
||||||
public void Init(ShipLogModule.ShipLogDetailInfo info, Image revealed, Image outline)
|
public void Init(ShipLogModule.ShipLogDetailInfo info, Image revealed, Image outline, Material greyScale)
|
||||||
{
|
{
|
||||||
detailInfo = info;
|
_detailInfo = info;
|
||||||
revealedImage = revealed;
|
_revealedImage = revealed;
|
||||||
outlineImage = outline;
|
_outlineImage = outline;
|
||||||
revealedImage.enabled = false;
|
_greyScaleMaterial = greyScale;
|
||||||
outlineImage.enabled = false;
|
_revealedImage.enabled = false;
|
||||||
|
_outlineImage.enabled = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void UpdateState(ShipLogEntry.State parentState)
|
public void UpdateState(ShipLogEntry.State parentState)
|
||||||
@ -26,22 +29,32 @@ namespace NewHorizons.Components
|
|||||||
switch (parentState)
|
switch (parentState)
|
||||||
{
|
{
|
||||||
case ShipLogEntry.State.Explored:
|
case ShipLogEntry.State.Explored:
|
||||||
outlineImage.enabled = false;
|
_outlineImage.enabled = false;
|
||||||
revealedImage.enabled = true;
|
_revealedImage.enabled = true;
|
||||||
|
SetGreyScale(false);
|
||||||
break;
|
break;
|
||||||
case ShipLogEntry.State.Rumored:
|
case ShipLogEntry.State.Rumored:
|
||||||
revealedImage.enabled = false;
|
_outlineImage.enabled = false;
|
||||||
outlineImage.enabled = true;
|
_revealedImage.enabled = true;
|
||||||
|
SetGreyScale(true);
|
||||||
break;
|
break;
|
||||||
case ShipLogEntry.State.Hidden:
|
case ShipLogEntry.State.Hidden:
|
||||||
revealedImage.enabled = false;
|
_revealedImage.enabled = false;
|
||||||
outlineImage.enabled = !detailInfo.invisibleWhenHidden;
|
_outlineImage.enabled = !_detailInfo.invisibleWhenHidden;
|
||||||
break;
|
break;
|
||||||
case ShipLogEntry.State.None:
|
case ShipLogEntry.State.None:
|
||||||
revealedImage.enabled = false;
|
_revealedImage.enabled = false;
|
||||||
outlineImage.enabled = false;
|
_outlineImage.enabled = false;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
Logger.LogError("Invalid ShipLogEntryState for " + _revealedImage.transform.parent.parent.gameObject.name);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void SetGreyScale(bool greyScale)
|
||||||
|
{
|
||||||
|
_revealedImage.material = (greyScale ? _greyScaleMaterial : null);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -33,7 +33,7 @@ namespace NewHorizons.Builder.Handlers
|
|||||||
|
|
||||||
public static string GetAstroObjectId(NewHorizonsBody body)
|
public static string GetAstroObjectId(NewHorizonsBody body)
|
||||||
{
|
{
|
||||||
if (_astroIdToBody.ContainsValue(body))
|
if (BodyHasEntries(body))
|
||||||
{
|
{
|
||||||
return CollectionUtilities.KeyByValue(_astroIdToBody, body);
|
return CollectionUtilities.KeyByValue(_astroIdToBody, body);
|
||||||
}
|
}
|
||||||
@ -42,5 +42,10 @@ namespace NewHorizons.Builder.Handlers
|
|||||||
return body.Config.Name;
|
return body.Config.Name;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static bool BodyHasEntries(NewHorizonsBody body)
|
||||||
|
{
|
||||||
|
return _astroIdToBody.ContainsValue(body);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user