Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // ScreenCapture.cs "$Revision: 1583 $" "$Date: 2019-04-04 20:04:51 +0300 (to, 04 huhti 2019) $"
- using System;
- using System.Globalization;
- using Turbo.Plugins.Default;
- namespace Turbo.Plugins.JarJar.DefaultUI
- {
- public class ScreenCapture : BasePlugin, IBeforeRenderHandler
- {
- public bool StopRenderingWhenCapturing { get; set; } = false;
- public string SubFolderName { get; set; } = "capture_screen";
- public int DelayBetweenFrames { get; set; } = 500;
- public Func<IController, bool> IsCaptureOn = (hud) => { return false; };
- public Func<IController, string> CaptureFilename = (hud) => { return hud.Game.Me.HeroName + "_" + hud.Time.Now.ToString("yyyyMMddHHmmssfff", CultureInfo.InvariantCulture); };
- IWatch _lastCaptureDelay;
- int captureCount = 0;
- public ScreenCapture() { Enabled = true; }
- public void BeforeRender()
- {
- if (!Enabled) return;
- if (!Hud.Game.IsInGame) return;
- if (Hud.Game.IsInTown) return;
- var isCapturing = IsCaptureOn(Hud);
- if (!isCapturing)
- {
- if (StopRenderingWhenCapturing && !Hud.Render.IsRenderEnabled)
- {
- // turn back
- Hud.Render.IsRenderEnabled = true;
- }
- if (captureCount > 0)
- {
- Hud.Debug(string.Format("Captured {0} screenshots", captureCount));
- _lastCaptureDelay = null;
- captureCount = 0;
- }
- return;
- }
- if (StopRenderingWhenCapturing && Hud.Render.IsRenderEnabled)
- {
- // turn off and wait a cycle before first capture so HUD can disappear properly
- Hud.Render.IsRenderEnabled = false;
- return;
- }
- if (_lastCaptureDelay == null || _lastCaptureDelay.TimerTest(DelayBetweenFrames))
- {
- if (_lastCaptureDelay == null)
- {
- _lastCaptureDelay = Hud.Time.CreateWatch();
- }
- _lastCaptureDelay.Restart();
- try
- {
- var fileName = CaptureFilename(Hud) + ".jpg";
- Hud.Render.CaptureScreenToFile(SubFolderName, fileName);
- captureCount += 1;
- }
- catch (Exception x)
- {
- Enabled = false;
- Hud.Debug("Exception in ScreenCapture: " + x.Message);
- throw x;
- }
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement