Files

93 lines
3.1 KiB
C#
Raw Permalink Normal View History

using AZTECHWB.Core;
using AZTECHWB.Management;
using Cysharp.Threading.Tasks;
2026-01-09 10:43:40 +09:00
using System;
using UnityEngine;
using UnityEngine.UI;
namespace AZTECHWB.UI
2026-01-09 10:43:40 +09:00
{
public class MiniMap : UIPanel
2026-01-09 10:43:40 +09:00
{
private RectTransform rectTransform;
2026-01-09 10:43:40 +09:00
GameObject target;
private Image MiniMapScreen;
private RectTransform Image_MiniMapIcon;
private Button Button_Close;
2026-01-09 10:43:40 +09:00
public Vector2 worldPos;
public Vector2 worldMin;
public Vector2 worldMax;
public float offset;
public Action onClickCloseButton;
//[SerializeField] Sprite[] miniMapImages;
2026-01-09 10:43:40 +09:00
public override async UniTask Init()
2026-01-09 10:43:40 +09:00
{
rectTransform = transform.GetComponent<RectTransform>();
target = AZTECHAppMain.Instance.cameraController.cameraPivot.gameObject;
2026-01-09 10:43:40 +09:00
MiniMapScreen = GetElement<Image>(nameof(MiniMapScreen));
Image_MiniMapIcon = GetElement<RectTransform>(nameof(Image_MiniMapIcon));
Button_Close = GetElement<Button>(nameof(Button_Close));
Button_Close.onClick.AddListener(Close);
2026-01-09 10:43:40 +09:00
await UniTask.CompletedTask;
}
public override void Close()
{
var topMenuPanel = AZTECHSceneMain.Instance.GetManager<AZTECHUIManager>().GetCanvas<StaticCanvas>().GetPanel<LeftSidePanel>();
topMenuPanel.SetToggleButton("button_minimap_screen", false);
2026-01-09 10:43:40 +09:00
gameObject.SetActive(false);
}
private void Update()
{
//UpdateMiniMapBackground();
2026-01-09 10:43:40 +09:00
UpdateMiniMapIcon();
}
// private void UpdateMiniMapBackground()
// {
// var sprite = building.isOnlyMachineFloorsEnabled ? miniMapImages[1] : miniMapImages[0];
// MiniMapScreen.sprite = sprite;
// }
2026-01-09 10:43:40 +09:00
void UpdateMiniMapIcon()
{
Vector2 worldPos = new Vector2(target.transform.position.x, target.transform.position.z);
Vector2 normalizedPos = (worldPos - worldMin) / (worldMax - worldMin);
RectTransform miniMapRect = MiniMapScreen.GetComponent<RectTransform>();
Vector2 miniMapSize = miniMapRect.rect.size;
Vector2 iconPos = new Vector2(
-((normalizedPos.x * miniMapSize.x) - (miniMapSize.x * 0.5f)),
-((normalizedPos.y * miniMapSize.y) - (miniMapSize.y * 0.5f))
2026-01-09 10:43:40 +09:00
);
Image_MiniMapIcon.anchoredPosition = iconPos;
}
public void ShowPopupNextToButton(RectTransform buttonRect, float offset)
{
Canvas.ForceUpdateCanvases();
var canvas = rectTransform.GetComponentInParent<Canvas>();
float scaledOffset = offset / canvas.scaleFactor;
Vector3 pos = buttonRect.position;
2026-01-09 10:43:40 +09:00
pos.x += buttonRect.rect.width * (1 - buttonRect.pivot.x) + scaledOffset;
pos.y += buttonRect.rect.height * (1 - buttonRect.pivot.y);
pos.x += rectTransform.rect.width * rectTransform.pivot.x;
pos.y -= rectTransform.rect.height * (1 - rectTransform.pivot.y);
rectTransform.position = pos;
2026-01-09 10:43:40 +09:00
}
}
}