/// <summary> /// Détruis le GameObject correspondant à une porte et retire leur association du dictionnaire. /// </summary> /// <param name="gateStruct"></param> private void RemoveGate(Circuit.GateStruct gateStruct) { GateObject gateObject = gateObjects[gateStruct]; gateObjects.Remove(gateStruct); gateObject.FadeOutAndDestroy(); }
/// <summary> /// Crée le GameObject correspondant à une porte. /// </summary> /// <param name="gateStruct"></param> private GateObject CreateGateObject(Circuit.GateStruct gateStruct) { Gate gate = gateStruct.gate; GateObject gateObject = ObjectFactory.Build(gate, _gridGame.transform); gateObject.gateStruct = gateStruct; return(gateObject); }
/** * ###################################################################################################### * ################################################ GATE ################################################ * ###################################################################################################### */ /// <summary> /// Calcule la position que doit occuper l'objet représentant la porte correspondante. /// </summary> /// <param name="gateObject"></param> private Vector3 ComputeGatePosition(GateObject gateObject) { Circuit.GateStruct gateStruct = gateObject.gateStruct; int row = gateStruct.row; int col = gateStruct.col; int nbEntries = gateStruct.gate.NbEntries; float col_offset = (nbEntries - 1) / 2f; Vector3 newPosition = new Vector3(-((_circuit.NbCol - 1) * localColWidth / 2) + localColWidth * (col + col_offset), 0, -localRowHeight * row + localRowHeight / 2 - gateHeightRatio * localRowHeight / 2); return(newPosition); }
/// <summary> /// Calcule et fait transiter les tuyaux d'une porte vers leurs nouvelles positions. /// </summary> /// <param name="gateStruct"></param> private void TransitionPipes(Circuit.GateStruct gateStruct) { GateObject gateObject = gateObjects[gateStruct]; int row = gateStruct.row; int col = gateStruct.col; for (int i = 0; i < gateObject.pipes.Count; i++) { Vector3 newPosition = ComputeGridPosition(row, col + i); AnimationManager.Move(gateObject.pipes[i], newPosition, animationTime); } }
/** * ###################################################################################################### * ############################################### PIPES ################################################ * ###################################################################################################### */ /// <summary> /// Calcule et positionne les tuyaux d'une porte à leurs nouvelles positions /// </summary> /// <param name="gateStruct"></param> private void PositionPipes(Circuit.GateStruct gateStruct) { GateObject gateObject = gateObjects[gateStruct]; int row = gateStruct.row; int col = gateStruct.col; for (int i = 0; i < gateObject.pipes.Count; i++) { Vector3 newPosition = ComputeGridPosition(row, col + i); gateObject.pipes[i].transform.localPosition = newPosition; } }
/// <summary> /// Calcule et fait transiter une porte vers sa nouvelle position. /// </summary> /// <param name="gateStruct"></param> private void TransitionGate(Circuit.GateStruct gateStruct) { GateObject gateObject = gateObjects[gateStruct]; GameObject gateGameObject = gateObject.body; if (gateGameObject == null) { return; } Vector3 newPosition = ComputeGatePosition(gateObject); AnimationManager.Move(gateGameObject, newPosition, animationTime); }
/// <summary> /// Calcule et positionne une porte vers sa nouvelle position. /// </summary> /// <param name="gateStruct"></param> private void PositionGate(Circuit.GateStruct gateStruct) { GateObject gateObject = gateObjects[gateStruct]; GameObject gateGameObject = gateObject.body; if (gateGameObject == null) { return; } Vector3 newPosition = ComputeGatePosition(gateObject); gateGameObject.transform.localPosition = newPosition; }
/// <summary> /// Recupère le "GateObject" de la ligne "row" et de la colonne "col" /// </summary> /// <returns> Le "GateObject"</returns> /// <param name="indexCol">Indice de la colonne </param> /// <param name="indexRow">Indice de la ligne </param> public GateObject GetGateObject(int row, int col) { Circuit.GateStruct gateStruct = _circuit.GetGate(row, col); return(gateObjects[gateStruct]); }
/// <summary> /// Crée le GameObject correspondant à une porte, l'ajoute au dictionnaire associant les entrées et leur object et met à jour sa position. /// </summary> /// <param name="gateStruct"></param> private void AddGate(Circuit.GateStruct gateStruct) { GateObject gateObject = CreateGateObject(gateStruct); gateObjects.Add(gateStruct, gateObject); }