/// <summary> /// 开始一局新游戏 /// </summary> public void StartNewGame() { StopGame(); // 随便往一个行省投放5~15名病人,nmb,投1个有可能突然暴毙就nm离谱 var idx = UnityEngine.Random.Range(0, provinces.Length - 1); Loimology.Infect(UnityEngine.Random.Range(5, 15), provinces[idx]); StartGame(); }
/// <summary> /// 最最最关键的部分,定时计算的步骤 /// 每0.2s走一次,没走一次多1min /// </summary> /// <returns></returns> private IEnumerator TickCoroutine() { while (true) { var curMin = TotalMinutes + Speed; // 如果是暂停就溜了溜了 if (curMin != TotalMinutes) { // 先把时间同步一哈 TotalMinutes = curMin; SyncTime(); Health = Patient = Treated = Infected = 0; // 开始过各行省该tick内的流程 for (int i = 0; i < Data.numOfProvince; i++) { Province province = provinces[i]; // 拿到加成下的疾病 Disease disease = GetDisease(province); // 拿到加成下的行省 province.BeforeTick(); if (isAlert) { Loimology.SEITRD_Tick(disease, province, province); } else { Loimology.Unaware_Tick(disease, province, province); } // 重新计算全国的数据 Health += province.Health; Patient += province.Patient; Treated += province.Treated; Infected += province.Infected; } Debug.LogWarningFormat("Time:{0} H:{1} P:{2} T:{3} I:{4}", TotalMinutes, Health, Patient, Treated, Infected); if (Infected == 0) { Debug.Log("33"); } _E.TriggerEvent(EventID.TickEnd); } yield return(new WaitForSeconds(0.2f)); } }