using System.Linq;

namespace Wizard;

public class PuzzleBattleMasterData : Master.ReadFromCsv
{
	private const string DEFAULT_WIN_CONDITION = "{me.inplay.class.life}>0&{op.inplay.class.life}<=0";

	public int Id { get; private set; }

	public int PlayerClass { get; private set; }

	public int PlayerLife { get; private set; }

	public int PlayerPPCount { get; private set; }

	public int PlayerEPCount { get; private set; }

	public int PlayerGraveCount { get; private set; }

	public CardPrm[] PlayerInplay { get; private set; }

	public int[] PlayerHand { get; private set; }

	public int[] PlayerDeck { get; private set; }

	public int PlayerDeckCount { get; private set; }

	public int EnemyClass { get; private set; }

	public int EnemyLife { get; private set; }

	public int EnemyPPCount { get; private set; }

	public int EnemyEPCount { get; private set; }

	public int EnemyGraveCount { get; private set; }

	public CardPrm[] EnemyInplay { get; private set; }

	public int[] EnemyHand { get; private set; }

	public int[] EnemyDeck { get; private set; }

	public int EnemyDeckCount { get; private set; }

	public string WinCondition { get; private set; }

	public string WinConditionTextId { get; private set; }

	public string HintTextId { get; private set; }

	public void ReadCsvColumns(string[] columns)
	{
		int num = 0;
		Id = int.Parse(columns[num]);
		num++;
		PlayerClass = int.Parse(columns[num]);
		num++;
		PlayerLife = (string.IsNullOrEmpty(columns[num]) ? 20 : int.Parse(columns[num]));
		num++;
		PlayerPPCount = ((!string.IsNullOrEmpty(columns[num])) ? int.Parse(columns[num]) : 0);
		num++;
		PlayerEPCount = ((!string.IsNullOrEmpty(columns[num])) ? int.Parse(columns[num]) : 0);
		num++;
		PlayerGraveCount = ((!string.IsNullOrEmpty(columns[num])) ? int.Parse(columns[num]) : 0);
		num++;
		PlayerInplay = (string.IsNullOrEmpty(columns[num]) ? new CardPrm[0] : (from x in columns[num].Split(',')
			select new CardPrm(x)).ToArray());
		num++;
		PlayerHand = (string.IsNullOrEmpty(columns[num]) ? new int[0] : columns[num].Split(',').Select(int.Parse).ToArray());
		num++;
		PlayerDeck = (string.IsNullOrEmpty(columns[num]) ? new int[0] : columns[num].Split(',').Select(int.Parse).ToArray());
		num++;
		PlayerDeckCount = (string.IsNullOrEmpty(columns[num]) ? 40 : int.Parse(columns[num]));
		num++;
		EnemyClass = int.Parse(columns[num]);
		num++;
		EnemyLife = (string.IsNullOrEmpty(columns[num]) ? 20 : int.Parse(columns[num]));
		num++;
		EnemyPPCount = ((!string.IsNullOrEmpty(columns[num])) ? int.Parse(columns[num]) : 0);
		num++;
		EnemyEPCount = ((!string.IsNullOrEmpty(columns[num])) ? int.Parse(columns[num]) : 0);
		num++;
		EnemyGraveCount = ((!string.IsNullOrEmpty(columns[num])) ? int.Parse(columns[num]) : 0);
		num++;
		EnemyInplay = (string.IsNullOrEmpty(columns[num]) ? new CardPrm[0] : (from x in columns[num].Split(',')
			select new CardPrm(x)).ToArray());
		num++;
		EnemyHand = (string.IsNullOrEmpty(columns[num]) ? new int[0] : columns[num].Split(',').Select(int.Parse).ToArray());
		num++;
		EnemyDeck = (string.IsNullOrEmpty(columns[num]) ? new int[0] : columns[num].Split(',').Select(int.Parse).ToArray());
		num++;
		EnemyDeckCount = (string.IsNullOrEmpty(columns[num]) ? 40 : int.Parse(columns[num]));
		num++;
		WinCondition = (string.IsNullOrEmpty(columns[num]) ? "{me.inplay.class.life}>0&{op.inplay.class.life}<=0" : columns[num]);
		num++;
		WinConditionTextId = columns[num];
		num++;
		HintTextId = columns[num];
		num++;
	}
}
