public void initialRemoveEmployee(IDPair ids) { click.playSound(); Company myCompany = GameObject.Find("Company").GetComponent <Company>(); int projectID = Int32.Parse(ids.projectID.text); int employeeID = Int32.Parse(ids.employeeID.text); float ratio = 0.0f; foreach (Project proj in myCompany.availableProjects) { if (proj.ID == projectID) { foreach (Character emp in proj.employees) { if (emp.ID == employeeID) { emp.onProject = false; emp.project = ""; proj.workEstimate -= emp.speed * proj.deadline; emp.transform.position = new Vector3(-8 + UnityEngine.Random.value * 10, -2 + UnityEngine.Random.value * 5, 0); proj.employees.Remove(emp); Destroy(initalRemoveEmployeePrefab); // Put the employee back into the available list. GameObject newPanel = Instantiate(initialAvailableEmployeePanel) as GameObject; EmployeePanel panel = newPanel.GetComponent <EmployeePanel> (); panel.nameLabel.text = emp.characterName; if (emp.gender == 'M') { panel.genderLabel.text = emp.gender.ToString() + "ale"; } else { panel.genderLabel.text = emp.gender.ToString() + "emale"; } panel.moraleLabel.text = emp.morale.ToString(); panel.moraleBar.sizeDelta = new Vector2(emp.morale * 10, 20); panel.speedLabel.text = emp.speed.ToString(); panel.speedBar.sizeDelta = new Vector2(emp.speed * 10, 20); panel.employeeIcon.sprite = emp.sprite; panel.ID.text = emp.ID.ToString(); panel.ProjectID.text = proj.ID.ToString(); panel.category.text = myCompany.skills[proj.category]; panel.rating.text = emp.skills[proj.category].ToString() + " / 20"; panel.requiredSkillBar.sizeDelta = new Vector2(emp.skills[proj.category] * 10, 20); newPanel.transform.SetParent(initialAvailableEmployeeContentPanel); panel.transform.localScale = new Vector3(1.0f, 1.0f, 1.0f); break; } } ratio = (float)proj.workEstimate / proj.initialWorkAmount; break; } } ProgressFill.setProgressTo(ratio); }
public void initialAddEmployee(IDPair ids) { click.playSound(); Company myCompany = GameObject.Find("Company").GetComponent <Company>(); int projectID = Int32.Parse(ids.projectID.text); int employeeID = Int32.Parse(ids.employeeID.text); float ratio = 0.0f; foreach (Project proj in myCompany.availableProjects) { if (proj.ID == projectID) { foreach (Character item in myCompany.characters) { if (item.ID == employeeID) { item.onProject = true; item.project = proj.projName; proj.employees.Add(item); proj.workEstimate += item.speed * proj.deadline; Destroy(availableEmployeePanel); GameObject newPanel = Instantiate(initalRemoveEmployeePrefab) as GameObject; EmployeePanel panel = newPanel.GetComponent <EmployeePanel> (); panel.nameLabel.text = item.characterName; if (item.gender == 'M') { panel.genderLabel.text = item.gender.ToString() + "ale"; } else { panel.genderLabel.text = item.gender.ToString() + "emale"; } panel.moraleLabel.text = item.morale.ToString(); panel.moraleBar.sizeDelta = new Vector2(item.morale * 10, 20); panel.speedLabel.text = item.speed.ToString(); panel.speedBar.sizeDelta = new Vector2(item.speed * 10, 20); panel.employeeIcon.sprite = item.sprite; panel.ID.text = item.ID.ToString(); panel.ProjectID.text = proj.ID.ToString(); panel.category.text = myCompany.skills[proj.category]; panel.rating.text = item.skills[proj.category].ToString() + " / 20"; panel.requiredSkillBar.sizeDelta = new Vector2(item.skills[proj.category] * 10, 20); newPanel.transform.SetParent(initialRemoveEmployeeContentPanel); panel.transform.localScale = new Vector3(1.0f, 1.0f, 1.0f); break; } } ratio = (float)proj.workEstimate / proj.initialWorkAmount; break; } } ProgressFill.setProgressTo(ratio); }
public override void Selected(UIPickerView picker, nint row, nint component) { CoreUtility.ExecuteMethod("Selected", delegate() { if (_onSelected != null) { IDPair selectedItem = null; if (_dataSource != null) { selectedItem = _dataSource[row]; } _onSelected(picker, row, component, selectedItem); } }); }
//Should be called after connections list is finished public void constructServiceConnections() { foreach (ServiceNodeScript node in connectedServiceComponents) { //Check if Arrow already exists IDPair pair = new IDPair(this.GetInstanceID(), node.GetInstanceID()); GameObject connectionGO = connectionPool.getConnection(pair); if (connectionGO == null) { connectionGO = Instantiate(connectionPrefab, transform.position, Quaternion.identity); connectionGO.name = "Connection To " + node.gameObject.name; #region adjust transform Vector3 dirVec = node.transform.position - transform.position; dirVec.y = 0; float distance = dirVec.magnitude; Vector3 newScale = new Vector3(distance, GlobalVar.serviceNodeSize * 0.25f, GlobalVar.serviceNodeSize * 0.25f); connectionGO.transform.localScale = newScale; connectionGO.transform.position += new Vector3(distance / 2f, 0, 0); connectionGO.transform.parent = rotPivot.transform; float angle = Vector3.Angle(Vector3.right, dirVec / distance); Vector3 cross = Vector3.Cross(Vector3.right, dirVec / distance); if (cross.y < 0) { angle = -angle; } rotPivot.transform.Rotate(Vector3.up, angle); connectionGO.transform.parent = null; connectionGO.transform.parent = transform; rotPivot.transform.Rotate(Vector3.up, -angle); #endregion connectionGO.SetActive(false); connectionPool.AddConnection(pair, connectionGO); } connections.Add(connectionGO); GameObject.Destroy(rotPivot); } }
public void constructConnectionArrows() { //Construct new Arrows int cc = 0; foreach (DependencyDock otherDock in connectedDocks) { //Check if Arrow already exists IDPair pair = new IDPair(this.GetInstanceID(), otherDock.GetInstanceID()); GameObject connectionArrow = connectionPool.GetConnection(pair); if (connectionArrow == null) { GameObject arrowBody; if (dockType == DockType.Import) { arrowBody = Instantiate(importArrowPrefab, transform.position, Quaternion.identity); //var renderer = arrowBody.GetComponent<MeshRenderer>(); //renderer.sharedMaterial = VisualizationLoader.Instance.ImportArrowMaterial; } else { arrowBody = Instantiate(exportArrowPrefab, transform.position, Quaternion.identity); //var renderer = arrowBody.GetComponent<MeshRenderer>(); //renderer.sharedMaterial = VisualizationLoader.Instance.ExportArrowMaterial; } GameObject arrowHead = Instantiate(arrowHeadPrefab, transform.position, Quaternion.identity); //var headRenderer = arrowBody.GetComponent<MeshRenderer>(); //headRenderer.sharedMaterial = VisualizationLoader.Instance.ArrowHeadMaterial; connectionArrow = new GameObject(); connectionArrow.name = "Connection from " + gameObject.name + " to " + otherDock.gameObject.name; connectionArrow.gameObject.AddComponent <DependencyArrow>(); arrowHead.name = connectionArrow.name + "_ArrowHead"; arrowBody.name = connectionArrow.name + "_ArrowBody"; connectionArrow.transform.parent = dependencyContainer.transform; arrowHead.transform.parent = connectionArrow.transform; arrowHead.transform.localPosition = Vector3.zero; arrowBody.transform.parent = connectionArrow.transform; arrowBody.transform.localPosition = Vector3.zero; connectionArrow.transform.localScale = Vector3.one; connectionArrow.transform.rotation = Quaternion.identity; #region adjust transform Vector3 dockLocalPos = transform.localPosition; Vector3 otherDockLocalPos = otherDock.transform.localPosition; Vector3 islandPos = transform.parent.localPosition; Vector3 otherIslandPos = otherDock.transform.parent.localPosition; Vector3 dockPos = islandPos + dockLocalPos; Vector3 otherDockPos = otherIslandPos + otherDockLocalPos; Vector3 direction = otherDockPos - dockPos; direction.y = 0.0f; double distance = direction.magnitude; Vector3 connectionArrowPos = dockPos + (direction / 2); connectionArrow.transform.localPosition = connectionArrowPos; double angle = Vector3.Angle(Vector3.right, direction.normalized); Vector3 cross = Vector3.Cross(Vector3.right, direction.normalized); if (cross.y < 0) { angle = -angle; } connectionArrow.transform.localRotation = Quaternion.Euler(0, (float)angle, 0); float sDWidth = gameObject.GetComponent <Collider>().bounds.extents.magnitude; float tDWidth = otherDock.gameObject.GetComponent <Collider>().bounds.extents.magnitude; float cumulativeWidth = (sDWidth + tDWidth) * 30; float conLength = ((float)distance - cumulativeWidth) - 0.5f; Vector3 arrowBodyScale = new Vector3(conLength, conLength, arrowBody.transform.localScale.z); arrowBody.transform.localScale = arrowBodyScale; float maxHeight = Mathf.Max(gameObject.GetComponent <Collider>().bounds.extents.y, otherDock.gameObject.GetComponent <Collider>().bounds.extents.y); connectionArrow.transform.localPosition += new Vector3(0, maxHeight + cumulativeWidth + 0.7f, 0); #region Arrowhead arrowBodyScale.x = 0.02f * 30f * dockWeights[cc]; arrowBodyScale.y = 0.01f; arrowHead.transform.localScale = arrowBodyScale; if (dockType == DockType.Import) { arrowHead.transform.localPosition += new Vector3(-conLength * 0.5f, 0f, 0f); arrowHead.transform.localEulerAngles = new Vector3(0f, 180f, -39f); } else { arrowHead.transform.localPosition += new Vector3(conLength * 0.5f, 0f, 0f); arrowHead.transform.localEulerAngles = new Vector3(0f, 0f, -39f); } #endregion #endregion //connectionArrow.AddComponent<ObjectStateSynchronizer>().SyncTransform = true; //arrowhead.addcomponent<objectstatesynchronizer>().synctransform = true; //arrowbody.addcomponent<objectstatesynchronizer>().synctransform = true; connectionPool.AddConnection(pair, connectionArrow); connectionArrow.SetActive(false); } connectionArrows.Add(connectionArrow); cc++; } }
public static void Run() { string[] lines = File.ReadAllLines("input.txt"); var almostDuplicateLines = new List <IDPair>(); for (var lineIndex = 0; lineIndex < lines.Length; lineIndex++) { for (var checkIndex = 0; checkIndex < lines.Length; checkIndex++) { int errors = 0; if (checkIndex == lineIndex) { continue; } string line = lines[lineIndex]; string check = lines[checkIndex]; int maxLength = line.Length >= check.Length ? line.Length : check.Length; int errorAt = 0; for (int letterCheck = 0; letterCheck < maxLength; letterCheck++) { if (line[letterCheck] != check[letterCheck]) { errors++; errorAt = letterCheck; } if (errors > 1) { break; } } if (errors == 1) { almostDuplicateLines.Add(new IDPair { Line = line, Check = check, ErrorAt = errorAt }); } } } var winner = new IDPair { Line = almostDuplicateLines[0].Line, Check = almostDuplicateLines[0].Check, ErrorAt = almostDuplicateLines[0].ErrorAt }; using (var stream = File.Open("result.txt", FileMode.Create)) { string fixedId = winner.Check.Substring(0, winner.ErrorAt) + winner.Check.Substring(winner.ErrorAt + 1); Console.WriteLine($"Check: {winner.Check}"); Console.WriteLine($"Line: {winner.Line}"); Console.WriteLine($"ErrorAt: {winner.ErrorAt}"); Console.WriteLine($"FixedId: {fixedId}"); stream.Write(UTF8Encoding.UTF8.GetBytes(fixedId), 0, fixedId.Length); stream.Flush(); } Console.WriteLine("Output result.txt"); }
public void constructConnectionArrows() { //Construct new Arrows int cc = 0; foreach (DependencyDock dock in connectedDocks) { //Check if Arrow already exists IDPair pair = new IDPair(this.GetInstanceID(), dock.GetInstanceID()); GameObject conArrow = connectionPool.getConnection(pair); if (conArrow == null) { GameObject arrowBody; if (dockType == DockType.ImportDock) { arrowBody = Instantiate(importArrowPrefab, transform.position, Quaternion.identity); } else { arrowBody = Instantiate(exportArrowPrefab, transform.position, Quaternion.identity); } GameObject arrowHead = Instantiate(arrowHeadPrefab, transform.position, Quaternion.identity); conArrow = new GameObject(); conArrow.name = "Connection To " + dock.gameObject.name; #region adjust transform Vector3 dirVec = dock.transform.position - transform.position; dirVec.y = 0; float distance = dirVec.magnitude; float sDWidth = gameObject.GetComponent <Collider>().bounds.extents.x; float tDWidth = dock.gameObject.GetComponent <Collider>().bounds.extents.x;; float aWidth = GlobalVar.depArrowWidth * dockWeights[cc]; float connectionLength = distance - (sDWidth + tDWidth); Vector3 newScale = new Vector3(connectionLength, connectionLength, GlobalVar.depArrowWidth * dockWeights[cc]); arrowBody.transform.localScale = newScale; #region Arrowhead newScale.x = GlobalVar.depArrowWidth * dockWeights[cc]; newScale.y = 1f; arrowHead.transform.localScale = newScale; if (dockType == DockType.ImportDock) { arrowHead.transform.position += new Vector3(-connectionLength * 0.5f, 0f, 0f); arrowHead.transform.localEulerAngles = new Vector3(0f, 180f, -39f); } else { arrowHead.transform.position += new Vector3(connectionLength * 0.5f, 0f, 0f); arrowHead.transform.localEulerAngles = new Vector3(0f, 0f, -39f); } arrowHead.transform.parent = conArrow.transform; #endregion arrowBody.transform.parent = conArrow.transform; float maxHeight = Mathf.Max(gameObject.GetComponent <Collider>().bounds.extents.y, dock.gameObject.GetComponent <Collider>().bounds.extents.y); conArrow.transform.position += new Vector3((connectionLength / 2f), maxHeight, 0); conArrow.transform.parent = rotPivot.transform; float angle = Vector3.Angle(Vector3.right, dirVec / distance); Vector3 cross = Vector3.Cross(Vector3.right, dirVec / distance); if (cross.y < 0) { angle = -angle; } rotPivot.transform.Rotate(Vector3.up, angle); conArrow.transform.parent = null; conArrow.transform.parent = dependencyContainer.transform; rotPivot.transform.Rotate(Vector3.up, -angle); #endregion conArrow.SetActive(false); connectionPool.AddConnection(pair, conArrow); } connectionArrows.Add(conArrow); cc++; } }
protected void OnPickerItemSelected(UIPickerView picker, nint row, nint component, IDPair selectedItem) { CoreUtility.ExecuteMethod("OnPickerItemSelected", delegate() { UIView selectedView = picker.ViewFor(row, component); selectedView.BackgroundColor = _colorOfSelectedItem; }); }