Ejemplo n.º 1
0
        // выбор варианта ответа (изменение активного элемента ListBox)
        private void lstbxResp_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            // обновление брифинга и вариантов ответов
            foreach (Location location in locations)
            {
                // переход к новой локации
                try
                {
                    Path selectedPath = prevLocation.Paths[lstbxResp.SelectedIndex];

                    if (selectedPath.IdLocationToGo == location.Id)
                    {
                        // если в path есть desc, то обновить описание локации
                        if (selectedPath.Desc != null)
                            txtblkDesc.Text = selectedPath.Desc + "\n\n" + location.Desc;
                        else
                        {
                            txtblkDesc.Text = location.Desc; // вывод нового описания локации
                            this.sv.ScrollToVerticalOffset(0);
                        }

                        // очистка предыдущих вариантов ответов
                        lstbxResp.Items.Clear();

                        // загрузка новых вариантов ответов
                        switch (location.Type)
                        {
                            case LocType.Left1:
                                // иниц парам при первом попадании в локацию Left1
                                if (parametersIsInitialized == false)
                                {
                                    InitParameters();
                                    parametersIsInitialized = true;
                                }
                                else
                                {
                                    selectedPath.God.Pos = GodPos.Left;
                                    TimeLeft -= selectedPath.God.Hours;
                                    boat.Pos = BoatPos.Left;
                                    // проверить победу\провал
                                    if (parametersIsInitialized == true)
                                    {
                                        CheckIfWin();
                                        ChechIfFailed();
                                    }
                                }
                                // загрузка вариантов ответов
                                for (int i = 0; i < 4; i++)
                                {
                                    if (gods[i].Pos == GodPos.Left)
                                    {
                                        location.Paths[i].God = gods[i];
                                        lstbxResp.Items.Add(new TextBlock()
                                        {
                                            Text = "> " + location.Paths[i].Title,
                                            TextWrapping = TextWrapping.Wrap,
                                            Padding = new Thickness(0, 17, 0, 17),
                                        });
                                    }
                                    else
                                    {
                                        location.Paths[i].God = gods[i];
                                        lstbxResp.Items.Add(new TextBlock()
                                        {
                                            Text = "> " + location.Paths[i].Title,
                                            TextWrapping = TextWrapping.Wrap,
                                            Padding = new Thickness(0, 17, 0, 17),
                                            Visibility = System.Windows.Visibility.Collapsed
                                        });
                                    }
                                }
                                break;
                            case LocType.Left2:
                                god1 = selectedPath.God;
                                god1.Pos = GodPos.InBoat;
                                // проверить победу\провал
                                if (parametersIsInitialized == true)
                                {
                                    CheckIfWin();
                                    ChechIfFailed();
                                }
                                // загрузка вариантов ответов
                                for (int i = 0; i < 4; i++)
                                {
                                    if (gods[i].Pos == GodPos.Left)
                                    {
                                        location.Paths[i].God = gods[i];
                                        lstbxResp.Items.Add(new TextBlock()
                                        {
                                            Text = "> " + location.Paths[i].Title,
                                            TextWrapping = TextWrapping.Wrap,
                                            Padding = new Thickness(0, 17, 0, 17)
                                        });
                                    }
                                    else
                                    {
                                        location.Paths[i].God = gods[i];
                                        lstbxResp.Items.Add(new TextBlock()
                                        {
                                            Text = "> " + location.Paths[i].Title,
                                            TextWrapping = TextWrapping.Wrap,
                                            Padding = new Thickness(0, 17, 0, 17),
                                            Visibility = System.Windows.Visibility.Collapsed
                                        });
                                    }
                                }
                                break;
                            case LocType.Right:
                                god1.Pos = GodPos.Right;
                                god2 = selectedPath.God;
                                god2.Pos = GodPos.Right;
                                if (god1.Hours > god2.Hours)
                                    TimeLeft -= god1.Hours;
                                else
                                    TimeLeft -= god2.Hours;
                                boat.Pos = BoatPos.Right;
                                // проверить победу\провал
                                if (parametersIsInitialized == true)
                                {
                                    CheckIfWin();
                                    ChechIfFailed();
                                }
                                // загрузка вариантов ответов
                                for (int i = 0; i < 4; i++)
                                {
                                    if (gods[i].Pos == GodPos.Right)
                                    {
                                        location.Paths[i].God = gods[i];
                                        lstbxResp.Items.Add(new TextBlock()
                                        {
                                            Text = "> " + location.Paths[i].Title,
                                            TextWrapping = TextWrapping.Wrap,
                                            Padding = new Thickness(0, 17, 0, 17)
                                        });
                                    }
                                    else
                                    {
                                        location.Paths[i].God = gods[i];
                                        lstbxResp.Items.Add(new TextBlock()
                                        {
                                            Text = "> " + location.Paths[i].Title,
                                            TextWrapping = TextWrapping.Wrap,
                                            Padding = new Thickness(0, 17, 0, 17),
                                            Visibility = System.Windows.Visibility.Collapsed
                                        });
                                    }
                                }
                                break;
                            default:
                                // загрузка вариантов ответов
                                foreach (Path path in location.Paths)
                                {
                                    lstbxResp.Items.Add(new TextBlock()
                                    {
                                        Text = "> " + path.Title,
                                        TextWrapping = TextWrapping.Wrap,
                                        Padding = new Thickness(0, 17, 0, 17)
                                    });
                                }
                                break;
                        }

                        // новая текущая локация
                        prevLocation = location;

                        // переход к PivotItem Name="piDesc"
                        pivot.SelectedItem = piDesc;

                        break;
                    }
                }
                catch
                {
                    continue;
                }
            }
        }
Ejemplo n.º 2
0
        // инициализация параметров квеста
        void InitParameters()
        {
            TimeLeft = 18;

            gods[0] = new God("Ах(2)", 2, GodPos.Left, txtblkStat_a2Pos);
            gods[1] = new God("Бах(5)", 5, GodPos.Left, txtblkStat_b5Pos);
            gods[2] = new God("Вау(1)", 1, GodPos.Left, txtblkStat_c1Pos);
            gods[3] = new God("Гэ(10)", 10, GodPos.Left, txtblkStat_d10Pos);

            foreach (God god in gods)
            {
                god.PosToStr(god.Pos);
            }

            boat = new Boat(BoatPos.Left, txtblkStat_boatPos);
            boat.BoatToStr(boat.Pos);

            var itctrlStat = new ItemsControl() { FontSize = 26 };

            itctrlStat.Items.Add(txtblkStat_timeLeft); // осталось 18 часов
            itctrlStat.Items.Add(new TextBlock() { Name = "txtblkStat_godsPosConstText", Text = "Положение Богов:" }); // const text
            itctrlStat.Items.Add(txtblkStat_a2Pos);  // Text = "Ах(2)  - xxx"
            itctrlStat.Items.Add(txtblkStat_b5Pos);  // Text = "Бах(5) - xxx"
            itctrlStat.Items.Add(txtblkStat_c1Pos);  // Text = "Вау(1) - xxx"
            itctrlStat.Items.Add(txtblkStat_d10Pos); // Text = "Гэ(10) - xxx"
            itctrlStat.Items.Add(new TextBlock() { Name = "txtblkStat_boatPosConstText", Text = "Положение Лодки:" }); // const text
            itctrlStat.Items.Add(txtblkStat_boatPos); // Text = "Лодка - xxx"

            piStatus.Content = itctrlStat;
            piStatus.Header = "Статус";

            pivot.Items.Add(piStatus);
        }