private void ReadReelSetsXElement(XElement element) { var reelSets = element.Element("reelsets"); if (reelSets == null) { return; } this.Wheel.ReelSets = new List <ReelSet>(); foreach (var item in reelSets.Elements()) { var reelSetId = item.AttributeValue("reelset").ToInt(); var width = item.AttributeValue("width").ToInt(); var height = item.AttributeValue("height").ToInt(); var value = item.AttributeValue("val").Split(',').Select(int.Parse).ToList(); var reelSet = new ReelSet(width, height) { Id = reelSetId }; for (var i = 0; i < reelSet.Width; i++) { reelSet[i] = value.GetRange(i * reelSet.Height, reelSet.Height); } ReadWinPositionXElement(item, reelSet.WinPositions); this.Wheel.ReelSets.Add(reelSet); } }
protected void ConfigureReels() { var reels = Enumerable.Range(1, NumberOfReels) .Select(i => new Reel(CreateReelSegments(i).ToList())).ToList(); ReelSet = new ReelSet(reels.AsReadOnly()); }
private async void ButtonSetOnButtonClicked(object sender, ButtonClickedEventArgs e) { if (e.Button.CommandName == WellKnownCommandNames.Start) { var rand = new Random(); await ReelSet.SpinAll(new [] { rand.Next(0, 20), rand.Next(0, 20), rand.Next(0, 20) }); } }
public List <byte[, ]> PayoutMultiWheelIndependent(Dictionary <int, List <PaylineConfig> > payline, ReelSet reelSet) { var winTable = new List <byte[, ]>(); var width = reelSet.Width; var height = reelSet.Height; foreach (var wp in reelSet.WinPositions) { var lineTable = new byte[width, height]; if (wp.Line == 0) { for (var i = 0; i < wp.RowPositions.Count; i++) { if (wp.RowPositions[i] > 0) { lineTable[i / height, i % height] = (byte)PaylinePos.Hit; } } } else { payline[wp.Line].ForEach(r => { lineTable[r.Reel, r.Position] = wp.RowPositions[(r.Reel * height) + r.Position] > 0 ? (byte)PaylinePos.Hit : (byte)PaylinePos.NotHit; }); } winTable.Add(lineTable); } return(winTable); }