49 lines
1.5 KiB
C#
49 lines
1.5 KiB
C#
using System;
|
|
using UnityEngine;
|
|
|
|
namespace Jovian.PopupSystem {
|
|
/// <summary>
|
|
/// Value type identifying a popup channel. Each category gets its own popup view instance.
|
|
/// Compared by string ID using ordinal comparison. Define custom categories as static fields.
|
|
/// </summary>
|
|
[Serializable]
|
|
public struct PopupCategory : IEquatable<PopupCategory> {
|
|
[SerializeField] string id;
|
|
|
|
public string Id => id;
|
|
|
|
public PopupCategory(string id) {
|
|
this.id = id;
|
|
}
|
|
|
|
public static readonly PopupCategory Character = new("Character");
|
|
public static readonly PopupCategory Item = new("Item");
|
|
public static readonly PopupCategory Skill = new("Skill");
|
|
public static readonly PopupCategory General = new("General");
|
|
|
|
public bool Equals(PopupCategory other) {
|
|
return string.Equals(id, other.id, StringComparison.Ordinal);
|
|
}
|
|
|
|
public override bool Equals(object obj) {
|
|
return obj is PopupCategory other && Equals(other);
|
|
}
|
|
|
|
public override int GetHashCode() {
|
|
return id != null ? id.GetHashCode() : 0;
|
|
}
|
|
|
|
public override string ToString() {
|
|
return id ?? string.Empty;
|
|
}
|
|
|
|
public static bool operator ==(PopupCategory left, PopupCategory right) {
|
|
return left.Equals(right);
|
|
}
|
|
|
|
public static bool operator !=(PopupCategory left, PopupCategory right) {
|
|
return !left.Equals(right);
|
|
}
|
|
}
|
|
}
|