Archived
Private
Public Access
1
0
This repository has been archived on 2026-02-04. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
2023-07-31 21:20:56 +02:00

90 lines
3.0 KiB
C#

// Decompiled with JetBrains decompiler
// Type: RefuelingNozzle.FrameTimer
// Assembly: RefuelingNozzle.net, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
// MVID: 78F50B7E-6755-4A9F-896E-A83F58106523
// Assembly location: D:\Programmierstuff\C#\FiveM\RefuelingNozzle\Librarys\RefuelingNozzle.net.dll
using CitizenFX.Core.Native;
using System;
namespace RefuelingNozzle {
internal class FrameTimer : IDisposable {
public int CurrentTime = API.GetGameTimer();
private int OldTime = API.GetGameTimer();
public int Interval;
public bool IsRunning;
public bool disposed;
public int TimeElapsed => this.GetTimeElapsed();
public double TimeLeft => this.GetTimeLeft();
public event EventHandler<FrameTimerEventArgs> Elapsed;
public FrameTimer(int Interval, bool start = false) {
this.Interval = Interval;
this.IsRunning = start;
}
public void Start() {
this.OldTime = API.GetGameTimer();
this.CurrentTime = API.GetGameTimer();
this.IsRunning = true;
}
public void Update() {
if (!this.IsRunning)
return;
this.CurrentTime = API.GetGameTimer();
int Interval = this.CurrentTime - this.OldTime;
if (Interval > this.Interval) {
double ErrorRate = (double)(Interval - this.Interval) * 100.0 / (double)this.Interval;
if (this.Elapsed != null)
this.Elapsed((object)this,
new FrameTimerEventArgs((double)(Interval - this.Interval), ErrorRate, (double)Interval));
this.OldTime = this.CurrentTime;
}
else {
if (Interval != this.Interval)
return;
if (this.Elapsed != null)
this.Elapsed((object)this, new FrameTimerEventArgs(0.0, 0.0, (double)this.Interval));
this.OldTime = this.CurrentTime;
}
}
public int GetTimeElapsed() {
this.Update();
if (!this.IsRunning)
return -1;
this.CurrentTime = API.GetGameTimer();
return this.CurrentTime - this.OldTime;
}
public double GetTimeLeft() {
this.Update();
return !this.IsRunning ? -1.0 : (double)(this.Interval - this.TimeElapsed) / 1000.0;
}
public void Stop() => this.IsRunning = false;
public void Renew() {
this.IsRunning = false;
this.OldTime = API.GetGameTimer();
this.CurrentTime = API.GetGameTimer();
this.IsRunning = true;
}
public void Dispose() {
this.Dispose(true);
GC.SuppressFinalize((object)this);
}
protected virtual void Dispose(bool disposing) {
if (this.disposed)
return;
int num = disposing ? 1 : 0;
this.disposed = true;
}
}
}