File ScaledBink.cs
File List > Elements > ScaledBink.cs
Go to the documentation of this file
#if ALTV
using AltV.Net.Client;
#elif FIVEM
using CitizenFX.Core.Native;
#elif RAGEMP
using RAGE.Game;
#elif RPH
using Rage.Native;
#elif SHVDN3 || SHVDNC
using GTA.Native;
#endif
using System;
using System.Drawing;
namespace LemonUI.Elements
{
public class ScaledBink : BaseElement, IDisposable
{
#region Fields
private string name = string.Empty;
#endregion
#region Properties
public int Id { get; private set; } = -1;
public string Name
{
get => name;
set
{
name = value ?? throw new ArgumentNullException(nameof(value));
#if ALTV
Id = Alt.Natives.SetBinkMovie(name);
#elif FIVEM
Id = API.SetBinkMovie(name);
#elif RAGEMP
Id = Invoker.Invoke<int>(0xfc36643f7a64338f, name);
#elif RPH
Id = NativeFunction.CallByHash<int>(0xfc36643f7a64338f, name);
#elif SHVDN3 || SHVDNC
Id = Function.Call<int>(Hash.SET_BINK_MOVIE, name);
#endif
}
}
#endregion
#region Constructors
public ScaledBink(string name) : this(name, PointF.Empty, SizeF.Empty)
{
}
public ScaledBink(string name, SizeF size) : this(name, PointF.Empty, size)
{
}
public ScaledBink(string name, PointF pos, SizeF size) : base(pos, size)
{
Name = name ?? throw new ArgumentNullException(nameof(name));
}
#endregion
#region Finalizer
~ScaledBink() => Dispose();
#endregion
#region Functions
public override void Draw()
{
if (Id == -1)
{
return;
}
#if ALTV
Alt.Natives.PlayBinkMovie(Id);
Alt.Natives.DrawBinkMovie(Id, relativePosition.X, relativePosition.Y, relativeSize.Width, relativeSize.Height, 0.0f, 255, 255, 255, 255);
#elif FIVEM
API.PlayBinkMovie(Id);
API.DrawBinkMovie(Id, relativePosition.X, relativePosition.Y, relativeSize.Width, relativeSize.Height, 0.0f, 255, 255, 255, 255);
#elif RAGEMP
Invoker.Invoke<int>(0xE178310643033958, Id);
Invoker.Invoke<int>(0x7118E83EEB9F7238, Id, relativePosition.X, relativePosition.Y, relativeSize.Width, relativeSize.Height, 0.0f, 255, 255, 255, 255);
#elif RPH
NativeFunction.CallByHash<int>(0xE178310643033958, Id);
NativeFunction.CallByHash<int>(0x7118E83EEB9F7238, Id, relativePosition.X, relativePosition.Y, relativeSize.Width, relativeSize.Height, 0.0f, 255, 255, 255, 255);
#elif SHVDN3 || SHVDNC
Function.Call<int>(Hash.PLAY_BINK_MOVIE, Id);
Function.Call<int>(Hash.DRAW_BINK_MOVIE, Id, relativePosition.X, relativePosition.Y, relativeSize.Width, relativeSize.Height, 0.0f, 255, 255, 255, 255);
#endif
}
public void Stop()
{
if (Id == -1)
{
return;
}
#if ALTV
Alt.Natives.StopBinkMovie(Id);
#elif FIVEM
API.StopBinkMovie(Id);
#elif RAGEMP
Invoker.Invoke<int>(0x63606A61DE68898A, Id);
#elif RPH
NativeFunction.CallByHash<int>(0x63606A61DE68898A, Id);
#elif SHVDN3 || SHVDNC
Function.Call<int>(Hash.STOP_BINK_MOVIE, Id);
#endif
}
public void Dispose()
{
if (Id == -1)
{
return;
}
#if ALTV
Alt.Natives.ReleaseBinkMovie(Id);
#elif FIVEM
API.ReleaseBinkMovie(Id);
#elif RAGEMP
Invoker.Invoke<int>(0x04D950EEFA4EED8C, Id);
#elif RPH
NativeFunction.CallByHash<int>(0x04D950EEFA4EED8C, Id);
#elif SHVDN3 || SHVDNC
Function.Call<int>(Hash.RELEASE_BINK_MOVIE, Id);
#endif
Id = -1;
}
public override void Recalculate()
{
base.Recalculate();
relativePosition.X += relativeSize.Width * 0.5f;
relativePosition.Y += relativeSize.Height * 0.5f;
}
#endregion
}
}