예제 #1
0
    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);
    }
예제 #2
0
    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);
            }
        }
예제 #5
0
        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++;
            }
        }
예제 #6
0
        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");
        }
예제 #7
0
        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++;
            }
        }
예제 #8
0
 protected void OnPickerItemSelected(UIPickerView picker, nint row, nint component, IDPair selectedItem)
 {
     CoreUtility.ExecuteMethod("OnPickerItemSelected", delegate()
     {
         UIView selectedView          = picker.ViewFor(row, component);
         selectedView.BackgroundColor = _colorOfSelectedItem;
     });
 }