public bool LookForMember(MemberBehaviour theMemberToLookFor) { bool isSet = false; int coveredByMember = 0; List <PositionBehaviour> positionsCovered = new List <PositionBehaviour>(); for (int index = 0; index < thePositions.Length; index++) { //Debug.Log(index.ToString()); if (thePositions[index].currentOccupant == -1) { Vector3 origin = new Vector3(thePositions[index].transform.position.x, thePositions[index].transform.position.y, thePositions[index].transform.position.z - 0.8f); Ray ray = new Ray(origin, new Vector3(0.0f, 0.0f, 1.0f)); List <RaycastHit> hits = new List <RaycastHit>(); hits.AddRange(Physics.RaycastAll(ray)); foreach (RaycastHit hitInfo in hits.OrderBy(l => l.distance)) { if (hitInfo.transform.GetComponent <MemberBehaviour>() == theMemberToLookFor) { coveredByMember++; positionsCovered.Add(thePositions[index]); isSet = true; Debug.Log("Found"); } } } } if (coveredByMember == theMemberToLookFor.size) { switch (theMemberToLookFor.theSizeOfMember) { case MemberBehaviour.SizeOfMember.OneByOne: theMemberToLookFor.transform.position = positionsCovered[0].transform.position; break; case MemberBehaviour.SizeOfMember.OneByTwo: theMemberToLookFor.transform.position = new Vector3(positionsCovered[0].transform.position.x, positionsCovered[0].transform.position.y + offSetInY, positionsCovered[0].transform.position.z); break; case MemberBehaviour.SizeOfMember.TwoByOne: theMemberToLookFor.transform.position = new Vector3(positionsCovered[0].transform.position.x + offSetInX, positionsCovered[0].transform.position.y, positionsCovered[0].transform.position.z); break; case MemberBehaviour.SizeOfMember.TwoByTwo: theMemberToLookFor.transform.position = new Vector3(positionsCovered[0].transform.position.x + offSetInX, positionsCovered[0].transform.position.y + offSetInY, positionsCovered[0].transform.position.z); break; } theSquadBeingEdited.members++; theMemberToLookFor.inUnit = true; for (int index = 0; index < positionsCovered.Count; index++) { positionsCovered[index].currentOccupant = theMemberToLookFor.uniqueID; } } return(isSet); }
public bool LookForMember(MemberBehaviour theMemberToLookFor) { bool isSet = false; int coveredByMember = 0; List<PositionBehaviour> positionsCovered = new List<PositionBehaviour>(); for (int index = 0; index < thePositions.Length; index++) { //Debug.Log(index.ToString()); if (thePositions[index].currentOccupant == -1) { Vector3 origin = new Vector3(thePositions[index].transform.position.x, thePositions[index].transform.position.y, thePositions[index].transform.position.z -0.8f); Ray ray = new Ray(origin, new Vector3(0.0f, 0.0f, 1.0f)); List<RaycastHit> hits = new List<RaycastHit>(); hits.AddRange(Physics.RaycastAll(ray)); foreach (RaycastHit hitInfo in hits.OrderBy(l => l.distance)) { if (hitInfo.transform.GetComponent<MemberBehaviour>() == theMemberToLookFor) { coveredByMember++; positionsCovered.Add(thePositions[index]); isSet = true; Debug.Log("Found"); } } } } if (coveredByMember == theMemberToLookFor.size) { switch (theMemberToLookFor.theSizeOfMember) { case MemberBehaviour.SizeOfMember.OneByOne: theMemberToLookFor.transform.position = positionsCovered[0].transform.position; break; case MemberBehaviour.SizeOfMember.OneByTwo: theMemberToLookFor.transform.position = new Vector3(positionsCovered[0].transform.position.x, positionsCovered[0].transform.position.y + offSetInY, positionsCovered[0].transform.position.z); break; case MemberBehaviour.SizeOfMember.TwoByOne: theMemberToLookFor.transform.position = new Vector3(positionsCovered[0].transform.position.x + offSetInX, positionsCovered[0].transform.position.y, positionsCovered[0].transform.position.z); break; case MemberBehaviour.SizeOfMember.TwoByTwo: theMemberToLookFor.transform.position = new Vector3(positionsCovered[0].transform.position.x + offSetInX, positionsCovered[0].transform.position.y + offSetInY, positionsCovered[0].transform.position.z); break; } theSquadBeingEdited.members++; theMemberToLookFor.inUnit = true; for (int index = 0; index < positionsCovered.Count; index++) { positionsCovered[index].currentOccupant = theMemberToLookFor.uniqueID; } } return isSet; }
public bool LookForMember(MemberBehaviour theMemberToLookFor) { bool isSet = false; int coveredByMember = 0; //for return isSet; }
public void SetMemberPosition(MemberBehaviour memberToBeAdded) { }
// Update is called once per frame void Update() { //Debug.Log(Input.mousePosition.x.ToString()); if (isActive) { if (Input.mousePosition.x > (Screen.width - (Screen.width / 5.0f))) { if (Input.mousePosition.y < (Screen.height / 10.0f) && LowerBound.transform.localPosition.y < lowerBound) { TopBound.transform.Translate(Vector3.up * scrollingRate * Time.deltaTime, transform); for (int index = 0; index < members.Count; index++) { members[index].transform.Translate(Vector3.up * scrollingRate * Time.deltaTime, transform); } LowerBound.transform.Translate(Vector3.up * scrollingRate * Time.deltaTime, transform); } if (Input.mousePosition.y > (Screen.height - (Screen.height / 10)) && TopBound.transform.localPosition.y > upperBound) { TopBound.transform.Translate(Vector3.up * -scrollingRate * Time.deltaTime, transform); for (int index = 0; index < members.Count; index++) { members[index].transform.Translate(Vector3.up * -scrollingRate * Time.deltaTime, transform); } LowerBound.transform.Translate(Vector3.up * -scrollingRate * Time.deltaTime, transform); } } if (Input.GetMouseButtonDown(0)) { Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit hitInfo; if (Physics.Raycast(ray, out hitInfo)) { if (hitInfo.transform.GetComponent<MemberBehaviour>()) { HeldMember = hitInfo.transform.GetComponent<MemberBehaviour>(); members.Remove(HeldMember); currentlyHoldingAMember = true; previousPosition = HeldMember.transform.localPosition; HeldMember.transform.parent = null; } } } if (Input.GetMouseButton(0)) { if (currentlyHoldingAMember) { float yPos = (6.0f * Input.mousePosition.y / (float)Screen.height) - 2.0f; float xPos = (xRatio * Input.mousePosition.x / (float)Screen.width) - (xRatio / 2); HeldMember.transform.position = new Vector3(xPos, yPos, 0.5f); //Debug.Log(yPos.ToString()); } } //if (Input.GetMouseButtonUp(0)) //{ // if (currentlyHoldingAMember) // { // Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); // List<RaycastHit> hits = new List<RaycastHit>(); // hits.AddRange(Physics.RaycastAll (ray)); // foreach (RaycastHit hitInfo in hits.OrderBy(l => l.distance)) // { // if (hitInfo.transform.GetComponent<PositionBehaviour>()) // { // } // } // } //} } }
void Start () { xRatio = 6.0f * ((float)Screen.width / (float)Screen.height); int currentRowOfOne = 0; int currentRowOfTwo = 0; int exampleID = 0; for(int index = 0; index < magicNumberForTesting; index++) { MemberBehaviour newMember = null; newMember = (MemberBehaviour)Instantiate(memberOneByOne, new Vector3(0.0f, 0.0f, 0.0f), Quaternion.identity); newMember.transform.parent = transform; newMember.uniqueID = exampleID; exampleID++; int columnChoiceByIndex = index % 2; if (columnChoiceByIndex == 0) { newMember.transform.localPosition = new Vector3(columnOne, 2.3f - (currentRowOfOne * distanceBetweenRowsForOne), 0.0f); } else { newMember.transform.localPosition = new Vector3(columnTwo, 2.3f - (currentRowOfOne * distanceBetweenRowsForOne), 0.0f); currentRowOfOne++; } members.Add(newMember); } lastIndexOfOneByOne = members.Count - 1; currentRowOfOne++; for (int index = 0; index < magicNumberForTesting; index++) { MemberBehaviour newMember = null; newMember = (MemberBehaviour)Instantiate(memberOneByTwo, new Vector3(0.0f, 0.0f, 0.0f), Quaternion.identity); newMember.transform.parent = transform; newMember.uniqueID = exampleID; exampleID++; int columnChoiceByIndex = index % 2; if (columnChoiceByIndex == 0) { newMember.transform.localPosition = new Vector3(columnOne, 2.3f - (currentRowOfOne * distanceBetweenRowsForOne) - (currentRowOfTwo *distanceBetweenRowsForTwo) + differenceBetweenOneAndTwoY, 0.0f); } else { newMember.transform.localPosition = new Vector3(columnTwo, 2.3f - (currentRowOfOne * distanceBetweenRowsForOne) - (currentRowOfTwo * distanceBetweenRowsForTwo) + differenceBetweenOneAndTwoY, 0.0f); currentRowOfTwo++; } members.Add(newMember); } lastIndexOfOneByTwo = members.Count - 1; //currentRowOfTwo--; for (int index = 0; index < magicNumberForTesting; index++) { MemberBehaviour newMember = null; newMember = (MemberBehaviour)Instantiate(memberTwoByOne, new Vector3(0.0f, 0.0f, 0.0f), Quaternion.identity); newMember.transform.parent = transform; newMember.uniqueID = exampleID; exampleID++; newMember.transform.localPosition = new Vector3(columnOne + differenceBetweenOneAndTwoX, 2.3f - (currentRowOfOne * distanceBetweenRowsForOne) - (currentRowOfTwo * distanceBetweenRowsForTwo) + differenceBetweenOneAndTwoY + 0.5f, 0.0f); currentRowOfOne++; members.Add(newMember); } lastIndexOfTwoByOne = members.Count - 1; for (int index = 0; index < magicNumberForTesting; index++) { MemberBehaviour newMember = null; newMember = (MemberBehaviour)Instantiate(memberTwoByTwo, new Vector3(0.0f, 0.0f, 0.0f), Quaternion.identity); newMember.transform.parent = transform; newMember.uniqueID = exampleID; exampleID++; newMember.transform.localPosition = new Vector3(columnOne + differenceBetweenOneAndTwoX, 2.3f - (currentRowOfOne * distanceBetweenRowsForOne) - (currentRowOfTwo * distanceBetweenRowsForTwo) + differenceBetweenOneAndTwoY, 0.0f); currentRowOfTwo++; members.Add(newMember); } LowerBound.transform.localPosition = new Vector3(columnOne + differenceBetweenOneAndTwoX, 2.3f - (currentRowOfOne * distanceBetweenRowsForOne) - (currentRowOfTwo * distanceBetweenRowsForTwo) + differenceBetweenOneAndTwoY + 0.5f, 0.0f); //renderer.enabled = false; }
public void BuildMemberTray() { if (members.Count > 0) { MemberBehaviour currentMember = members[0]; Vector3 currentTopPosition = TopBound.transform.localPosition; int currentIndex = 0; int currentRowOfOne = 0; int currentRowOfTwo = 0; while (currentMember.theSizeOfMember == MemberBehaviour.SizeOfMember.OneByOne) { currentMember.transform.parent = transform; int columnChoiceByIndex = currentIndex % 2; if (columnChoiceByIndex == 0) { currentMember.transform.localPosition = new Vector3(columnOne, currentTopPosition.y - 0.7f - (currentRowOfOne * distanceBetweenRowsForOne), 0.0f); } else { currentMember.transform.localPosition = new Vector3(columnTwo, currentTopPosition.y - 0.7f - (currentRowOfOne * distanceBetweenRowsForOne), 0.0f); currentRowOfOne++; } currentIndex++; currentMember = members[currentIndex]; } //Debug.Log("First while loop"); currentRowOfOne++; if (currentIndex % 2 != 0) currentRowOfOne++; lastIndexOfOneByOne = members.Count - 1; int usedForToggle = 0; while (currentMember.theSizeOfMember == MemberBehaviour.SizeOfMember.OneByTwo) { currentMember.transform.parent = transform; int columnChoiceByIndex = usedForToggle % 2; if (columnChoiceByIndex == 0) { currentMember.transform.localPosition = new Vector3(columnOne, currentTopPosition.y - 0.7f - (currentRowOfOne * distanceBetweenRowsForOne) - (currentRowOfTwo * distanceBetweenRowsForTwo) + differenceBetweenOneAndTwoY, 0.0f); } else { currentMember.transform.localPosition = new Vector3(columnTwo, currentTopPosition.y - 0.7f - (currentRowOfOne * distanceBetweenRowsForOne) - (currentRowOfTwo * distanceBetweenRowsForTwo) + differenceBetweenOneAndTwoY, 0.0f); currentRowOfTwo++; } usedForToggle++; currentIndex++; currentMember = members[currentIndex]; } //Debug.Log("Second While Loop"); if (usedForToggle % 2 != 0) currentRowOfTwo++; lastIndexOfOneByTwo = members.Count - 1; //currentRowOfTwo--; while (currentMember.theSizeOfMember == MemberBehaviour.SizeOfMember.TwoByOne) { currentMember.transform.parent = transform; currentMember.transform.localPosition = new Vector3(columnOne + differenceBetweenOneAndTwoX, currentTopPosition.y - 0.7f - (currentRowOfOne * distanceBetweenRowsForOne) - (currentRowOfTwo * distanceBetweenRowsForTwo) + differenceBetweenOneAndTwoY + 0.5f, 0.0f); currentRowOfOne++; currentIndex++; currentMember = members[currentIndex]; } //Debug.Log("Third while loop"); lastIndexOfTwoByOne = members.Count - 1; while (currentMember) { currentMember.transform.parent = transform; currentMember.transform.localPosition = new Vector3(columnOne + differenceBetweenOneAndTwoX, currentTopPosition.y - 0.7f - (currentRowOfOne * distanceBetweenRowsForOne) - (currentRowOfTwo * distanceBetweenRowsForTwo) + differenceBetweenOneAndTwoY, 0.0f); currentRowOfTwo++; currentIndex++; if (currentIndex != members.Count) currentMember = members[currentIndex]; else currentMember = null; } //Debug.Log("Fourth while loop"); LowerBound.transform.localPosition = new Vector3(columnOne + differenceBetweenOneAndTwoX, currentTopPosition.y - 0.7f - (currentRowOfOne * distanceBetweenRowsForOne) - (currentRowOfTwo * distanceBetweenRowsForTwo) + differenceBetweenOneAndTwoY + 0.5f, 0.0f); } }