示例#1
0
        public CBlockController GetBlockStep(CBlockController current, int step)
        {
            if (current == null || step <= 0 || step >= blocks.Count)
            {
                return(null);
            }
            var currentIndex = blocks.IndexOf(current);

            if (currentIndex == -1)
            {
                return(current);
            }
            var maxStep = currentIndex + step;

            if (maxStep >= blocks.Count)
            {
                return(blocks[blocks.Count - 1]);
            }
            return(blocks[maxStep]);
        }
示例#2
0
        public CBlockController GetBlockPath(CBlockController current, CBlockController target)
        {
            if (current == null || target == null || current == target)
            {
                return(current);
            }
            var currentIndex = blocks.IndexOf(current);
            var tagetIndex   = blocks.IndexOf(target);

            if (currentIndex == -1 || tagetIndex == -1)
            {
                return(current);
            }
            if (currentIndex + 1 >= blocks.Count)
            {
                return(blocks[blocks.Count - 1]);
            }
            var step = currentIndex < tagetIndex ? currentIndex + 1 : currentIndex - 1;

            step = step < 0 ? 0 : step >= blocks.Count ? blocks.Count - 1 : step;
            return(blocks[step]);
        }
 public CBlockController GetBlockPath(int mapIndex, CBlockController current, CBlockController target)
 {
     return(mapBlockControllers [mapIndex].GetBlockPath(current, target));
 }
 public CBlockController GetBlockStep(int mapIndex, CBlockController current, int step)
 {
     return(mapBlockControllers[mapIndex].GetBlockStep(current, step));
 }