Files
2024-10-27 08:45:49 +01:00

39 lines
1.4 KiB
C#

namespace PJ64Savestater;
public class InputControl
{
public InputKeys? InputKey { get; set; } = null;
public int? KeyIndex { get; set; } = null;
public object? Value { get; set; } = null;
public static bool operator ==(InputControl left, InputControl right)
{
return left.InputKey == right.InputKey && left.KeyIndex == right.KeyIndex && (left.Value == null && right.Value == null || left.Value != null && right.Value != null && left.Value.Equals(right.Value));
}
public static bool operator !=(InputControl left, InputControl right)
{
return !(left == right);
}
public override bool Equals(object? obj)
{
return obj is InputControl control
&& EqualityComparer<InputKeys?>.Default.Equals(InputKey, control.InputKey)
&& EqualityComparer<int?>.Default.Equals(KeyIndex, control.KeyIndex)
&& EqualityComparer<object>.Default.Equals(Value, control.Value);
}
public override int GetHashCode()
{
var hashCode = 2070896532;
if (InputKey != null)
hashCode = hashCode * -1521134295 + EqualityComparer<InputKeys?>.Default.GetHashCode(InputKey);
if (KeyIndex != null)
hashCode = hashCode * -1521134295 + EqualityComparer<int?>.Default.GetHashCode(KeyIndex);
if (Value != null)
hashCode = hashCode * -1521134295 + EqualityComparer<object>.Default.GetHashCode(Value);
return hashCode;
}
}