Example #1
0
	// Update is called once per frame
	void Update ()
	{
		if(inEditMode && Input.GetMouseButtonUp(0))
		{
			Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
			RaycastHit hitInfo;
			if(Physics.Raycast(ray,out hitInfo))
			{
				if(hitInfo.collider.gameObject.tag == "gridPanel")
				{
					triangleNode node = findOutlineNode(hitInfo.collider.gameObject.transform.parent.gameObject);
					if(node != null && GetComponent<HandleUI>().IsAdding())
					{
						string c = GetComponent<HandleUI>().GetColourString();
						Vector2 realCoords = getRealCoords(node.x, node.y);
						if(grid[(int)realCoords.x,(int)realCoords.y] == null)
						{
							createTriangleOnGrid(node.x, node.y, c);
						}
					}
				}
				else if(hitInfo.collider.gameObject.tag == "Triangle")
				{
					triangleNode node = getNode(hitInfo.collider.gameObject);
					if(node != null && !GetComponent<HandleUI>().IsAdding()
					   && !(node.x == 0 && node.y == 0))
					{
						Vector2 realCoords = getRealCoords(node.x, node.y);
						grid[(int)realCoords.x,(int)realCoords.y] = null;
						Destroy(hitInfo.collider.gameObject);
					}
				}
			}
		}

		GameObject[] triangles = GameObject.FindGameObjectsWithTag("Triangle");
		GameObject gObject = GameObject.FindGameObjectWithTag("Queue");

		queue queueScript = gObject.GetComponent<queue>();

		if(GlobalFlags.updateControlPoints)			
		{
			updateAllAttractionPoints();
			GlobalFlags.updateControlPoints = false;

			//if all triangles are atatched to grid, let the player fire again
			if(allTrianglesStatic())
			{
				GlobalFlags.trianglesStatic = true;
				if (queueScript.trisLeftInQueue() == 0 && triangles.Length != 1) {
					if(GlobalFlags.getMusicVolume() > 0.1f)
					{
						music.audio.volume = 0.1f;
					}
					music.setSeStartTime(Time.time, 2);
					music.playSoundEffect("gameOver");
					Application.LoadLevel("EndGameMenu");
				}
			}
		}

		if(!inEditMode)
		{
			GameObject[] queueTriangles = GameObject.FindGameObjectsWithTag("QueueTriangle");
			GlobalFlags.setQueueBonusTotal(queueTriangles.Length * GlobalFlags.getQueueBounus());

			//decrement delay time
			if(((elapsedChainDelay > 0 && elapsedChainDelay != float.MaxValue)) && (chainedClusters.Count == 0 || (chainedClusters.Count > 0 && !chainedClusters.Peek().skipDelay)))
			{
				elapsedChainDelay -= Time.deltaTime;
			}
			else if (elapsedChainDelay != float.MaxValue)
			{
				elapsedChainDelay = float.MaxValue;
			
				//if clusters left to deal with, color them and chain more
				if(chainedClusters.Count > 0)
				{
					GlobalFlags.incrementMultiplier();
					CheckForGreaterTriangle(chainedClusters.Pop());
					startChainDelay();
				
				}
				else if(chainedClusters.Count == 0)
				{
		
					foreach (triangleNode n in grid)
					{
						if(n != null && n.delayedDestroy && n.triangleObject.GetComponent<TriangleColour>().GetColour() != Color.black)
						{
							Destroy(n.triangleObject);
							deleteNode(n.x, n.y);
						}
						else if(n != null) // if it is black, set to not deleted
						{
							n.delayedDestroy = false;
						}
					}
					
					//Remove any triangles stranded by this action
					dettatchStranded();
					
					GlobalFlags.updateControlPoints = true;
						
					GlobalFlags.resetMultiplier();	
				}		
			}
			else
			{
				if(triangles.Length == 1)
				{
					if(GlobalFlags.getMusicVolume() > 0.1f)
					{
						music.audio.volume = 0.1f;
					}
					music.setSeStartTime(Time.time, 6);
					music.playSoundEffect("machoMadness");
					if (!GlobalFlags.infiniteRandomMode){ 
						GlobalFlags.setScore(GlobalFlags.getScore() + GlobalFlags.getQueueBounusTotal());
					}
					else {
						GlobalFlags.setScore(GlobalFlags.getScore());
					}
					Application.LoadLevel("PostGameMenu");
				}
			}
		}
	}