public void TestForReaction() { AlchemyEngine engine = new AlchemyEngine(); var elements1 = engine.GetUsableElements(); Assert.AreEqual(elements1.Count(), 4); var water = elements1.Where(_ => _.Name == "Water").First(); var fire = elements1.Where(_ => _.Name == "Fire").First(); var steam1 = engine.TestForReaction(water, fire); Assert.AreEqual(steam1.Name, "Steam"); var elements2 = engine.GetUsableElements(); Assert.AreEqual(elements2.Count(), 5); var steam2 = engine.TestForReaction(water, fire); Assert.AreEqual(steam2.Name, "Steam"); var elements3 = engine.GetUsableElements(); Assert.AreEqual(elements3.Count(), 5); }
void mcc_MoveCompleted(object sender, EventArgs e) { var element = sender as MovableContentControl; var reactWith = element.IntersectWith(); if (reactWith.Count() > 1) { var e1 = reactWith.First(); var e2 = reactWith.Skip(1).Take(1).First(); var reaction = _engine.TestForReaction(e1.Content as AlchemyElement, e2.Content as AlchemyElement); if (reaction != null) { double left = Canvas.GetLeft(e1); double top = Canvas.GetTop(e1); gameSurface.Children.Remove(e1); gameSurface.Children.Remove(e2); var mcc = AddAlchemyElementToGameSurface(reaction); Canvas.SetLeft(mcc, left); Canvas.SetTop(mcc, top); } } }