using System;
using System.Collections.Generic;
using DarkTonic.MasterAudio;
using UnityEngine;

// Token: 0x02000013 RID: 19
public class Armor : MonoBehaviour
{
	// Token: 0x06000192 RID: 402 RVA: 0x0001F8EC File Offset: 0x0001DAEC
	private void Awake()
	{
		if (!this.tr)
		{
			this.tr = base.transform;
		}
		if (!this.camTr)
		{
			this.camTr = Links.x.worldCamera.gameObject.transform;
		}
		this.forw = Vector3.forward;
		this.up = Vector3.up;
	}

	// Token: 0x06000193 RID: 403 RVA: 0x0001F950 File Offset: 0x0001DB50
	public void UpdateArmor(int curr)
	{
		SpriteRenderer spriteRenderer = null;
		this.currentArmor = curr;
		float num = (float)this.pieces.Count;
		float num2 = (float)this.maxArmor / num;
		float num3 = (float)curr;
		this.segments = num3;
		for (int i = 0; i < this.pieces.Count; i++)
		{
			float num4 = (float)i * num2;
			if (num3 > num4)
			{
				this.pieces[i].color = this.normal;
			}
			else
			{
				if (this.pieces[i].color == this.normal)
				{
					spriteRenderer = this.pieces[i];
				}
				this.pieces[i].color = this.broken;
			}
		}
		if (spriteRenderer)
		{
			MasterAudio.PlaySound3DAtVector3AndForget("Armor Break", this.character.torsoPosition, 1f, new float?(1f), 0.5f, "", null);
			RectTransform hannahAnimator = Links.x.cellar.GetHannahAnimator(1);
			hannahAnimator.gameObject.SetActive(true);
			hannahAnimator.gameObject.GetComponent<HannahAnimator>().Play("Idle");
			Vector3 vector = Links.x.worldCamera.WorldToScreenPoint(spriteRenderer.transform.position);
			vector.z = 0f;
			vector.x = vector.x * (1920f / (float)Screen.width) - 960f;
			vector.y = vector.y * (Links.x.canvasRT.sizeDelta.y / (float)Screen.height) - Links.x.canvasRT.sizeDelta.y / 2f;
			hannahAnimator.localPosition = vector;
			if (this.type == "Armor")
			{
				GameObject pooledGameObject = Links.x.cellar.GetPooledGameObject(119);
				pooledGameObject.transform.position = this.character.torsoPosition;
				pooledGameObject.SetActive(true);
				this.str.Clear();
				this.str.Append(this.character.stats.GetName());
				this.str.Append("'s armor is damaged");
				Links.x.gameFeed.AddFeed(this.str.ToString());
			}
		}
	}

	// Token: 0x06000194 RID: 404 RVA: 0x0001FBAB File Offset: 0x0001DDAB
	public void End()
	{
		Object.Destroy(base.gameObject);
	}

	// Token: 0x06000195 RID: 405 RVA: 0x0001FBB8 File Offset: 0x0001DDB8
	public void Setup(Character c, int max, int curr, string counterType)
	{
		this.character = c;
		this.type = counterType;
		this.currentArmor = curr;
		this.maxArmor = max;
		this.UpdateArmor(curr);
		this.LateUpdate();
	}

	// Token: 0x06000196 RID: 406 RVA: 0x0001FBE4 File Offset: 0x0001DDE4
	private void LateUpdate()
	{
		this.tr.LookAt(this.tr.position + this.camTr.rotation * this.forw, this.camTr.rotation * this.up);
		if (this.type == "Armor")
		{
			this.tr.position = this.character.body.GetHead().position + new Vector3(0f, 1f, 0f);
			return;
		}
		if (this.character.party)
		{
			this.tr.position = this.character.body.GetHead().position + new Vector3(0f, 1.1f, 0f);
			return;
		}
		this.tr.position = this.character.body.GetHead().position + new Vector3(0f, 1.85f, 0f);
	}

	// Token: 0x04000342 RID: 834
	public List<SpriteRenderer> pieces = new List<SpriteRenderer>();

	// Token: 0x04000343 RID: 835
	public Character character;

	// Token: 0x04000344 RID: 836
	public int maxArmor;

	// Token: 0x04000345 RID: 837
	public int currentArmor;

	// Token: 0x04000346 RID: 838
	public float segments;

	// Token: 0x04000347 RID: 839
	private Transform tr;

	// Token: 0x04000348 RID: 840
	private Transform camTr;

	// Token: 0x04000349 RID: 841
	private Vector3 forw;

	// Token: 0x0400034A RID: 842
	private Vector3 up;

	// Token: 0x0400034B RID: 843
	public Color normal;

	// Token: 0x0400034C RID: 844
	public Color broken;

	// Token: 0x0400034D RID: 845
	private StringFast str = new StringFast(32);

	// Token: 0x0400034E RID: 846
	public string type;
}
