public Record() { this.messages = new List <Message>(); this.workerStats = new WorkerStats(); this.workingStats = new WorkingStats(); this.earningStats = new EarningStats(); }
public void SetWorkerStats(TaiwuDate date, WorkerStats workerStats) { if (!this.history.ContainsKey(date)) { this.history[date] = new Record(date); } this.history[date].workerStats = workerStats; }
public Record(TaiwuDate date) { this.messages = new List <Message> { new Message(Message.IMPORTANCE_HIGHEST, $"进入{date.ToString(richText: true)}。"), }; this.workerStats = new WorkerStats(); this.workingStats = new WorkingStats(); this.earningStats = new EarningStats(); }
/// <summary> /// 计算指定地区的工作人员统计信息 /// </summary> /// <param name="partId"></param> /// <param name="placeId"></param> /// <returns></returns> public static WorkerStats GetWorkerStats(int partId, int placeId) { int mainActorId = DateFile.instance.MianActorID(); List <int> workerIds = Original.GetWorkerIds(partId, placeId); var stats = new WorkerStats(); foreach (int workerId in workerIds) { stats.avgHealthInjury += 1f - TaiwuCommon.GetInjuryRate(workerId); stats.avgHealthCirculating += 1f - TaiwuCommon.GetCirculatingBlockingRate(workerId); stats.avgHealthPoison += 1f - TaiwuCommon.GetPoisoningRate(workerId); stats.avgHealthLifespan += 1f - TaiwuCommon.GetLifespanDamageRate(workerId); int mood = int.Parse(DateFile.instance.GetActorDate(workerId, 4, false)); int favor = DateFile.instance.GetActorFavor(false, mainActorId, workerId); int favorLevel = DateFile.instance.GetActorFavor(false, mainActorId, workerId, getLevel: true); int scaledFavor = Original.GetScaledFavor(favorLevel); scaledFavor = Original.AdjustScaledFavorWithMood(scaledFavor, mood); stats.avgMood += mood; stats.avgFriendliness += favor; stats.avgWorkMotivation += Mathf.Max(scaledFavor, 0) / 100f; } if (workerIds.Count > 0) { stats.nWorkers = workerIds.Count; stats.avgHealthInjury /= workerIds.Count; stats.avgHealthCirculating /= workerIds.Count; stats.avgHealthPoison /= workerIds.Count; stats.avgHealthLifespan /= workerIds.Count; stats.avgCompositeHealth = (stats.avgHealthInjury + stats.avgHealthCirculating + stats.avgHealthPoison + stats.avgHealthLifespan) / 4; stats.avgMood /= workerIds.Count; stats.avgFriendliness /= workerIds.Count; stats.avgWorkMotivation /= workerIds.Count; } return(stats); }