private static void PopulateGrid(int rows, int cols, IGrid <IInteractable, IPlayer> grid)
        {
            for (int row = 0; row < rows; row++)
            {
                string currentRow = input.ReadLine();
                for (int col = 0; col < cols; col++)
                {
                    char currentElement = currentRow[col];
                    if (currentElement == '-')
                    {
                        grid.Add(default(IInteractable), row, col);
                    }
                    else if (players.ContainsKey(currentElement))
                    {
                        grid.Add(players[currentElement], row, col);
                    }
                    else if (currentElement == '*')
                    {
                        // TO DO
                    }
                    else
                    {
                        Type vegetableType = Assembly.GetExecutingAssembly().GetTypes()
                                             .Where(t => !t.IsAbstract)
                                             .Where(t => !t.IsInterface)
                                             .Where(t => typeof(IVegetable).IsAssignableFrom(t))
                                             .FirstOrDefault(t => t.Name[0] == currentElement);

                        IInteractable vegetable = (IInteractable)Activator.CreateInstance(vegetableType);

                        grid.Add(vegetable, row, col);
                    }
                }
            }
        }
Esempio n. 2
0
 static public void Add <T>(this IGrid <List <T> > item, VectorI2 index, T value)
 {
     item.Add(index.x, index.y, value);
 }