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(); } } } } } } }
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(); } } } }
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(); } } } } }
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(); } } } } }
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(); } }