protected override void Operation() { this.Transporter.onRoad = false; if (this.transporter.Route[0].Content.Count < this.transporter.Route[0].Capacity) { transporter.Route[0].Receive(this.Time, transporter); transporter.BecomeFree(this.Time); } else { transporter.Route[0].TransporterQueue.add(transporter) transporter.BecomeBlocked(this.Time); return; } if (transporter.Location = transporter.ParkNode) { if (transporter.assignedStorage != null) { this.Manager.EventCalendar.ScheduleSeizeNodeEvent(this.Time + transporter.TravelTime.GenerateValue(), transporter); transporter.Route[0].Release(this.Time, transporter); transporter.onRoad = true; return; } } if (transporter.Route.Count == 0) { if (transporter.Content.Count > 0) { this.Manager.EventCalendar.ScheduleEndLoadUnloadEvent(this.Time + transporter.TransferTime.GenerateValue(), transporter); transporter.InTransfer = true; foreach (Bin bin in transporter.Content) { bin.InTransfer = true; } return; } else { this.Manager.TriggerSupermarketControllerAlgorithm(this.transporter.assignedStorage); return; } } if (transporter.Route.Count > 0) { BinList binsToUnload = transporter.Route[0].GetBinsToUnload((Storage)transporter.Location); BinList binsToCollect = this.Manager.BinCollectorAlgorithm.Execute(binsToUnload, (Storage)transporter.Location); //ScheduleEndLoadUnloadEvent icine binsToCollect almiyor ona gore duzenlememiz gerekiyor. Bunun disinda icine neden binmagazine aldigina bakip guncellememiz gerekiyr. this.Manager.EventCalendar.ScheduleEndLoadUnloadEvent(this.Time + transporter.TravelTime.GenerateValue(), binsToUnload, transporter, binsToCollect); foreach (Bin bin in binsToUnload) { bin.InTransfer = true; } foreach (Bin bin in binsToCollect) { bin.InTransfer = true; } return; } }