Files
Sinmai-Assist/Utils/GameMessageManager.cs
2025-10-13 18:20:26 +08:00

71 lines
2.0 KiB
C#

using DB;
using System;
using HarmonyLib;
using Manager;
using MelonLoader;
using Process;
namespace SinmaiAssist.Utils;
public class GameMessageManager
{
private static IGenericManager _manager;
[HarmonyPostfix]
[HarmonyPatch(typeof(ProcessManager), "SetMessageManager")]
public static void SetMessageManager(IGenericManager genericManager)
{
_manager = genericManager;
}
public static void SendMessage(int monitorId, string message, string title = null, WindowPositionID positionID = WindowPositionID.Middle, WindowMessageID messageID = WindowMessageID.CollectionAttentionEmptyFavorite)
{
try
{
WindowParam param = new WindowParam()
{
hideTitle = true,
text = message,
replaceText = true,
changeSize = true,
sizeID = WindowSizeID.Middle,
positionID = positionID
};
if (title != null)
{
if (messageID == WindowMessageID.CollectionAttentionEmptyFavorite)
messageID = WindowMessageID.AimeUseNotice;
param.replaceTitle = true;
param.hideTitle = false;
param.title = title;
}
_manager.Enqueue(monitorId, messageID, positionID, param);
}
catch (Exception e)
{
MelonLogger.Error(e);
}
}
public static void SendWarning(int monitorId, string message, string title, float lifeTime = 3000)
{
try
{
WarningWindowInfo warning = new WarningWindowInfo(
title: title,
message: message,
lifeTime: lifeTime,
monitorId: monitorId
);
_manager.EnqueueWarning(warning);
}catch (Exception e)
{
MelonLogger.Error(e);
}
}
public static IGenericManager GetMessageManager()
{
return _manager;
}
}