internal void SetStage(IStage stage) { IList <Item> items = stage.GetItems(this); mushInPocket = 0; all.Clear(); fallable.Clear(); enemies.Clear(); goals.Clear(); Me = null; foreach (Item item in items) { if (item is Me) { Me = (Me)item; } if (item is Mush || item is Stone) { fallable.Add(item); } if (item is Enemy) { enemies.Add((Enemy)item); } if (item is ColoredStone) { goals[(ColoredStone)item] = items .Where(t => t is ColoredBlock) .Where(t => ((ColoredBlock)t).Color == ((ColoredStone)item).Color) .Select(t => (ColoredBlock)t) .Single(); } } all = items; }