BattleUnitFactory.cs 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. using CommonAI.ZoneClient;
  2. using ET;
  3. using ET.Client;
  4. using UnitType = CommonAI.Zone.UnitInfo.UnitType;
  5. class BattleUnitFactory : Singleton<BattleUnitFactory>//, ISingletonUpdate
  6. {
  7. public BattleObject Create(ZoneObject zo)
  8. {
  9. BattleObject unit = null;
  10. if(zo is ZoneActor)
  11. {
  12. unit = ObjectPool.Instance.Fetch<BattleActor>();
  13. }
  14. else if (zo is ZoneUnit)
  15. {
  16. ZoneUnit zu = zo as ZoneUnit;
  17. switch (zu.Info.UType)
  18. {
  19. case UnitType.TYPE_PLAYER://玩家单位.
  20. unit = ObjectPool.Instance.Fetch<BattlePlayer>();
  21. break;
  22. case UnitType.TYPE_MONSTER://怪物.
  23. unit = ObjectPool.Instance.Fetch<BattleMonster>();
  24. break;
  25. case UnitType.TYPE_BUILDING://建筑.
  26. case UnitType.TYPE_NPC://NPC.
  27. case UnitType.TYPE_NEUTRALITY://NPC.
  28. case UnitType.TYPE_SUMMON://召唤单位.
  29. case UnitType.TYPE_PET:
  30. case UnitType.TYPE_TRIGGER: //触发机关
  31. default:
  32. Log.Error($"unknow object enter:{zu.Info.UType} ID:{zu.TemplateID}");
  33. break;
  34. }
  35. }
  36. else if (zo is ZoneSpell)
  37. {
  38. unit = ObjectPool.Instance.Fetch<BattleSpell>();
  39. }
  40. else if (zo is ZoneItem)//掉落物
  41. {
  42. }
  43. return unit;
  44. }
  45. }