Files
trail-into-darkness/Assets/Code/GameState/Entities/ModifiersFactory.cs
2026-03-22 18:28:33 +01:00

55 lines
1.8 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
namespace Nox.Game {
public interface IModfiersFactory {
IReadOnlyCollection<ModifierDefinition> GetAll();
ModifierDefinition GetById(string modifierId);
IReadOnlyCollection<ModifierDefinition> GetModifiersFor(CharacterDefinition character);
bool TryAddModifier(CharacterDefinition character, string modiferId);
}
public enum ModifierType {
None,
Flat,
Addition,
Multiplication,
Percentage
}
[Serializable]
public sealed class ModifierDefinition {
public string id;
public ModifierType type;
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(string 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();
}
}
}