NLDClient-yudde/ProjectNLD/Assets/Code/Scripts/Gameplay/Summon/SummonFactory.cs

67 lines
2.4 KiB
C#

using cfg.SummonCfg;
using Framework;
using Gameplay.Unit;
namespace Gameplay.Summon
{
public static class SummonFactory
{
public static BaseSummon CreateSummon(int summonId, GameUnit creator)
{
var configData = GetConfigById(summonId);
if (configData == null)
{
return null;
}
var guid = GUIDManager.GenGuid();
BaseSummon createSummon = null;
switch (configData.LogicType)
{
case ESummonType.Tent:
createSummon = new SummonTent(configData, guid, creator);
break;
case ESummonType.Mine:
createSummon = new SummonMine(configData, guid, creator);
break;
case ESummonType.Tent2:
createSummon = new SummonTent2(configData, guid, creator);
break;
case ESummonType.BulletBox:
createSummon = new SummonBulletBox(configData, guid, creator);
break;
case ESummonType.EmitBulletToSelfCell:
createSummon = new SummonEmitBulletToLocal(configData, guid, creator);
break;
case ESummonType.Totem1:
createSummon = new SummonTotem1(configData, guid, creator);
break;
case ESummonType.Totem2:
createSummon = new SummonTotem2(configData, guid, creator);
break;
case ESummonType.LaterEmiter:
createSummon = new SummonDelayEmitBulletToSelf(configData, guid, creator);
break;
case ESummonType.LightUp:
createSummon = new SummonLightUp(configData, guid, creator);
break;
case ESummonType.Smoke:
createSummon = new SummonSmoke(configData, guid, creator);
break;
}
if (createSummon == null)
{
DebugUtil.LogError("暂未处理的召唤物logicId:{0}", configData.LogicType);
return null;
}
return createSummon;
}
public static DataSummon GetConfigById(int summonId)
{
return TableManager.Instance.Tables.SummonConfig.Get(summonId);
}
}
}