using CommonAI.ZoneClient;
using ET;
using ET.Client;
using UnitType = CommonAI.Zone.UnitInfo.UnitType;

class BattleUnitFactory : Singleton<BattleUnitFactory>//, ISingletonUpdate
{
    public BattleObject Create(ZoneObject zo)
    {
        BattleObject unit = null;
        if(zo is ZoneActor)
        {
            unit = ObjectPool.Instance.Fetch<BattleActor>();
        }
        else if (zo is ZoneUnit)
        {
            ZoneUnit zu = zo as ZoneUnit;
            switch (zu.Info.UType)
            {
                case UnitType.TYPE_PLAYER://玩家单位.
                    unit = ObjectPool.Instance.Fetch<BattlePlayer>();
                    break;
                case UnitType.TYPE_MONSTER://怪物.
                    unit = ObjectPool.Instance.Fetch<BattleMonster>();
                    break;

                case UnitType.TYPE_BUILDING://建筑.
                case UnitType.TYPE_NPC://NPC.
                case UnitType.TYPE_NEUTRALITY://NPC.
                case UnitType.TYPE_SUMMON://召唤单位.
                case UnitType.TYPE_PET:
                case UnitType.TYPE_TRIGGER: //触发机关
                default:
                    Log.Error($"unknow object enter:{zu.Info.UType} ID:{zu.TemplateID}");
                    break;
            }
        }
        else if (zo is ZoneSpell)
        {
            unit = ObjectPool.Instance.Fetch<BattleSpell>();
        }
        else if (zo is ZoneItem)//掉落物  
        {
        }

        return unit;
    }
}