Ejemplo n.º 1
0
        public void doTick()
        {
            if (!Monitor.TryEnter(Level2Lock))
            {
                return;
            }
            try
            {
                foreach (var vid in TD.Villages.Keys)
                {
                    TVillage CV = TD.Villages[vid];

                    if (CV.isVillageInitialized != 2)
                    {
                        continue;
                    }

                    List <int> status = new List <int>();

                    foreach (var task in CV.Queue)
                    {
                        if (task.Paused)
                        {
                            continue;
                        }
                        if (status.Contains(task.QueueGUID))
                        {
                            continue;
                        }
                        else if (task.QueueGUID < 7)
                        {
                            status.Add(task.QueueGUID);
                        }
                        if (task.QueueGUID <= 1 && !TD.isRomans)
                        {
                            status.Add(1 - task.QueueGUID);
                        }
                        switch (task.GetType().Name)
                        {
                        case "BuildingQueue":
                            if (CV.isBuildingInitialized == 0)
                            {
                                CV.InitializeBuilding();
                                continue;
                            }
                            else if (CV.isBuildingInitialized == 1)
                            {
                                continue;
                            }
                            break;

                        case "DestroyQueue":
                            if (CV.isDestroyInitialized == 0)
                            {
                                CV.InitializeDestroy();
                                continue;
                            }
                            else if (CV.isDestroyInitialized == 1)
                            {
                                continue;
                            }
                            break;

                        case "ResearchQueue":
                            if (CV.isUpgradeInitialized == 0)
                            {
                                CV.InitializeUpgrade();
                                continue;
                            }
                            else if (CV.isUpgradeInitialized == 1)
                            {
                                continue;
                            }
                            break;

                        case "PartyQueue":
                            break;

                        case "TransferQueue":
                            break;

                        case "NpcTradeQueue":
                            break;

                        case "RaidQueue":
                            if (CV.isTroopInitialized == 0)
                            {
                                CV.InitializeTroop();
                                continue;
                            }
                            break;

                        case "AttackQueue":
                            if (CV.isTroopInitialized == 0)
                            {
                                CV.InitializeTroop();
                                continue;
                            }
                            break;
                        }
                        if (task.CountDown <= 0)
                        {
                            task.Action();
                        }
                    }
                    for (int i = CV.Queue.Count - 1; i >= 0; i--)
                    {
                        if (CV.Queue[i].MarkDeleted)
                        {
                            CV.Queue.RemoveAt(i);
                            TD.Dirty = true;
                        }
                    }
                }
            }
            catch (InvalidOperationException e)
            {
                // Good bye! Collection was modified; enumeration operation may not execute.
                DebugLog(e, DebugLevel.I);
            }
            try
            {
                if (Dirty)
                {
                    DB.Instance.Snapshot(this);
                }
                if (TD.Dirty)
                {
                    DB.Instance.Snapshot(TD);
                }
            }
            catch { }
            try
            {
                //AccountHack();
            }
            catch
            {
                //DebugLog(e.ToString(), DebugLevel.I);
            }

            Monitor.Exit(Level2Lock);
        }
Ejemplo n.º 2
0
        private bool EditRaidQueue(TVillage village, RaidQueue task)
        {
            if (village.isTroopInitialized != 2)
            {
                village.InitializeTroop();
                return false;
            }

            RaidOptForm rof = new RaidOptForm()
            {
                mui = this.mui,
                dl = this.dl,
                TroopsAtHome = village.Troop.GetTroopsAtHome(village),
                Village = village,
                Return = task,
            };

            if (rof.ShowDialog() != DialogResult.OK)
            {
                return false;
            }

            if (rof.Return == null || !rof.Return.IsValid)
            {
                return false;
            }

            task.CopySettings(rof.Return);
            return true;
        }