Files
trail-into-darkness/Assets/Code/GameState/Entities/ModifiersFactory.cs
2026-03-29 18:59:24 +02:00

58 lines
1.9 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using Jovian.Utilities;
namespace Nox.Game {
public interface IModfiersFactory {
IReadOnlyCollection<ModifierDefinition> GetAll();
ModifierDefinition GetById(Guid modifierId);
IReadOnlyCollection<ModifierDefinition> GetModifiersFor(CharacterDefinition character);
bool TryAddModifier(CharacterDefinition character, string modiferId);
}
public enum ModifierRole {
None,
Flat,
Addition,
Multiplication,
Percentage
}
[Serializable]
public sealed class ModifierDefinition {
public System.Guid id = Guid.NewGuid();
public StatType statType;
public AttributeType attributeType;
public ModifierRole role;
public float value;
}
[Serializable]
public sealed class ModifiersData {
public ModifierDefinition[] modifiers;
}
public class ModifiersFactory : IModfiersFactory {
private readonly ModifiersRegistry modifiersRegistry;
private readonly Dictionary<string, ModifierDefinition> modifierPool = new ();
public ModifiersFactory(ModifiersRegistry modifiersRegistry) {
this.modifiersRegistry = modifiersRegistry;
}
public IReadOnlyCollection<ModifierDefinition> GetAll() {
return modifiersRegistry.modifiersData.modifiers;
}
public ModifierDefinition GetById(Guid modifierId) {
return modifiersRegistry.modifiersData.modifiers.FirstOrDefault(m => m.id == modifierId);
}
public IReadOnlyCollection<ModifierDefinition> GetModifiersFor(CharacterDefinition character) {
throw new NotImplementedException();
}
public bool TryAddModifier(CharacterDefinition character, string modiferId) {
throw new NotImplementedException();
}
}
}