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); } } }