Exemple #1
0
        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);
            }
        }
Exemple #2
0
        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);
        }