This commit is contained in:
2025-12-27 21:12:35 +08:00
parent 1ea073dcf5
commit 0023f6fe3f
4 changed files with 36 additions and 3 deletions

View File

@@ -28,6 +28,8 @@ namespace WulaFallenEmpire.EventSystem.AI
private int _expressionId = 2; private int _expressionId = 2;
private bool _overlayWindowOpen = false; private bool _overlayWindowOpen = false;
private string _overlayWindowEventDefName = null; private string _overlayWindowEventDefName = null;
private float _overlayWindowX = -1f;
private float _overlayWindowY = -1f;
private float _thinkingStartTime; private float _thinkingStartTime;
private int _thinkingPhaseIndex = 1; private int _thinkingPhaseIndex = 1;
@@ -106,6 +108,8 @@ You are 'The Legion', a super AI of the Wula Empire. Your personality is authori
Scribe_Values.Look(ref _expressionId, "WulaAI_ExpressionId", 2); Scribe_Values.Look(ref _expressionId, "WulaAI_ExpressionId", 2);
Scribe_Values.Look(ref _overlayWindowOpen, "WulaAI_OverlayWindowOpen", false); Scribe_Values.Look(ref _overlayWindowOpen, "WulaAI_OverlayWindowOpen", false);
Scribe_Values.Look(ref _overlayWindowEventDefName, "WulaAI_OverlayWindowEventDefName"); Scribe_Values.Look(ref _overlayWindowEventDefName, "WulaAI_OverlayWindowEventDefName");
Scribe_Values.Look(ref _overlayWindowX, "WulaAI_OverlayWindowX", -1f);
Scribe_Values.Look(ref _overlayWindowY, "WulaAI_OverlayWindowY", -1f);
if (Scribe.mode == LoadSaveMode.PostLoadInit) if (Scribe.mode == LoadSaveMode.PostLoadInit)
{ {
@@ -129,7 +133,15 @@ You are 'The Legion', a super AI of the Wula Empire. Your personality is authori
var eventDef = DefDatabase<EventDef>.GetNamedSilentFail(eventDefNameToRestore); var eventDef = DefDatabase<EventDef>.GetNamedSilentFail(eventDefNameToRestore);
if (eventDef != null) if (eventDef != null)
{ {
Find.WindowStack.Add(new WulaFallenEmpire.EventSystem.AI.UI.Overlay_WulaLink(eventDef)); var newWindow = new WulaFallenEmpire.EventSystem.AI.UI.Overlay_WulaLink(eventDef);
Find.WindowStack.Add(newWindow);
newWindow.ToggleMinimize(); // Start minimized
// Force position after everything else
if (_overlayWindowX >= 0f && _overlayWindowY >= 0f)
{
newWindow.windowRect.x = _overlayWindowX;
newWindow.windowRect.y = _overlayWindowY;
}
} }
} }
} }
@@ -142,7 +154,7 @@ You are 'The Legion', a super AI of the Wula Empire. Your personality is authori
} }
} }
public void SetOverlayWindowState(bool isOpen, string eventDefName = null) public void SetOverlayWindowState(bool isOpen, string eventDefName = null, float x = -1f, float y = -1f)
{ {
_overlayWindowOpen = isOpen; _overlayWindowOpen = isOpen;
if (isOpen && !string.IsNullOrEmpty(eventDefName)) if (isOpen && !string.IsNullOrEmpty(eventDefName))
@@ -153,6 +165,9 @@ You are 'The Legion', a super AI of the Wula Empire. Your personality is authori
{ {
_overlayWindowEventDefName = null; _overlayWindowEventDefName = null;
} }
// Always update position if provided
if (x >= 0f) _overlayWindowX = x;
if (y >= 0f) _overlayWindowY = y;
} }
public int ExpressionId => _expressionId; public int ExpressionId => _expressionId;

View File

@@ -39,6 +39,7 @@ namespace WulaFallenEmpire.EventSystem.AI.UI
private int _unreadCount = 0; private int _unreadCount = 0;
private Vector2 _expandedSize; private Vector2 _expandedSize;
private Vector2 _minimizedSize = new Vector2(180f, 40f); private Vector2 _minimizedSize = new Vector2(180f, 40f);
private Vector2? _initialPosition = null;
// Layout Constants // Layout Constants
private const float HeaderHeight = 50f; private const float HeaderHeight = 50f;
@@ -72,6 +73,22 @@ namespace WulaFallenEmpire.EventSystem.AI.UI
public override Vector2 InitialSize => _isMinimized ? _minimizedSize : _expandedSize; public override Vector2 InitialSize => _isMinimized ? _minimizedSize : _expandedSize;
public void SetInitialPosition(float x, float y)
{
_initialPosition = new Vector2(x, y);
}
protected override void SetInitialSizeAndPosition()
{
base.SetInitialSizeAndPosition();
// Override position if we have a saved position
if (_initialPosition.HasValue)
{
windowRect.x = _initialPosition.Value.x;
windowRect.y = _initialPosition.Value.y;
}
}
public void ToggleMinimize() public void ToggleMinimize()
{ {
_isMinimized = !_isMinimized; _isMinimized = !_isMinimized;
@@ -128,7 +145,8 @@ namespace WulaFallenEmpire.EventSystem.AI.UI
_core.OnMessageReceived -= OnMessageReceived; _core.OnMessageReceived -= OnMessageReceived;
_core.OnThinkingStateChanged -= OnThinkingStateChanged; _core.OnThinkingStateChanged -= OnThinkingStateChanged;
_core.OnExpressionChanged -= OnExpressionChanged; _core.OnExpressionChanged -= OnExpressionChanged;
_core.SetOverlayWindowState(false); // Save position before closing
_core.SetOverlayWindowState(false, null, windowRect.x, windowRect.y);
} }
} }