Exemplo n.º 1
0
 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));
     }
 }
Exemplo n.º 2
0
        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));
        }
Exemplo n.º 3
0
 public CostMap ComputeCostMap(WallClipSetting wcs, int invul_frames)
 {
     return(ComputeCostMap(wcs, invul_frames, false));
 }