private IEnumerator UpdateDrag() { while (this.updateDrag) { WorkersDragPanel guiPanel = base.GuiService.GetGuiPanel <WorkersDragPanel>(); if (Input.GetMouseButtonDown(0)) { if (guiPanel.DragInProgress) { if (guiPanel.DragMoved) { this.CheckDragTarget(guiPanel); } else { guiPanel.CancelDrag(); base.NeedRefresh = true; } } else if (AgeManager.Instance.ActiveControl != null) { WorkerSymbol component = AgeManager.Instance.ActiveControl.GetComponent <WorkerSymbol>(); if (component != null) { guiPanel.InitDrag(this.City, component.WorkerType, component.DragQuantity); } } } else if (Input.GetMouseButtonUp(0)) { if (guiPanel.DragInProgress) { if (!guiPanel.DragMoved) { guiPanel.StartDrag(); base.NeedRefresh = true; } else { guiPanel.DragInProgress = false; this.CheckDragTarget(guiPanel); } } } else if (guiPanel.DragInProgress && !guiPanel.DragMoved && this.previousCursor != AgeManager.Instance.Cursor) { guiPanel.StartDrag(); base.NeedRefresh = true; } this.previousCursor = AgeManager.Instance.Cursor; yield return(null); } yield break; }
private void CheckDragTarget(WorkersDragPanel workersDragPanel) { if (AgeManager.Instance.ActiveControl != null) { WorkersGroup component = AgeManager.Instance.ActiveControl.GetComponent <WorkersGroup>(); if (component == null) { WorkerSymbol component2 = AgeManager.Instance.ActiveControl.GetComponent <WorkerSymbol>(); if (component2 != null) { component = component2.AgeTransform.GetParent().GetComponent <WorkersGroup>(); } } if (!(component != null)) { workersDragPanel.CancelDrag(); base.NeedRefresh = true; return; } if (!(workersDragPanel.StartingWorkerType != component.WorkerType)) { workersDragPanel.CancelDrag(); base.NeedRefresh = true; return; } workersDragPanel.ValidateDrag(this.WorkerGroupsTable, component.WorkerType, new EventHandler <TicketRaisedEventArgs>(this.OnOrderResponse)); if (TutorialManager.IsActivated) { IEventService service = Services.GetService <IEventService>(); Diagnostics.Assert(service != null); IGameService service2 = Services.GetService <IGameService>(); Diagnostics.Assert(service2 != null); Diagnostics.Assert(service2.Game as global::Game != null); service.Notify(new EventTutorialWorkerDragged(this.City.Empire, workersDragPanel.StartingWorkerType, component.WorkerType)); return; } } else { workersDragPanel.CancelDrag(); base.NeedRefresh = true; } }