public void tick(TVillage CV, int MarketSpeed) { for (int i = MarketInfo.Count - 1; i >= 0; i--) { TMInfo x = MarketInfo[i]; if (x.FinishTime > DateTime.Now) { continue; } if (x.MType == TMType.MyBack) { MarketInfo.Remove(x); if (SingleCarry == 0) { continue; } Console.WriteLine(DateTime.Now.ToLongTimeString() + " " + ActiveMerchant.ToString()); ActiveMerchant += Convert.ToInt32(Math.Ceiling((double)(x.CarryAmount.Resources[0] + x.CarryAmount.Resources[1] + x.CarryAmount.Resources[2] + x.CarryAmount.Resources[3]) / SingleCarry)); Console.WriteLine(DateTime.Now.ToLongTimeString() + " " + ActiveMerchant.ToString()); } else if (x.MType == TMType.MyOut) { x.MType = TMType.MyBack; var distance = CV.Coord * x.Coord; var time = distance * 3600 / MarketSpeed; try { x.FinishTime = x.FinishTime.AddSeconds(time); } catch (Exception ex) { throw new InvalidOperationException( string.Format("{0}\r\nMarketSpeed:{1}\r\nMyCoord:{2}\r\nTargetCoord:{3}", ex.Message, MarketSpeed, CV.Coord, x.Coord)); } } else { for (int j = 0; j < 4; j++) { CV.Resource[j].Write(CV.Resource[j].CurrAmount + x.CarryAmount.Resources[j]); } MarketInfo.Remove(x); } } }