IKeySpawner.cs 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. using System.Collections.Generic;
  2. namespace DunGen.LockAndKey
  3. {
  4. /// <summary>
  5. /// Parameters for spawning keys
  6. /// </summary>
  7. public sealed class KeySpawnParameters
  8. {
  9. /// <summary>
  10. /// The key we're trying to spawn
  11. /// </summary>
  12. public Key Key { get; }
  13. /// <summary>
  14. /// The key manager that owns the key
  15. /// </summary>
  16. public KeyManager KeyManager { get; }
  17. /// <summary>
  18. /// The dungeon generator that is spawning the key
  19. /// </summary>
  20. public DungeonGenerator DungeonGenerator { get; }
  21. /// <summary>
  22. /// An optional list of IKeyLock objects that we created, for which DunGen should assign a key
  23. /// </summary>
  24. public readonly List<IKeyLock> OutputSpawnedKeys = new List<IKeyLock>();
  25. public KeySpawnParameters(Key key, KeyManager keyManager, DungeonGenerator dungeonGenerator)
  26. {
  27. Key = key;
  28. KeyManager = keyManager;
  29. DungeonGenerator = dungeonGenerator;
  30. }
  31. }
  32. /// <summary>
  33. /// MonoBehaviours implementing this interface may be chosen by DunGen when deciding where and how to spawn keys
  34. /// </summary>
  35. public interface IKeySpawner
  36. {
  37. /// <summary>
  38. /// Can the provided key be spawned by this spawner?
  39. /// </summary>
  40. /// <param name="keyManager">KeyManager that owns the key</param>
  41. /// <param name="key">Key to spawn</param>
  42. /// <returns>True if spawning is possible</returns>
  43. bool CanSpawnKey(KeyManager keyManager, Key key);
  44. /// <summary>
  45. /// Spawns a key and returns an optional list of IKeyLocks that the key should be assigned to
  46. /// </summary>
  47. /// <param name="keySpawnParameters">Spawn parameters</param>
  48. /// <returns>Any IKeyLock objects that were created, for which DunGen should assign a key</returns>
  49. void SpawnKey(KeySpawnParameters keySpawnParameters);
  50. }
  51. }