private string getAnimalName(ePuzzleAnimal animal){ switch (animal) { case ePuzzleAnimal.Boa: return "Boa"; case ePuzzleAnimal.Caiman: return "Caiman"; case ePuzzleAnimal.Jaguar: return "Jaguar"; case ePuzzleAnimal.Oso: return "Oso"; case ePuzzleAnimal.Rana: return "Rana"; case ePuzzleAnimal.Zorro: return "Zorro"; default: return ""; } }
private Sprite getTileImage(ePuzzleAnimal animal, eTileType tileType){ // Calculamos la ruta de la imagen string tileTypeURL = ""; switch (tileType) { case eTileType.LineHorizontal: tileTypeURL = "Tiles/TilesLines/Horizontal/Line"; break; case eTileType.LineVertical: tileTypeURL = "Tiles/TilesLines/Vertical/Line"; break; // Cuadrante 1 case eTileType.TurnRightToUp: tileTypeURL = "Tiles/TilesTurns/CornerBottomRight/Turn"; break; case eTileType.TurnUpToRight: tileTypeURL = "Tiles/TilesTurns/CornerTopLeft/Turn"; break; // Cuadrante 2 case eTileType.TurnUpToLeft: tileTypeURL = "Tiles/TilesTurns/CornerTopRight/Turn"; break; case eTileType.TurnLeftToUp: tileTypeURL = "Tiles/TilesTurns/CornerBottomLeft/Turn"; break; // Cuadrante 3 case eTileType.TurnLeftToDown: tileTypeURL = "Tiles/TilesTurns/CornerTopLeft/Turn"; break; case eTileType.TurnDownToLeft: tileTypeURL = "Tiles/TilesTurns/CornerBottomRight/Turn"; break; // Cuadrante 4 case eTileType.TurnDownToRight: tileTypeURL = "Tiles/TilesTurns/CornerBottomLeft/Turn"; break; case eTileType.TurnRightToDown: tileTypeURL = "Tiles/TilesTurns/CornerTopRight/Turn"; break; default: break; } // Calculamos el nombre del animal string animalName = getAnimalName(animal); // Cargamos la imagen Texture2D texture2d = (Texture2D) Resources.Load ("Image/Screen2PuzzleMolas/" + tileTypeURL + animalName); Sprite imageTile = Sprite.Create (texture2d, new Rect(0, 0, texture2d.width, texture2d.height), Vector2.zero); // La retornamos return imageTile; }
public void startDrag(){ // Obtenemos la posicion actual del touch Vector3 currentDragPosition = cameraHUD.ScreenToViewportPoint (Input.mousePosition); // Determinamos el tile seleccionado Vector2 currentSelectedPosition = getSelectedTilePosition (currentDragPosition); // SI el drag esta siendo realizado dentro del tablero if (currentSelectedPosition.x != -1) { // Buscamos en la matriz de inicios si algun animal esta presente if (startsInfoMatrix [(int)currentSelectedPosition.x, (int)currentSelectedPosition.y] != ePuzzleAnimal.NO_ANIMAL) { // Guardamos el animal seleccionado currentSelectedAnimal = startsInfoMatrix [(int)currentSelectedPosition.x, (int)currentSelectedPosition.y]; // Eliminamos todos los tiles previos de este animal for (int indexCol = 0; indexCol < 5; indexCol++) { for (int indexRow = 0; indexRow < 5; indexRow++) { // Si la posicion actual tiene un tile que corresponde al animal actual if (tilesInfoMatrix[indexCol, indexRow] == currentSelectedAnimal) { // Eliminamos la imagen del tile tilesInfoMatrix [indexCol, indexRow] = ePuzzleAnimal.NO_ANIMAL; tilesImgsMatrix [indexCol, indexRow].sprite = null; tilesImgsMatrix [indexCol, indexRow].color = imageHidden; } // Tambien eliminamos cualquier animal movido de su proxima posicion actual if (animalsInfoMatrix[indexCol, indexRow] == currentSelectedAnimal) { // Eliminamos la imagen del tile animalsInfoMatrix [indexCol, indexRow] = ePuzzleAnimal.NO_ANIMAL; animalsImgsMatrix [indexCol, indexRow].sprite = null; animalsImgsMatrix [indexCol, indexRow].color = imageHidden; } } } // Volvemos a colocar el animal en la posicion inicial (que es la actual) animalsInfoMatrix [(int)currentSelectedPosition.x, (int)currentSelectedPosition.y] = currentSelectedAnimal; animalsImgsMatrix [(int)currentSelectedPosition.x, (int)currentSelectedPosition.y].sprite = getAnimalImage(currentSelectedAnimal); animalsImgsMatrix [(int)currentSelectedPosition.x, (int)currentSelectedPosition.y].color = imageActive; // Determinamos la direccion del tile eTileType last2TileDir = calculate2TileDirection(secondSelectedPosition, currentSelectedPosition, eTileType.LineHorizontal); // Colocamos la imagen del tile de inicio tilesInfoMatrix [(int)currentSelectedPosition.x, (int)currentSelectedPosition.y] = currentSelectedAnimal; tilesImgsMatrix [(int)currentSelectedPosition.x, (int)currentSelectedPosition.y].sprite = getTileImage (currentSelectedAnimal, last2TileDir); tilesImgsMatrix [(int)currentSelectedPosition.x, (int)currentSelectedPosition.y].color = imageActive; Debug.Log ("Start Tile: " + currentSelectedAnimal); // Actualizamos las posiciones previas thirdSelectedPosition = new Vector2 ((int)currentSelectedPosition.x, (int)currentSelectedPosition.y); secondSelectedPosition = new Vector2 ((int)currentSelectedPosition.x, (int)currentSelectedPosition.y); } else { // No fue seleccionado ningun animal de inicio currentSelectedAnimal = ePuzzleAnimal.NO_ANIMAL; } } else { // Se ha iniciado el drag desde afuera del tablero currentSelectedAnimal = ePuzzleAnimal.NO_ANIMAL; } }
private Sprite getAnimalImage(ePuzzleAnimal animal){ // Calculamos el nombre del animal string animalName = getAnimalName(animal); // Cargamos la imagen Texture2D texture2d = (Texture2D) Resources.Load ("Image/Screen2PuzzleMolas/Animals/Animal" + animalName); Sprite imageAnimal = Sprite.Create (texture2d, new Rect(0, 0, texture2d.width, texture2d.height), Vector2.zero); // La retornamos return imageAnimal; }
private void loadAnimalTargets(ePuzzleAnimal animal, Vector2 start, Vector2 end){ // Start startsInfoMatrix [(int)start.x, (int)start.y] = animal; targetsImgsMatrix [(int)start.x, (int)start.y].sprite = getTargetImage(animal); targetsImgsMatrix [(int)start.x, (int)start.y].color = imageActive; // End endsInfoMatrix [(int)end.x, (int)end.y] = animal; targetsImgsMatrix [(int)end.x, (int)end.y].sprite = getTargetImage(animal); targetsImgsMatrix [(int)end.x, (int)end.y].color = imageActive; // Cargamos el animal de inicio animalsInfoMatrix [(int)start.x, (int)start.y] = animal; animalsImgsMatrix [(int)start.x, (int)start.y].sprite = getAnimalImage(animal); animalsImgsMatrix [(int)start.x, (int)start.y].color = imageActive; }