private static IList<WarMagicData> CreateAbnormalConditionMagic(MagicData magic, bool isChipEffect, IAbnormalCondition cond, TargetType targetType) { var name = magic.Name; var description = magic.Description; var cores = magic.Cores; var magicDatas = new List<WarMagicData>(cores.Length); foreach (var core in cores) { // 行為の範囲や対象を設定する IScope scope; if (core.Area != 0) scope = new DefaultScope(core.Range, core.Area, targetType); else scope = new WholeScope(targetType); // 画面効果を設定する var screenEffect = CreateScreenEffect(magic, isChipEffect); // 消費MPの設定 var consumption = new MPCost(core.MPCost); // 行為の設定 var action = new GiveAbnormalConditionAction(scope, consumption, screenEffect, cond); // 魔法データを作成する var magicData = new WarMagicData(name, description, action, core.MPCost, core.Area, core.Range); magicDatas.Add(magicData); } return magicDatas; }
private static IList<WarMagicData> CreateSummonMagic(MagicData magic, IList<UnitData> unitDatas, string id) { var name = magic.Name; var description = magic.Description; var cores = magic.Cores; var magicDatas = new List<WarMagicData>(cores.Length); cores.ForEach((core, i) => { // 行為の範囲や対象を設定する var scope = new DefaultScope(core.Range, core.Area, TargetType.NONE); // 消費MPの設定 var consumption = new MPCost(core.MPCost); // 画面効果を設定する var screenEffect = CreateScreenEffect(magic, true); // 行為を設定する var unitData = unitDatas.FirstOrDefault(unit_ => unit_.ID == id + (i + 1)); var action = new SummonAction(scope, consumption, unitData, screenEffect); // 魔法データを作成する var magicData = new WarMagicData(name, description, action, core.MPCost, core.Area, core.Range); magicDatas.Add(magicData); }); return magicDatas; }