using System;
using System.Collections.Generic;
using Schedule;

public class SceneCharacterSelect : WfScreenManager
{
	public static void CreateYotogiCharaList()
	{
		SceneCharacterSelect.chara_guid_stock_list.Clear();
		List<Maid> yotogiMaids = ScheduleAPI.GetYotogiMaids(GameMain.Instance.CharacterMgr.status.isDaytime);
		for (int i = 0; i < yotogiMaids.Count; i++)
		{
			SceneCharacterSelect.chara_guid_stock_list.Add(yotogiMaids[i].status.guid);
		}
	}

	public static void CreateVipCharaList()
	{
		SceneCharacterSelect.chara_guid_stock_list.Clear();
		List<Maid> vipWorkMaids = ScheduleAPI.GetVipWorkMaids(GameMain.Instance.CharacterMgr.status.isDaytime);
		for (int i = 0; i < vipWorkMaids.Count; i++)
		{
			SceneCharacterSelect.chara_guid_stock_list.Add(vipWorkMaids[i].status.guid);
		}
	}

	public static void CreateFacilityCharaList()
	{
		SceneCharacterSelect.chara_guid_stock_list.Clear();
		List<Maid> facilityPowerUpMaids = ScheduleAPI.GetFacilityPowerUpMaids(GameMain.Instance.CharacterMgr.status.isDaytime);
		for (int i = 0; i < facilityPowerUpMaids.Count; i++)
		{
			SceneCharacterSelect.chara_guid_stock_list.Add(facilityPowerUpMaids[i].status.guid);
		}
	}

	public static bool IsSelectChara()
	{
		return 0 < SceneCharacterSelect.chara_guid_stock_list.Count;
	}

	public void Awake()
	{
		this.adv_kag_ = GameMain.Instance.ScriptMgr.adv_kag;
	}

	public override void Start()
	{
		base.Start();
		this.move_screen_ = base.children_dic["Move"].GetComponent<WfScreenMoveChildren>();
		this.select_type_ = SceneCharacterSelect.SelectType.Communication;
		this.select_dance_chara_num_ = 1;
		string empty = string.Empty;
		string empty2 = string.Empty;
		if (this.adv_kag_.tag_backup != null && 0 < this.adv_kag_.tag_backup.Count && this.adv_kag_.tag_backup["name"] == "SceneCharacterSelect")
		{
			NDebug.Assert(this.adv_kag_.tag_backup.ContainsKey("label"), "SceneCharacterSelectにlabelの設定がされていませんでした");
			NDebug.Assert(this.adv_kag_.tag_backup.ContainsKey("type"), "SceneCharacterSelectにtypeの設定がされていませんでした");
			this.move_screen_.SetNextLabel(this.adv_kag_.tag_backup["label"]);
			if (this.adv_kag_.tag_backup.ContainsKey("cancel_label"))
			{
				CharacterSelectMain component = base.children_dic["Main"].GetComponent<CharacterSelectMain>();
				component.SetCancelLabel(this.adv_kag_.tag_backup["cancel_label"]);
			}
			try
			{
				this.select_type_ = (SceneCharacterSelect.SelectType)Enum.Parse(typeof(SceneCharacterSelect.SelectType), this.adv_kag_.tag_backup["type"]);
			}
			catch
			{
				NDebug.Assert("SelectType enum parse error.\n" + this.adv_kag_.tag_backup["type"], false);
			}
			if (this.adv_kag_.tag_backup["type"] == "コミュ")
			{
				this.select_type_ = SceneCharacterSelect.SelectType.Communication;
			}
			if (this.adv_kag_.tag_backup.ContainsKey("select_chara_num"))
			{
				this.select_dance_chara_num_ = int.Parse(this.adv_kag_.tag_backup["select_chara_num"]);
			}
			if (this.adv_kag_.tag_backup.ContainsKey("maid"))
			{
				this.select_maid_slot_ = int.Parse(this.adv_kag_.tag_backup["maid"]);
			}
		}
		if (this.select_type_ != SceneCharacterSelect.SelectType.VRComSelect && this.select_type_ != SceneCharacterSelect.SelectType.Additional)
		{
			GameMain.Instance.MainLight.Reset();
			GameMain.Instance.CharacterMgr.ResetCharaPosAll();
			GameMain.Instance.MainCamera.Reset(CameraMain.CameraType.Target, true);
		}
		GameMain.Instance.SoundMgr.VoiceStopAll();
		this.CallScreen("Main");
	}

	protected override void SettingChildrenList(Dictionary<string, WfScreenChildren> children_dic)
	{
		string[] array = new string[]
		{
			"Main",
			"Move"
		};
		for (int i = 0; i < array.Length; i++)
		{
			WfScreenChildren component = UTY.GetChildObject(base.gameObject, array[i], false).GetComponent<WfScreenChildren>();
			component.parent_mgr = this;
			children_dic.Add(array[i], component);
		}
	}

	public WfScreenMoveChildren move_screen
	{
		get
		{
			return this.move_screen_;
		}
	}

	public SceneCharacterSelect.SelectType select_type
	{
		get
		{
			return this.select_type_;
		}
	}

	public int select_dance_chara_num
	{
		get
		{
			return this.select_dance_chara_num_;
		}
	}

	public int select_maid_slot
	{
		get
		{
			return this.select_maid_slot_;
		}
	}

	public static List<string> chara_guid_stock_list = new List<string>();

	public static List<Maid> select_maid_list = new List<Maid>();

	private WfScreenMoveChildren move_screen_;

	private ADVKagManager adv_kag_;

	private SceneCharacterSelect.SelectType select_type_;

	private int select_dance_chara_num_;

	private int select_maid_slot_;

	public enum SelectType
	{
		Communication,
		Yotogi,
		Vip,
		CompetitiveShow,
		TouchCharaSelect,
		VRComSelect,
		Free,
		Facility,
		Recollection,
		VRKaraokeSelect,
		Additional
	}
}
