public void CurrentQueueTroopMove() { if (this.CurrentTroop != null) { this.TroopMoveThread(this.CurrentTroop); /*Thread thread; * * thread = new Thread(new ThreadStart(this.CurrentTroop.Move)); * thread.Start(); * thread.Join();*/ if (this.CurrentTroop.StepNotFinished || (this.CurrentTroop.MovabilityLeft <= 0)) { if (!this.CurrentTroop.OperationDone) { this.troopQueue.Enqueue(this.CurrentTroop); } this.CurrentTroop = null; } } else if (!this.CheckAmbushList()) { Queue <Troop> queue = new Queue <Troop>(); if ((this.CurrentQueue.Count == 0) && (this.troopQueue.Count > 0)) { this.CurrentQueue.Enqueue(this.troopQueue.Dequeue()); } while (this.CurrentQueue.Count > 0) { Troop item = this.CurrentQueue.Dequeue(); if (!item.Destroyed) { if (item.mingling == "待命") { item.OperationDone = true; break; } if (item.Destroyed || (item.Status != TroopStatus.一般 && item.Status != TroopStatus.伪报 && item.Status != TroopStatus.挑衅)) { item.MovabilityLeft = -1; item.OperationDone = true; } if (Session.Current.Scenario.IsPlayer(item.BelongedFaction)) { if (!(item.HasToDoCombatAction || !item.ToDoCombatAction())) { item.HasToDoCombatAction = true; this.CurrentQueue.Enqueue(item); break; } if (item.HasToDoCombatAction) { item.HasToDoCombatAction = false; item.DoCombatAction(); this.CurrentQueue.Enqueue(item); break; } if (this.troopQueue.Count > 0) { this.CurrentQueue.Enqueue(this.troopQueue.Dequeue()); } if (item.MovabilityLeft > 0) { this.TroopChangeRealDestination(item); this.TroopMoveThread(item); } } else { if (!item.Destroyed) { if (item.MovabilityLeft > 0) { this.TroopChangeRealDestination(item); this.TroopMoveThread(item); } if (item.MovabilityLeft <= 0) { if (!item.HasToDoCombatAction && item.ToDoCombatAction()) { item.HasToDoCombatAction = true; this.CurrentQueue.Enqueue(item); break; } if (item.HasToDoCombatAction) { item.HasToDoCombatAction = false; item.DoCombatAction(); this.CurrentQueue.Enqueue(item); break; } } } } if (item.Destroyed || (item.Status != TroopStatus.一般 && item.Status != TroopStatus.伪报 && item.Status != TroopStatus.挑衅)) { item.MovabilityLeft = -1; item.OperationDone = true; } if ((!item.OperationDone && item.OffenceOnlyBeforeMove) && (item.Position != item.PreviousPosition)) { item.OperationDone = true; } if ((!item.StepNotFinished || item.chongshemubiaoweizhibiaoji) && item.MovabilityLeft >= 0) { this.CurrentTroop = item; break; } if (!this.queueEnded) { if (item.MovabilityLeft > 0) { item.WaitOnce = true; queue.Enqueue(item); } else if (!(item.OperationDone || item.QueueEnded)) { queue.Enqueue(item); } } } } while (queue.Count > 0) { this.troopQueue.Enqueue(queue.Dequeue()); } if (!this.queueEnded && this.TotallyEmpty) { this.queueEnded = true; TroopList list = new TroopList(); foreach (Troop troop2 in base.GameObjects) { if (troop2.QueueEnded) { list.Add(troop2); } } foreach (Troop troop2 in list.GetRandomList()) { this.troopQueue.Enqueue(troop2); } } } }