Пример #1
0
        private void HandleUpgradeToggle(BingoTileData data)
        {
            var u = data.TileDef.Data;

            switch (u)
            {
            case (int)Upgrades.Slide:
                if (PageModel.SaveInfo.Upgrades.Contains(u))
                {
                    foreach (var c in UpgradeGridControls)
                    {
                        if (c.DataContext is BingoTileData td)
                        {
                            td.ImgVisible = Visibility.Hidden;
                        }
                    }
                    PageModel.SaveInfo.Upgrades.Clear();
                }
                else
                {
                    foreach (var c in UpgradeGridControls)
                    {
                        if (c.DataContext is BingoTileData td)
                        {
                            if (td.TileDef.Data == ((int)Upgrades.Slide))
                            {
                                td.ImgVisible = Visibility.Visible;
                            }
                            else
                            {
                                td.ImgVisible = Visibility.Hidden;
                            }
                        }
                    }
                    PageModel.SaveInfo.Upgrades.Clear();
                    PageModel.SaveInfo.Upgrades.Add((int)Upgrades.Slide);
                }
                break;

            case (int)Upgrades.Double:
            case (int)Upgrades.Grip:
            case (int)Upgrades.Screw:
            case (int)Upgrades.Dash:
                if (PageModel.SaveInfo.Upgrades.Contains(u))
                {
                    foreach (var c in UpgradeGridControls)
                    {
                        if (c.DataContext is BingoTileData td)
                        {
                            if (td.TileDef.Data >= u)
                            {
                                td.ImgVisible = Visibility.Hidden;
                            }
                        }
                    }
                    PageModel.SaveInfo.Upgrades.Clear();
                    for (var i = 0; i < u; ++i)
                    {
                        PageModel.SaveInfo.Upgrades.Add(i);
                    }
                }
                else
                {
                    foreach (var c in UpgradeGridControls)
                    {
                        if (c.DataContext is BingoTileData td)
                        {
                            if (td.TileDef.Data <= u)
                            {
                                td.ImgVisible = Visibility.Visible;
                            }
                            else
                            {
                                td.ImgVisible = Visibility.Hidden;
                            }
                        }
                    }
                    PageModel.SaveInfo.Upgrades.Clear();
                    for (var i = 0; i <= u; ++i)
                    {
                        PageModel.SaveInfo.Upgrades.Add(i);
                    }
                }
                break;
            }
        }
Пример #2
0
        private Visibility IsBingoTileVisible(BingoTileData data)
        {
            if (data.TileDef == null)
            {
                return(Visibility.Hidden);
            }

            try
            {
                switch (data.TileDef.Type)
                {
                case BingoTileType.Hp:
                    if (PageModel.SaveInfo.HpUpgradesInv.Contains((int)SaveHelpers.StageToHpUpgrades(data.TileDef.Stage)))
                    {
                        return(Visibility.Visible);
                    }
                    break;

                case BingoTileType.Mp:
                    if (PageModel.SaveInfo.MpUpgradesInv.Contains((int)SaveHelpers.StageToMpUpgrades(data.TileDef.Stage)))
                    {
                        return(Visibility.Visible);
                    }
                    break;

                case BingoTileType.Clock:
                    if (PageModel.SaveInfo.ClockUpgradesInv.Contains((int)SaveHelpers.StageToClockUpgrades(data.TileDef.Stage)))
                    {
                        return(Visibility.Visible);
                    }
                    break;

                case BingoTileType.Knife:
                    if (PageModel.SaveInfo.KnifeUpgradesInv.Contains((int)SaveHelpers.StageToKnifeUpgrades(data.TileDef.Stage)))
                    {
                        return(Visibility.Visible);
                    }
                    break;

                case BingoTileType.Trash:
                    if (PageModel.SaveInfo.TrashCans.Contains(data.TileDef.Data))
                    {
                        return(Visibility.Visible);
                    }
                    break;

                case BingoTileType.Statue:
                    if (PageModel.SaveInfo.Statues.Contains(data.TileDef.Data))
                    {
                        return(Visibility.Visible);
                    }
                    break;

                case BingoTileType.Skill:
                    break;

                case BingoTileType.Key:
                    if (PageModel.SaveInfo.Keys.Contains(data.TileDef.Data))
                    {
                        return(Visibility.Visible);
                    }
                    break;

                case BingoTileType.Upgrade:
                    if (PageModel.SaveInfo.Upgrades.Contains(data.TileDef.Data))
                    {
                        return(Visibility.Visible);
                    }
                    break;
                }
            }
            catch (Exception ex)
            {
                ErrorTracker.CurrentError = ex.Message;
            }

            return(Visibility.Hidden);
        }
Пример #3
0
        private void ProcessBingoTileFlip(BingoTileData data)
        {
            //TODO: Mp and Hp need inventory definitions in save editor
            switch (data.TileDef.Type)
            {
            case BingoTileType.Hp:
                var hu = (int)SaveHelpers.StageToHpUpgrades(data.TileDef.Stage);
                if (PageModel.SaveInfo.HpUpgradesInv.Contains(hu))
                {
                    data.ImgVisible = Visibility.Hidden;
                    PageModel.SaveInfo.HpUpgradesInv.Remove(hu);
                    PageModel.SaveInfo.HpUpgrades--;
                }
                else
                {
                    data.ImgVisible = Visibility.Visible;
                    PageModel.SaveInfo.HpUpgradesInv.Add(hu);
                    PageModel.SaveInfo.HpUpgrades++;
                }
                break;

            case BingoTileType.Mp:
                var mu = (int)SaveHelpers.StageToMpUpgrades(data.TileDef.Stage);
                if (PageModel.SaveInfo.MpUpgradesInv.Contains(mu))
                {
                    data.ImgVisible = Visibility.Hidden;
                    PageModel.SaveInfo.MpUpgradesInv.Remove(mu);
                    PageModel.SaveInfo.MpUpgrades--;
                }
                else
                {
                    data.ImgVisible = Visibility.Visible;
                    PageModel.SaveInfo.MpUpgradesInv.Add(mu);
                    PageModel.SaveInfo.MpUpgrades++;
                }
                break;

            case BingoTileType.Clock:
                var cu = (int)SaveHelpers.StageToClockUpgrades(data.TileDef.Stage);
                if (PageModel.SaveInfo.ClockUpgradesInv.Contains(cu))
                {
                    data.ImgVisible = Visibility.Hidden;
                    PageModel.SaveInfo.ClockUpgradesInv.Remove(cu);
                    PageModel.SaveInfo.ClockUpgrades--;
                }
                else
                {
                    data.ImgVisible = Visibility.Visible;
                    PageModel.SaveInfo.ClockUpgradesInv.Add(cu);
                    PageModel.SaveInfo.ClockUpgrades++;
                }
                break;

            case BingoTileType.Knife:
                var ku = (int)SaveHelpers.StageToKnifeUpgrades(data.TileDef.Stage);
                if (PageModel.SaveInfo.KnifeUpgradesInv.Contains(ku))
                {
                    data.ImgVisible = Visibility.Hidden;
                    PageModel.SaveInfo.KnifeUpgradesInv.Remove(ku);
                    PageModel.SaveInfo.KnifeUpgrades--;
                }
                else
                {
                    data.ImgVisible = Visibility.Visible;
                    PageModel.SaveInfo.KnifeUpgradesInv.Add(ku);
                    PageModel.SaveInfo.KnifeUpgrades++;
                }
                break;

            case BingoTileType.Trash:
                var t = data.TileDef.Data;
                if (PageModel.SaveInfo.TrashCans.Contains(t))
                {
                    data.ImgVisible = Visibility.Hidden;
                    PageModel.SaveInfo.TrashCans.Remove(t);
                }
                else
                {
                    data.ImgVisible = Visibility.Visible;
                    PageModel.SaveInfo.TrashCans.Add(t);
                }
                break;

            case BingoTileType.Statue:
                var s = data.TileDef.Data;
                if (PageModel.SaveInfo.Statues.Contains(s))
                {
                    data.ImgVisible = Visibility.Hidden;
                    PageModel.SaveInfo.Statues.Remove(s);
                }
                else
                {
                    data.ImgVisible = Visibility.Visible;
                    PageModel.SaveInfo.Statues.Add(s);
                }
                break;

            case BingoTileType.Key:
                var k = data.TileDef.Data;
                if (PageModel.SaveInfo.Keys.Contains(k))
                {
                    data.ImgVisible = Visibility.Hidden;
                    PageModel.SaveInfo.Keys.Remove(k);
                }
                else
                {
                    data.ImgVisible = Visibility.Visible;
                    PageModel.SaveInfo.Keys.Add(k);
                }
                break;

            case BingoTileType.Upgrade:
            {
                HandleUpgradeToggle(data);
                break;
            }
            }
            Task.Run(() => SyncViewModelToSave(false));
        }
Пример #4
0
        //TODO: Maybe make another parent element so all this can be done without locking the UI thread until the end
        private void BuildBingoGrid()
        {
            //remove the old grid if there is one
            if (BingoGrid.Children.Count > 0)
            {
                BingoGrid.Children.Clear();
            }

            var gridColumns = new List <ColumnDefinition>();
            var gridRows    = new List <RowDefinition>();

            GridHelper.CalculateGridSizes(BingoGrid, BingoTileDefs.Width, BingoTileDefs.Height);
            BingoGrid.HorizontalAlignment = HorizontalAlignment.Center;
            BingoGrid.VerticalAlignment   = VerticalAlignment.Center;
            double colWidth  = BingoGrid.Width / BingoTileDefs.Width;
            double rowHeight = BingoGrid.Height / BingoTileDefs.Height;

            for (int x = 0; x < BingoTileDefs.Width; ++x)
            {
                ColumnDefinition column = new ColumnDefinition();
                gridColumns.Add(column);
            }
            foreach (var col in gridColumns)
            {
                col.Width = new GridLength(colWidth);
                BingoGrid.ColumnDefinitions.Add(col);
            }
            for (int y = 0; y < BingoTileDefs.Height; ++y)
            {
                RowDefinition row = new RowDefinition();
                gridRows.Add(row);
            }
            foreach (var row in gridRows)
            {
                row.Height = new GridLength(rowHeight);
                BingoGrid.RowDefinitions.Add(row);
            }

            var defs = BingoTileDefs.Tiles;

            if (FindResource("BingoTileTemplate") is ControlTemplate tileTemplate)
            {
                BingoTileDef def = null;
                UpgradeGridControls.Clear();
                for (int x = 0; x < BingoTileDefs.Width; ++x)
                {
                    for (int y = 0; y < BingoTileDefs.Height; ++y)
                    {
                        BingoTileData tileData = new BingoTileData();
                        if (defs.GetLength(0) > x && defs.GetLength(1) > y)
                        {
                            def = defs[x, y];
                            tileData.TileDef = def;
                        }
                        Control gridTile = new Control
                        {
                            Template = tileTemplate
                        };
                        tileData.Height      = rowHeight;
                        tileData.Width       = colWidth;
                        tileData.X           = x;
                        tileData.Y           = y;
                        tileData.ImgVisible  = IsBingoTileVisible(tileData);
                        gridTile.DataContext = tileData;
                        Grid.SetRow(gridTile, y);
                        Grid.SetColumn(gridTile, x);
                        BingoGrid.Children.Add(gridTile);
                        if (tileData.TileDef != null && tileData.TileDef.Type == BingoTileType.Upgrade)
                        {
                            UpgradeGridControls.Add(gridTile);
                        }
                    }
                }
            }
            else
            {
                ErrorTracker.CurrentError = "Could not find bingo tile template";
            }
        }