2020-05-31 17:07:22 +00:00
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using UnityEngine;
|
|
|
|
|
using SanAndreasUnity.Behaviours;
|
|
|
|
|
using SanAndreasUnity.Utilities;
|
2020-04-20 23:21:05 +00:00
|
|
|
|
using UnityEngine.UI;
|
2020-04-21 22:28:09 +00:00
|
|
|
|
using SanAndreasUnity.Importing.Conversion;
|
2020-05-31 17:07:22 +00:00
|
|
|
|
|
|
|
|
|
namespace SanAndreasUnity.UI {
|
|
|
|
|
|
|
|
|
|
public class HUD : MonoBehaviour {
|
|
|
|
|
|
|
|
|
|
public static HUD Instance { get; private set; }
|
|
|
|
|
|
2020-04-20 23:21:05 +00:00
|
|
|
|
public Canvas canvas;
|
|
|
|
|
public RawImage weaponImage;
|
|
|
|
|
public Text weaponAmmoText;
|
|
|
|
|
public RawImage healthBackgroundImage;
|
|
|
|
|
public RawImage healthForegroundImage;
|
|
|
|
|
public RawImage crosshairImage;
|
2020-04-22 21:58:05 +00:00
|
|
|
|
public Text pedStateText;
|
2020-04-24 22:01:03 +00:00
|
|
|
|
public Text pedVelocityText;
|
2020-04-20 23:21:05 +00:00
|
|
|
|
|
2019-07-23 14:29:16 +00:00
|
|
|
|
public static Texture2D LeftArrowTexture { get; set; }
|
|
|
|
|
public static Texture2D RightArrowTexture { get; set; }
|
|
|
|
|
public static Texture2D UpArrowTexture { get; set; }
|
|
|
|
|
public static Texture2D DownArrowTexture { get; set; }
|
|
|
|
|
|
2020-05-31 17:07:22 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void Awake () {
|
|
|
|
|
Instance = this;
|
2020-04-21 22:28:09 +00:00
|
|
|
|
|
|
|
|
|
Loader.onLoadSpecialTextures += LoadTextures;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void LoadTextures()
|
|
|
|
|
{
|
|
|
|
|
// load arrow textures
|
|
|
|
|
var pcbtnsTxd = TextureDictionary.Load("pcbtns");
|
|
|
|
|
LeftArrowTexture = pcbtnsTxd.GetDiffuse("left").Texture;
|
|
|
|
|
RightArrowTexture = pcbtnsTxd.GetDiffuse("right").Texture;
|
|
|
|
|
UpArrowTexture = pcbtnsTxd.GetDiffuse("up").Texture;
|
|
|
|
|
DownArrowTexture = pcbtnsTxd.GetDiffuse("down").Texture;
|
|
|
|
|
|
|
|
|
|
LoadCrosshairTexture();
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void LoadCrosshairTexture()
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
Texture2D originalTex = TextureDictionary.Load("hud")
|
|
|
|
|
.GetDiffuse("siteM16", new TextureLoadParams { makeNoLongerReadable = false })
|
|
|
|
|
.Texture;
|
|
|
|
|
|
|
|
|
|
// construct crosshair texture
|
|
|
|
|
|
|
|
|
|
int originalWidth = originalTex.width;
|
|
|
|
|
int originalHeight = originalTex.height;
|
|
|
|
|
|
|
|
|
|
Texture2D tex = new Texture2D(originalWidth * 2, originalHeight * 2);
|
|
|
|
|
|
|
|
|
|
// bottom left
|
|
|
|
|
for (int i = 0; i < originalWidth; i++)
|
|
|
|
|
{
|
|
|
|
|
for (int j = 0; j < originalHeight; j++)
|
|
|
|
|
{
|
|
|
|
|
tex.SetPixel(i, j, originalTex.GetPixel(i, j));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// bottom right - flip around X axis
|
|
|
|
|
for (int i = 0; i < originalWidth; i++)
|
|
|
|
|
{
|
|
|
|
|
for (int j = 0; j < originalHeight; j++)
|
|
|
|
|
{
|
2020-04-22 20:59:23 +00:00
|
|
|
|
tex.SetPixel(originalWidth - i - 1 + originalWidth, j, originalTex.GetPixel(i, j));
|
2020-04-21 22:28:09 +00:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// top left - flip Y axis
|
|
|
|
|
for (int i = 0; i < originalWidth; i++)
|
|
|
|
|
{
|
|
|
|
|
for (int j = 0; j < originalHeight; j++)
|
|
|
|
|
{
|
2020-04-22 20:59:23 +00:00
|
|
|
|
tex.SetPixel(i, originalHeight - j - 1 + originalHeight, originalTex.GetPixel(i, j));
|
2020-04-21 22:28:09 +00:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// top right - flip both X and Y axes
|
|
|
|
|
for (int i = 0; i < originalWidth; i++)
|
|
|
|
|
{
|
|
|
|
|
for (int j = 0; j < originalHeight; j++)
|
|
|
|
|
{
|
2020-04-22 20:59:23 +00:00
|
|
|
|
tex.SetPixel(originalWidth - i - 1 + originalWidth, originalHeight - j - 1 + originalHeight, originalTex.GetPixel(i, j));
|
2020-04-21 22:28:09 +00:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2020-04-22 21:06:55 +00:00
|
|
|
|
tex.Apply(true, true);
|
2020-04-21 22:28:09 +00:00
|
|
|
|
|
|
|
|
|
Weapon.CrosshairTexture = tex;
|
|
|
|
|
this.crosshairImage.enabled = true;
|
|
|
|
|
this.crosshairImage.texture = tex;
|
|
|
|
|
|
2020-05-31 17:07:22 +00:00
|
|
|
|
}
|
|
|
|
|
|
2020-04-20 23:21:05 +00:00
|
|
|
|
void Update()
|
|
|
|
|
{
|
|
|
|
|
if (!Loader.HasLoaded)
|
|
|
|
|
{
|
|
|
|
|
this.canvas.enabled = false;
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var ped = Ped.Instance;
|
|
|
|
|
|
|
|
|
|
if (null == ped)
|
|
|
|
|
{
|
|
|
|
|
this.canvas.enabled = false;
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
this.canvas.enabled = true;
|
|
|
|
|
|
|
|
|
|
this.crosshairImage.enabled = ped.IsAiming;
|
|
|
|
|
|
|
|
|
|
var weapon = ped.CurrentWeapon;
|
|
|
|
|
|
|
|
|
|
Texture2D weaponTextureToDisplay = weapon != null ? weapon.HudTexture : Weapon.FistTexture;
|
|
|
|
|
if (this.weaponImage.texture != weaponTextureToDisplay)
|
|
|
|
|
this.weaponImage.texture = weaponTextureToDisplay;
|
|
|
|
|
|
|
|
|
|
string ammoText = weapon != null ? weapon.AmmoOutsideOfClip + "-" + weapon.AmmoInClip : string.Empty;
|
|
|
|
|
if (this.weaponAmmoText.text != ammoText)
|
|
|
|
|
this.weaponAmmoText.text = ammoText;
|
|
|
|
|
|
|
|
|
|
float healthPerc = Mathf.Clamp01( ped.Health / ped.MaxHealth );
|
|
|
|
|
this.healthForegroundImage.rectTransform.sizeDelta = new Vector2(this.healthBackgroundImage.rectTransform.sizeDelta.x * healthPerc, this.healthForegroundImage.rectTransform.sizeDelta.y);
|
|
|
|
|
|
2020-04-22 21:58:05 +00:00
|
|
|
|
string pedStateDisplayText = "Current ped state: " + (ped.CurrentState != null ? ped.CurrentState.GetType().Name : "none");
|
|
|
|
|
if (pedStateDisplayText != this.pedStateText.text)
|
|
|
|
|
this.pedStateText.text = pedStateDisplayText;
|
|
|
|
|
|
2020-04-24 22:01:03 +00:00
|
|
|
|
this.pedVelocityText.enabled = PedManager.Instance.showPedSpeedometer;
|
|
|
|
|
if (this.pedVelocityText.enabled)
|
|
|
|
|
{
|
|
|
|
|
string pedVelocityDisplayText = string.Format("{0:0.0} km/h", ped.GetComponent<PlayerController>().CurVelocity);
|
|
|
|
|
if (pedVelocityDisplayText != this.pedVelocityText.text)
|
|
|
|
|
this.pedVelocityText.text = pedVelocityDisplayText;
|
|
|
|
|
}
|
|
|
|
|
|
2020-04-20 23:21:05 +00:00
|
|
|
|
}
|
|
|
|
|
|
2020-05-31 17:07:22 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|