Добавьте файлы проекта.

This commit is contained in:
student 2025-05-05 15:46:10 +07:00
parent 1847a8a57b
commit 88383edbaa
14 changed files with 3180 additions and 0 deletions

6
App.config Normal file
View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
</startup>
</configuration>

387
DevConsoleForm.cs Normal file
View File

@ -0,0 +1,387 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using MetroFramework.Forms;
namespace uolter
{
public partial class DevConsoleForm : MetroForm
{
private Form1 mainForm;
private Dictionary<string, object> gameVariables;
private Dictionary<string, int> gameStages; // Словарь с названиями стадий игры и их номерами
public DevConsoleForm(Form1 mainForm)
{
InitializeComponent();
this.mainForm = mainForm;
this.FormClosing += DevConsoleForm_FormClosing;
// Инициализируем словарь игровых стадий
InitializeGameStages();
// Сразу обновляем значения при создании формы
UpdateValues();
}
private void InitializeGameStages()
{
gameStages = new Dictionary<string, int>()
{
// Начальные стадии
{ "0: Начало", 0 },
{ "1: Решение варить самому", 1 },
{ "2: Найти Джесси", 2 },
{ "3: Купить RV", 3 },
{ "5: Купить легальные ингредиенты", 5 },
{ "7: Варка в пустыне", 7 },
{ "9: Продажа через Джесси", 9 },
// Средние стадии
{ "12: Сделка с Туко", 12 },
{ "16: Сотрудничество с Туко", 16 },
{ "20: Найти адвоката (Сол Гудман)", 20 },
{ "27: Встреча с Гасом", 27 },
{ "34: Работа в суперлабе", 34 },
{ "37: Работа с Гейлом", 37 },
{ "40: Работа с Джесси в суперлабе", 40 },
// Продвинутые стадии
{ "47: Гейл убит", 47 },
{ "50: Война с Гасом", 50 },
{ "62: Гас мертв!", 62 },
{ "64: Планирование после Гаса", 64 },
{ "68: Создание нового бизнеса", 68 },
{ "69: Варка в Vamonos Pest", 69 },
// Финальные стадии
{ "91: Хэнк находит книгу", 91 },
{ "96: Перестрелка в пустыне", 96 },
{ "100: Возвращение в Альбукерке", 100 },
{ "105: Финальная бойня", 105 },
// Концовки
{ "200: Игра окончена - Пойман", 200 },
{ "202: Конец - Осторожный Уолт", 202 },
{ "203: Конец - Начало Империи", 203 },
{ "204: Конец - Страх/В бегах", 204 },
{ "106: Конец - Исчезновение", 106 }
};
// Заполняем комбобокс стадиями
comboBoxStages.Items.Clear();
foreach (var stage in gameStages)
{
comboBoxStages.Items.Add(stage.Key);
}
}
private void DevConsoleForm_FormClosing(object sender, FormClosingEventArgs e)
{
// Скрываем вместо закрытия
if (e.CloseReason == CloseReason.UserClosing)
{
e.Cancel = true;
this.Hide();
}
}
public void UpdateValues()
{
if (mainForm != null) // Добавляем проверку на null
{
gameVariables = mainForm.GetAllGameVariables();
UpdateVariablesList();
// Обновляем текущую стадию в комбобоксе
if (gameVariables.TryGetValue("currentStage", out object stageObj) && stageObj is int currentStage)
{
string currentStageName = gameStages.FirstOrDefault(x => x.Value == currentStage).Key;
if (currentStageName != null)
{
comboBoxStages.SelectedItem = currentStageName;
}
}
}
}
private void UpdateVariablesList()
{
// Очищаем и обновляем список переменных
listBoxVariables.Items.Clear();
if (gameVariables != null) // Добавляем проверку на null
{
foreach (var variable in gameVariables.OrderBy(v => v.Key))
{
listBoxVariables.Items.Add($"{variable.Key} = {variable.Value}");
}
}
}
private void InitializeComponent()
{
this.listBoxVariables = new System.Windows.Forms.ListBox();
this.buttonSetMoney = new MetroFramework.Controls.MetroButton();
this.buttonSetSuspicion = new MetroFramework.Controls.MetroButton();
this.textBoxValue = new MetroFramework.Controls.MetroTextBox();
this.labelValue = new MetroFramework.Controls.MetroLabel();
this.buttonSetVariable = new MetroFramework.Controls.MetroButton();
this.comboBoxStages = new System.Windows.Forms.ComboBox();
this.buttonJumpToStage = new MetroFramework.Controls.MetroButton();
this.labelJumpToStage = new MetroFramework.Controls.MetroLabel();
this.SuspendLayout();
//
// listBoxVariables
//
this.listBoxVariables.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.listBoxVariables.FormattingEnabled = true;
this.listBoxVariables.Location = new System.Drawing.Point(23, 63);
this.listBoxVariables.Name = "listBoxVariables";
this.listBoxVariables.Size = new System.Drawing.Size(354, 212);
this.listBoxVariables.TabIndex = 0;
this.listBoxVariables.SelectedIndexChanged += new System.EventHandler(this.listBoxVariables_SelectedIndexChanged);
//
// buttonSetMoney
//
this.buttonSetMoney.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.buttonSetMoney.Location = new System.Drawing.Point(23, 316);
this.buttonSetMoney.Name = "buttonSetMoney";
this.buttonSetMoney.Size = new System.Drawing.Size(100, 23);
this.buttonSetMoney.TabIndex = 1;
this.buttonSetMoney.Text = "Установить деньги";
this.buttonSetMoney.Click += new System.EventHandler(this.buttonSetMoney_Click);
//
// buttonSetSuspicion
//
this.buttonSetSuspicion.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.buttonSetSuspicion.Location = new System.Drawing.Point(139, 316);
this.buttonSetSuspicion.Name = "buttonSetSuspicion";
this.buttonSetSuspicion.Size = new System.Drawing.Size(148, 23);
this.buttonSetSuspicion.TabIndex = 2;
this.buttonSetSuspicion.Text = "Установить подозрение";
this.buttonSetSuspicion.Click += new System.EventHandler(this.buttonSetSuspicion_Click);
//
// textBoxValue
//
this.textBoxValue.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.textBoxValue.Location = new System.Drawing.Point(139, 287);
this.textBoxValue.Name = "textBoxValue";
this.textBoxValue.Size = new System.Drawing.Size(238, 23);
this.textBoxValue.TabIndex = 3;
//
// labelValue
//
this.labelValue.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.labelValue.AutoSize = true;
this.labelValue.Location = new System.Drawing.Point(23, 287);
this.labelValue.Name = "labelValue";
this.labelValue.Size = new System.Drawing.Size(73, 19);
this.labelValue.TabIndex = 4;
this.labelValue.Text = "Значение:";
//
// buttonSetVariable
//
this.buttonSetVariable.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.buttonSetVariable.Location = new System.Drawing.Point(293, 316);
this.buttonSetVariable.Name = "buttonSetVariable";
this.buttonSetVariable.Size = new System.Drawing.Size(84, 23);
this.buttonSetVariable.TabIndex = 5;
this.buttonSetVariable.Text = "Установить";
this.buttonSetVariable.Click += new System.EventHandler(this.buttonSetVariable_Click);
//
// comboBoxStages
//
this.comboBoxStages.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.comboBoxStages.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.comboBoxStages.FormattingEnabled = true;
this.comboBoxStages.Location = new System.Drawing.Point(139, 33);
this.comboBoxStages.Name = "comboBoxStages";
this.comboBoxStages.Size = new System.Drawing.Size(238, 21);
this.comboBoxStages.TabIndex = 6;
//
// buttonJumpToStage
//
this.buttonJumpToStage.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.buttonJumpToStage.Location = new System.Drawing.Point(293, 63);
this.buttonJumpToStage.Name = "buttonJumpToStage";
this.buttonJumpToStage.Size = new System.Drawing.Size(84, 23);
this.buttonJumpToStage.TabIndex = 7;
this.buttonJumpToStage.Text = "Перейти";
this.buttonJumpToStage.Click += new System.EventHandler(this.buttonJumpToStage_Click);
//
// labelJumpToStage
//
this.labelJumpToStage.AutoSize = true;
this.labelJumpToStage.Location = new System.Drawing.Point(23, 33);
this.labelJumpToStage.Name = "labelJumpToStage";
this.labelJumpToStage.Size = new System.Drawing.Size(92, 19);
this.labelJumpToStage.TabIndex = 8;
this.labelJumpToStage.Text = "Перейти к этапу:";
//
// DevConsoleForm
//
this.ClientSize = new System.Drawing.Size(400, 380);
this.Controls.Add(this.labelJumpToStage);
this.Controls.Add(this.buttonJumpToStage);
this.Controls.Add(this.comboBoxStages);
this.Controls.Add(this.buttonSetVariable);
this.Controls.Add(this.labelValue);
this.Controls.Add(this.textBoxValue);
this.Controls.Add(this.buttonSetSuspicion);
this.Controls.Add(this.buttonSetMoney);
this.Controls.Add(this.listBoxVariables);
this.DisplayHeader = false;
this.MinimumSize = new System.Drawing.Size(400, 380);
this.Name = "DevConsoleForm";
this.Padding = new System.Windows.Forms.Padding(20, 30, 20, 20);
this.Text = "Консоль разработчика";
this.ResumeLayout(false);
this.PerformLayout();
}
private System.Windows.Forms.ListBox listBoxVariables;
private MetroFramework.Controls.MetroButton buttonSetMoney;
private MetroFramework.Controls.MetroButton buttonSetSuspicion;
private MetroFramework.Controls.MetroTextBox textBoxValue;
private MetroFramework.Controls.MetroLabel labelValue;
private MetroFramework.Controls.MetroButton buttonSetVariable;
private System.Windows.Forms.ComboBox comboBoxStages;
private MetroFramework.Controls.MetroButton buttonJumpToStage;
private MetroFramework.Controls.MetroLabel labelJumpToStage;
private void listBoxVariables_SelectedIndexChanged(object sender, EventArgs e)
{
if (listBoxVariables.SelectedIndex != -1)
{
string selectedItem = listBoxVariables.SelectedItem.ToString();
int equalsPos = selectedItem.IndexOf('=');
if (equalsPos > 0)
{
string variableName = selectedItem.Substring(0, equalsPos).Trim();
string value = selectedItem.Substring(equalsPos + 1).Trim();
textBoxValue.Text = value;
}
}
}
private void buttonSetMoney_Click(object sender, EventArgs e)
{
if (int.TryParse(textBoxValue.Text, out int moneyValue))
{
mainForm.SetMoney(moneyValue);
UpdateValues();
}
else
{
MessageBox.Show("Введите корректное числовое значение!", "Ошибка",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
private void buttonSetSuspicion_Click(object sender, EventArgs e)
{
if (int.TryParse(textBoxValue.Text, out int suspicionValue))
{
mainForm.SetSuspicion(suspicionValue);
UpdateValues();
}
else
{
MessageBox.Show("Введите корректное числовое значение!", "Ошибка",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
private void buttonSetVariable_Click(object sender, EventArgs e)
{
if (listBoxVariables.SelectedIndex != -1)
{
string selectedItem = listBoxVariables.SelectedItem.ToString();
int equalsPos = selectedItem.IndexOf('=');
if (equalsPos > 0)
{
string variableName = selectedItem.Substring(0, equalsPos).Trim();
string valueText = textBoxValue.Text.Trim();
// Определяем тип переменной и пытаемся конвертировать значение
object originalValue;
if (gameVariables.TryGetValue(variableName, out originalValue))
{
object newValue = null;
try
{
if (originalValue is bool)
{
newValue = bool.Parse(valueText);
}
else if (originalValue is int)
{
newValue = int.Parse(valueText);
}
else if (originalValue is string)
{
newValue = valueText;
}
if (newValue != null)
{
if (mainForm.SetGameVariable(variableName, newValue))
{
UpdateValues();
}
else
{
MessageBox.Show($"Не удалось установить переменную {variableName}!",
"Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
catch (Exception ex)
{
MessageBox.Show($"Ошибка при установке значения: {ex.Message}",
"Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
}
}
private void buttonJumpToStage_Click(object sender, EventArgs e)
{
// Получаем выбранный этап
if (comboBoxStages.SelectedItem != null)
{
string selectedStageName = comboBoxStages.SelectedItem.ToString();
if (gameStages.TryGetValue(selectedStageName, out int stageNumber))
{
// Переходим к выбранному этапу
if (mainForm.SetGameVariable("currentStage", stageNumber))
{
// Вызываем GoToStage в основной форме
mainForm.GoToStage(stageNumber);
UpdateValues();
// Можно показать сообщение об успешном переходе
MessageBox.Show($"Выполнен переход к этапу: {selectedStageName}",
"Переход выполнен", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else
{
MessageBox.Show("Не удалось перейти к выбранному этапу!",
"Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
}
}
}

211
Form1.Designer.cs generated Normal file
View File

@ -0,0 +1,211 @@
// ВАЖНО: Убедитесь, что пакет NuGet "MetroModernUI" установлен в вашем проекте.
// Этот код лучше всего работает, если вы создаете его через дизайнер VS,
// перетаскивая Metro-контролы из Toolbox.
namespace uolter
{
// Изменяем базовый класс на MetroForm
partial class Form1 : MetroFramework.Forms.MetroForm
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
this.metroPanelMain = new MetroFramework.Controls.MetroPanel();
this.metroLabelStory = new MetroFramework.Controls.MetroLabel();
this.metroButtonChoice3 = new MetroFramework.Controls.MetroButton();
this.metroButtonChoice2 = new MetroFramework.Controls.MetroButton();
this.metroButtonChoice1 = new MetroFramework.Controls.MetroButton();
this.metroLabelSuspicion = new MetroFramework.Controls.MetroLabel();
this.metroLabelMoney = new MetroFramework.Controls.MetroLabel();
this.metroStyleManager1 = new MetroFramework.Components.MetroStyleManager(this.components);
this.metroToolTip1 = new MetroFramework.Components.MetroToolTip();
this.metroPanelMain.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.metroStyleManager1)).BeginInit();
this.SuspendLayout();
//
// metroPanelMain
//
this.metroPanelMain.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.metroPanelMain.Controls.Add(this.metroLabelStory);
this.metroPanelMain.Controls.Add(this.metroButtonChoice3);
this.metroPanelMain.Controls.Add(this.metroButtonChoice2);
this.metroPanelMain.Controls.Add(this.metroButtonChoice1);
this.metroPanelMain.Controls.Add(this.metroLabelSuspicion);
this.metroPanelMain.Controls.Add(this.metroLabelMoney);
this.metroPanelMain.HorizontalScrollbarBarColor = true;
this.metroPanelMain.HorizontalScrollbarHighlightOnWheel = false;
this.metroPanelMain.HorizontalScrollbarSize = 10;
this.metroPanelMain.Location = new System.Drawing.Point(23, 63);
this.metroPanelMain.Name = "metroPanelMain";
this.metroPanelMain.Size = new System.Drawing.Size(754, 364);
this.metroPanelMain.TabIndex = 0;
this.metroPanelMain.Theme = MetroFramework.MetroThemeStyle.Dark; // Тема панели
this.metroPanelMain.VerticalScrollbarBarColor = true;
this.metroPanelMain.VerticalScrollbarHighlightOnWheel = false;
this.metroPanelMain.VerticalScrollbarSize = 10;
//
// metroLabelStory
//
this.metroLabelStory.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.metroLabelStory.FontSize = MetroFramework.MetroLabelSize.Tall;
this.metroLabelStory.Location = new System.Drawing.Point(15, 48);
this.metroLabelStory.Name = "metroLabelStory";
this.metroLabelStory.Size = new System.Drawing.Size(724, 144);
this.metroLabelStory.TabIndex = 7;
this.metroLabelStory.Text = "Загрузка истории...";
this.metroLabelStory.Theme = MetroFramework.MetroThemeStyle.Dark; // Тема текста
this.metroLabelStory.WrapToLine = true;
//
// metroButtonChoice3
//
this.metroButtonChoice3.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.metroButtonChoice3.FontSize = MetroFramework.MetroButtonSize.Medium;
this.metroButtonChoice3.Location = new System.Drawing.Point(15, 311);
this.metroButtonChoice3.Name = "metroButtonChoice3";
this.metroButtonChoice3.Size = new System.Drawing.Size(724, 39);
this.metroButtonChoice3.TabIndex = 6;
this.metroButtonChoice3.Text = "Выбор 3";
this.metroButtonChoice3.Theme = MetroFramework.MetroThemeStyle.Dark; // Тема кнопки
this.metroButtonChoice3.UseSelectable = true;
this.metroButtonChoice3.Visible = false;
this.metroButtonChoice3.Click += new System.EventHandler(this.metroButtonChoice3_Click);
//
// metroButtonChoice2
//
this.metroButtonChoice2.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.metroButtonChoice2.FontSize = MetroFramework.MetroButtonSize.Medium;
this.metroButtonChoice2.Highlight = true; // Подсветка кнопки
this.metroButtonChoice2.Location = new System.Drawing.Point(15, 266);
this.metroButtonChoice2.Name = "metroButtonChoice2";
this.metroButtonChoice2.Size = new System.Drawing.Size(724, 39);
this.metroButtonChoice2.Style = MetroFramework.MetroColorStyle.Green; // Цвет кнопки
this.metroButtonChoice2.TabIndex = 5;
this.metroButtonChoice2.Text = "Выбор 2";
this.metroButtonChoice2.Theme = MetroFramework.MetroThemeStyle.Dark;
this.metroButtonChoice2.UseSelectable = true;
this.metroButtonChoice2.Click += new System.EventHandler(this.metroButtonChoice2_Click);
//
// metroButtonChoice1
//
this.metroButtonChoice1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.metroButtonChoice1.FontSize = MetroFramework.MetroButtonSize.Medium;
this.metroButtonChoice1.Highlight = true;
this.metroButtonChoice1.Location = new System.Drawing.Point(15, 221);
this.metroButtonChoice1.Name = "metroButtonChoice1";
this.metroButtonChoice1.Size = new System.Drawing.Size(724, 39);
this.metroButtonChoice1.Style = MetroFramework.MetroColorStyle.Red; // Цвет кнопки
this.metroButtonChoice1.TabIndex = 4;
this.metroButtonChoice1.Text = "Выбор 1";
this.metroButtonChoice1.Theme = MetroFramework.MetroThemeStyle.Dark;
this.metroButtonChoice1.UseSelectable = true;
this.metroButtonChoice1.Click += new System.EventHandler(this.metroButtonChoice1_Click);
//
// metroLabelSuspicion
//
this.metroLabelSuspicion.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.metroLabelSuspicion.AutoSize = true;
this.metroLabelSuspicion.FontSize = MetroFramework.MetroLabelSize.Tall;
this.metroLabelSuspicion.FontWeight = MetroFramework.MetroLabelWeight.Bold;
this.metroLabelSuspicion.ForeColor = System.Drawing.Color.Orange; // Можно задать явно
this.metroLabelSuspicion.Location = new System.Drawing.Point(542, 14);
this.metroLabelSuspicion.Name = "metroLabelSuspicion";
this.metroLabelSuspicion.Size = new System.Drawing.Size(197, 25);
this.metroLabelSuspicion.Style = MetroFramework.MetroColorStyle.Orange; // Стиль текста
this.metroLabelSuspicion.TabIndex = 3;
this.metroLabelSuspicion.Text = "Подозрение: 0 / 10";
this.metroLabelSuspicion.Theme = MetroFramework.MetroThemeStyle.Dark;
this.metroToolTip1.SetToolTip(this.metroLabelSuspicion, "Уровень подозрения со стороны закона");
this.metroLabelSuspicion.UseCustomForeColor = true; // Разрешить ручную установку цвета
//
// metroLabelMoney
//
this.metroLabelMoney.AutoSize = true;
this.metroLabelMoney.FontSize = MetroFramework.MetroLabelSize.Tall;
this.metroLabelMoney.FontWeight = MetroFramework.MetroLabelWeight.Bold;
this.metroLabelMoney.ForeColor = System.Drawing.Color.LightGreen; // Можно задать явно
this.metroLabelMoney.Location = new System.Drawing.Point(15, 14);
this.metroLabelMoney.Name = "metroLabelMoney";
this.metroLabelMoney.Size = new System.Drawing.Size(106, 25);
this.metroLabelMoney.Style = MetroFramework.MetroColorStyle.Green; // Стиль текста
this.metroLabelMoney.TabIndex = 2;
this.metroLabelMoney.Text = "Деньги: $0";
this.metroLabelMoney.Theme = MetroFramework.MetroThemeStyle.Dark;
this.metroToolTip1.SetToolTip(this.metroLabelMoney, "Ваши текущие средства");
this.metroLabelMoney.UseCustomForeColor = true; // Разрешить ручную установку цвета
//
// metroStyleManager1
//
this.metroStyleManager1.Owner = this; // Привязать стиль к форме
this.metroStyleManager1.Style = MetroFramework.MetroColorStyle.Green; // Основной цвет стиля
this.metroStyleManager1.Theme = MetroFramework.MetroThemeStyle.Dark; // Основная тема
//
// metroToolTip1
//
this.metroToolTip1.Style = MetroFramework.MetroColorStyle.Blue;
this.metroToolTip1.StyleManager = null;
this.metroToolTip1.Theme = MetroFramework.MetroThemeStyle.Dark; // Тема подсказок
//
// Form1
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(800, 450);
this.Controls.Add(this.metroPanelMain);
this.Name = "Form1";
this.Resizable = false; // Запретить изменение размера окна
this.ShadowType = MetroFramework.Forms.MetroFormShadowType.AeroShadow; // Тень окна
this.Style = MetroFramework.MetroColorStyle.Green; // Цвет рамки окна
this.Text = "Во все тяжкие: Текстовый Квест";
this.Theme = MetroFramework.MetroThemeStyle.Dark; // Темная тема окна
this.Load += new System.EventHandler(this.Form1_Load);
this.metroPanelMain.ResumeLayout(false);
this.metroPanelMain.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.metroStyleManager1)).EndInit();
this.ResumeLayout(false);
}
#endregion
private MetroFramework.Controls.MetroPanel metroPanelMain;
private MetroFramework.Controls.MetroLabel metroLabelStory;
private MetroFramework.Controls.MetroButton metroButtonChoice3;
private MetroFramework.Controls.MetroButton metroButtonChoice2;
private MetroFramework.Controls.MetroButton metroButtonChoice1;
private MetroFramework.Controls.MetroLabel metroLabelSuspicion;
private MetroFramework.Controls.MetroLabel metroLabelMoney;
private MetroFramework.Components.MetroStyleManager metroStyleManager1; // Управляет стилем
private MetroFramework.Components.MetroToolTip metroToolTip1; // Для всплывающих подсказок
}
}

2051
Form1.cs Normal file

File diff suppressed because it is too large Load Diff

120
Form1.resx Normal file
View File

@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

22
Program.cs Normal file
View File

@ -0,0 +1,22 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace uolter
{
static class Program
{
/// <summary>
/// Главная точка входа для приложения.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}
}

View File

@ -0,0 +1,33 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// Общие сведения об этой сборке предоставляются следующим набором
// набора атрибутов. Измените значения этих атрибутов для изменения сведений,
// связанных со сборкой.
[assembly: AssemblyTitle("uolter")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("uolter")]
[assembly: AssemblyCopyright("Copyright © 2025")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми
// для компонентов COM. Если необходимо обратиться к типу в этой сборке через
// COM, следует установить атрибут ComVisible в TRUE для этого типа.
[assembly: ComVisible(false)]
// Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM
[assembly: Guid("22e633af-f7b9-43d6-93c9-ef021a68bcae")]
// Сведения о версии сборки состоят из указанных ниже четырех значений:
//
// Основной номер версии
// Дополнительный номер версии
// Номер сборки
// Редакция
//
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

71
Properties/Resources.Designer.cs generated Normal file
View File

@ -0,0 +1,71 @@
//------------------------------------------------------------------------------
// <auto-generated>
// Этот код создан программным средством.
// Версия среды выполнения: 4.0.30319.42000
//
// Изменения в этом файле могут привести к неправильному поведению и будут утрачены, если
// код создан повторно.
// </auto-generated>
//------------------------------------------------------------------------------
namespace uolter.Properties
{
/// <summary>
/// Класс ресурсов со строгим типом для поиска локализованных строк и пр.
/// </summary>
// Этот класс был автоматически создан при помощи StronglyTypedResourceBuilder
// класс с помощью таких средств, как ResGen или Visual Studio.
// Для добавления или удаления члена измените файл .ResX, а затем перезапустите ResGen
// с параметром /str или заново постройте свой VS-проект.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Resources
{
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal Resources()
{
}
/// <summary>
/// Возврат кэшированного экземпляра ResourceManager, используемого этим классом.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager
{
get
{
if ((resourceMan == null))
{
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("uolter.Properties.Resources", typeof(Resources).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// Переопределяет свойство CurrentUICulture текущего потока для всех
/// подстановки ресурсов с помощью этого класса ресурсов со строгим типом.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture
{
get
{
return resourceCulture;
}
set
{
resourceCulture = value;
}
}
}
}

117
Properties/Resources.resx Normal file
View File

@ -0,0 +1,117 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

30
Properties/Settings.Designer.cs generated Normal file
View File

@ -0,0 +1,30 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace uolter.Properties
{
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
{
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
public static Settings Default
{
get
{
return defaultInstance;
}
}
}
}

View File

@ -0,0 +1,7 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
<Profiles>
<Profile Name="(Default)" />
</Profiles>
<Settings />
</SettingsFile>

4
packages.config Normal file
View File

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="MetroModernUI" version="1.4.0.0" targetFramework="net472" />
</packages>

96
uolter.csproj Normal file
View File

@ -0,0 +1,96 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{22E633AF-F7B9-43D6-93C9-EF021A68BCAE}</ProjectGuid>
<OutputType>WinExe</OutputType>
<RootNamespace>uolter</RootNamespace>
<AssemblyName>uolter</AssemblyName>
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<Deterministic>true</Deterministic>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a, processorArchitecture=MSIL">
<HintPath>packages\MetroModernUI.1.4.0.0\lib\net\MetroFramework.dll</HintPath>
</Reference>
<Reference Include="MetroFramework.Design, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a, processorArchitecture=MSIL">
<HintPath>packages\MetroModernUI.1.4.0.0\lib\net\MetroFramework.Design.dll</HintPath>
</Reference>
<Reference Include="MetroFramework.Fonts, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a, processorArchitecture=MSIL">
<HintPath>packages\MetroModernUI.1.4.0.0\lib\net\MetroFramework.Fonts.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Deployment" />
<Reference Include="System.Drawing" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="DevConsoleForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Form1.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Form1.Designer.cs">
<DependentUpon>Form1.cs</DependentUpon>
</Compile>
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<EmbeddedResource Include="Form1.resx">
<DependentUpon>Form1.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
<SubType>Designer</SubType>
</EmbeddedResource>
<Compile Include="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
<None Include="packages.config" />
<None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
</None>
<Compile Include="Properties\Settings.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
</ItemGroup>
<ItemGroup>
<None Include="App.config" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>

25
uolter.sln Normal file
View File

@ -0,0 +1,25 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.13.35828.75 d17.13
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "uolter", "uolter.csproj", "{22E633AF-F7B9-43D6-93C9-EF021A68BCAE}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{22E633AF-F7B9-43D6-93C9-EF021A68BCAE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{22E633AF-F7B9-43D6-93C9-EF021A68BCAE}.Debug|Any CPU.Build.0 = Debug|Any CPU
{22E633AF-F7B9-43D6-93C9-EF021A68BCAE}.Release|Any CPU.ActiveCfg = Release|Any CPU
{22E633AF-F7B9-43D6-93C9-EF021A68BCAE}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {79299B47-F870-445D-9258-5671641CD88F}
EndGlobalSection
EndGlobal