Пример #1
0
        public void LoadTilesAndFindTiles()
        {
            var threadCount = 500;
            var loadWork    = new WorkTimer(threadCount);
            var findWork    = new WorkTimer(threadCount);

            loadWork.TimeWork(
                i => new
            {
                TileIndex = new TileIndex(i % 10, i / 10, "1"),
                Image     = new [] { (byte)i }
            },
                args => _cache.Add(args.TileIndex, args.Image));
            loadWork.WaitForTestsToComplete();
            findWork.TimeWork(i => new TileIndex(i % 10, i / 10, "1"), index => _cache.Find(index));
            findWork.WaitForTestsToComplete();
            Console.WriteLine("Total FileCache.Add time is {0}ms", loadWork.TotalTime);
            Console.WriteLine("Average FileCache.Add time is {0}ms", loadWork.TotalTime / threadCount);
            Console.WriteLine("Max FileCache.Add time is {0}ms", loadWork.MaxTime);
            Console.WriteLine("Min FileCache.Add time is {0}ms", loadWork.MinTime);
            Console.WriteLine("Total FileCache.Find time is {0}ms", findWork.TotalTime);
            Console.WriteLine("Average FileCache.Find time is {0}ms", findWork.TotalTime / threadCount);
            Console.WriteLine("Max FileCache.Find time is {0}ms", findWork.MaxTime);
            Console.WriteLine("Min FileCache.Find time is {0}ms", findWork.MinTime);
        }
Пример #2
0
        protected override void Handle(StartProjectTaskCommand request)
        {
            if (TaskRecorder.HasActiveTask)
            {
                DuplicateTaskValidator taskValidator = new DuplicateProjectTaskValidator(TaskRecorder.ActiveTask,
                                                                                         request.ProjectDto.ID, request.ProjectStageDto.ID, request.WorksetDto.ID,
                                                                                         request.IsAddCost, request.IsMistake);
                taskValidator.ValidateDuplicate();
            }

            if (TaskService.AskBeforeStartNewTaskResult() == DialogResult.No)
            {
                return;
            }

            DateTime currentTime = Database.GetCurrentTime();

            if (TaskRecorder.HasActiveTask)
            {
                TaskRepository.Finish(TaskRecorder.ActiveTask, currentTime);
                TaskRecorder.StopActiveTask(currentTime);
            }

            Project      project        = ProjectRepository.Load(request.ProjectDto.ID);
            ProjectStage projectStage   = ProjectStageRepository.Load(request.ProjectStageDto.ID);
            Workset      workset        = WorksetRepository.Load(request.WorksetDto.ID);
            ProjectTask  newProjectTask = TaskFactory.CreateProjectTask(TaskRepository.NextIdentity(), project, projectStage,
                                                                        workset, request.IsAddCost, request.IsMistake);

            TaskRepository.Save(newProjectTask, currentTime);
            TaskRecorder.StartNewTask(newProjectTask, currentTime);
            WorkTimer.Start();
        }
Пример #3
0
 public void StartCountdown(Action OnCountdown, Action OnWork, Action OnRest)
 {
     MinutesToGo      = Duration;
     OnSecondElapsed += (obj, args) =>
     {
         SecondsToGo = SecondsToGo <= 0 ? 59 : SecondsToGo - 1;
         MinutesToGo = MinutesToGo - (SecondsToGo == 59 ? 1 : 0);
         OnCountdown();
         if (Elapsed)
         {
             WorkTimer.Stop();
             if (Mode == PomodoroMode.Work)
             {
                 OnRest();
                 Mode        = PomodoroMode.Rest;
                 MinutesToGo = Intermission;
                 WorkTimer.Start();
             }
             else
             {
                 OnWork();
                 PomodoroUnit.AnythingRunning = false;
             }
         }
     };
     WorkTimer.Elapsed += OnSecondElapsed;
     WorkTimer.Start();
 }
Пример #4
0
 public static void Pause()
 {
     MoveTimer.Stop();
     GenCarTimer.Stop();
     WorkTimer.Stop();
     LightsTimer.Stop();
 }
Пример #5
0
 public void StopCountdown()
 {
     WorkTimer.Stop();
     MinutesToGo        = Duration;
     SecondsToGo        = 0;
     Mode               = PomodoroMode.Work;
     WorkTimer.Elapsed -= OnSecondElapsed;
 }
Пример #6
0
 public static void Start()
 {
     MoveTimer.Start();
     PMoveTimer.Start();
     GenCarTimer.Start();
     WorkTimer.Start();
     GenPeopleTimer.Start();
     LightsTimer.Start();
     TrafficLight.CreateLight();
     IsReady = true;
 }
Пример #7
0
 public static void Start()
 {
     MoveTimer.Start();
     GenCarTimer.Start();
     WorkTimer.Start();
     LightsTimer.Start();
     CurrentRoad        = new Road(1, 1, 1, 1);
     CurrentRoadTransit = new RoadTransit(false, false, false, false, 1, 1, 1, 1);
     TrafficLight.CreateLight();
     IsReady = true;
 }
Пример #8
0
 public void StopWorkTimer()
 {
     WorkTimer.Stop();
     SecondsLeft            = 0;
     labelTimer.Text        = "Process stopped";
     labelTimer.ForeColor   = System.Drawing.Color.Red;
     labelHourOrMinute.Text = string.Empty;
     progressBar.Value      = 0;
     buttonPause.Enabled    = false;
     buttonStart.Enabled    = true;
     ResetButtonsToDefault();
 }
Пример #9
0
        private void SecondTimer_Tick(object sender, EventArgs e)
        {
            int minutes = int.Parse(WorkTimeLabel.Text.Substring(0, minChar));
            int seconds = int.Parse(WorkTimeLabel.Text.Substring(minChar + 1));

            if (minutes != 0 || seconds != 0)
            {
                if (seconds != 0)
                {
                    seconds -= 1;
                    if (seconds < 10)
                    {
                        WorkTimeLabel.Text = $"{minutes}:0{seconds}";
                    }
                    else
                    {
                        WorkTimeLabel.Text = $"{minutes}:{seconds}";
                    }
                }
                else
                {
                    seconds            = 59;
                    minutes           -= 1;
                    WorkTimeLabel.Text = $"{minutes}:{seconds}";
                }
            }
            else
            {
                MessageBox.Show("You have completed your work session! For your hard work, have a little break.", "Timeout", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1, MessageBoxOptions.ServiceNotification);
                WorkTimer.Stop();
                SecondTimer.Stop();

                int breakmins = (int)BreakNumericUpDown.Value;
                if (breakmins < 10)
                {
                    breakChar          = 1;
                    WorkTimeLabel.Text = $"{breakmins}:00";
                    breakTimer.Start();
                    //  gameForm.Show();
                }
                else if (breakmins > 10 && breakmins < 99)
                {
                    breakChar          = 2;
                    WorkTimeLabel.Text = $"{breakmins}:00";
                    breakTimer.Start();
                    //gameForm.Show();
                }
                else
                {
                    MessageBox.Show("Stop being lazy! Dont take such a long break.");
                }
            }
        }
Пример #10
0
 private void StopTimer()
 {
     if (WorkTimer != null)
     {
         WorkTimer.Stop();
         WorkTimer.TimerUpdated -= Timer_Update;
         WorkTimer.TimerStarted -= Timer_Start;
         WorkTimer.TimerStopped -= Timer_Stop;
         WorkTimer.TimerPaused  -= Timer_Pause;
         WorkTimer.Dispose();
         WorkTimer = null;
     }
 }
Пример #11
0
 public static void Stop()
 {
     Car.Clear();
     Deleter.Clear();
     MoveTimer.Stop();
     LightsTimer.Stop();
     GenCarTimer.Stop();
     WorkTimer.Stop();
     CarCount.Text          = "0";
     CurrentlyCarCount.Text = "0";
     WorkTime.Text          = "0 c";
     Cpm.Text = "0";
     WorkTm   = 0;
     UserPanel.ResetBackColor();
     UserPanel.Invalidate();
 }
Пример #12
0
 private void StartWorkTimer()
 {
     if (firstStart)
     {
         SecondsLeft         = MyDateTimeHandler.GetSecondsToWork(numericUpDownHours.Value.ToString(), numericUpDownMinutes.Value.ToString(), numericUpDownSeconds.Value.ToString());
         WorkTimer.Tick     += new EventHandler(WorkTimer_Tick);
         StartTime           = DateTime.Now;
         EndTime             = DateTime.Now.AddSeconds(SecondsLeft);
         progressBar.Maximum = Convert.ToInt32(SecondsLeft);
     }
     labelPredictTime.Text = "Expected end of Work: " + EndTime.ToShortTimeString() + " " + MyDateTimeHandler.GetAM(EndTime);
     buttonStart.Enabled   = false;
     buttonPause.Enabled   = true;
     labelTimer.ForeColor  = System.Drawing.Color.Black;
     WorkTimer.Interval    = 1000;
     WorkTimer.Start();
 }
Пример #13
0
 private void ResetButtonsToDefault()
 {
     WorkTimer.Stop();
     SecondsLeft           = MyDateTimeHandler.GetSecondsToWork(numericUpDownHours.Value.ToString(), numericUpDownMinutes.Value.ToString(), numericUpDownSeconds.Value.ToString());
     buttonStart.Enabled   = true;
     progressBar.Value     = 0;
     currentWeek           = MyTimeTable.GetWeekOfYear(DateTime.Now);
     labelPredictTime.Text = "Expected end of Work: ";
     labelStartTime.Text   = "Started work ";
     labelTime.Text        = MyDateTimeHandler.TimeString + " Uhr " + MyDateTimeHandler.GetAM();
     labelDate.Text        = "It's " + DateTimeHandler.DateString;
     if (firstStart)
     {
         buttonStart.Enabled = false;
         WorkTimer.Interval  = 1000;
         WorkTimer.Enabled   = true;
     }
 }
Пример #14
0
        private void startButton_Click(object sender, EventArgs e) //Starts the app.
        {
            if (ProcessesListBox.SelectedItem != null)
            {
                int minutes = (int)WorkNumericUpDown.Value;

                if (minutes < 10)
                {
                    minChar = 1;
                }
                else if (minutes > 10 && minutes < 99)
                {
                    minChar = 2;
                }
                else if (minutes > 99)
                {
                    minChar = 3;
                }

                if (startButton.Text.Contains("Start"))
                {
                    WorkTimer.Start();
                    SecondTimer.Start();
                    startButton.Text      = "Stop Working";
                    refreshButton.Enabled = false;
                }
                else
                {
                    WorkTimer.Stop();
                    SecondTimer.Stop();
                    breakTimer.Stop();
                    startButton.Text      = "Start Working";
                    refreshButton.Enabled = true;
                }

                WorkTimeLabel.Text = $"{minutes}:00";
            }
            else
            {
                MessageBox.Show("You must select the window you will be working on.");
            }
        }
Пример #15
0
        private void FunctionButton_Click(object sender, EventArgs e)
        {
            if (((MouseEventArgs)e).Button == MouseButtons.Left)
            {
                if (ModeTimer != TimerMode.Stopped)
                {
                    if (ModeTimer == TimerMode.Started)
                    {
                        WorkTimer.Pause();
                    }
                    else if (ModeTimer == TimerMode.Paused)
                    {
                        InitializeSettingsAndStartTimer(Settings.Default.StartTime, TimerMode.Started);
                    }

                    TimerText.HideSelection = true;
                    ((Control)sender).Focus();
                }
            }
        }
Пример #16
0
        protected override void Handle(StopTaskCommand request)
        {
            ActiveTaskValidator validator = new ActiveTaskValidator(TaskRecorder.HasActiveTask);

            validator.CheckIfAnyTaskIsRunning();

            if (TaskService.AskBeforeStopActiveTaskResult() == DialogResult.No)
            {
                return;
            }

            BaseTask activeTask = TaskRecorder.ActiveTask;
            DateTime endTime    = Database.GetCurrentTime();

            TaskRepository.Finish(activeTask, endTime);

            TaskRecorder.StopActiveTask(endTime);

            WorkTimer.Stop();
        }
Пример #17
0
 public void LoadTilesAndFindTiles()
 {
     var threadCount = 500;
     var loadWork = new WorkTimer(threadCount);
     var findWork = new WorkTimer(threadCount);
     loadWork.TimeWork(
         i => new
         {
             TileIndex = new TileIndex(i % 10, i / 10, "1"),
             Image = new byte[] { (byte)i }
         },
         args => _cache.Add(args.TileIndex, args.Image));
     loadWork.WaitForTestsToComplete();
     findWork.TimeWork(i => new TileIndex(i % 10, i / 10, "1"), index => _cache.Find(index));
     findWork.WaitForTestsToComplete();
     Console.WriteLine("Total FileCache.Add time is {0}ms", loadWork.TotalTime);
     Console.WriteLine("Average FileCache.Add time is {0}ms", loadWork.TotalTime / threadCount);
     Console.WriteLine("Max FileCache.Add time is {0}ms", loadWork.MaxTime);
     Console.WriteLine("Min FileCache.Add time is {0}ms", loadWork.MinTime);
     Console.WriteLine("Total FileCache.Find time is {0}ms", findWork.TotalTime);
     Console.WriteLine("Average FileCache.Find time is {0}ms", findWork.TotalTime / threadCount);
     Console.WriteLine("Max FileCache.Find time is {0}ms", findWork.MaxTime);
     Console.WriteLine("Min FileCache.Find time is {0}ms", findWork.MinTime);
 }
Пример #18
0
        private void breakTimer_Tick(object sender, EventArgs e)
        {
            int minutes = int.Parse(WorkTimeLabel.Text.Substring(0, breakChar));
            int seconds = int.Parse(WorkTimeLabel.Text.Substring(breakChar + 1));

            if (minutes != 0 || seconds != 0)
            {
                if (seconds != 0)
                {
                    seconds -= 1;
                    if (seconds < 10)
                    {
                        WorkTimeLabel.Text = $"{minutes}:0{seconds}";
                    }
                    else
                    {
                        WorkTimeLabel.Text = $"{minutes}:{seconds}";
                    }
                }
                else
                {
                    seconds            = 59;
                    minutes           -= 1;
                    WorkTimeLabel.Text = $"{minutes}:{seconds}";
                }
            }
            else
            {
                // gameForm.Close();
                MessageBox.Show("Break time is over. Get back to work!", "Timeout", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1, MessageBoxOptions.ServiceNotification);
                breakTimer.Stop();
                WorkTimeLabel.Text = $"{(int)WorkNumericUpDown.Value}:00";
                WorkTimer.Start();
                SecondTimer.Start();
            }
        }
Пример #19
0
 public Repository()
 {
     Timer       = new WorkTimer();
     RepSaveData = new RepositorySaveData(this);
 }
Пример #20
0
        /// <summary>
        /// После успешной регистрации или входа
        /// </summary>
        public static void InitConnected()
        {
            try
            {
                Loger.Log("Client InitConnected()");
                Data = new ClientData();
                TimersStop();
                Timers         = new WorkTimer();
                TimerReconnect = new WorkTimer();

                var connect    = SessionClient.Get;
                var serverInfo = connect.GetInfo(ServerInfoType.Full);
                ServerTimeDelta = serverInfo.ServerTime - DateTime.UtcNow;
                SetFullInfo(serverInfo);

                Loger.Log("Client ServerName=" + serverInfo.ServerName);
                Loger.Log("Client ServerVersion=" + serverInfo.VersionInfo + " (" + serverInfo.VersionNum + ")");
                Loger.Log("Client IsAdmin=" + serverInfo.IsAdmin
                          + " Seed=" + serverInfo.Seed
                          + " NeedCreateWorld=" + serverInfo.NeedCreateWorld
                          + " DelaySaveGame=" + Data.DelaySaveGame
                          + " DisableDevMode=" + Data.DisableDevMode);
                Loger.Log("Client Grants=" + serverInfo.My.Grants.ToString());

                if (serverInfo.IsModsWhitelisted && !CheckFiles())
                {
                    var msg = "OCity_SessionCC_FilesUpdated".Translate();
                    //Не все файлы прошли проверку, надо инициировать перезагрузку всех модов
                    Disconnected(msg, () => ModsConfig.RestartFromChangedMods());
                    return;
                }

                if (MainHelper.VersionNum < serverInfo.VersionNum)
                {
                    Disconnected("OCity_SessionCC_Client_UpdateNeeded".Translate() + serverInfo.VersionInfo);
                    return;
                }

                //создаем мир, если мы админ
                if (serverInfo.IsAdmin && serverInfo.Seed == "")
                {
                    Loger.Log("Client InitConnected() IsAdmin");
                    var form = new Dialog_CreateWorld();
                    form.PostCloseAction = () =>
                    {
                        if (!form.ResultOK)
                        {
                            Disconnected("OCity_SessionCC_MsgCanceledCreateW".Translate());
                            return;
                        }

                        GameStarter.SetMapSize        = int.Parse(form.InputMapSize);
                        GameStarter.SetPlanetCoverage = float.Parse(form.InputPlanetCoverage) / 100f;
                        GameStarter.SetSeed           = form.InputSeed;
                        GameStarter.SetDifficulty     = int.Parse(form.InputDifficulty);
                        GameStarter.SetScenario       = GetScenarioDefault();

                        GameStarter.AfterStart = CreatingServerWorld;
                        GameStarter.GameGeneration();
                    };

                    Find.WindowStack.Add(form);
                    return;
                }

                if (serverInfo.NeedCreateWorld)
                {
                    CreatePlayerWorld(serverInfo);
                    return;
                }

                LoadPlayerWorld();
            }
            catch (Exception ext)
            {
                Loger.Log("Exception InitConnected: " + ext.ToString());
            }
        }
Пример #21
0
 public Repository()
 {
     Timer = new WorkTimer();
 }
        /// <summary>
        /// После успешной регистрации или входа
        /// </summary>
        ///
        public static void InitConnected()
        {
            Loger.Log("Client InitConnected()");
            Data = new ClientData();
            TimersStop();
            Timers = new WorkTimer();

            var connect    = SessionClient.Get;
            var serverInfo = connect.GetInfo(true);

            My = serverInfo.My;
            ServerTimeDelta = serverInfo.ServerTime - DateTime.UtcNow;

            Loger.Log("Client IsAdmin=" + serverInfo.IsAdmin + " Seed=" + serverInfo.Seed + " ExistMap=" + My.ExistMap);
            //создаем мир, если мы админ
            if (serverInfo.IsAdmin && serverInfo.Seed == "")
            {
                Loger.Log("Client InitConnected() IsAdmin");
                var form = new Dialog_CreateWorld();
                form.PostCloseAction = () =>
                {
                    if (!form.ResultOK)
                    {
                        Disconnected("OCity_SessionCC_MsgCanceledCreateW".Translate());
                        return;
                    }
                    GameStarter.SetMapSize        = int.Parse(form.InputMapSize);
                    GameStarter.SetPlanetCoverage = float.Parse(form.InputPlanetCoverage) / 100f;
                    GameStarter.SetSeed           = form.InputSeed;
                    GameStarter.SetDifficulty     = int.Parse(form.InputDifficulty);
                    GameStarter.SetScenario       = ScenarioDefault;

                    GameStarter.AfterStart = CreatingWorld;
                    GameStarter.GameGeneration();
                };
                Find.WindowStack.Add(form);
                return;
            }

            if (!My.ExistMap)
            {
                Loger.Log("Client InitConnected() ExistMap");

                //создать поселение
                GameStarter.SetMapSize        = serverInfo.MapSize;
                GameStarter.SetPlanetCoverage = serverInfo.PlanetCoverage;
                GameStarter.SetSeed           = serverInfo.Seed;
                GameStarter.SetDifficulty     = serverInfo.Difficulty;
                GameStarter.SetScenario       = ScenarioDefault;

                GameStarter.AfterStart = CreatePlayerMap;

                GameStarter.GameGeneration(false);

                //выбор места на планете. Код из события завершения выбора параметров планеты Page_CreateWorldParams
                Loger.Log("Client InitConnected() ExistMap1");

                Current.Game          = new Game();
                Current.Game.InitData = new GameInitData();
                Current.Game.Scenario = GameStarter.SetScenario;
                Current.Game.Scenario.PreConfigure();
                Current.Game.storyteller = new Storyteller(StorytellerDefOf.Cassandra
                                                           , GameStarter.SetDifficulty == 2 ? DifficultyDefOf.Hard
                        : GameStarter.SetDifficulty == 1 ? DifficultyDefOf.Medium
                        : DifficultyDefOf.VeryEasy);

                Loger.Log("Client InitConnected() ExistMap2");
                Current.Game.World = WorldGenerator.GenerateWorld(
                    GameStarter.SetPlanetCoverage,
                    GameStarter.SetSeed,
                    GameStarter.SetOverallRainfall,
                    GameStarter.SetOverallTemperature);

                Loger.Log("Client InitConnected() ExistMap3");
                //после создания мира запускаем его обработку, загружаем поселения др. игроков
                UpdateWorldController.InitGame();
                UpdateWorld(true);

                Loger.Log("Client InitConnected() ExistMap4");
                var form = GetFirstConfigPage();
                Find.WindowStack.Add(form);

                Loger.Log("Client InitConnected() ExistMap5");

                MemoryUtility.UnloadUnusedUnityAssets();

                Loger.Log("Client InitConnected() ExistMap6");
                Find.World.renderer.RegenerateAllLayersNow();

                Loger.Log("Client InitConnected() ExistMap7");

                return;
            }

            Loger.Log("Client InitConnected() WorldLoad");

            var worldData = connect.WorldLoad();

            File.WriteAllBytes(SaveFullName, worldData.SaveFileData);
            Action loadAction = () => {
                LongEventHandler.QueueLongEvent(delegate {
                    Current.Game = new Game {
                        InitData = new GameInitData {
                            gameToLoad = SaveName
                        }
                    };
                    GameLoades.AfterLoad = () =>
                    {
                        GameLoades.AfterLoad = null;

                        //Непосредственно после загрузки игры
                        InitGame();
                    };

                    /* вместо этого сделал через гармонику
                     * LongEventHandler.ExecuteWhenFinished(() =>
                     * {
                     *  var th = new Thread(() =>
                     *  {
                     *      //не знаю как правильно привязаться к событию окончания загрузки мира
                     *      while (Current.Game == null || Current.Game.World == null || Find.WorldObjects == null)
                     *      {
                     *          Thread.Sleep(100);
                     *          Loger.Log("Sleep(100)");
                     *      }
                     *      Thread.Sleep(100);
                     *      LongEventHandler.QueueLongEvent(delegate
                     *      {
                     *          //Непосредственно после загрузки игры
                     *          InitGame();
                     *      }, "", false, null);
                     *  });
                     *  th.IsBackground = true;
                     *  th.Start();
                     * });
                     */
                }, "Play", "LoadingLongEvent", false, null);
            };

            PreLoadUtility.CheckVersionAndLoad(SaveFullName, ScribeMetaHeaderUtility.ScribeHeaderMode.Map, loadAction);
        }