void Board_OnNewPreviewAvailable(Triple triple) { //Debug.WriteLine(String.Format("Preview: {0} {1} {2}", // new object[] { triple[0].Color, triple[1].Color, triple[2].Color })); Dispatcher.BeginInvoke(delegate() { if (_previewImages.Count > 0) { for (int i = _previewImages.Count - 1; i >= 0; i--) canvas_preview.Children.Remove(_previewImages[i]); _previewImages.Clear(); } for (int i = 0; i < 3; i++) { Element elem = triple[i]; Image image = new Image(); image.Source = new BitmapImage(new Uri(String.Format("images/elem{0}.png", elem.Color.ToString()), UriKind.Relative)); image.Width = 30; image.Height = 30; image.SetValue(Canvas.LeftProperty, 0.0); image.SetValue(Canvas.TopProperty, i * 30.0); _previewImages.Add(image); canvas_preview.Children.Add(image); } }); }
/// <summary> /// Erzeuge ein neues zufälliges Tripel /// </summary> /// <returns></returns> public static Triple GenerateRandomTriple() { Triple t = new Triple(); for (int i = 0; i < 3; i++) { ElementColor col = (ElementColor)_random.Next(5); t._elements.Add(new Element(col, 3, i)); } return t; }
/// <summary> /// Vorschau-Tripel übernehmen und Neues generieren /// </summary> private void GenerateNewTriple() { Debug.WriteLine("generate triple"); _linkChain = 0; _currentTriple = _previewTriple; _previewTriple = Triple.GenerateRandomTriple(); _moveElements.Clear(); // unnötig? _moveElements.AddRange(_currentTriple.Elements); if (OnNewPreviewAvailable != null) OnNewPreviewAvailable(_previewTriple); if (OnElementsAdded != null) OnElementsAdded(_moveElements); }
/// <summary> /// Spielstart: Spielfeld initialisieren, Timer starten /// </summary> public void Init() { _mode = BoardMode.ElementMove; _previewTriple = Triple.GenerateRandomTriple(); GenerateNewTriple(); _timer = new Timer(new System.Threading.TimerCallback(TimerEvent), null, 0, 500); }