Ejemplo n.º 1
0
 public Record()
 {
     this.messages     = new List <Message>();
     this.workerStats  = new WorkerStats();
     this.workingStats = new WorkingStats();
     this.earningStats = new EarningStats();
 }
Ejemplo n.º 2
0
        public void SetWorkerStats(TaiwuDate date, WorkerStats workerStats)
        {
            if (!this.history.ContainsKey(date))
            {
                this.history[date] = new Record(date);
            }

            this.history[date].workerStats = workerStats;
        }
Ejemplo n.º 3
0
 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();
 }
Ejemplo n.º 4
0
        /// <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);
        }