Сетка «Где работать» в «Содержимом» урны, квадраты очерчены линиями при показе границ; выключенные квадраты обход пропускает. Сохраняется пятым числом v6 (старая DLL его пропустит). Консоль: necrourn x y z sectors. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
80 lines
2.5 KiB
C#
80 lines
2.5 KiB
C#
using UnityEngine;
|
|
using UnityEngine.Scripting;
|
|
|
|
namespace NecromancerTome
|
|
{
|
|
/// <summary>
|
|
/// Квадраты зоны ремонтника и лутера (28.10.2026, #84): сетка 3x3 в окне «Содержимое» - окно necroUrnZone в группе окон
|
|
/// игры bagStorage (Config/XUi_InGame), как фильтр логиста. Север сверху, в среднем квадрате - урна. Щелчок включает /
|
|
/// выключает квадрат (TEFeatureCinerarium.ToggleSector); выключенный - тёмный с красной рамкой. Видна только у урн с
|
|
/// большой зоной; у прочих урн и сумок транспорта и волка скрыта. s0..s8 в XML - номера квадратов (столбец + строка * 3,
|
|
/// строка 0 - юг), f0..f8 - их рамки.
|
|
/// </summary>
|
|
[Preserve]
|
|
public class XUiC_NecroUrnZone : XUiController
|
|
{
|
|
readonly XUiController[] _cells = new XUiController[TEFeatureCinerarium.ZoneSectors];
|
|
readonly XUiController[] _frames = new XUiController[TEFeatureCinerarium.ZoneSectors];
|
|
static readonly Color On = new Color(0.3f, 0.6f, 0.45f, 0.9f);
|
|
static readonly Color Off = new Color(0.12f, 0.12f, 0.12f, 0.9f);
|
|
static readonly Color FrameOn = new Color(0.55f, 0.9f, 0.75f, 1f);
|
|
static readonly Color FrameOff = new Color(0.95f, 0.3f, 0.25f, 1f);
|
|
|
|
public override void Init()
|
|
{
|
|
base.Init();
|
|
for (int i = 0; i < _cells.Length; i++)
|
|
{
|
|
int s = i;
|
|
_cells[i] = GetChildById("s" + i);
|
|
_frames[i] = GetChildById("f" + i);
|
|
if (_cells[i] != null)
|
|
{
|
|
_cells[i].OnPress += (_x, _m) => Toggle(s);
|
|
}
|
|
}
|
|
}
|
|
|
|
public override void OnOpen()
|
|
{
|
|
base.OnOpen();
|
|
Refresh();
|
|
}
|
|
|
|
void Toggle(int _s)
|
|
{
|
|
TEFeatureCinerarium urn = CinerariumContents.Urn;
|
|
if (urn == null)
|
|
{
|
|
return;
|
|
}
|
|
urn.ToggleSector(_s);
|
|
Refresh();
|
|
}
|
|
|
|
void Refresh()
|
|
{
|
|
TEFeatureCinerarium urn = CinerariumContents.Urn;
|
|
bool show = urn != null && urn.IsBigZone;
|
|
ViewComponent.IsVisible = show;
|
|
if (!show)
|
|
{
|
|
return;
|
|
}
|
|
for (int i = 0; i < _cells.Length; i++)
|
|
{
|
|
bool on = urn.SectorOn(i);
|
|
if (_cells[i]?.ViewComponent is XUiV_Sprite sp)
|
|
{
|
|
sp.Color = on ? On : Off;
|
|
sp.ToolTip = Localization.Get(on ? "necroZoneSectorOn" : "necroZoneSectorOff");
|
|
}
|
|
if (_frames[i]?.ViewComponent is XUiV_Sprite fr)
|
|
{
|
|
fr.Color = on ? FrameOn : FrameOff;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|