ILocalizeTargetDesc.cs 1.3 KB

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