public WorldRecordComponent(LiveSplitState state) { State = state; RefreshInterval = TimeSpan.FromMinutes(5); Cache = new GraphicsCache(); TimeFormatter = new RegularTimeFormatter(); InternalComponent = new InfoTextComponent("World Record", "-"); Settings = new WorldRecordSettings() { CurrentState = state }; }
public DetailedTimer(LiveSplitState state) { InternalComponent = new LiveSplit.UI.Components.Timer(); SegmentTimer = new SegmentTimer(); Settings = new DetailedTimerSettings() { CurrentState = state }; IconWidth = 0; Cache = new GraphicsCache(); LabelSegment = new SimpleLabel(); LabelBest = new SimpleLabel(); SegmentTime = new SimpleLabel(); BestSegmentTime = new SimpleLabel(); SplitName = new SimpleLabel(); state.ComparisonRenamed += state_ComparisonRenamed; }
public SourceSplitComponent(LiveSplitState state, bool isLayoutComponent) { // make Debug.WriteLine prepend update count and tick count while (Debug.Listeners.Count > 0) Debug.Listeners.RemoveAt(0); Debug.Listeners.Add(TimedTraceListener.Instance); while (Trace.Listeners.Count > 0) Trace.Listeners.RemoveAt(0); Trace.Listeners.Add(TimedTraceListener.Instance); // is it okay to use the same instance? //Debug.AutoFlush = Trace.AutoFlush = true; _state = state; this.IsLayoutComponent = isLayoutComponent; this.Settings = new SourceSplitSettings(); this.InternalComponent = new InfoTimeComponent("Game Time", null, new RegularTimeFormatter(TimeAccuracy.Hundredths)); this.ContextMenuControls = new Dictionary<String, Action>(); this.ContextMenuControls.Add("SourceSplit: Map Times", () => MapTimesForm.Instance.Show()); _cache = new GraphicsCache(); _timer = new TimerModel { CurrentState = state }; state.OnSplit += state_OnSplit; state.OnReset += state_OnReset; state.OnStart += state_OnStart; _mapsVisited = new List<string>(); _gameMemory = new GameMemory(this.Settings); _gameMemory.OnSessionTimeUpdate += gameMemory_OnSessionTimeUpdate; _gameMemory.OnPlayerGainedControl += gameMemory_OnPlayerGainedControl; _gameMemory.OnPlayerLostControl += gameMemory_OnPlayerLostControl; _gameMemory.OnMapChanged += gameMemory_OnMapChanged; _gameMemory.OnSessionStarted += gameMemory_OnSessionStarted; _gameMemory.OnSessionEnded += gameMemory_OnSessionEnded; _gameMemory.OnNewGameStarted += gameMemory_OnNewGameStarted; _gameMemory.StartReading(); }
private void Init(string splitsPath = null, string layoutPath = null) { SetWindowTitle(); SpeedrunCom.Authenticator = new SpeedrunComOAuthForm(); GlobalCache = new GraphicsCache(); Invalidator = new Invalidator(this); SetStyle(ControlStyles.SupportsTransparentBackColor, true); ComponentManager.BasePath = BasePath; SpeedRunsLiveAPI.Instance.RacesRefreshed += SRL_RacesRefreshed; SpeedRunsLiveAPI.Instance.RefreshRacesListAsync(); CurrentState = new LiveSplitState(null, this, null, null, null); ComparisonGeneratorsFactory = new StandardComparisonGeneratorsFactory(); Model = new DoubleTapPrevention(new TimerModel()); RunFactory = new StandardFormatsRunFactory(); RunSaver = new XMLRunSaver(); LayoutSaver = new XMLLayoutSaver(); SettingsSaver = new XMLSettingsSaver(); LoadSettings(); UpdateRecentSplits(); UpdateRecentLayouts(); InTimerOnlyMode = false; var timerOnlyRun = new StandardRunFactory().Create(ComparisonGeneratorsFactory); IRun run = timerOnlyRun; try { if (!string.IsNullOrEmpty(splitsPath)) { run = LoadRunFromFile(splitsPath, TimingMethod.RealTime); } else if (Settings.RecentSplits.Count > 0) { var lastSplitFile = Settings.RecentSplits.Last(); if (!string.IsNullOrEmpty(lastSplitFile.Path)) { run = LoadRunFromFile(lastSplitFile.Path, lastSplitFile.LastTimingMethod); CurrentState.CurrentTimingMethod = lastSplitFile.LastTimingMethod; } } } catch (Exception e) { Log.Error(e); } run.FixSplits(); CurrentState.Run = run; CurrentState.Settings = Settings; try { if (!string.IsNullOrEmpty(layoutPath)) { Layout = LoadLayoutFromFile(layoutPath); } else { if (Settings.RecentLayouts.Count > 0 && !string.IsNullOrEmpty(Settings.RecentLayouts.Last())) { Layout = LoadLayoutFromFile(Settings.RecentLayouts.Last()); } else if (run == timerOnlyRun) { Layout = new TimerOnlyLayoutFactory().Create(CurrentState); InTimerOnlyMode = true; } else { Layout = new StandardLayoutFactory().Create(CurrentState); } } } catch (Exception e) { Log.Error(e); Layout = new StandardLayoutFactory().Create(CurrentState); } CurrentState.LayoutSettings = Layout.Settings; CreateAutoSplitter(); CurrentState.FixTimingMethodFromRuleset(); SwitchComparisonGenerators(); SwitchComparison(Settings.LastComparison); Model.CurrentState = CurrentState; CurrentState.OnReset += CurrentState_OnReset; CurrentState.OnStart += CurrentState_OnStart; CurrentState.OnSplit += CurrentState_OnSplit; CurrentState.OnSkipSplit += CurrentState_OnSkipSplit; CurrentState.OnUndoSplit += CurrentState_OnUndoSplit; CurrentState.OnPause += CurrentState_OnPause; CurrentState.OnResume += CurrentState_OnResume; CurrentState.OnSwitchComparisonPrevious += CurrentState_OnSwitchComparisonPrevious; CurrentState.OnSwitchComparisonNext += CurrentState_OnSwitchComparisonNext; ComponentRenderer = new ComponentRenderer(); StartPosition = FormStartPosition.Manual; SetLayout(Layout); RefreshTask = Task.Factory.StartNew(RefreshTimerWorker); InvalidationRequired = false; Hook = new CompositeHook(); Hook.KeyOrButtonPressed += hook_KeyOrButtonPressed; Settings.RegisterHotkeys(Hook); SizeChanged += TimerForm_SizeChanged; lock (BackBufferLock) { BackBuffer = new Bitmap(Width, Height); #if WITH_XSPLIT /*try { // Outputs a CosmoWright image every 50ms (20 FPS) XSplit = TimedBroadcasterPlugin.CreateInstance( "livesplit", BackBuffer, 50); if (this.XSplit != null) { // The correct version of XSplit was installed (unless they use OBS), so we can start our output. this.XSplit.StartTimer(); } } catch { }*/ #endif } TopMost = Layout.Settings.AlwaysOnTop; }
private void Init(String splitsPath = null, String layoutPath = null) { GlobalCache = new GraphicsCache(); Invalidator = new Invalidator(this); SetStyle(ControlStyles.SupportsTransparentBackColor, true); ComponentManager.BasePath = BasePath; SpeedRunsLiveAPI.Instance.RacesRefreshed += SRL_RacesRefreshed; SpeedRunsLiveAPI.Instance.RefreshRacesListAsync(); CurrentState = new LiveSplitState(null, null, null); ComparisonGeneratorsFactory = new StandardComparisonGeneratorsFactory(); TimerOnlyLayout = new TimerOnlyLayoutFactory().Create(CurrentState); TimerOnlyRun = new StandardRunFactory().Create(ComparisonGeneratorsFactory); InTimerOnlyMode = false; Model = new TimerModel(); //LiveSplit.Web.Share.Twitch.Instance.AutoUpdateModel = Model; RunFactory = new StandardFormatsRunFactory(); RunSaver = new XMLRunSaver(); LayoutSaver = new XMLLayoutSaver(); SettingsSaver = new XMLSettingsSaver(); LoadSettings(); UpdateRecentSplits(); UpdateRecentLayouts(); IRun run = null; if (!String.IsNullOrEmpty(splitsPath)) { run = LoadRunFromFile(splitsPath, true); } else { try { run = LoadRunFromFile(Settings.RecentSplits.Last(), true); } catch (Exception e) { Log.Error(e); run = TimerOnlyRun; } } if (!String.IsNullOrEmpty(layoutPath)) { Layout = LoadLayoutFromFile(layoutPath); } else { try { Layout = LoadLayoutFromFile(Settings.RecentLayouts.Last()); } catch (Exception e) { Log.Error(e); if (run == TimerOnlyRun) { Layout = TimerOnlyLayout; InTimerOnlyMode = true; } else Layout = new StandardLayoutFactory().Create(CurrentState); } } CurrentState.Run = run; CurrentState.LayoutSettings = Layout.Settings; CurrentState.Settings = Settings; RegenerateComparisons(); SwitchComparison(Settings.LastComparison); Model.CurrentState = CurrentState; CurrentState.OnReset += CurrentState_OnReset; CurrentState.OnStart += CurrentState_OnStart; CurrentState.OnSplit += CurrentState_OnSplit; CurrentState.OnSkipSplit += CurrentState_OnSkipSplit; CurrentState.OnUndoSplit += CurrentState_OnUndoSplit; CurrentState.OnPause += CurrentState_OnPause; CurrentState.OnResume += CurrentState_OnResume; CurrentState.OnSwitchComparisonPrevious += CurrentState_OnSwitchComparisonPrevious; CurrentState.OnSwitchComparisonNext += CurrentState_OnSwitchComparisonNext; ComponentRenderer = new ComponentRenderer(); this.StartPosition = FormStartPosition.Manual; SetLayout(Layout); OldSize = -20; RefreshTimer = new System.Timers.Timer(25f); RefreshTimer.Elapsed += timer_Elapsed; RefreshTimer.Enabled = true; RefreshCounter = 0; RefreshesRemaining = 0; Hook = new CompositeHook(); Hook.KeyOrButtonPressed += hook_KeyOrButtonPressed; Settings.RegisterHotkeys(Hook); RegisterTaskbarButtons(); this.SizeChanged += TimerForm_SizeChanged; lock (BackBufferLock) { BackBuffer = new Bitmap(this.Width, this.Height); } this.TopMost = Layout.Settings.AlwaysOnTop; }
public HotkeyIndicator() { Line = new LineComponent(3, Color.White); Cache = new GraphicsCache(); Settings = new HotkeyIndicatorSettings(); }