Exemplo n.º 1
0
 public WreckingBallPlugin(
     IDependencyContainer container,
     ITaskScheduler taskScheduler,
     IPermissionProvider permissionProvider
     ) : base("WreckingBall II", container)
 {
     DestructionHandler = new DestructionHandler(this, taskScheduler, permissionProvider);
 }
Exemplo n.º 2
0
        public static async Task Main()
        {
            StartTime = DateTime.Now;

            if (!File.Exists("./Data/config.txt"))
            {
                throw new Exception("Config file not found!");
            }

            Data = TarangData.Load("./Data/config.txt");

            Data.Init();
            Data.sheetAdapter.OnNewRecord = (new_record) =>
            {
                Data.MessageQueue.Dispatch("NewRegistration", new_record);
            };

            Data.MessageQueue.On("NewRegistration", (a) =>
            {
                Data.Logger.Log("New Record Received!");
            });

            Data.display.Start();
            Task bot = Data.TarangBot.Start();

            Data.MessageQueue.Log = Data.Logger.Log;
            Data.sheetAdapter.Log = Data.Logger.Log;

            DateTime last_sheet_poll = DateTime.Now;
            bool     end             = false;

            Data.roleGiver.Init();

            double avg_time = 0;

            DateTime last_time_update = DateTime.Now;
            DateTime last_auto_save   = DateTime.Now;
            DateTime last_easter_egg  = DateTime.Now;

            Tarang.Data.StatusDisp["MailEnabled"] = Tarang.Data.MailEnabled.ToString();
            while (!end)
            {
                DateTime tp = DateTime.Now;
                if ((DateTime.Now - last_sheet_poll) > Data.SheetPollInterval)
                {
                    await Data.sheetAdapter.Poll();

                    last_sheet_poll = DateTime.Now;
                }
                if ((DateTime.Now - last_time_update) > AvgLoopTimeUpdateInterval)
                {
                    Data.StatusDisp["Average loop time"] = Math.Round(avg_time, 2).ToString() + "ms";
                    last_time_update = DateTime.Now;
                }
                if ((DateTime.Now - last_easter_egg) > TimeSpan.FromMinutes(30))
                {
                    await Data.TarangBot.CycleStatus();

                    last_easter_egg = DateTime.Now;
                }
                if ((DateTime.Now - last_auto_save) > AutoSaveInterval)
                {
                    Data.Logger.Log("Auto saving...");

                    DateTime t = DateTime.Now;
                    Newtonsoft.Json.JsonSerializerSettings settings = new Newtonsoft.Json.JsonSerializerSettings();
                    settings.Formatting = Newtonsoft.Json.Formatting.Indented;

                    File.WriteAllText("./Data/config.txt", Newtonsoft.Json.JsonConvert.SerializeObject(Data, settings));
                    Data.Logger.Log($"Auto save completed in {Math.Round((DateTime.Now - t).TotalMilliseconds, 2)} ms");

                    last_auto_save = DateTime.Now;
                }

                Data.MessageQueue.HandleEvents();

                Thread.Sleep(10);

                if (Stop)
                {
                    await Data.TarangBot.UpdateDashboard();


                    await bot;
                    DestructionHandler.DestroyAll();

                    Data.display.Stop();

                    Newtonsoft.Json.JsonSerializerSettings settings = new Newtonsoft.Json.JsonSerializerSettings();
                    settings.Formatting = Newtonsoft.Json.Formatting.Indented;

                    File.WriteAllText("./Data/config.txt", Newtonsoft.Json.JsonConvert.SerializeObject(Data, settings));
                    end = true;

                    Console.Clear();

                    break;
                }

                avg_time = (avg_time + (DateTime.Now - tp).TotalMilliseconds) / 2;
            }
        }