ILocalizeTargetDesc.cs 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. using System.Collections.Generic;
  2. using UnityEngine;
  3. namespace I2.Loc
  4. {
  5. public abstract class ILocalizeTargetDescriptor
  6. {
  7. public string Name;
  8. public int Priority;
  9. public abstract bool CanLocalize(Localize cmp);
  10. public abstract ILocalizeTarget CreateTarget(Localize cmp);
  11. public abstract System.Type GetTargetType();
  12. }
  13. public abstract class LocalizeTargetDesc<T> : ILocalizeTargetDescriptor where T : ILocalizeTarget
  14. {
  15. public override ILocalizeTarget CreateTarget(Localize cmp) { return ScriptableObject.CreateInstance<T>(); }
  16. public override System.Type GetTargetType() { return typeof(T); }
  17. }
  18. public class LocalizeTargetDesc_Type<T,G> : LocalizeTargetDesc<G> where T: Object
  19. where G: LocalizeTarget<T>
  20. {
  21. public override bool CanLocalize(Localize cmp) { return cmp.GetComponent<T>() != null; }
  22. public override ILocalizeTarget CreateTarget(Localize cmp)
  23. {
  24. var target = cmp.GetComponent<T>();
  25. if (target == null)
  26. return null;
  27. var locTarget = ScriptableObject.CreateInstance<G>();
  28. locTarget.mTarget = target;
  29. return locTarget;
  30. }
  31. }
  32. }