using Godot;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;

public partial class Goal : Node
{
    public Dictionary<GoalName, List<int>> _conditions = new()
	{
		{GoalName.TopRow,                new (){1,2,3}},
		{GoalName.MiddleRow,             new (){4,5,6}},
		{GoalName.BottomRow,             new (){7,8,9}},
		{GoalName.LeftColumn,            new (){1,4,7}},
		{GoalName.MiddleColumn,          new (){2,5,8}},
		{GoalName.RightColumn,           new (){3,6,9}},
		{GoalName.Diagonal1To9,          new (){1,5,9}},
		{GoalName.Diagonal3To7,          new (){3,5,7}},
        {GoalName.Number1,               new (){1,2,5,7,8,9}},
        {GoalName.Number2,               new (){1,2,4,5,8,9}},
        {GoalName.Number3,               new (){1,2,5,6,7,8}},
        {GoalName.Number4,               new (){1,3,4,5,6,9}},
        {GoalName.Number5,               new (){2,3,4,5,7,8}},
        {GoalName.Number6,               new (){1,4,5,6,7,8,9}},
        {GoalName.Number7,               new (){1,2,3,6,9}},
        {GoalName.Number8,               new (){2,3,4,5,6,7,8}},
        {GoalName.Number9,               new (){1,2,3,4,5,6,8,9}},
        {GoalName.Number0,               new (){2,3,4,6,7,8}},
		{GoalName.LetterA,               new (){2,4,5,6,7,9}},
		{GoalName.LetterB,               new (){1,2,4,5,6,7,8,9}},
		{GoalName.LetterC,               new (){1,2,3,4,7,8,9}},
		{GoalName.LetterD,               new (){1,2,4,6,7,8}},
		{GoalName.LetterE,               new (){1,2,3,4,5,7,8,9}},
		{GoalName.LetterF,               new (){1,2,3,4,5,7}},
		{GoalName.LetterG,               new (){1,2,4,6,7,8,9}},
		{GoalName.LetterH,               new (){1,3,4,5,6,7,9}},
		{GoalName.LetterI,               new (){1,2,3,5,7,8,9}},
		{GoalName.LetterJ,               new (){1,2,3,5,7,8}},
		{GoalName.LetterK,               new (){1,3,4,5,7,9}},
		{GoalName.LetterL,               new (){3,5,7,8,9}},
		{GoalName.LetterM,               new (){1,2,3,4,5,6,7,9}},
		{GoalName.LetterN,               new (){1,2,3,4,6,7,9}},
		{GoalName.LetterO,               new (){1,2,3,4,6,7,8,9}},
		{GoalName.LetterP,               new (){1,2,3,4,5,6,7}},
		{GoalName.LetterQ,               new (){1,2,3,4,6,7,8}},
		{GoalName.LetterR,               new (){1,2,3,4,5,7,9}},
		{GoalName.LetterS,               new (){2,3,5,7,8}},
		{GoalName.LetterT,               new (){1,2,3,5,8}},
		{GoalName.LetterU,               new (){1,3,4,6,7,8,9}},
		{GoalName.LetterV,               new (){1,3,4,6,8}},
		{GoalName.LetterW,               new (){1,3,4,5,6,7,8,9}},
		{GoalName.LetterX,               new (){1,3,5,7,9}},
		{GoalName.LetterY,               new (){1,3,5,8}},
		{GoalName.LetterZ,               new (){1,2,5,8,9}},
		{GoalName.LongRightAngleAt1,     new (){1,2,3,4,7}},
		{GoalName.LongRightAngleAt3,     new (){1,2,3,6,9}},
		{GoalName.LongRightAngleAt7,     new (){1,4,7,8,9}},
		{GoalName.LongRightAngleAt9,     new (){3,6,7,8,9}},
		{GoalName.ShortRightAngleAt1,    new (){1,2,4}},
		{GoalName.ShortRightAngleAt3,    new (){2,3,6}},
		{GoalName.ShortRightAngleAt7,    new (){4,7,8}},
		{GoalName.ShortRightAngleAt9,    new (){6,8,9}},
		{GoalName.Corners,               new (){1,4,7,9}},
		{GoalName.Diamond,               new (){2,4,6,8}},
		{GoalName.Blackout,              new (){1,2,3,4,5,6,7,8,9}},

	};

    public List<int> GetAddresses(GoalName NAME)
    {
        return _conditions[NAME];
    }
}
