public void SpawnCharactersWithCharactersGroup(CharactersGroup _charactersGroup)
 {
     for (int i = 0; i < _charactersGroup.m_charactersCount; ++i)
     {
         //SpawnCharacter();
         SpawnCharacterWithConstraints(_charactersGroup.m_constraints);
     }
 }
        public List <CharactersGroup> CreateCharactersGroup()
        {
            CharactersGroup cg0 = new CharactersGroup();
            CharactersGroup cg1 = new CharactersGroup();
            CharactersGroup cg2 = new CharactersGroup();
            CharactersGroup cg3 = new CharactersGroup();
            CharactersGroup cg4 = new CharactersGroup();

            // 5 to 9 characters per group * 4 = 20 to 36 + unique one = 21 to 37
            cg0.m_charactersCount = Random.Range(5, 10);
            cg1.m_charactersCount = Random.Range(5, 10);
            cg2.m_charactersCount = Random.Range(5, 10);
            cg3.m_charactersCount = Random.Range(5, 10);
            cg4.m_charactersCount = Random.Range(5, 10);

            // unique character in one group
            int index = Random.Range(0, 5);

            switch (index)
            {
            case 0:
                cg0.m_charactersCount = 1;
                break;

            case 1:
                cg1.m_charactersCount = 1;
                break;

            case 2:
                cg2.m_charactersCount = 1;
                break;

            case 3:
                cg3.m_charactersCount = 1;
                break;

            case 4:
                cg4.m_charactersCount = 1;
                break;
            }

            cg0.m_constraints.Add(new Constraint(m_node2.m_itemType, m_node2.m_item));

            cg1.m_constraints.Add(new Constraint(m_node1.m_itemType, m_node1.m_item));
            cg1.m_constraints.Add(new Constraint(m_node1.m_node2.m_itemType, m_node1.m_node2.m_item));

            cg2.m_constraints.Add(new Constraint(m_node1.m_itemType, m_node1.m_item));
            cg2.m_constraints.Add(new Constraint(m_node1.m_node1.m_itemType, m_node1.m_node1.m_item));
            cg2.m_constraints.Add(new Constraint(m_node1.m_node1.m_node2.m_itemType, m_node1.m_node1.m_node2.m_item));

            cg3.m_constraints.Add(new Constraint(m_node1.m_itemType, m_node1.m_item));
            cg3.m_constraints.Add(new Constraint(m_node1.m_node1.m_itemType, m_node1.m_node1.m_item));
            cg3.m_constraints.Add(new Constraint(m_node1.m_node1.m_node1.m_itemType, m_node1.m_node1.m_node1.m_item));
            cg3.m_constraints.Add(new Constraint(m_node1.m_node1.m_node1.m_node2.m_itemType, m_node1.m_node1.m_node1.m_node2.m_item));

            cg4.m_constraints.Add(new Constraint(m_node1.m_itemType, m_node1.m_item));
            cg4.m_constraints.Add(new Constraint(m_node1.m_node1.m_itemType, m_node1.m_node1.m_item));
            cg4.m_constraints.Add(new Constraint(m_node1.m_node1.m_node1.m_itemType, m_node1.m_node1.m_node1.m_item));
            cg4.m_constraints.Add(new Constraint(m_node1.m_node1.m_node1.m_node1.m_itemType, m_node1.m_node1.m_node1.m_node1.m_item));

            List <CharactersGroup> charactersGroupList = new List <CharactersGroup>();

            charactersGroupList.Add(cg0);
            charactersGroupList.Add(cg1);
            charactersGroupList.Add(cg2);
            charactersGroupList.Add(cg3);
            charactersGroupList.Add(cg4);
            return(charactersGroupList);
        }