using System;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;

// Token: 0x020000A7 RID: 167
public class Formation : MonoBehaviour
{
	// Token: 0x06000F6C RID: 3948 RVA: 0x0012AB8C File Offset: 0x00128D8C
	private void Awake()
	{
		this.contents1.SetActive(false);
		this.anim.enabled = false;
		this.defaultText = "Drag companions to change formation positions. Select a companion to update their support behavior.";
		this.normalTextColor1 = this.support.color;
		this.normalTextColor2 = this.evade.color;
	}

	// Token: 0x06000F6D RID: 3949 RVA: 0x0012ABDE File Offset: 0x00128DDE
	private void Start()
	{
		Links.x.formation = this;
	}

	// Token: 0x06000F6E RID: 3950 RVA: 0x0012ABEC File Offset: 0x00128DEC
	public void UpdateSlider()
	{
		GameObject currentEventObject = Links.x.gameplay.currentEventObject;
		if (currentEventObject)
		{
			float x = Links.x.fellowship.direction.x;
			Slider slider = null;
			if (currentEventObject == this.items.gameObject)
			{
				slider = this.items;
			}
			if (currentEventObject == this.buffs.gameObject)
			{
				slider = this.buffs;
			}
			if (currentEventObject == this.criticals.gameObject)
			{
				slider = this.criticals;
			}
			float num = 1f;
			if (slider)
			{
				float num2 = 0.05f;
				if (slider == this.buffs)
				{
					num2 = 0.3f;
				}
				if (Time.realtimeSinceStartup > this.lastSliderTime + num2 || this.lastSliderTime == 0f)
				{
					if (x > 0f)
					{
						slider.value += num;
					}
					else if (x < 0f)
					{
						slider.value -= num;
					}
					this.lastSliderTime = Time.realtimeSinceStartup;
				}
			}
		}
	}

	// Token: 0x06000F6F RID: 3951 RVA: 0x0012ACFC File Offset: 0x00128EFC
	public void StartMenu()
	{
		this.anim.enabled = true;
		this.canvas.enabled = true;
		bool flag = false;
		if (Links.x.joy && (Links.x.gameplay.dockStart || Links.x.gameplay.itemsStart))
		{
			flag = true;
		}
		if (!flag)
		{
			this.anim.Play("RestOpen");
		}
		else
		{
			this.anim.Play("RestOpen", 0, 1f);
		}
		this.party = Links.x.portraitOrder;
		Links.x.gameplay.openingAnotherMenu = true;
		Links.x.gameplay.CloseAllMenus();
		if (!Records.x.inMenus && Links.x.gaia.sceneLoaded)
		{
			Links.x.gameplay.OpenDock();
		}
		this.open = true;
		this.contents1.SetActive(true);
		this.party1.SetActive(false);
		this.party2.SetActive(false);
		this.party3.SetActive(false);
		this.party4.SetActive(false);
		this.dragging = false;
		for (int i = 0; i < this.companionIcons.Count; i++)
		{
			if (this.companionIcons[i])
			{
				this.companionIcons[i].TurnOff();
			}
		}
		for (int j = 0; j < this.party.Count; j++)
		{
			if (this.party[j])
			{
				if (j == 0)
				{
					this.party1.SetActive(true);
				}
				if (j == 1)
				{
					this.party2.SetActive(true);
				}
				if (j == 2)
				{
					this.party3.SetActive(true);
				}
				if (j == 3)
				{
					this.party4.SetActive(true);
				}
				if (this.companionIcons[j].character != this.party[j])
				{
					this.companionIcons[j].Setup(this.party[j]);
					this.companionIcons[j].btn.interactable = true;
				}
			}
		}
		Records.x.AddMenu(base.gameObject);
		if (Links.x.mk)
		{
			this.controllerMessage.enabled = false;
			this.controllerMessage.gameObject.transform.parent.gameObject.SetActive(false);
		}
		else
		{
			this.controllerMessage.enabled = true;
			this.controllerMessage.gameObject.transform.parent.gameObject.SetActive(true);
		}
		this.str.Clear();
		this.str.Append("<voffset=.4em><size=40><sprite=");
		this.str.Append(Links.x.gameplay.GetControllerSprite("Action", Links.x.gameplay.controllerName));
		this.str.Append("></size></voffset>");
		this.str.Append("Start Drag");
		this.str.Append("      <voffset=.4em><size=40><sprite=");
		this.str.Append(Links.x.gameplay.GetControllerSprite("Interact", Links.x.gameplay.controllerName));
		this.str.Append("></size></voffset>");
		this.str.Append("Support Behavior");
		this.controllerMessageHover = this.str.ToString();
		this.controllerMessage.text = this.controllerMessageHover;
		this.controllerMessage.spriteAsset = Links.x.GetSpriteSheetAsset(Links.x.gameplay.currentSpriteSheetAsset);
		this.str.Clear();
		this.str.Append("<voffset=.4em><size=40><sprite=");
		int num = Links.x.gameplay.GetControllerSprite("Joystick", Links.x.gameplay.controllerName);
		this.str.Append(num);
		this.str.Append("></size></voffset>Drag       ");
		this.str.Append("<voffset=.4em><size=40><sprite=");
		num = Links.x.gameplay.GetControllerSprite("Action", Links.x.gameplay.controllerName);
		this.str.Append(num);
		this.str.Append("></size></voffset>End Drag");
		this.controllerMessageDrag = this.str.ToString();
		this.str.Clear();
		this.str.Append("<voffset=.4em><size=40><sprite=");
		this.str.Append(Links.x.gameplay.GetControllerSprite("Cancel", Links.x.gameplay.controllerName));
		this.str.Append("></size></voffset>");
		this.str.Append("Return to portraits");
		this.controllerMessageSliders = this.str.ToString();
		this.dragMessage.spriteAsset = Links.x.GetSpriteSheetAsset(Links.x.gameplay.currentSpriteSheetAsset);
		this.dragMessage.enabled = true;
		if (Links.x.joy)
		{
			this.items.interactable = false;
			this.buffs.interactable = false;
			this.criticals.interactable = false;
		}
		else
		{
			this.items.interactable = true;
			this.buffs.interactable = true;
			this.criticals.interactable = true;
			EventSystem.current.SetSelectedGameObject(null);
			this.formationDescription = Links.x.formation.defaultText;
			this.dragMessage.text = this.formationDescription;
		}
		if (Links.x.mk)
		{
			foreach (TextMeshProUGUI textMeshProUGUI in this.autoCastIcons)
			{
				textMeshProUGUI.text = "";
				textMeshProUGUI.enabled = false;
			}
			using (List<TextMeshProUGUI>.Enumerator enumerator = this.leaderIcons.GetEnumerator())
			{
				while (enumerator.MoveNext())
				{
					TextMeshProUGUI textMeshProUGUI2 = enumerator.Current;
					textMeshProUGUI2.text = "";
					textMeshProUGUI2.enabled = false;
				}
				goto IL_06F8;
			}
		}
		num = Links.x.gameplay.GetControllerSprite("BtnNorth", Links.x.gameplay.controllerName);
		this.str.Clear();
		this.str.Append("<voffset=-.9em>Toggle Group Leader    <voffset=-.6em><size=20><sprite=");
		this.str.Append(num);
		this.str.Append("></size></voffset></voffset>");
		foreach (TextMeshProUGUI textMeshProUGUI3 in this.leaderIcons)
		{
			textMeshProUGUI3.text = this.str.ToString();
			textMeshProUGUI3.enabled = true;
			textMeshProUGUI3.spriteAsset = Links.x.GetSpriteSheetAsset(Links.x.gameplay.currentSpriteSheetAsset);
		}
		IL_06F8:
		this.EmptySliders();
		this.StartCompanions();
		if (Links.x.joy)
		{
			Links.x.hudControl.UpdateMenuSwitcher("Formation");
		}
		this.updateTime = Time.realtimeSinceStartup;
	}

	// Token: 0x06000F70 RID: 3952 RVA: 0x0012B460 File Offset: 0x00129660
	public void StartEndMenu(bool fromCloseButton)
	{
		foreach (CompanionIcon companionIcon in this.companionIcons)
		{
			if (companionIcon.character)
			{
				companionIcon.character.stats.isLeader = companionIcon.leader.isOn;
			}
		}
		if (fromCloseButton && Links.x.gaia.sceneLoaded)
		{
			Links.x.gameplay.CloseDock();
		}
		bool flag = false;
		if (Links.x.joy && (Links.x.gameplay.dockStart || Links.x.gameplay.itemsStart))
		{
			flag = true;
		}
		if (!flag)
		{
			this.anim.Play("RestClose");
		}
		else
		{
			this.anim.Play("RestClose", 0, 1f);
		}
		if (this.dragging && this.draggingIcon)
		{
			this.draggingIcon.EndDrag();
		}
		Links.x.SetFormationOrder();
		this.dragging = false;
		Links.x.hudControl.JoyBox(false);
	}

	// Token: 0x06000F71 RID: 3953 RVA: 0x0012B598 File Offset: 0x00129798
	public void EndMenu()
	{
		this.open = false;
		this.contents1.SetActive(false);
		Links.x.SetFormationParty();
		if (this.selectedCharacter)
		{
			this.GetSelectedIcon().selected.enabled = false;
		}
		this.selectedCharacter = null;
		Records.x.RemoveMenu(base.gameObject);
		this.anim.enabled = false;
		this.canvas.enabled = false;
		Links.x.OrderPortraitList();
		Links.x.hudControl.SetPortraitPositions();
		Links.x.characterSheet.OrderPortraits();
		Links.x.hudControl.SetPortraitBacks();
		Links.x.fellowship.SetFirstAsSelected(true);
	}

	// Token: 0x06000F72 RID: 3954 RVA: 0x0012B656 File Offset: 0x00129856
	public void Save()
	{
	}

	// Token: 0x06000F73 RID: 3955 RVA: 0x0012B658 File Offset: 0x00129858
	public void Load()
	{
	}

	// Token: 0x06000F74 RID: 3956 RVA: 0x0012B65A File Offset: 0x0012985A
	public void StartCompanions()
	{
		this.AddPortraits();
	}

	// Token: 0x06000F75 RID: 3957 RVA: 0x0012B664 File Offset: 0x00129864
	public void AddPortraits()
	{
		for (int i = 0; i < this.companionIcons.Count; i++)
		{
			if (this.companionIcons[i].character)
			{
				this.SetPortraitParent(i, false);
				this.companionIcons[i].btn.interactable = true;
			}
		}
		this.open = true;
		this.SetLeaders();
		if (Links.x.joy && this.open)
		{
			EventSystem.current.SetSelectedGameObject(this.companionIcons[0].gameObject);
		}
	}

	// Token: 0x06000F76 RID: 3958 RVA: 0x0012B6FC File Offset: 0x001298FC
	public void SetPortraitParent(int i, bool fromDrag)
	{
		this.companionIcons[i].enabled = true;
		Transform transform = this.companionIcons[i].gameObject.transform;
		RectTransform rt = this.companionIcons[i].rt;
		if (this.companionIcons[i].character.stats.formationGroup == 1)
		{
			transform.SetParent(this.group1);
		}
		if (this.companionIcons[i].character.stats.formationGroup == 2)
		{
			transform.SetParent(this.group2);
		}
		if (this.companionIcons[i].character.stats.formationGroup == 3)
		{
			transform.SetParent(this.group3);
		}
		if (this.companionIcons[i].character.stats.formationGroup == 4)
		{
			transform.SetParent(this.group4);
		}
		if (this.companionIcons[i].character.stats.formationGroup == 5)
		{
			transform.SetParent(this.group5);
		}
		if (this.companionIcons[i].character.stats.formationGroup == 6)
		{
			transform.SetParent(this.group6);
		}
		if (this.companionIcons[i].character.stats.formationGroup == 7)
		{
			transform.SetParent(this.group7);
		}
		if (this.companionIcons[i].character.stats.formationGroup == 8)
		{
			transform.SetParent(this.group8);
		}
		if (this.companionIcons[i].character.stats.formationGroup == 9)
		{
			transform.SetParent(this.group9);
		}
		float num = Random.Range(-10f, 10f);
		float num2 = Random.Range(-10f, 10f);
		int num3 = 0;
		int formationGroup = this.companionIcons[i].character.stats.formationGroup;
		for (int j = 0; j < this.companionIcons.Count; j++)
		{
			Character character = this.companionIcons[j].character;
			if (character && character.stats.formationGroup == formationGroup)
			{
				num3++;
			}
		}
		if (num3 <= 1)
		{
			num = 0f;
			num2 = 0f;
			rt.anchoredPosition3D = new Vector3(num, num2, 0f);
		}
		if (num3 >= 2)
		{
			num3 = 0;
			float num4 = 35f;
			for (int k = 0; k < this.companionIcons.Count; k++)
			{
				Character character2 = this.companionIcons[k].character;
				if (character2 && character2.stats.formationGroup == formationGroup)
				{
					if (num3 == 0)
					{
						num = num4 * -1f;
						num2 = num4;
					}
					if (num3 == 1)
					{
						num = num4 * -1f;
						num2 = num4 * -1f;
					}
					if (num3 == 2)
					{
						num = num4 * 1f;
						num2 = num4;
					}
					if (num3 == 3)
					{
						num = num4 * 1f;
						num2 = num4 * -1f;
					}
					num3++;
					this.companionIcons[k].rt.anchoredPosition3D = new Vector3(num + 5f, num2, 0f);
				}
			}
		}
		transform.localScale = new Vector3(1f, 1f, 1f);
		Links.x.formationTooltip.transform.SetAsLastSibling();
		if (Links.x.joy)
		{
			EventSystem.current.SetSelectedGameObject(transform.gameObject);
		}
		if (fromDrag)
		{
			for (int l = 0; l < this.companionIcons.Count; l++)
			{
				if (l != i && this.companionIcons[l].character)
				{
					this.SetPortraitParent(l, false);
				}
			}
		}
	}

	// Token: 0x06000F77 RID: 3959 RVA: 0x0012BAE0 File Offset: 0x00129CE0
	public void EndCompanions()
	{
		for (int i = 0; i < this.companionIcons.Count; i++)
		{
			Character character = this.companionIcons[i].character;
			if (character)
			{
				character.stats.FormationTactics();
				this.companionIcons[i].enabled = false;
				Transform transform = this.companionIcons[i].gameObject.transform;
				transform.localPosition = Vector3.zero;
				transform.localScale = new Vector3(1f, 1f, 1f);
			}
		}
	}

	// Token: 0x06000F78 RID: 3960 RVA: 0x0012BB77 File Offset: 0x00129D77
	public void UpdateItemUse(GameObject obj)
	{
		if (Links.x.mk)
		{
			EventSystem.current.SetSelectedGameObject(null);
		}
		Character character = obj.GetComponent<CompanionIcon>().character;
	}

	// Token: 0x06000F79 RID: 3961 RVA: 0x0012BB9C File Offset: 0x00129D9C
	public void UpdateAutoCast(GameObject obj)
	{
		if (Links.x.mk)
		{
			EventSystem.current.SetSelectedGameObject(null);
		}
		Character character = obj.GetComponent<CompanionIcon>().character;
	}

	// Token: 0x06000F7A RID: 3962 RVA: 0x0012BBC4 File Offset: 0x00129DC4
	public bool SharingFormationGroup(Character c)
	{
		foreach (CompanionIcon companionIcon in this.companionIcons)
		{
			if (companionIcon.character != c && companionIcon.character && companionIcon.character.stats.formationGroup == c.stats.formationGroup)
			{
				return true;
			}
		}
		return false;
	}

	// Token: 0x06000F7B RID: 3963 RVA: 0x0012BC50 File Offset: 0x00129E50
	public void UpdateLeader(GameObject obj)
	{
		if (!obj)
		{
			return;
		}
		if (Links.x.mk)
		{
			EventSystem.current.SetSelectedGameObject(null);
		}
		CompanionIcon component = obj.GetComponent<CompanionIcon>();
		Character character = component.character;
		if (character && component.leader)
		{
			character.stats.isLeader = component.leader.isOn;
			if (character.stats.isLeader)
			{
				using (List<CompanionIcon>.Enumerator enumerator = this.companionIcons.GetEnumerator())
				{
					while (enumerator.MoveNext())
					{
						CompanionIcon companionIcon = enumerator.Current;
						if (companionIcon != component && component.character && companionIcon.character && companionIcon.character.stats.formationGroup == component.character.stats.formationGroup)
						{
							companionIcon.character.stats.isLeader = false;
							companionIcon.CheckLeader();
							companionIcon.character.stats.FormationTactics();
						}
					}
					return;
				}
			}
			this.SetLeaders();
		}
	}

	// Token: 0x06000F7C RID: 3964 RVA: 0x0012BD80 File Offset: 0x00129F80
	public void UpdateSelectedCharacter(Character c)
	{
		this.selectedCharacter = c;
		this.UpdateSliderValues(c);
	}

	// Token: 0x06000F7D RID: 3965 RVA: 0x0012BD90 File Offset: 0x00129F90
	public void EmptySliders()
	{
		this.items.interactable = false;
		this.buffs.interactable = false;
		this.criticals.interactable = false;
		this.updateTime = Time.realtimeSinceStartup;
		this.items.value = 0f;
		this.buffs.value = 0f;
		this.criticals.value = 0f;
		this.outputBuffs.text = "";
		this.outputCriticals.text = "";
		this.outputItems.text = "";
	}

	// Token: 0x06000F7E RID: 3966 RVA: 0x0012BE2C File Offset: 0x0012A02C
	public void UpdateSliderValues(Character c)
	{
		if (Links.x.mk)
		{
			this.items.interactable = true;
			this.buffs.interactable = true;
			this.criticals.interactable = true;
		}
		this.updateTime = Time.realtimeSinceStartup;
		this.items.value = (float)c.stats.useItemsAI;
		this.buffs.value = (float)c.stats.autoBuffsAI;
		this.criticals.value = (float)c.stats.autoCritsAI;
		this.SetOutputs();
	}

	// Token: 0x06000F7F RID: 3967 RVA: 0x0012BEC0 File Offset: 0x0012A0C0
	public void SetOutputs()
	{
		int num = (int)this.items.value;
		this.outputItems.text = num.ToString() + "%";
		num = (int)this.buffs.value;
		if (num == 0)
		{
			this.outputBuffs.text = "Low";
		}
		else if (num == 1)
		{
			this.outputBuffs.text = "Medium";
		}
		else if (num == 2)
		{
			this.outputBuffs.text = "High";
		}
		else
		{
			this.outputBuffs.text = "Never";
		}
		num = (int)this.criticals.value;
		this.outputCriticals.text = num.ToString() + "%";
	}

	// Token: 0x06000F80 RID: 3968 RVA: 0x0012BF80 File Offset: 0x0012A180
	public void UpdateSlider(string type)
	{
		if (this.selectedCharacter && this.open && Time.realtimeSinceStartup > this.updateTime + 0.1f)
		{
			if (type == "Items")
			{
				this.selectedCharacter.stats.useItemsAI = (int)this.items.value;
			}
			if (type == "Buffs")
			{
				this.selectedCharacter.stats.autoBuffsAI = (int)this.buffs.value;
			}
			if (type == "Criticals")
			{
				this.selectedCharacter.stats.autoCritsAI = (int)this.criticals.value;
			}
			this.SetOutputs();
		}
	}

	// Token: 0x06000F81 RID: 3969 RVA: 0x0012C040 File Offset: 0x0012A240
	private void Update()
	{
		if (this.open)
		{
			this.dragMessage.text = this.formationDescription;
			if (Links.x.joy)
			{
				GameObject currentEventObject = Links.x.gameplay.currentEventObject;
				CompanionIcon companionIcon = null;
				if (currentEventObject)
				{
					companionIcon = currentEventObject.GetComponent<CompanionIcon>();
					if (companionIcon && Links.x.gameplay.targetDodgeStart)
					{
						bool flag = false;
						if (companionIcon.leaderJoy.gameObject.activeSelf)
						{
							flag = true;
						}
						if (flag)
						{
							if (companionIcon.leaderJoy.isOn)
							{
								companionIcon.leaderJoy.isOn = false;
								companionIcon.leader.isOn = false;
							}
							else
							{
								companionIcon.leaderJoy.isOn = true;
								companionIcon.leader.isOn = true;
							}
							this.UpdateLeader(companionIcon.gameObject);
						}
					}
				}
				if (currentEventObject)
				{
					companionIcon = currentEventObject.GetComponent<CompanionIcon>();
				}
				if (!this.dragging && (this.selectedCharacter || companionIcon) && this.open)
				{
					if (Links.x.gameplay.interactStart)
					{
						if (companionIcon)
						{
							if (this.selectedCharacter)
							{
								this.GetSelectedIcon().selected.enabled = false;
							}
							this.selectedCharacter = companionIcon.character;
							this.UpdateSelectedCharacter(companionIcon.character);
							this.GetSelectedIcon().selected.enabled = true;
						}
						for (int i = 0; i < 4; i++)
						{
							this.companionIcons[i].btn.interactable = false;
						}
						this.items.interactable = true;
						this.buffs.interactable = true;
						this.criticals.interactable = true;
						EventSystem.current.SetSelectedGameObject(this.items.gameObject);
						this.cancelButton.SetActive(false);
					}
					if (Links.x.gameplay.cancelStart && !this.cancelButton.activeSelf)
					{
						for (int j = 0; j < 4; j++)
						{
							this.companionIcons[j].btn.interactable = true;
						}
						EventSystem.current.SetSelectedGameObject(this.GetSelectedIcon().gameObject);
						this.cancelButton.SetActive(true);
						this.items.interactable = false;
						this.buffs.interactable = false;
						this.criticals.interactable = false;
					}
				}
				if (this.dragging)
				{
					this.controllerMessage.text = this.controllerMessageDrag;
					return;
				}
				if (this.items.interactable)
				{
					this.controllerMessage.text = this.controllerMessageSliders;
					return;
				}
				this.controllerMessage.text = this.controllerMessageHover;
			}
		}
	}

	// Token: 0x06000F82 RID: 3970 RVA: 0x0012C2F8 File Offset: 0x0012A4F8
	public void SetLeaders()
	{
		foreach (CompanionIcon companionIcon in this.companionIcons)
		{
			companionIcon.CheckLeader();
			if (companionIcon.character && !companionIcon.character.stats.isLeader)
			{
				int num = 0;
				int num2 = 0;
				if (companionIcon.character.stats.defendMainInCombat)
				{
					foreach (CompanionIcon companionIcon2 in this.companionIcons)
					{
						if (companionIcon2 != companionIcon && companionIcon2.character && companionIcon2.character.stats.formationGroup == companionIcon.character.stats.formationGroup)
						{
							num2++;
							if (companionIcon2.character.stats.isLeader)
							{
								num++;
							}
						}
					}
					if (num == 0 && num2 > 0)
					{
						companionIcon.character.stats.isLeader = true;
						companionIcon.CheckLeader();
					}
				}
			}
		}
	}

	// Token: 0x06000F83 RID: 3971 RVA: 0x0012C458 File Offset: 0x0012A658
	public void StartDrag(CompanionIcon icon, CompanionDrop startBox)
	{
		this.dragging = true;
		this.draggingIcon = icon;
		if (Links.x.joy)
		{
			for (int i = 0; i < this.companionIcons.Count; i++)
			{
				if (this.companionIcons[i] != this.draggingIcon)
				{
					this.companionIcons[i].btn.interactable = false;
				}
				else
				{
					Navigation navigation = this.companionIcons[i].btn.navigation;
					navigation.selectOnLeft = null;
					navigation.selectOnRight = null;
					navigation.selectOnDown = null;
					navigation.selectOnUp = null;
					this.companionIcons[i].btn.navigation = navigation;
					this.companionIcons[i].btn.interactable = true;
				}
			}
			this.dragMessage.enabled = true;
		}
		if (startBox.label1 != "Utility" && startBox.label2 != "Utility")
		{
			this.ToggleHighlight("Utility", false);
		}
		else
		{
			this.ToggleHighlight("Utility", true);
		}
		if (startBox.label1 != "Offense" && startBox.label2 != "Offense")
		{
			this.ToggleHighlight("Offense", false);
		}
		else
		{
			this.ToggleHighlight("Offense", true);
		}
		if (startBox.label1 != "Support" && startBox.label2 != "Support")
		{
			this.ToggleHighlight("Support", false);
		}
		else
		{
			this.ToggleHighlight("Support", true);
		}
		if (startBox.label1 != "Avoid" && startBox.label2 != "Avoid")
		{
			this.ToggleHighlight("Avoid", false);
		}
		else
		{
			this.ToggleHighlight("Avoid", true);
		}
		if (startBox.label1 != "Evade" && startBox.label2 != "Evade")
		{
			this.ToggleHighlight("Evade", false);
		}
		else
		{
			this.ToggleHighlight("Evade", true);
		}
		if (startBox.label1 != "Persevere" && startBox.label2 != "Persevere")
		{
			this.ToggleHighlight("Persevere", false);
			return;
		}
		this.ToggleHighlight("Persevere", true);
	}

	// Token: 0x06000F84 RID: 3972 RVA: 0x0012C6B4 File Offset: 0x0012A8B4
	public void EndDrag(CompanionDrop endBox)
	{
		this.dragging = false;
		if (Links.x.joy && Links.x.joy)
		{
			int count = this.companionIcons.Count;
			for (int i = 0; i < count; i++)
			{
				this.companionIcons[i].btn.interactable = true;
				this.companionIcons[i].btn.navigation = Navigation.defaultNavigation;
			}
		}
		this.draggingIcon = null;
		if (endBox)
		{
			if (endBox.label1 != "Utility" && endBox.label2 != "Utility")
			{
				this.ToggleHighlight("Utility", false);
			}
			else
			{
				this.ToggleHighlight("Utility", true);
			}
			if (endBox.label1 != "Offense" && endBox.label2 != "Offense")
			{
				this.ToggleHighlight("Offense", false);
			}
			else
			{
				this.ToggleHighlight("Offense", true);
			}
			if (endBox.label1 != "Support" && endBox.label2 != "Support")
			{
				this.ToggleHighlight("Support", false);
			}
			else
			{
				this.ToggleHighlight("Support", true);
			}
			if (endBox.label1 != "Avoid" && endBox.label2 != "Avoid")
			{
				this.ToggleHighlight("Avoid", false);
			}
			else
			{
				this.ToggleHighlight("Avoid", true);
			}
			if (endBox.label1 != "Evade" && endBox.label2 != "Evade")
			{
				this.ToggleHighlight("Evade", false);
			}
			else
			{
				this.ToggleHighlight("Evade", true);
			}
			if (endBox.label1 != "Persevere" && endBox.label2 != "Persevere")
			{
				this.ToggleHighlight("Persevere", false);
			}
			else
			{
				this.ToggleHighlight("Persevere", true);
			}
			Links.x.OrderPortraitList();
			this.SetLeaders();
		}
	}

	// Token: 0x06000F85 RID: 3973 RVA: 0x0012C8C0 File Offset: 0x0012AAC0
	public CompanionDrop GetClosestBox(Vector3 iconPosition)
	{
		float num = float.PositiveInfinity;
		int num2 = -1;
		for (int i = 0; i < this.companionDrops.Count; i++)
		{
			float sqrMagnitude = (iconPosition - this.companionDrops[i].transform.position).sqrMagnitude;
			if (sqrMagnitude < num)
			{
				num = sqrMagnitude;
				num2 = i;
			}
		}
		return this.companionDrops[num2];
	}

	// Token: 0x06000F86 RID: 3974 RVA: 0x0012C928 File Offset: 0x0012AB28
	public void ToggleHighlight(string label, bool state)
	{
		if (label == "Utility")
		{
			if (state)
			{
				this.utility.color = this.highlightTextColor;
			}
			if (!state)
			{
				this.utility.color = this.normalTextColor1;
			}
		}
		if (label == "Offense")
		{
			if (state)
			{
				this.offense.color = this.highlightTextColor;
			}
			if (!state)
			{
				this.offense.color = this.normalTextColor1;
			}
		}
		if (label == "Support")
		{
			if (state)
			{
				this.support.color = this.highlightTextColor;
			}
			if (!state)
			{
				this.support.color = this.normalTextColor1;
			}
		}
		if (label == "Evade")
		{
			if (state)
			{
				this.evade.color = this.highlightTextColor;
			}
			if (!state)
			{
				this.evade.color = this.normalTextColor2;
			}
		}
		if (label == "Avoid")
		{
			if (state)
			{
				this.avoid.color = this.highlightTextColor;
			}
			if (!state)
			{
				this.avoid.color = this.normalTextColor2;
			}
		}
		if (label == "Persevere")
		{
			if (state)
			{
				this.persevere.color = this.highlightTextColor;
			}
			if (!state)
			{
				this.persevere.color = this.normalTextColor2;
			}
		}
	}

	// Token: 0x06000F87 RID: 3975 RVA: 0x0012CA74 File Offset: 0x0012AC74
	public CompanionIcon GetSelectedIcon()
	{
		foreach (CompanionIcon companionIcon in this.companionIcons)
		{
			if (companionIcon.character == this.selectedCharacter)
			{
				return companionIcon;
			}
		}
		return null;
	}

	// Token: 0x06000F88 RID: 3976 RVA: 0x0012CADC File Offset: 0x0012ACDC
	public void GetDescription(CompanionIcon icon, CompanionDrop drop)
	{
		if (!icon && this.selectedCharacter && !this.dragging)
		{
			icon = this.GetSelectedIcon();
			drop = icon.GetDrop();
		}
		if (this.dragging && drop)
		{
			icon = null;
		}
		if (icon && drop)
		{
			this.formationDescription = "<font=Bold><uppercase><color=#8E5C1A>" + icon.character.stats.GetName() + "</color></uppercase></font>";
			if (drop.dropNum == 1 || drop.dropNum == 2 || drop.dropNum == 3)
			{
				this.formationDescription += " Holds ground regardless of health. ";
			}
			if (drop.dropNum == 4 || drop.dropNum == 5 || drop.dropNum == 6)
			{
				this.formationDescription += " Moves around often to evade enemies and projectiles. ";
			}
			if (drop.dropNum == 7 || drop.dropNum == 8 || drop.dropNum == 9)
			{
				this.formationDescription += " Stays on the outskirts of a fight to keep out of range of frontline attacks. ";
			}
			if (!icon.character.stats.isLeader && icon.character.stats.defendMainInCombat && icon.character.stats.defendingCharacter && icon.character.stats.defendingCharacter.stats.formationGroup == icon.character.stats.formationGroup)
			{
				this.formationDescription = this.formationDescription + "Will try to stay near " + icon.character.stats.defendingCharacter.stats.GetName() + ".";
			}
			icon.SetControllerIcons(true);
			for (int i = 0; i < this.companionIcons.Count; i++)
			{
				if (this.companionIcons[i] != icon)
				{
					this.companionIcons[i].SetControllerIcons(false);
				}
			}
			return;
		}
		if (drop)
		{
			if (drop.dropNum == 1 || drop.dropNum == 2 || drop.dropNum == 3)
			{
				this.SetDescriptionFromLabel("Persevere");
			}
			if (drop.dropNum == 4 || drop.dropNum == 5 || drop.dropNum == 6)
			{
				this.SetDescriptionFromLabel("Evade");
			}
			if (drop.dropNum == 7 || drop.dropNum == 8 || drop.dropNum == 9)
			{
				this.SetDescriptionFromLabel("Avoid");
			}
		}
	}

	// Token: 0x06000F89 RID: 3977 RVA: 0x0012CD58 File Offset: 0x0012AF58
	public void SetDescriptionFromLabel(string label)
	{
		if (label == "Persevere")
		{
			this.formationDescription = "<font=Bold><uppercase>" + label + "</uppercase></font> Holds ground on the frontline regardless of health or fatigue.";
		}
		if (label == "Evade")
		{
			this.formationDescription = "<font=Bold><uppercase>" + label + "</uppercase></font> Moves around often to evade enemies and projectiles.";
		}
		if (label == "Avoid")
		{
			this.formationDescription = "<font=Bold><uppercase>" + label + "</uppercase></font> tays on the outskirts of a fight to keep out of range of frontline attacks.";
		}
		if (label == "Auto Cast")
		{
			this.formationDescription = "<font=Bold><uppercase>Auto-Cast Spells</uppercase></font> Companion will automatically cast spells when spirit becomes available.";
		}
		if (label == "Items")
		{
			this.formationDescription = "<font=Bold><uppercase>Use Items</uppercase></font> Companion will consume items in belt slots when health is low.";
		}
		if (label == "Star")
		{
			this.formationDescription = "<font=Bold><uppercase>Leader</uppercase></font> Companions in same square will stay near this companion.";
		}
	}

	// Token: 0x04001959 RID: 6489
	public GameObject contents1;

	// Token: 0x0400195A RID: 6490
	public Canvas canvas;

	// Token: 0x0400195B RID: 6491
	public Animator anim;

	// Token: 0x0400195C RID: 6492
	public bool open;

	// Token: 0x0400195D RID: 6493
	public GameObject party1;

	// Token: 0x0400195E RID: 6494
	public GameObject party2;

	// Token: 0x0400195F RID: 6495
	public GameObject party3;

	// Token: 0x04001960 RID: 6496
	public GameObject party4;

	// Token: 0x04001961 RID: 6497
	private List<Character> party;

	// Token: 0x04001962 RID: 6498
	public Character selectedCharacter;

	// Token: 0x04001963 RID: 6499
	public RectTransform group1;

	// Token: 0x04001964 RID: 6500
	public RectTransform group2;

	// Token: 0x04001965 RID: 6501
	public RectTransform group3;

	// Token: 0x04001966 RID: 6502
	public RectTransform group4;

	// Token: 0x04001967 RID: 6503
	public RectTransform group5;

	// Token: 0x04001968 RID: 6504
	public RectTransform group6;

	// Token: 0x04001969 RID: 6505
	public RectTransform group7;

	// Token: 0x0400196A RID: 6506
	public RectTransform group8;

	// Token: 0x0400196B RID: 6507
	public RectTransform group9;

	// Token: 0x0400196C RID: 6508
	public CompanionDrop hoverBox;

	// Token: 0x0400196D RID: 6509
	public CompanionDrop group1box;

	// Token: 0x0400196E RID: 6510
	public CompanionDrop group2box;

	// Token: 0x0400196F RID: 6511
	public CompanionDrop group3box;

	// Token: 0x04001970 RID: 6512
	public CompanionDrop group4box;

	// Token: 0x04001971 RID: 6513
	public CompanionDrop group5box;

	// Token: 0x04001972 RID: 6514
	public CompanionDrop group6box;

	// Token: 0x04001973 RID: 6515
	public CompanionDrop group7box;

	// Token: 0x04001974 RID: 6516
	public CompanionDrop group8box;

	// Token: 0x04001975 RID: 6517
	public CompanionDrop group9box;

	// Token: 0x04001976 RID: 6518
	public TextMeshProUGUI utility;

	// Token: 0x04001977 RID: 6519
	public TextMeshProUGUI offense;

	// Token: 0x04001978 RID: 6520
	public TextMeshProUGUI support;

	// Token: 0x04001979 RID: 6521
	public TextMeshProUGUI persevere;

	// Token: 0x0400197A RID: 6522
	public TextMeshProUGUI evade;

	// Token: 0x0400197B RID: 6523
	public TextMeshProUGUI avoid;

	// Token: 0x0400197C RID: 6524
	public bool canDrop;

	// Token: 0x0400197D RID: 6525
	public List<CompanionIcon> companionIcons = new List<CompanionIcon>();

	// Token: 0x0400197E RID: 6526
	public List<CompanionDrop> companionDrops = new List<CompanionDrop>();

	// Token: 0x0400197F RID: 6527
	public CompanionDrop currBox;

	// Token: 0x04001980 RID: 6528
	public CompanionIcon draggingIcon;

	// Token: 0x04001981 RID: 6529
	public bool dragging;

	// Token: 0x04001982 RID: 6530
	private List<CompanionIcon> formationOrder = new List<CompanionIcon>();

	// Token: 0x04001983 RID: 6531
	public Image currImage;

	// Token: 0x04001984 RID: 6532
	public Color highlight;

	// Token: 0x04001985 RID: 6533
	public Color highlightTextColor;

	// Token: 0x04001986 RID: 6534
	public Color normalTextColor1;

	// Token: 0x04001987 RID: 6535
	public Color normalTextColor2;

	// Token: 0x04001988 RID: 6536
	public RectTransform bottomLeft;

	// Token: 0x04001989 RID: 6537
	public RectTransform topRight;

	// Token: 0x0400198A RID: 6538
	public RectTransform bottomRight;

	// Token: 0x0400198B RID: 6539
	public RectTransform topLeft;

	// Token: 0x0400198C RID: 6540
	public TextMeshProUGUI dragMessage;

	// Token: 0x0400198D RID: 6541
	public TextMeshProUGUI controllerMessage;

	// Token: 0x0400198E RID: 6542
	public string formationDescription;

	// Token: 0x0400198F RID: 6543
	public string defaultText;

	// Token: 0x04001990 RID: 6544
	public string controllerMessageHover;

	// Token: 0x04001991 RID: 6545
	public string controllerMessageDrag;

	// Token: 0x04001992 RID: 6546
	public string controllerMessageSliders;

	// Token: 0x04001993 RID: 6547
	public Transform dragHolder;

	// Token: 0x04001994 RID: 6548
	public List<TextMeshProUGUI> autoCastIcons = new List<TextMeshProUGUI>();

	// Token: 0x04001995 RID: 6549
	public List<TextMeshProUGUI> leaderIcons = new List<TextMeshProUGUI>();

	// Token: 0x04001996 RID: 6550
	private StringFast str = new StringFast(32);

	// Token: 0x04001997 RID: 6551
	public float dragThreshold = 0.1f;

	// Token: 0x04001998 RID: 6552
	public Slider items;

	// Token: 0x04001999 RID: 6553
	public Slider buffs;

	// Token: 0x0400199A RID: 6554
	public Slider criticals;

	// Token: 0x0400199B RID: 6555
	public TextMeshProUGUI outputItems;

	// Token: 0x0400199C RID: 6556
	public TextMeshProUGUI outputBuffs;

	// Token: 0x0400199D RID: 6557
	public TextMeshProUGUI outputCriticals;

	// Token: 0x0400199E RID: 6558
	public GameObject cancelButton;

	// Token: 0x0400199F RID: 6559
	private float updateTime;

	// Token: 0x040019A0 RID: 6560
	private float lastSliderTime;
}
