Skip to main content

NoticeCondition

Important Attention Reminder

Coding Style wiki​


NoticeCondition is the notice condition base class (abstract class) of the NoticeSystem. Custom conditions inherit it and implement ShowCondition to decide whether the red dot shows, and are auto-assigned a condition ID once registered via NoticeManager.RegisterCondition. Condition templates can be created via Right-Click Create/OxGKit/Notice System/Template Notice Condition.cs (refer to the Module Intro).

NamespaceOxGKit.NoticeSystem
Typepublic abstract class NoticeCondition
SourceNoticeCondition.cs
using OxGKit.NoticeSystem;

Quick Start​

using OxGKit.NoticeSystem;
using UnityEngine;

public class NewMailCond : NoticeCondition
{
#region Default
// Convention: define a static property to get the auto-assigned condition ID
public static int id { get { return NoticeManager.GetConditionId<NewMailCond>(); } }

// Auto-register the condition before the scene loads (matches the BeforeSceneLoad template)
[RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)]
static void Register()
{
NoticeManager.RegisterCondition<NewMailCond>();
}
#endregion

public override bool ShowCondition(object data)
{
if (data != null)
{
MailBox mailBox = data as MailBox;

// Show the red dot when there is unread mail
if (mailBox.unreadCount > 0) return true;
}

return false;
}
}

General Rules​

  • Condition classes are pure logic classes — do not hold MonoBehaviour state or scene references inside ShowCondition.
  • The data passed to ShowCondition can be null or of a different type (when multiple UIs share the same condition) — perform defensive checks.
  • The condition ID is auto-assigned on registration by NoticeManager.RegisterCondition; by convention, define a static id property in the condition class.

Reminder A NoticeItem holding multiple conditions uses OR logic (shown when any matches); for AND logic, put the whole predicate inside a single condition class's ShowCondition.


Method Overview​

MethodDescription
SetIdSets the condition ID (called automatically by NoticeManager on registration).
GetIdGets the condition ID.
ShowCondition(abstract) Decides from the data whether the condition matches (whether the red dot shows).

SetId​

public void SetId(int id)

Sets the condition ID.

Attention Called automatically by NoticeManager.RegisterCondition on registration — usually there is no need to call it yourself.

GetId​

public int GetId()

Gets the condition ID (can also be queried by type via NoticeManager.GetConditionId<T>()).

ShowCondition​

public abstract bool ShowCondition(object data)

Decides from the given data whether the condition matches — returning true means the red dot shows; data is the data passed in via NoticeInfo when registering on a NoticeItem.


NoticeInfo​

Notice info (struct) containing the condition ID and the data to check, used as the registration unit for NoticeItem.RegisterNotice / RenewNotice.

Typepublic struct NoticeInfo
SourceNoticeInfo.cs

Members​

MemberDescription
public int conditionIdThe condition ID.
public object dataThe data handed to ShowCondition for the check (value type or reference type).

Constructors​

public NoticeInfo(int conditionId, object data)
// Reference-type data (Notify alone is enough after changes)
new NoticeInfo(NewMailCond.id, this._mailBox);

// Value-type data (RenewNotice to update the snapshot after changes, then Notify)
new NoticeInfo(CoinInWalletCond.id, this._coin);

Important Value-type data is stored as a snapshot — after the data changes, update it via NoticeItem.RenewNotice and then Notify, otherwise the red dot will not refresh.