CostMap ComputeCostMap(WallClipSetting wcs, int invul_frames, bool targetBonus) { if (wcs == WallClipSetting.NoWallClip) { return(ComputeCostMap(0, true, targetBonus)); } else if (wcs == WallClipSetting.Allow) { return(ComputeCostMap(float.PositiveInfinity, false, targetBonus)); } else { return(ComputeCostMap( invul_frames >= Settings.complete_wall_clip_duration ? Settings.complete_wall_clip_max_dist : Settings.complete_wall_clip_max_dist *invul_frames / Settings.complete_wall_clip_duration, false, targetBonus)); } }
public ExtendedCostMap ComputeExtendedCostMap(WallClipSetting wcs, int invul_frames) { CostMap targetCM = ComputeCostMap(wcs, invul_frames); CostMap bonusCM = null; if (m.HasBonus != Map.BonusType.None && Settings.bonus_required) { bonusCM = ComputeCostMap(wcs, invul_frames, true); float max = 0; Rectangle r = m.GetBonusPxRect().Value; for (int y = r.Top; y < r.Bottom; y++) { for (int x = r.Left; x < r.Right; x++) { max = Math.Max(max, targetCM.CostAtPx((short)x, (short)y, 0)); } } bonusCM.GlobalMalus += max + Settings.back_before_bonus_malus; } return(new ExtendedCostMap(targetCM, bonusCM)); }
public CostMap ComputeCostMap(WallClipSetting wcs, int invul_frames) { return(ComputeCostMap(wcs, invul_frames, false)); }