Exemplo n.º 1
0
    void ManageEmployeeExperience()
    {
        for (int i = 1; i < EmployeeList.Count; i++)
        {
            if (EmployeeList[i].Experience < EmployeeList[i].BaseInfo.LaborForce * 10 && EmployeeList[i].isWorking)
            {
                EmployeeList[i].Experience++;

                if (CompanyValueCall.CompanyName == CompanyManagerCall.PlayerCompanyName)
                {
                    if (PanelControllerCall.CurrentSidePanel != null)
                    {
                        if (PanelControllerCall.CurrentSidePanel.name == "WorkerPanel")
                        {
                            WorkerPanelController PanelComponent = PanelControllerCall.CurrentSidePanel.GetComponent <WorkerPanelController>();

                            if (PanelComponent.CurrentWorkerIndex == i)
                            {
                                PanelComponent.UpdateInfoPanel();
                            }
                        }
                    }
                }
            }
        }
    }
Exemplo n.º 2
0
    public void PromoteEmployee(int Index)
    {
        int UpgradeValue = Random.Range(2, Random.Range(6, Random.Range(8, 11)));

        EmployeeList[Index].BaseInfo.LaborForce += UpgradeValue;
        TotalLabor += UpgradeValue;

        int PayRaiseValue = Mathf.CeilToInt((float)EmployeeList[Index].BaseInfo.LaborForce / 2f * (float)UpgradeValue * Random.Range(1.5f, Random.Range(2f, Random.Range(3.5f, 5f))));

        EmployeeList[Index].BaseInfo.Salary += PayRaiseValue;
        EconomyValueCall.ModifyPersistHistory("Employee #" + EmployeeList[Index].Index + " Pay", EmployeeList[Index].BaseInfo.Salary);

        EmployeeList[Index].Experience = 0;

        if (CompanyValueCall.CompanyName == CompanyManagerCall.PlayerCompanyName)
        {
            PanelControllerCall.UpdateFactoryInfo("Employee", TotalLabor, RequiredLabor);
            if (PanelControllerCall.CurrentSidePanel != null)
            {
                if (PanelControllerCall.CurrentSidePanel.name == "WorkerPanel")
                {
                    WorkerPanelController PanelComponent = PanelControllerCall.CurrentSidePanel.GetComponent <WorkerPanelController>();

                    PanelComponent.DisplayWorkerList();
                }
            }
        }
    }
Exemplo n.º 3
0
    void DeleteEmployee(EmployeeInfo Employee)
    {
        TotalLabor -= Employee.BaseInfo.LaborForce;

        int TargetIndex = GetEmployeeIndex(Employee);

        EconomyValueCall.DeletePersistHistory("Employee #" + Employee.Index + " Pay");
        EmployeeList.RemoveAt(TargetIndex);
        Employee.BaseInfo.LeaveFactoryList.Add(CompanyValueCall.CompanyName);
        GameObject.Find("WorkerManager").GetComponent <WorkerSelector>().UnHiredList.Add(Employee.BaseInfo);

        if (CompanyValueCall.CompanyName == CompanyManagerCall.PlayerCompanyName)
        {
            PanelControllerCall.UpdateFactoryInfo("Employee", TotalLabor, RequiredLabor);
            if (PanelControllerCall.CurrentSidePanel != null)
            {
                if (PanelControllerCall.CurrentSidePanel.name == "WorkerPanel")
                {
                    WorkerPanelController PanelComponent = PanelControllerCall.CurrentSidePanel.GetComponent <WorkerPanelController>();

                    PanelComponent.DisplayWorkerList();
                    if (PanelComponent.CurrentWorkerIndex == TargetIndex)
                    {
                        PanelComponent.ClearInfoPanel();
                    }
                }
            }
        }
    }
Exemplo n.º 4
0
    public void HireEmployee(WorkerSelector.Worker newWorker)
    {
        EmployeeInfo newEmployee = new EmployeeInfo();

        newEmployee.Index                = CurrentIndex++;
        newEmployee.BaseInfo             = newWorker;
        newEmployee.FatigueValue         = newWorker.LaborForce * 0.5f;
        newEmployee.CurrentLaborForce    = newWorker.LaborForce;
        newEmployee.CurrentSincerityRate = newWorker.SincerityRate;
        newEmployee.Happiness            = 0.45f;
        newEmployee.isResting            = false;
        newEmployee.isWorking            = false;
        newEmployee.CurrentDayRoom       = null;

        EmployeeList.Add(newEmployee);
        TotalLabor += newWorker.LaborForce;

        if (EmployeeList.Count != 1)
        {
            EconomyValueCall.AddPersistHistory(TimeManagerCall.GetNextMonth(0), TimeManagerCall.Month, "Employee Pay", "#" + newEmployee.Index + " " + newEmployee.BaseInfo.Name, "Employee #" + newEmployee.Index + " Pay", -newEmployee.BaseInfo.Salary);
            CompanyValueCall.GetLandValue().GetComponent <LandValue>().ChangeLandValue(200);

            if (CompanyValueCall.CompanyName == CompanyManagerCall.PlayerCompanyName)
            {
                GameObject.Find("NotificationManager").GetComponent <NotificationManager>().AddNews("Info", newWorker.Name + " is new partner.");
                // Debug.Log(newEmployee.BaseInfo.Name + " " + newEmployee.BaseInfo.LaborForce + " " + newEmployee.BaseInfo.Salary);

                PanelControllerCall.UpdateFactoryInfo("Employee", TotalLabor, RequiredLabor);
                if (PanelControllerCall.CurrentSidePanel != null)
                {
                    if (PanelControllerCall.CurrentSidePanel.name == "WorkerPanel")
                    {
                        WorkerPanelController PanelComponent = PanelControllerCall.CurrentSidePanel.GetComponent <WorkerPanelController>();

                        PanelComponent.DisplayWorkerList();
                    }
                }
            }
        }
    }
Exemplo n.º 5
0
    void UpdateLaborForce()
    {
        List <EmployeeInfo> DeleteList = new List <EmployeeInfo>();

        foreach (var Employee in EmployeeList)
        {
            if (Employee.BaseInfo.LaborForceLossRate == 0)
            {
                continue;
            }

            if (Employee.Happiness <= 0)
            {
                DeleteList.Add(Employee);
                continue;
            }

            if (Employee.isWorking)
            {
                if (Employee.FatigueValue < Employee.BaseInfo.LaborForce)
                {
                    Employee.FatigueValue += Employee.BaseInfo.LaborForce * Employee.BaseInfo.LaborForceLossRate / 500;
                }
                else
                {
                    Employee.FatigueValue = Employee.BaseInfo.LaborForce;
                }
            }
            else if (Employee.isResting)
            {
                if (Employee.FatigueValue > 0)
                {
                    Employee.FatigueValue -= (Employee.BaseInfo.LaborForce * (Employee.CurrentSincerityRate / 500)) * Employee.CurrentDayRoom.CurrentPerformance;
                }

                if (Employee.FatigueValue < 0)
                {
                    Employee.FatigueValue = 0;
                }
            }

            if (Employee.FatigueValue > 0.3f && !Employee.isResting)
            {
                List <DayRoomInfo> AvaliableDayRoomList = new List <DayRoomInfo>();
                foreach (var DayRoom in DayRoomList)
                {
                    if (DayRoom.Info.ObjectActCall.WorkSpeed > 0f)
                    {
                        AvaliableDayRoomList.Add(DayRoom);
                    }
                }

                for (int i = AvaliableDayRoomList.Count - 1; i >= 0; i--)
                {
                    DayRoomInfo Target = AvaliableDayRoomList[Random.Range(0, AvaliableDayRoomList.Count)];
                    if (Target.DayRoomActCall.EmployeeCapacity > Target.DayRoomActCall.RestingEmployeeList.Count)
                    {
                        Target.DayRoomActCall.EmployeeEnroll(Employee);
                        // Debug.Log(Employee.BaseInfo.Name + " is going to rest " + Employee.FatigueValue);
                        break;
                    }
                    AvaliableDayRoomList.Remove(Target);
                }
            }

            if (TimeManagerCall.TimeValue % TimeManagerCall.Hour < TimeManagerCall.PlaySpeed)
            {
                if (Employee.FatigueValue >= 0.5f)
                {
                    if (Employee.CurrentLaborForce > Employee.BaseInfo.LaborForce / 4)
                    {
                        Employee.CurrentLaborForce -= 0.1f;
                    }
                    Employee.Happiness -= 0.05f;
                }
                else
                {
                    if (Employee.CurrentLaborForce < Employee.BaseInfo.LaborForce)
                    {
                        Employee.CurrentLaborForce += 0.5f;
                    }

                    if (Employee.Happiness < 1f)
                    {
                        Employee.Happiness += 0.005f;
                    }
                    else
                    {
                        Employee.Happiness = 1f;
                    }
                }

                if (CompanyValueCall.CompanyName == CompanyManagerCall.PlayerCompanyName)
                {
                    if (PanelControllerCall.CurrentSidePanel != null)
                    {
                        if (PanelControllerCall.CurrentSidePanel.name == "WorkerPanel")
                        {
                            WorkerPanelController PanelComponent = PanelControllerCall.CurrentSidePanel.GetComponent <WorkerPanelController>();
                            if (PanelComponent.CurrentWorkerIndex == GetEmployeeIndex(Employee))
                            {
                                PanelComponent.UpdateInfoPanel();
                            }
                        }
                    }
                }
            }
        }

        if (DeleteList.Count > 0)
        {
            string LeaveNameList = "";
            for (int i = 0; i < DeleteList.Count; i++)
            {
                LeaveNameList += DeleteList[i].BaseInfo.Name + " ";
                DeleteEmployee(DeleteList[i]);
            }

            if (CompanyValueCall.CompanyName == GameObject.Find("CompanyManager").GetComponent <CompanyManager>().PlayerCompanyName)
            {
                if (DeleteList.Count > 1)
                {
                    LeaveNameList += "are";
                }
                else
                {
                    LeaveNameList += "is";
                }

                GameObject.Find("NotificationManager").GetComponent <NotificationManager>().AddNews("Info", LeaveNameList + " Leave your factory.");
                // Debug.Log(LeaveNameList + " Leave your factory.");
            }

            DeleteList.Clear();
        }
    }