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