forked from Shardstone/trail-into-darkness
added modfiers factory
This commit is contained in:
54
Assets/Code/GameState/Entities/ModifiersFactory.cs
Normal file
54
Assets/Code/GameState/Entities/ModifiersFactory.cs
Normal file
@@ -0,0 +1,54 @@
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user