//PictureBox picturebox2; #region constructors /// <summary> /// maak een pion en bepaal de kleur /// </summary> /// <param name="kleur">kleur die hij in het spel krijgt</param> public PionImage(Color kleur, MensErgerJeNietLogic.Pion logicPion) { this.lPion = logicPion; this.SetCollorImage(kleur); this.configPion(); //this.SetSelectedPion(); // Eventlisteners toevoegen this.animatedPion.DoWork += animatedPion_DoWork; this.animatedPion.WorkerReportsProgress = true; this.animatedPion.ProgressChanged += animatedPion_ProgressChanged; this.animatedPion.RunWorkerCompleted += animatedPion_RunWorkerCompleted; logicPion.OnVerplaatst += logicPion_Verplaatst; logicPion.VerplaatsbaarChange += logicPion_Verplaatsbaar; }
void animatedPion_DoWork(object sender, DoWorkEventArgs e) { //blijf wachten toch hij niet meer bezig is while (PionImage.isAnimating) { System.Threading.Thread.Sleep(300); } PionImage.isAnimating = true; MensErgerJeNietLogic.Pion pion = e.Argument as MensErgerJeNietLogic.Pion; //er kan ondertussen nog een verandering zijn deze moet dus ook nog worden doorgevoerd int stoplocatie = 0; do { if (pion.LaatsteLocatie > 55 || pion.Locatie > 39) { animatedPion.ReportProgress(pion.Locatie); stoplocatie = pion.Locatie; } else if (pion.Locatie < pion.LaatsteLocatie) { int stappen = 40 + pion.Locatie; for (int i = pion.LaatsteLocatie; i <= stappen; i++) { animatedPion.ReportProgress(i % 40); System.Threading.Thread.Sleep(250); stoplocatie = i % 40; } } else if (pion.LaatsteLocatie < 40) { int eindlocatie = pion.Locatie;//expres hier gereseveerd omdat door het asynchrone karakter de value terwijl de loop nog wordt uitgevoerd kan wijzigen for (int i = pion.LaatsteLocatie; i <= eindlocatie; i++) { animatedPion.ReportProgress(i); System.Threading.Thread.Sleep(250); stoplocatie = i; } } }while(stoplocatie != pion.Locatie); }