private static TileRect GetCornerRect(LevelCorner corner, int width, int height, int size) { int minX, maxX, minY, maxY; if (corner.IsSouth()) { minY = 0; maxY = size - 1; } else { minY = height - size; maxY = height - 1; } if (corner.IsEast()) { minX = 0; maxX = size - 1; } else { minX = width - size; maxX = width - 1; } var rect = new TileRect(minX, minY, maxX, maxY); rect.Clamp(width, height); return(rect); }
public static bool IsWest(this LevelCorner corner) { switch (corner) { case LevelCorner.NorthEast: case LevelCorner.SouthEast: return(false); case LevelCorner.NorthWest: case LevelCorner.SouthWest: return(true); default: throw new ArgumentOutOfRangeException(nameof(corner), corner, null); } }
void Update() { if (running) { return; } direction = new Vector3(0, 0, 0); origin = transform.position; float movement = InputMapping.GetAction(Actions.Horizontal); //Input.GetAxis("Horizontal"); // Debug.Log (movement); if (movement == 0) { return; } else if (movement > 0) { ++selectedIsland; if (selectedIsland > numberOfIsles - 1) { selectedIsland--; return; } selectors[selectedIsland - 1].SetActive(false); } else if (movement < 0) { selectors[selectedIsland].SetActive(false); --selectedIsland; if (selectedIsland < 0) { selectedIsland = 0; return; } selectors[selectedIsland + 1].SetActive(false); } if (selectedIsland == 0) { corner = LevelCorner.Left; } else if (selectedIsland == numberOfIsles - 1) { corner = LevelCorner.Right; } else { corner = LevelCorner.None; } running = true; tweenPos.from = origin; tweenPos.to = new Vector3(islands[selectedIsland].transform.position.x, origin.y, islands[selectedIsland].transform.position.z); tweenPos.ResetToBeginning(); tweenPos.onFinished.Clear(); previousIsland = currentIsland; currentIsland = islands[selectedIsland].GetComponent <IslandDescriptor>(); if (islandTransitionStart != null) { islandTransitionStart(previousIsland, currentIsland, corner); } EventDelegate.Add(tweenPos.onFinished, OnTweenFinished); tweenPos.PlayForward(); }