void Start() { //cambia dimensione camera ortografica in base alla dimensione dello schermo in modo da mostrare l'intera board camera.orthographicSize = Screen.height * 800 / 1920; gm = this; lives = maxLives; numberFluxesDepleteded = 0; levelCompleted = false; SaveManager.Instance().SaveLastScene(SceneManager.GetActiveScene().name); MapUtility.LowerPins = new List <Pin>(); MapUtility.UpperPins = new List <Pin>(); MapUtility.Holes = new List <Hole>(); MapUtility.Bridges = new List <Bridge>(); MapUtility.IsChipWiring = false; var lowPins = MapUtility.GetAllObjectsOnlyInScene().Where(x => x.name.Contains("LPin")).OrderBy(pin => pin.name).ToList(); var upperPins = MapUtility.GetAllObjectsOnlyInScene().Where(x => x.name.Contains("UPin")).OrderBy(pin => pin.name).ToList(); var holes = MapUtility.GetAllObjectsOnlyInScene().Where(x => x.name.Contains("Hole")).OrderBy(hole => hole.name).ToList(); var bridges = MapUtility.GetAllObjectsOnlyInScene().Where(x => x.name.Contains("Bridge")).ToList(); MapUtility.collisionMapBaseSetup(); //per ogni lowPin trovato, creo un'istanza di Pin var pinIndex = 0; foreach (var pin in lowPins) { var attachmentPosition = pin.transform.GetChild(0).position; var attachmentRotation = pin.transform.GetChild(0).rotation; var attachment = new Tuple <Vector3, Quaternion>(attachmentPosition, attachmentRotation); var pinInstance = new Pin() { IsConnected = false, Type = PinType.Lower, Instance = pin, AttachmentPoint = attachment, Index = pinIndex }; MapUtility.setCollisionMap(attachmentPosition.x, attachmentPosition.z, CollisionEntity.getFullCollisionEntity()); MapUtility.LowerPins.Add(pinInstance); pinIndex++; } //per ogni upperPin trovato, creo un'istanza di Pin pinIndex = 0; foreach (var pin in upperPins) { var attachmentPosition = pin.transform.GetChild(0).position; var attachmentRotation = pin.transform.GetChild(0).rotation; var attachment = new Tuple <Vector3, Quaternion>(attachmentPosition, attachmentRotation); var spawnPointPosition = new Vector3(attachmentPosition.x, attachmentPosition.y, attachmentPosition.z - 950); var fluxSpawnPoint = new Tuple <Vector3, Quaternion>(spawnPointPosition, attachmentRotation); var pinInstance = new Pin() { IsConnected = false, Type = PinType.Upper, Instance = pin, FluxSpawnPoint = fluxSpawnPoint, AttachmentPoint = attachment, Index = pinIndex }; MapUtility.setCollisionMap(attachmentPosition.x, attachmentPosition.z, CollisionEntity.getFullCollisionEntity()); MapUtility.UpperPins.Add(pinInstance); pinIndex++; } idleFluxes = new List <Flux>(); depletingFluxes = new List <Flux>(); //salva i buchi trovati nella scena foreach (var hole in holes) { var holeInstance = new Hole() { IsConnected = false, Instance = hole }; MapUtility.Holes.Add(holeInstance); MapUtility.setCollisionMap(hole.transform.position.x, hole.transform.position.z, holeInstance); } //salva i ponti trovati nella scena foreach (var bridge in bridges) { var bridgeInstance = new Bridge(); MapUtility.Bridges.Add(bridgeInstance); MapUtility.setCollisionMap(bridge.transform.position.x, bridge.transform.position.z, bridgeInstance); } //flag per prevenire lo spawn dei flussi, == true nei tutorial if (!preventFluxSpawning) { //il livello 7 prevede la possibilità di spawnare due flussi contemporaneamente su due pin diversi if (SceneManager.GetActiveScene().name == "Level 7") { StartCoroutine(spawnRandomFluxesForeverWithDoubleFlux()); } else { StartCoroutine(spawnRandomFluxesForever()); } } MapUtility.GamePaused = false; }