Update Banners Editor

Add Default Banners
This commit is contained in:
2022-11-20 14:42:52 +08:00
parent f1eb40bb0d
commit 473163e7c6
23 changed files with 5680 additions and 62 deletions

View File

@@ -0,0 +1,771 @@

namespace GrasscutterTools.Forms
{
partial class FormGachaBannersEditor3
{
/// <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()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormGachaBannersEditor3));
System.Windows.Forms.DataVisualization.Charting.ChartArea chartArea1 = new System.Windows.Forms.DataVisualization.Charting.ChartArea();
System.Windows.Forms.DataVisualization.Charting.Legend legend1 = new System.Windows.Forms.DataVisualization.Charting.Legend();
System.Windows.Forms.DataVisualization.Charting.Series series1 = new System.Windows.Forms.DataVisualization.Charting.Series();
System.Windows.Forms.DataVisualization.Charting.Series series2 = new System.Windows.Forms.DataVisualization.Charting.Series();
this.GrpBannerValues = new System.Windows.Forms.GroupBox();
this.CmbTitlePath = new System.Windows.Forms.ComboBox();
this.LblTitlePath = new System.Windows.Forms.Label();
this.NUDCostItemAmount10 = new System.Windows.Forms.NumericUpDown();
this.LblCostItemAmount10 = new System.Windows.Forms.Label();
this.NUDCostItemAmount1 = new System.Windows.Forms.NumericUpDown();
this.LblCostItemAmount1 = new System.Windows.Forms.Label();
this.ChkAutoStripRateUpFromFallback = new System.Windows.Forms.CheckBox();
this.LblOptions = new System.Windows.Forms.Label();
this.ChkRemoveC6FormPool = new System.Windows.Forms.CheckBox();
this.LnkOpenOldEditor = new System.Windows.Forms.LinkLabel();
this.DTPEndTime = new System.Windows.Forms.DateTimePicker();
this.DTPBeginTime = new System.Windows.Forms.DateTimePicker();
this.CmbPrefab = new System.Windows.Forms.ComboBox();
this.LblEventChance4Tip = new System.Windows.Forms.Label();
this.LblEventChance5Tip = new System.Windows.Forms.Label();
this.NUDEventChance4 = new System.Windows.Forms.NumericUpDown();
this.NUDEventChance5 = new System.Windows.Forms.NumericUpDown();
this.LblGachaType = new System.Windows.Forms.Label();
this.LblEventChance4 = new System.Windows.Forms.Label();
this.LblEventChance5 = new System.Windows.Forms.Label();
this.LblSortId = new System.Windows.Forms.Label();
this.NUDGachaType = new System.Windows.Forms.NumericUpDown();
this.NUDSortId = new System.Windows.Forms.NumericUpDown();
this.LblGachaTypeTip = new System.Windows.Forms.Label();
this.LblEndTime = new System.Windows.Forms.Label();
this.LblScheduleId = new System.Windows.Forms.Label();
this.LblBeginTime = new System.Windows.Forms.Label();
this.NUDScheduleId = new System.Windows.Forms.NumericUpDown();
this.LblScheduleIdTip = new System.Windows.Forms.Label();
this.CmbBannerType = new System.Windows.Forms.ComboBox();
this.LblSortIdTip = new System.Windows.Forms.Label();
this.LblBannerType = new System.Windows.Forms.Label();
this.RbCostItem224 = new System.Windows.Forms.RadioButton();
this.LblCostItem = new System.Windows.Forms.Label();
this.LblPrefabPath = new System.Windows.Forms.Label();
this.RbCostItem223 = new System.Windows.Forms.RadioButton();
this.GrpFallbackPool = new System.Windows.Forms.GroupBox();
this.ListFallbackItems = new System.Windows.Forms.ListView();
this.ColFallbackId = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.ColFallbackName = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.GrpUpPool = new System.Windows.Forms.GroupBox();
this.ListUpItems = new System.Windows.Forms.ListView();
this.ColUpId = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.ColUpName = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.GrpWeights = new System.Windows.Forms.GroupBox();
this.LnkWeightHelp = new System.Windows.Forms.LinkLabel();
this.TxtWeight4 = new System.Windows.Forms.TextBox();
this.TxtWeight5 = new System.Windows.Forms.TextBox();
this.LblWeight4 = new System.Windows.Forms.Label();
this.LblWeight5 = new System.Windows.Forms.Label();
this.GrpBalance = new System.Windows.Forms.GroupBox();
this.TxtPoolWeight4 = new System.Windows.Forms.TextBox();
this.TxtPoolWeight5 = new System.Windows.Forms.TextBox();
this.LblPoolWeight4 = new System.Windows.Forms.Label();
this.LblPoolWeight5 = new System.Windows.Forms.Label();
this.ChartWeights = new System.Windows.Forms.DataVisualization.Charting.Chart();
this.GrpBanners = new System.Windows.Forms.GroupBox();
this.ListBanners = new System.Windows.Forms.ListBox();
this.FLPBannersControl = new System.Windows.Forms.FlowLayoutPanel();
this.BtnAddOrUpdate = new System.Windows.Forms.Button();
this.BtnDelete = new System.Windows.Forms.Button();
this.label1 = new System.Windows.Forms.Label();
this.TxtBannersJsonPath = new System.Windows.Forms.TextBox();
this.BtnLoad = new System.Windows.Forms.Button();
this.BtnSave = new System.Windows.Forms.Button();
this.BtnClear = new System.Windows.Forms.Button();
this.GrpBannerValues.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.NUDCostItemAmount10)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.NUDCostItemAmount1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.NUDEventChance4)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.NUDEventChance5)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.NUDGachaType)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.NUDSortId)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.NUDScheduleId)).BeginInit();
this.GrpFallbackPool.SuspendLayout();
this.GrpUpPool.SuspendLayout();
this.GrpWeights.SuspendLayout();
this.GrpBalance.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.ChartWeights)).BeginInit();
this.GrpBanners.SuspendLayout();
this.FLPBannersControl.SuspendLayout();
this.SuspendLayout();
//
// GrpBannerValues
//
resources.ApplyResources(this.GrpBannerValues, "GrpBannerValues");
this.GrpBannerValues.Controls.Add(this.BtnAddOrUpdate);
this.GrpBannerValues.Controls.Add(this.CmbTitlePath);
this.GrpBannerValues.Controls.Add(this.LblTitlePath);
this.GrpBannerValues.Controls.Add(this.NUDCostItemAmount10);
this.GrpBannerValues.Controls.Add(this.LblCostItemAmount10);
this.GrpBannerValues.Controls.Add(this.NUDCostItemAmount1);
this.GrpBannerValues.Controls.Add(this.LblCostItemAmount1);
this.GrpBannerValues.Controls.Add(this.ChkAutoStripRateUpFromFallback);
this.GrpBannerValues.Controls.Add(this.LblOptions);
this.GrpBannerValues.Controls.Add(this.ChkRemoveC6FormPool);
this.GrpBannerValues.Controls.Add(this.LnkOpenOldEditor);
this.GrpBannerValues.Controls.Add(this.DTPEndTime);
this.GrpBannerValues.Controls.Add(this.DTPBeginTime);
this.GrpBannerValues.Controls.Add(this.CmbPrefab);
this.GrpBannerValues.Controls.Add(this.LblEventChance4Tip);
this.GrpBannerValues.Controls.Add(this.LblEventChance5Tip);
this.GrpBannerValues.Controls.Add(this.NUDEventChance4);
this.GrpBannerValues.Controls.Add(this.NUDEventChance5);
this.GrpBannerValues.Controls.Add(this.LblGachaType);
this.GrpBannerValues.Controls.Add(this.LblEventChance4);
this.GrpBannerValues.Controls.Add(this.LblEventChance5);
this.GrpBannerValues.Controls.Add(this.LblSortId);
this.GrpBannerValues.Controls.Add(this.NUDGachaType);
this.GrpBannerValues.Controls.Add(this.NUDSortId);
this.GrpBannerValues.Controls.Add(this.LblGachaTypeTip);
this.GrpBannerValues.Controls.Add(this.LblEndTime);
this.GrpBannerValues.Controls.Add(this.LblScheduleId);
this.GrpBannerValues.Controls.Add(this.LblBeginTime);
this.GrpBannerValues.Controls.Add(this.NUDScheduleId);
this.GrpBannerValues.Controls.Add(this.LblScheduleIdTip);
this.GrpBannerValues.Controls.Add(this.CmbBannerType);
this.GrpBannerValues.Controls.Add(this.LblSortIdTip);
this.GrpBannerValues.Controls.Add(this.LblBannerType);
this.GrpBannerValues.Controls.Add(this.RbCostItem224);
this.GrpBannerValues.Controls.Add(this.LblCostItem);
this.GrpBannerValues.Controls.Add(this.LblPrefabPath);
this.GrpBannerValues.Controls.Add(this.RbCostItem223);
this.GrpBannerValues.Name = "GrpBannerValues";
this.GrpBannerValues.TabStop = false;
//
// CmbTitlePath
//
this.CmbTitlePath.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.CmbTitlePath.FormattingEnabled = true;
resources.ApplyResources(this.CmbTitlePath, "CmbTitlePath");
this.CmbTitlePath.Name = "CmbTitlePath";
//
// LblTitlePath
//
resources.ApplyResources(this.LblTitlePath, "LblTitlePath");
this.LblTitlePath.Name = "LblTitlePath";
//
// NUDCostItemAmount10
//
resources.ApplyResources(this.NUDCostItemAmount10, "NUDCostItemAmount10");
this.NUDCostItemAmount10.Maximum = new decimal(new int[] {
2147483647,
0,
0,
0});
this.NUDCostItemAmount10.Name = "NUDCostItemAmount10";
this.NUDCostItemAmount10.Value = new decimal(new int[] {
10,
0,
0,
0});
//
// LblCostItemAmount10
//
resources.ApplyResources(this.LblCostItemAmount10, "LblCostItemAmount10");
this.LblCostItemAmount10.Name = "LblCostItemAmount10";
//
// NUDCostItemAmount1
//
resources.ApplyResources(this.NUDCostItemAmount1, "NUDCostItemAmount1");
this.NUDCostItemAmount1.Maximum = new decimal(new int[] {
2147483647,
0,
0,
0});
this.NUDCostItemAmount1.Name = "NUDCostItemAmount1";
this.NUDCostItemAmount1.Value = new decimal(new int[] {
1,
0,
0,
0});
//
// LblCostItemAmount1
//
resources.ApplyResources(this.LblCostItemAmount1, "LblCostItemAmount1");
this.LblCostItemAmount1.Name = "LblCostItemAmount1";
//
// ChkAutoStripRateUpFromFallback
//
resources.ApplyResources(this.ChkAutoStripRateUpFromFallback, "ChkAutoStripRateUpFromFallback");
this.ChkAutoStripRateUpFromFallback.Name = "ChkAutoStripRateUpFromFallback";
this.ChkAutoStripRateUpFromFallback.UseVisualStyleBackColor = true;
//
// LblOptions
//
resources.ApplyResources(this.LblOptions, "LblOptions");
this.LblOptions.Name = "LblOptions";
//
// ChkRemoveC6FormPool
//
resources.ApplyResources(this.ChkRemoveC6FormPool, "ChkRemoveC6FormPool");
this.ChkRemoveC6FormPool.Name = "ChkRemoveC6FormPool";
this.ChkRemoveC6FormPool.UseVisualStyleBackColor = true;
//
// LnkOpenOldEditor
//
resources.ApplyResources(this.LnkOpenOldEditor, "LnkOpenOldEditor");
this.LnkOpenOldEditor.Name = "LnkOpenOldEditor";
this.LnkOpenOldEditor.TabStop = true;
this.LnkOpenOldEditor.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.LnkOpenOldEditor_LinkClicked);
//
// DTPEndTime
//
resources.ApplyResources(this.DTPEndTime, "DTPEndTime");
this.DTPEndTime.MaxDate = new System.DateTime(2038, 1, 19, 0, 0, 0, 0);
this.DTPEndTime.MinDate = new System.DateTime(1970, 1, 1, 0, 0, 0, 0);
this.DTPEndTime.Name = "DTPEndTime";
//
// DTPBeginTime
//
resources.ApplyResources(this.DTPBeginTime, "DTPBeginTime");
this.DTPBeginTime.MaxDate = new System.DateTime(2038, 1, 19, 0, 0, 0, 0);
this.DTPBeginTime.MinDate = new System.DateTime(1970, 1, 1, 0, 0, 0, 0);
this.DTPBeginTime.Name = "DTPBeginTime";
//
// CmbPrefab
//
this.CmbPrefab.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.CmbPrefab.FormattingEnabled = true;
resources.ApplyResources(this.CmbPrefab, "CmbPrefab");
this.CmbPrefab.Name = "CmbPrefab";
//
// LblEventChance4Tip
//
resources.ApplyResources(this.LblEventChance4Tip, "LblEventChance4Tip");
this.LblEventChance4Tip.Name = "LblEventChance4Tip";
//
// LblEventChance5Tip
//
resources.ApplyResources(this.LblEventChance5Tip, "LblEventChance5Tip");
this.LblEventChance5Tip.Name = "LblEventChance5Tip";
//
// NUDEventChance4
//
resources.ApplyResources(this.NUDEventChance4, "NUDEventChance4");
this.NUDEventChance4.Name = "NUDEventChance4";
this.NUDEventChance4.Value = new decimal(new int[] {
50,
0,
0,
0});
//
// NUDEventChance5
//
resources.ApplyResources(this.NUDEventChance5, "NUDEventChance5");
this.NUDEventChance5.Name = "NUDEventChance5";
this.NUDEventChance5.Value = new decimal(new int[] {
50,
0,
0,
0});
//
// LblGachaType
//
resources.ApplyResources(this.LblGachaType, "LblGachaType");
this.LblGachaType.Name = "LblGachaType";
//
// LblEventChance4
//
resources.ApplyResources(this.LblEventChance4, "LblEventChance4");
this.LblEventChance4.Name = "LblEventChance4";
//
// LblEventChance5
//
resources.ApplyResources(this.LblEventChance5, "LblEventChance5");
this.LblEventChance5.Name = "LblEventChance5";
//
// LblSortId
//
resources.ApplyResources(this.LblSortId, "LblSortId");
this.LblSortId.Name = "LblSortId";
//
// NUDGachaType
//
resources.ApplyResources(this.NUDGachaType, "NUDGachaType");
this.NUDGachaType.Maximum = new decimal(new int[] {
10000,
0,
0,
0});
this.NUDGachaType.Name = "NUDGachaType";
this.NUDGachaType.Value = new decimal(new int[] {
400,
0,
0,
0});
//
// NUDSortId
//
resources.ApplyResources(this.NUDSortId, "NUDSortId");
this.NUDSortId.Maximum = new decimal(new int[] {
9999,
0,
0,
0});
this.NUDSortId.Name = "NUDSortId";
this.NUDSortId.Value = new decimal(new int[] {
1000,
0,
0,
0});
//
// LblGachaTypeTip
//
resources.ApplyResources(this.LblGachaTypeTip, "LblGachaTypeTip");
this.LblGachaTypeTip.Name = "LblGachaTypeTip";
//
// LblEndTime
//
resources.ApplyResources(this.LblEndTime, "LblEndTime");
this.LblEndTime.Name = "LblEndTime";
//
// LblScheduleId
//
resources.ApplyResources(this.LblScheduleId, "LblScheduleId");
this.LblScheduleId.Name = "LblScheduleId";
//
// LblBeginTime
//
resources.ApplyResources(this.LblBeginTime, "LblBeginTime");
this.LblBeginTime.Name = "LblBeginTime";
//
// NUDScheduleId
//
resources.ApplyResources(this.NUDScheduleId, "NUDScheduleId");
this.NUDScheduleId.Maximum = new decimal(new int[] {
10000,
0,
0,
0});
this.NUDScheduleId.Name = "NUDScheduleId";
this.NUDScheduleId.Value = new decimal(new int[] {
800,
0,
0,
0});
//
// LblScheduleIdTip
//
resources.ApplyResources(this.LblScheduleIdTip, "LblScheduleIdTip");
this.LblScheduleIdTip.Name = "LblScheduleIdTip";
//
// CmbBannerType
//
this.CmbBannerType.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.CmbBannerType.FormattingEnabled = true;
this.CmbBannerType.Items.AddRange(new object[] {
resources.GetString("CmbBannerType.Items"),
resources.GetString("CmbBannerType.Items1"),
resources.GetString("CmbBannerType.Items2")});
resources.ApplyResources(this.CmbBannerType, "CmbBannerType");
this.CmbBannerType.Name = "CmbBannerType";
//
// LblSortIdTip
//
resources.ApplyResources(this.LblSortIdTip, "LblSortIdTip");
this.LblSortIdTip.Name = "LblSortIdTip";
//
// LblBannerType
//
resources.ApplyResources(this.LblBannerType, "LblBannerType");
this.LblBannerType.Name = "LblBannerType";
//
// RbCostItem224
//
resources.ApplyResources(this.RbCostItem224, "RbCostItem224");
this.RbCostItem224.Checked = true;
this.RbCostItem224.Name = "RbCostItem224";
this.RbCostItem224.TabStop = true;
this.RbCostItem224.UseVisualStyleBackColor = true;
//
// LblCostItem
//
resources.ApplyResources(this.LblCostItem, "LblCostItem");
this.LblCostItem.Name = "LblCostItem";
//
// LblPrefabPath
//
resources.ApplyResources(this.LblPrefabPath, "LblPrefabPath");
this.LblPrefabPath.Name = "LblPrefabPath";
//
// RbCostItem223
//
resources.ApplyResources(this.RbCostItem223, "RbCostItem223");
this.RbCostItem223.Name = "RbCostItem223";
this.RbCostItem223.TabStop = true;
this.RbCostItem223.UseVisualStyleBackColor = true;
//
// GrpFallbackPool
//
resources.ApplyResources(this.GrpFallbackPool, "GrpFallbackPool");
this.GrpFallbackPool.Controls.Add(this.ListFallbackItems);
this.GrpFallbackPool.Name = "GrpFallbackPool";
this.GrpFallbackPool.TabStop = false;
//
// ListFallbackItems
//
this.ListFallbackItems.CheckBoxes = true;
this.ListFallbackItems.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
this.ColFallbackId,
this.ColFallbackName});
resources.ApplyResources(this.ListFallbackItems, "ListFallbackItems");
this.ListFallbackItems.FullRowSelect = true;
this.ListFallbackItems.Groups.AddRange(new System.Windows.Forms.ListViewGroup[] {
((System.Windows.Forms.ListViewGroup)(resources.GetObject("ListFallbackItems.Groups"))),
((System.Windows.Forms.ListViewGroup)(resources.GetObject("ListFallbackItems.Groups1"))),
((System.Windows.Forms.ListViewGroup)(resources.GetObject("ListFallbackItems.Groups2"))),
((System.Windows.Forms.ListViewGroup)(resources.GetObject("ListFallbackItems.Groups3"))),
((System.Windows.Forms.ListViewGroup)(resources.GetObject("ListFallbackItems.Groups4")))});
this.ListFallbackItems.HideSelection = false;
this.ListFallbackItems.Name = "ListFallbackItems";
this.ListFallbackItems.UseCompatibleStateImageBehavior = false;
this.ListFallbackItems.View = System.Windows.Forms.View.Details;
//
// ColFallbackId
//
resources.ApplyResources(this.ColFallbackId, "ColFallbackId");
//
// ColFallbackName
//
resources.ApplyResources(this.ColFallbackName, "ColFallbackName");
//
// GrpUpPool
//
resources.ApplyResources(this.GrpUpPool, "GrpUpPool");
this.GrpUpPool.Controls.Add(this.ListUpItems);
this.GrpUpPool.Name = "GrpUpPool";
this.GrpUpPool.TabStop = false;
//
// ListUpItems
//
this.ListUpItems.CheckBoxes = true;
this.ListUpItems.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
this.ColUpId,
this.ColUpName});
resources.ApplyResources(this.ListUpItems, "ListUpItems");
this.ListUpItems.FullRowSelect = true;
this.ListUpItems.Groups.AddRange(new System.Windows.Forms.ListViewGroup[] {
((System.Windows.Forms.ListViewGroup)(resources.GetObject("ListUpItems.Groups"))),
((System.Windows.Forms.ListViewGroup)(resources.GetObject("ListUpItems.Groups1"))),
((System.Windows.Forms.ListViewGroup)(resources.GetObject("ListUpItems.Groups2"))),
((System.Windows.Forms.ListViewGroup)(resources.GetObject("ListUpItems.Groups3")))});
this.ListUpItems.HideSelection = false;
this.ListUpItems.Name = "ListUpItems";
this.ListUpItems.UseCompatibleStateImageBehavior = false;
this.ListUpItems.View = System.Windows.Forms.View.Details;
//
// ColUpId
//
resources.ApplyResources(this.ColUpId, "ColUpId");
//
// ColUpName
//
resources.ApplyResources(this.ColUpName, "ColUpName");
//
// GrpWeights
//
resources.ApplyResources(this.GrpWeights, "GrpWeights");
this.GrpWeights.Controls.Add(this.LnkWeightHelp);
this.GrpWeights.Controls.Add(this.TxtWeight4);
this.GrpWeights.Controls.Add(this.TxtWeight5);
this.GrpWeights.Controls.Add(this.LblWeight4);
this.GrpWeights.Controls.Add(this.LblWeight5);
this.GrpWeights.Name = "GrpWeights";
this.GrpWeights.TabStop = false;
//
// LnkWeightHelp
//
resources.ApplyResources(this.LnkWeightHelp, "LnkWeightHelp");
this.LnkWeightHelp.Name = "LnkWeightHelp";
this.LnkWeightHelp.TabStop = true;
this.LnkWeightHelp.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.LnkWeightHelp_LinkClicked);
//
// TxtWeight4
//
resources.ApplyResources(this.TxtWeight4, "TxtWeight4");
this.TxtWeight4.Name = "TxtWeight4";
//
// TxtWeight5
//
resources.ApplyResources(this.TxtWeight5, "TxtWeight5");
this.TxtWeight5.Name = "TxtWeight5";
//
// LblWeight4
//
resources.ApplyResources(this.LblWeight4, "LblWeight4");
this.LblWeight4.Name = "LblWeight4";
//
// LblWeight5
//
resources.ApplyResources(this.LblWeight5, "LblWeight5");
this.LblWeight5.Name = "LblWeight5";
//
// GrpBalance
//
resources.ApplyResources(this.GrpBalance, "GrpBalance");
this.GrpBalance.Controls.Add(this.TxtPoolWeight4);
this.GrpBalance.Controls.Add(this.TxtPoolWeight5);
this.GrpBalance.Controls.Add(this.LblPoolWeight4);
this.GrpBalance.Controls.Add(this.LblPoolWeight5);
this.GrpBalance.Name = "GrpBalance";
this.GrpBalance.TabStop = false;
//
// TxtPoolWeight4
//
resources.ApplyResources(this.TxtPoolWeight4, "TxtPoolWeight4");
this.TxtPoolWeight4.Name = "TxtPoolWeight4";
//
// TxtPoolWeight5
//
resources.ApplyResources(this.TxtPoolWeight5, "TxtPoolWeight5");
this.TxtPoolWeight5.Name = "TxtPoolWeight5";
//
// LblPoolWeight4
//
resources.ApplyResources(this.LblPoolWeight4, "LblPoolWeight4");
this.LblPoolWeight4.Name = "LblPoolWeight4";
//
// LblPoolWeight5
//
resources.ApplyResources(this.LblPoolWeight5, "LblPoolWeight5");
this.LblPoolWeight5.Name = "LblPoolWeight5";
//
// ChartWeights
//
chartArea1.AxisX.Minimum = 0D;
chartArea1.AxisY.Maximum = 100D;
chartArea1.AxisY.Minimum = 0D;
chartArea1.AxisY.Title = "%";
chartArea1.Name = "ChartArea1";
this.ChartWeights.ChartAreas.Add(chartArea1);
legend1.Name = "Legend1";
this.ChartWeights.Legends.Add(legend1);
resources.ApplyResources(this.ChartWeights, "ChartWeights");
this.ChartWeights.Name = "ChartWeights";
series1.ChartArea = "ChartArea1";
series1.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line;
series1.Color = System.Drawing.Color.OrangeRed;
series1.Label = "(#VALX, #VAL)";
series1.Legend = "Legend1";
series1.LegendText = "5*";
series1.Name = "SeriesWeight5";
series1.XValueType = System.Windows.Forms.DataVisualization.Charting.ChartValueType.Int32;
series1.YValueType = System.Windows.Forms.DataVisualization.Charting.ChartValueType.Double;
series2.ChartArea = "ChartArea1";
series2.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line;
series2.Color = System.Drawing.Color.Purple;
series2.Label = "(#VALX, #VAL)";
series2.Legend = "Legend1";
series2.LegendText = "4*";
series2.Name = "SeriesWeight4";
series2.XValueType = System.Windows.Forms.DataVisualization.Charting.ChartValueType.Int32;
series2.YValueType = System.Windows.Forms.DataVisualization.Charting.ChartValueType.Double;
this.ChartWeights.Series.Add(series1);
this.ChartWeights.Series.Add(series2);
//
// GrpBanners
//
resources.ApplyResources(this.GrpBanners, "GrpBanners");
this.GrpBanners.Controls.Add(this.ListBanners);
this.GrpBanners.Controls.Add(this.FLPBannersControl);
this.GrpBanners.Name = "GrpBanners";
this.GrpBanners.TabStop = false;
//
// ListBanners
//
resources.ApplyResources(this.ListBanners, "ListBanners");
this.ListBanners.FormattingEnabled = true;
this.ListBanners.Name = "ListBanners";
this.ListBanners.SelectedIndexChanged += new System.EventHandler(this.ListBanners_SelectedIndexChanged);
//
// FLPBannersControl
//
this.FLPBannersControl.Controls.Add(this.BtnDelete);
this.FLPBannersControl.Controls.Add(this.BtnClear);
resources.ApplyResources(this.FLPBannersControl, "FLPBannersControl");
this.FLPBannersControl.Name = "FLPBannersControl";
//
// BtnAddOrUpdate
//
resources.ApplyResources(this.BtnAddOrUpdate, "BtnAddOrUpdate");
this.BtnAddOrUpdate.Name = "BtnAddOrUpdate";
this.BtnAddOrUpdate.UseVisualStyleBackColor = true;
this.BtnAddOrUpdate.Click += new System.EventHandler(this.BtnAddOrUpdate_Click);
//
// BtnDelete
//
resources.ApplyResources(this.BtnDelete, "BtnDelete");
this.BtnDelete.Name = "BtnDelete";
this.BtnDelete.UseVisualStyleBackColor = true;
this.BtnDelete.Click += new System.EventHandler(this.BtnDelete_Click);
//
// label1
//
resources.ApplyResources(this.label1, "label1");
this.label1.Name = "label1";
//
// TxtBannersJsonPath
//
resources.ApplyResources(this.TxtBannersJsonPath, "TxtBannersJsonPath");
this.TxtBannersJsonPath.Name = "TxtBannersJsonPath";
//
// BtnLoad
//
resources.ApplyResources(this.BtnLoad, "BtnLoad");
this.BtnLoad.Name = "BtnLoad";
this.BtnLoad.UseVisualStyleBackColor = true;
this.BtnLoad.Click += new System.EventHandler(this.BtnLoad_Click);
//
// BtnSave
//
resources.ApplyResources(this.BtnSave, "BtnSave");
this.BtnSave.Name = "BtnSave";
this.BtnSave.UseVisualStyleBackColor = true;
this.BtnSave.Click += new System.EventHandler(this.BtnSave_Click);
//
// BtnClear
//
resources.ApplyResources(this.BtnClear, "BtnClear");
this.BtnClear.Name = "BtnClear";
this.BtnClear.UseVisualStyleBackColor = true;
this.BtnClear.Click += new System.EventHandler(this.BtnClear_Click);
//
// FormGachaBannersEditor3
//
resources.ApplyResources(this, "$this");
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.ChartWeights);
this.Controls.Add(this.BtnSave);
this.Controls.Add(this.BtnLoad);
this.Controls.Add(this.TxtBannersJsonPath);
this.Controls.Add(this.label1);
this.Controls.Add(this.GrpBanners);
this.Controls.Add(this.GrpBalance);
this.Controls.Add(this.GrpWeights);
this.Controls.Add(this.GrpFallbackPool);
this.Controls.Add(this.GrpUpPool);
this.Controls.Add(this.GrpBannerValues);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.SizableToolWindow;
this.Name = "FormGachaBannersEditor3";
this.GrpBannerValues.ResumeLayout(false);
this.GrpBannerValues.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.NUDCostItemAmount10)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.NUDCostItemAmount1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.NUDEventChance4)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.NUDEventChance5)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.NUDGachaType)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.NUDSortId)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.NUDScheduleId)).EndInit();
this.GrpFallbackPool.ResumeLayout(false);
this.GrpUpPool.ResumeLayout(false);
this.GrpWeights.ResumeLayout(false);
this.GrpWeights.PerformLayout();
this.GrpBalance.ResumeLayout(false);
this.GrpBalance.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.ChartWeights)).EndInit();
this.GrpBanners.ResumeLayout(false);
this.FLPBannersControl.ResumeLayout(false);
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.GroupBox GrpBannerValues;
private System.Windows.Forms.Label LblEventChance5Tip;
private System.Windows.Forms.NumericUpDown NUDEventChance5;
private System.Windows.Forms.Label LblGachaType;
private System.Windows.Forms.Label LblEventChance5;
private System.Windows.Forms.Label LblSortId;
private System.Windows.Forms.NumericUpDown NUDGachaType;
private System.Windows.Forms.NumericUpDown NUDSortId;
private System.Windows.Forms.Label LblGachaTypeTip;
private System.Windows.Forms.Label LblEndTime;
private System.Windows.Forms.Label LblScheduleId;
private System.Windows.Forms.Label LblBeginTime;
private System.Windows.Forms.NumericUpDown NUDScheduleId;
private System.Windows.Forms.Label LblScheduleIdTip;
private System.Windows.Forms.ComboBox CmbBannerType;
private System.Windows.Forms.Label LblSortIdTip;
private System.Windows.Forms.Label LblBannerType;
private System.Windows.Forms.RadioButton RbCostItem224;
private System.Windows.Forms.Label LblCostItem;
private System.Windows.Forms.Label LblPrefabPath;
private System.Windows.Forms.RadioButton RbCostItem223;
private System.Windows.Forms.GroupBox GrpFallbackPool;
private System.Windows.Forms.GroupBox GrpUpPool;
private System.Windows.Forms.ComboBox CmbPrefab;
private System.Windows.Forms.Label LblEventChance4;
private System.Windows.Forms.Label LblEventChance4Tip;
private System.Windows.Forms.NumericUpDown NUDEventChance4;
private System.Windows.Forms.DateTimePicker DTPEndTime;
private System.Windows.Forms.DateTimePicker DTPBeginTime;
private System.Windows.Forms.ListView ListFallbackItems;
private System.Windows.Forms.ListView ListUpItems;
private System.Windows.Forms.ColumnHeader ColFallbackId;
private System.Windows.Forms.ColumnHeader ColFallbackName;
private System.Windows.Forms.ColumnHeader ColUpId;
private System.Windows.Forms.ColumnHeader ColUpName;
private System.Windows.Forms.GroupBox GrpWeights;
private System.Windows.Forms.GroupBox GrpBalance;
private System.Windows.Forms.TextBox TxtWeight4;
private System.Windows.Forms.TextBox TxtWeight5;
private System.Windows.Forms.Label LblWeight4;
private System.Windows.Forms.Label LblWeight5;
private System.Windows.Forms.LinkLabel LnkWeightHelp;
private System.Windows.Forms.LinkLabel LnkOpenOldEditor;
private System.Windows.Forms.TextBox TxtPoolWeight4;
private System.Windows.Forms.TextBox TxtPoolWeight5;
private System.Windows.Forms.Label LblPoolWeight4;
private System.Windows.Forms.Label LblPoolWeight5;
private System.Windows.Forms.CheckBox ChkRemoveC6FormPool;
private System.Windows.Forms.CheckBox ChkAutoStripRateUpFromFallback;
private System.Windows.Forms.Label LblOptions;
private System.Windows.Forms.DataVisualization.Charting.Chart ChartWeights;
private System.Windows.Forms.GroupBox GrpBanners;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.TextBox TxtBannersJsonPath;
private System.Windows.Forms.Button BtnLoad;
private System.Windows.Forms.Button BtnSave;
private System.Windows.Forms.FlowLayoutPanel FLPBannersControl;
private System.Windows.Forms.Button BtnAddOrUpdate;
private System.Windows.Forms.Button BtnDelete;
private System.Windows.Forms.NumericUpDown NUDCostItemAmount10;
private System.Windows.Forms.Label LblCostItemAmount10;
private System.Windows.Forms.NumericUpDown NUDCostItemAmount1;
private System.Windows.Forms.Label LblCostItemAmount1;
private System.Windows.Forms.ListBox ListBanners;
private System.Windows.Forms.ComboBox CmbTitlePath;
private System.Windows.Forms.Label LblTitlePath;
private System.Windows.Forms.Button BtnClear;
}
}

View File

@@ -0,0 +1,505 @@
/**
* Grasscutter Tools
* Copyright (C) 2022 jie65535
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published
* by the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
**/
using System;
using System.Collections.Generic;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Windows.Forms.DataVisualization.Charting;
using GrasscutterTools.Game;
using GrasscutterTools.Game.Drop;
using GrasscutterTools.Game.Gacha;
using GrasscutterTools.Properties;
using Newtonsoft.Json;
namespace GrasscutterTools.Forms
{
/// <summary>
/// 卡池编辑器
/// </summary>
public partial class FormGachaBannersEditor3 : Form
{
#region - -
private List<GachaBanner3> Banners;
#endregion
#region - -
public FormGachaBannersEditor3()
{
InitializeComponent();
Icon = Resources.IconGrasscutter;
CmbBannerType.SelectedIndex = 0;
InitBannerPrefab();
InitCheckedListBoxs();
ShowBanner(new GachaBanner3());
}
private void InitBannerPrefab()
{
CmbPrefab.Items.Clear();
CmbPrefab.Items.AddRange(GameData.GachaBannerPrefabs.Names);
CmbTitlePath.Items.Clear();
CmbTitlePath.Items.AddRange(GameData.GachaBannerTitles.Names);
}
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
try
{
// 加载文件路径
var path = Settings.Default.BannersJsonPath;
TxtBannersJsonPath.Text = path;
if (!string.IsNullOrEmpty(path) && File.Exists(path))
LoadBanners(File.ReadAllText(path));
else
LoadBanners(Encoding.UTF8.GetString(Resources.Banners));
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString(), Resources.Error, MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
protected override void OnFormClosed(FormClosedEventArgs e)
{
// 保存文件路径
Settings.Default.BannersJsonPath = TxtBannersJsonPath.Text;
Settings.Default.Save();
base.OnFormClosed(e);
}
private void LnkWeightHelp_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
System.Diagnostics.Process.Start("https://github.com/Grasscutters/Grasscutter/pull/639");
}
private void LnkOpenOldEditor_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
new FormGachaBannerEditor().ShowDialog();
}
#endregion
#region - Banners.json -
/// <summary>
/// 加载按钮点击时触发
/// </summary>
private void BtnLoad_Click(object sender, EventArgs e)
{
try
{
var path = TxtBannersJsonPath.Text.Trim();
if (path == string.Empty)
{
var dialog = new OpenFileDialog
{
FileName = "Banners.json",
Filter = "Banners.Json (*.json)|*.json|All files (*.*)|*.*",
};
var result = dialog.ShowDialog();
if (result == DialogResult.OK)
path = TxtBannersJsonPath.Text = dialog.FileName;
else
return;
}
LoadBanners(File.ReadAllText(path));
MessageBox.Show("OK", Resources.Tips, MessageBoxButtons.OK);
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString(), Resources.Error, MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
/// <summary>
/// 保存按钮点击时触发
/// </summary>
private void BtnSave_Click(object sender, EventArgs e)
{
try
{
var path = TxtBannersJsonPath.Text.Trim();
if (path == string.Empty)
{
var dialog = new SaveFileDialog
{
FileName = "Banners.json",
Filter = "Banners.json (*.json)|*.json|All files (*.*)|*.*",
};
var result = dialog.ShowDialog();
if (result == DialogResult.OK)
path = TxtBannersJsonPath.Text = dialog.FileName;
else
return;
}
var json = JsonConvert.SerializeObject(Banners, new JsonSerializerSettings { DefaultValueHandling = DefaultValueHandling.Ignore })
.Replace(",\"", ",\r\n \"").Replace("{\"", "{\r\n \"").Replace("\"}", "\"\r\n}");
File.WriteAllText(path, json);
MessageBox.Show("OK", Resources.Tips, MessageBoxButtons.OK);
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString(), Resources.Error, MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
#endregion
#region - -
/// <summary>
/// 从指定Json中加载卡池
/// </summary>
/// <param name="bannersJson">Banner.json 内容</param>
private void LoadBanners(string bannersJson)
{
// 反序列化
Banners = JsonConvert.DeserializeObject<List<GachaBanner3>>(bannersJson);
ShowBanners();
}
/// <summary>
/// 显示当前卡池列表
/// </summary>
private void ShowBanners()
{
ListBanners.BeginUpdate();
ListBanners.Items.Clear();
ListBanners.Items.AddRange(Banners.ToArray());
ListBanners.EndUpdate();
}
/// <summary>
/// 卡池列表选中项改变时触发
/// </summary>
private void ListBanners_SelectedIndexChanged(object sender, EventArgs e)
{
if (ListBanners.SelectedIndex < 0) return;
ShowBanner(ListBanners.SelectedItem as GachaBanner3);
}
/// <summary>
/// 点击添加或更新卡池按钮时触发
/// </summary>
private void BtnAddOrUpdate_Click(object sender, EventArgs e)
{
var banner = ParseBanner();
var i = Banners.FindIndex(it => it.GachaType == banner.GachaType && it.ScheduleId == banner.ScheduleId);
if (i >= 0)
{
Banners[i] = banner;
ListBanners.Items[i] = banner;
}
else
{
Banners.Add(banner);
ListBanners.Items.Add(banner);
}
}
/// <summary>
/// 点击删除卡池按钮时触发
/// </summary>
private void BtnDelete_Click(object sender, EventArgs e)
{
if (ListBanners.SelectedIndex < 0) return;
if (MessageBox.Show(Resources.AskConfirmDeletion, Resources.Tips, MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{
Banners.RemoveAt(ListBanners.SelectedIndex);
ListBanners.Items.RemoveAt(ListBanners.SelectedIndex);
}
}
/// <summary>
/// 点击清空卡池按钮时触发
/// </summary>
private void BtnClear_Click(object sender, EventArgs e)
{
if (ListBanners.Items.Count < 0) return;
if (MessageBox.Show(Resources.AskConfirmDeletion, Resources.Tips, MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{
Banners.Clear();
ListBanners.Items.Clear();
}
}
#endregion
#region - -
private void InitCheckedListBoxs()
{
ListFallbackItems.BeginUpdate();
var a5 = ListFallbackItems.Groups["GroupA5"];
var a4 = ListFallbackItems.Groups["GroupA4"];
var w5 = ListFallbackItems.Groups["GroupW5"];
var w4 = ListFallbackItems.Groups["GroupW4"];
var w3 = ListFallbackItems.Groups["GroupW3"];
var avatars = GetAvatarsByColor("5")
.Select(it => new ListViewItem(new string[] { it.Item1.ToString(), it.Item2 }, a5) { ForeColor = Color.OrangeRed })
.Concat(GetAvatarsByColor("4")
.Select(it => new ListViewItem(new string[] { it.Item1.ToString(), it.Item2 }, a4) { ForeColor = Color.Purple }));
var weapons = GetWeaponsByColor("yellow")
.Select(it => new ListViewItem(new string[] { it.Item1.ToString(), it.Item2 }, w5) { ForeColor = Color.OrangeRed })
.Concat(GetWeaponsByColor("purple")
.Select(it => new ListViewItem(new string[] { it.Item1.ToString(), it.Item2 }, w4) { ForeColor = Color.Purple }))
.Concat(GetWeaponsByColor("blue")
.Select(it => new ListViewItem(new string[] { it.Item1.ToString(), it.Item2 }, w3) { ForeColor = Color.Blue }));
ListFallbackItems.Items.Clear();
ListFallbackItems.Items.AddRange(avatars.Concat(weapons).ToArray());
ListUpItems.BeginUpdate();
var ua5 = ListUpItems.Groups["GroupUpA5"];
var ua4 = ListUpItems.Groups["GroupUpA4"];
var uw5 = ListUpItems.Groups["GroupUpW5"];
var uw4 = ListUpItems.Groups["GroupUpW4"];
var upAvatars = GetAvatarsByColor("5")
.Select(it => new ListViewItem(new string[] { it.Item1.ToString(), it.Item2 }, ua5) { ForeColor = Color.OrangeRed })
.Concat(GetAvatarsByColor("4")
.Select(it => new ListViewItem(new string[] { it.Item1.ToString(), it.Item2 }, ua4) { ForeColor = Color.Purple }));
var upWeapons = GetWeaponsByColor("yellow")
.Select(it => new ListViewItem(new string[] { it.Item1.ToString(), it.Item2 }, uw5) { ForeColor = Color.OrangeRed })
.Concat(GetWeaponsByColor("purple")
.Select(it => new ListViewItem(new string[] { it.Item1.ToString(), it.Item2 }, uw4) { ForeColor = Color.Purple }));
ListUpItems.Items.Clear();
ListUpItems.Items.AddRange(upAvatars.Concat(upWeapons).ToArray());
ListFallbackItems.EndUpdate();
ListUpItems.EndUpdate();
}
private IEnumerable<(int, string)> GetAvatarsByColor(string color)
{
for (int i = 0; i < GameData.AvatarColors.Count; i++)
{
if (GameData.AvatarColors.Names[i] == color)
{
var id = GameData.AvatarColors.Ids[i];
var index = Array.IndexOf(GameData.Avatars.Ids, id);
if (index >= 0)
yield return (id, GameData.Avatars.Names[index]);
}
}
}
private IEnumerable<(int, string)> GetWeaponsByColor(string color)
{
for (int i = 0; i < GameData.WeaponColors.Count; i++)
{
if (GameData.WeaponColors.Names[i] == color)
{
var id = GameData.WeaponColors.Ids[i];
var index = Array.IndexOf(GameData.Weapons.Ids, id);
if (index >= 0)
yield return (id, GameData.Weapons.Names[index]);
}
}
}
private void InitItems(GachaBanner3 banner)
{
var f = banner.FallbackItems3
.Concat(banner.FallbackItems4Pool1)
.Concat(banner.FallbackItems4Pool2)
.Concat(banner.FallbackItems5Pool1)
.Concat(banner.FallbackItems5Pool2)
.ToArray();
foreach (ListViewItem item in ListFallbackItems.Items)
item.Checked = Array.IndexOf(f, int.Parse(item.Text)) >= 0;
var u = banner.RateUpItems4.Concat(banner.RateUpItems5).ToArray();
foreach (ListViewItem item in ListUpItems.Items)
item.Checked = Array.IndexOf(u, int.Parse(item.Text)) >= 0;
}
private IEnumerable<int> GetCheckedItems(ListView list, ListViewGroup group)
{
foreach (ListViewItem item in list.CheckedItems)
if (item.Group == group)
yield return int.Parse(item.Text);
}
#endregion - -
#region - -
private struct GachaWeight
{
public int Count;
public int Weight;
public GachaWeight(int count, int weight)
{
Count = count;
Weight = weight;
}
}
private void InitWeights(GachaBanner3 banner)
{
TxtWeight5.Text = '[' + string.Join(", ", SelectWeights(banner.Weights5).Select(w => $"[{w.Count}, {w.Weight}]")) + ']';
TxtWeight4.Text = '[' + string.Join(", ", SelectWeights(banner.Weights4).Select(w => $"[{w.Count}, {w.Weight}]")) + ']';
TxtPoolWeight5.Text = '[' + string.Join(", ", SelectWeights(banner.PoolBalanceWeights5).Select(w => $"[{w.Count}, {w.Weight}]")) + ']';
TxtPoolWeight4.Text = '[' + string.Join(", ", SelectWeights(banner.PoolBalanceWeights4).Select(w => $"[{w.Count}, {w.Weight}]")) + ']';
ChartWeights.SuspendLayout();
ChartWeights.Series[0].Points.Clear();
foreach (var w in SelectWeights(banner.Weights5))
ChartWeights.Series[0].Points.AddXY(w.Count, w.Weight / 100.0);
ChartWeights.Series[1].Points.Clear();
foreach (var w in SelectWeights(banner.Weights4))
ChartWeights.Series[1].Points.AddXY(w.Count, w.Weight / 100.0);
ChartWeights.ResumeLayout();
}
private IEnumerable<GachaWeight> SelectWeights(int[,] weights)
{
for (int i = 0; i < weights.GetLength(0); i++)
yield return new GachaWeight(weights[i, 0], weights[i, 1]);
}
private int[,] GetWeights(string weights)
{
return JsonConvert.DeserializeObject<int[,]>(weights);
}
#endregion - -
#region - -
/// <summary>
/// 显示指定卡池参数
/// </summary>
/// <param name="banner">卡池对象</param>
private void ShowBanner(GachaBanner3 banner)
{
try
{
NUDGachaType.Value = banner.GachaType;
NUDScheduleId.Value = banner.ScheduleId;
CmbBannerType.SelectedIndex = (int)banner.BannerType;
if (string.IsNullOrEmpty(banner.PrefabPath) || !int.TryParse(banner.PrefabPath.Substring("GachaShowPanel_A".Length, 3), out int prefabId))
CmbPrefab.SelectedIndex = -1;
else
CmbPrefab.SelectedIndex = Array.IndexOf(GameData.GachaBannerPrefabs.Ids, prefabId);
if (string.IsNullOrEmpty(banner.TitlePath) || !int.TryParse(banner.TitlePath.Substring("UI_GACHA_SHOW_PANEL_A".Length, 3), out int titleId))
CmbTitlePath.SelectedIndex = -1;
else
CmbTitlePath.SelectedIndex = Array.IndexOf(GameData.GachaBannerTitles.Ids, titleId);
RbCostItem224.Checked = banner.CostItemId == 224;
RbCostItem223.Checked = banner.CostItemId == 223;
NUDCostItemAmount1.Value = banner.CoseItemAmount;
NUDCostItemAmount10.Value = banner.CoseItemAmount10;
DTPBeginTime.Value = DateTimeOffset.FromUnixTimeSeconds(banner.BeginTime).DateTime;
DTPEndTime.Value = DateTimeOffset.FromUnixTimeSeconds(banner.EndTime).DateTime;
NUDSortId.Value = banner.SortId;
NUDEventChance5.Value = banner.EventChance5;
NUDEventChance4.Value = banner.EventChance4;
ChkRemoveC6FormPool.Checked = banner.RemoveC6FromPool;
ChkAutoStripRateUpFromFallback.Checked = banner.AutoStripRateUpFromFallback;
InitItems(banner);
InitWeights(banner);
}
catch (Exception ex)
{
MessageBox.Show("UI更新失败" + ex.Message, Resources.Error, MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
private GachaBanner3 ParseBanner()
{
if (CmbBannerType.SelectedIndex < 0)
{
MessageBox.Show("请选择奖池类型", Resources.Error, MessageBoxButtons.OK, MessageBoxIcon.Error);
return null;
}
if (CmbPrefab.SelectedIndex < 0 || CmbTitlePath.SelectedIndex < 0)
{
MessageBox.Show("请选择奖池预制", Resources.Error, MessageBoxButtons.OK, MessageBoxIcon.Error);
return null;
}
var prefabId = GameData.GachaBannerPrefabs.Ids[CmbPrefab.SelectedIndex];
var titleId = GameData.GachaBannerTitles.Ids[CmbTitlePath.SelectedIndex];
var banner = new GachaBanner3
{
GachaType = (int)NUDGachaType.Value,
ScheduleId = (int)NUDScheduleId.Value,
BannerType = (BannerType)CmbBannerType.SelectedIndex,
PrefabPath = $"GachaShowPanel_A{prefabId:000}",
PreviewPrefabPath = $"UI_Tab_GachaShowPanel_A{prefabId:000}",
TitlePath = $"UI_GACHA_SHOW_PANEL_A{titleId:000}_TITLE",
CostItemId = RbCostItem224.Checked ? 224 : 223,
CoseItemAmount = (int)NUDCostItemAmount1.Value,
CostItemId10 = RbCostItem224.Checked ? 224 : 223,
CoseItemAmount10 = (int)NUDCostItemAmount10.Value,
BeginTime = (int)new DateTimeOffset(DTPBeginTime.Value, TimeSpan.Zero).ToUnixTimeSeconds(),
EndTime = (int)new DateTimeOffset(DTPEndTime.Value, TimeSpan.Zero).ToUnixTimeSeconds(),
SortId = (int)NUDSortId.Value,
EventChance5 = (int)NUDEventChance5.Value,
EventChance4 = (int)NUDEventChance4.Value,
RateUpItems4 = GetCheckedItems(ListUpItems, ListUpItems.Groups["GroupUpA4"])
.Concat(GetCheckedItems(ListUpItems, ListUpItems.Groups["GroupUpW4"]))
.ToArray(),
RateUpItems5 = GetCheckedItems(ListUpItems, ListUpItems.Groups["GroupUpA5"])
.Concat(GetCheckedItems(ListUpItems, ListUpItems.Groups["GroupUpW5"]))
.ToArray(),
FallbackItems3 = GetCheckedItems(ListFallbackItems, ListFallbackItems.Groups["GroupA3"])
.Concat(GetCheckedItems(ListFallbackItems, ListFallbackItems.Groups["GroupW3"]))
.ToArray(),
FallbackItems4Pool1 = GetCheckedItems(ListFallbackItems, ListFallbackItems.Groups["GroupA4"]).ToArray(),
FallbackItems4Pool2 = GetCheckedItems(ListFallbackItems, ListFallbackItems.Groups["GroupW4"]).ToArray(),
FallbackItems5Pool1 = GetCheckedItems(ListFallbackItems, ListFallbackItems.Groups["GroupA5"]).ToArray(),
FallbackItems5Pool2 = GetCheckedItems(ListFallbackItems, ListFallbackItems.Groups["GroupW5"]).ToArray(),
RemoveC6FromPool = ChkRemoveC6FormPool.Checked,
AutoStripRateUpFromFallback = ChkAutoStripRateUpFromFallback.Checked,
Weights4 = GetWeights(TxtWeight4.Text),
Weights5 = GetWeights(TxtWeight5.Text),
PoolBalanceWeights4 = GetWeights(TxtPoolWeight4.Text),
PoolBalanceWeights5 = GetWeights(TxtPoolWeight5.Text),
};
return banner;
}
#endregion - -
}
}

View File

@@ -0,0 +1,430 @@
<?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>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="ChkAutoStripRateUpFromFallback.Location" type="System.Drawing.Point, System.Drawing">
<value>112, 287</value>
</data>
<data name="ChkAutoStripRateUpFromFallback.Size" type="System.Drawing.Size, System.Drawing">
<value>225, 21</value>
</data>
<data name="ChkAutoStripRateUpFromFallback.Text" xml:space="preserve">
<value>Auto Strip Rate Up From Fall back</value>
</data>
<data name="LblOptions.Location" type="System.Drawing.Point, System.Drawing">
<value>60, 260</value>
</data>
<data name="LblOptions.Size" type="System.Drawing.Size, System.Drawing">
<value>46, 17</value>
</data>
<data name="LblOptions.Text" xml:space="preserve">
<value>Optins</value>
</data>
<data name="ChkRemoveC6FormPool.Size" type="System.Drawing.Size, System.Drawing">
<value>157, 21</value>
</data>
<data name="ChkRemoveC6FormPool.Text" xml:space="preserve">
<value>Remove C6 Form Pool</value>
</data>
<data name="LnkOpenOldEditor.Size" type="System.Drawing.Size, System.Drawing">
<value>102, 17</value>
</data>
<data name="LnkOpenOldEditor.Text" xml:space="preserve">
<value>Open old editor</value>
</data>
<data name="LblEventChance4.Location" type="System.Drawing.Point, System.Drawing">
<value>200, 233</value>
</data>
<data name="LblEventChance4.Size" type="System.Drawing.Size, System.Drawing">
<value>96, 17</value>
</data>
<data name="LblEventChance4.Text" xml:space="preserve">
<value>Event Chance 4</value>
</data>
<data name="LblEventChance5.Location" type="System.Drawing.Point, System.Drawing">
<value>10, 233</value>
</data>
<data name="LblEventChance5.Size" type="System.Drawing.Size, System.Drawing">
<value>96, 17</value>
</data>
<data name="LblEventChance5.Text" xml:space="preserve">
<value>Event Chance 5</value>
</data>
<data name="LblSortId.Location" type="System.Drawing.Point, System.Drawing">
<value>72, 204</value>
</data>
<data name="LblSortId.Text" xml:space="preserve">
<value>Sort</value>
</data>
<data name="LblGachaTypeTip.Size" type="System.Drawing.Size, System.Drawing">
<value>123, 17</value>
</data>
<data name="LblGachaTypeTip.Text" xml:space="preserve">
<value>Increment from 400</value>
</data>
<data name="LblEndTime.Size" type="System.Drawing.Size, System.Drawing">
<value>62, 17</value>
</data>
<data name="LblEndTime.Text" xml:space="preserve">
<value>End Time</value>
</data>
<data name="LblBeginTime.Location" type="System.Drawing.Point, System.Drawing">
<value>32, 175</value>
</data>
<data name="LblBeginTime.Size" type="System.Drawing.Size, System.Drawing">
<value>73, 17</value>
</data>
<data name="LblBeginTime.Text" xml:space="preserve">
<value>Begin Time</value>
</data>
<data name="LblScheduleIdTip.Size" type="System.Drawing.Size, System.Drawing">
<value>49, 17</value>
</data>
<data name="LblScheduleIdTip.Text" xml:space="preserve">
<value>Unique</value>
</data>
<data name="CmbBannerType.Items" xml:space="preserve">
<value>Standard Wish</value>
</data>
<data name="CmbBannerType.Items1" xml:space="preserve">
<value>Character Event Wish</value>
</data>
<data name="CmbBannerType.Items2" xml:space="preserve">
<value>Weapon Event Wish</value>
</data>
<data name="LblSortIdTip.Size" type="System.Drawing.Size, System.Drawing">
<value>76, 17</value>
</data>
<data name="LblSortIdTip.Text" xml:space="preserve">
<value>Show order</value>
</data>
<data name="LblBannerType.Location" type="System.Drawing.Point, System.Drawing">
<value>25, 87</value>
</data>
<data name="LblBannerType.Size" type="System.Drawing.Size, System.Drawing">
<value>81, 17</value>
</data>
<data name="LblBannerType.Text" xml:space="preserve">
<value>Banner Type</value>
</data>
<data name="RbCostItem224.Size" type="System.Drawing.Size, System.Drawing">
<value>104, 21</value>
</data>
<data name="RbCostItem224.Text" xml:space="preserve">
<value>Acquaint Fate</value>
</data>
<data name="LblCostItem.Location" type="System.Drawing.Point, System.Drawing">
<value>41, 148</value>
</data>
<data name="LblCostItem.Size" type="System.Drawing.Size, System.Drawing">
<value>64, 17</value>
</data>
<data name="LblCostItem.Text" xml:space="preserve">
<value>Cost Item</value>
</data>
<data name="LblPrefabPath.Location" type="System.Drawing.Point, System.Drawing">
<value>59, 118</value>
</data>
<data name="LblPrefabPath.Size" type="System.Drawing.Size, System.Drawing">
<value>46, 17</value>
</data>
<data name="LblPrefabPath.Text" xml:space="preserve">
<value>Prefab</value>
</data>
<data name="RbCostItem223.Location" type="System.Drawing.Point, System.Drawing">
<value>222, 146</value>
</data>
<data name="RbCostItem223.Size" type="System.Drawing.Size, System.Drawing">
<value>119, 21</value>
</data>
<data name="RbCostItem223.Text" xml:space="preserve">
<value>Intertwined Fate</value>
</data>
<data name="GrpBannerValues.Text" xml:space="preserve">
<value>Banner</value>
</data>
<data name="GrpFallbackPool.Text" xml:space="preserve">
<value>Fallback Pool</value>
</data>
<data name="ListFallbackItems.Groups" mimetype="application/x-microsoft.net.object.binary.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACJTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5MaXN0Vmlld0dyb3VwBAAAAAZIZWFkZXIPSGVhZGVyQWxpZ25tZW50A1Rh
ZwROYW1lAQQCAShTeXN0ZW0uV2luZG93cy5Gb3Jtcy5Ib3Jpem9udGFsQWxpZ25tZW50AgAAAAIAAAAG
AwAAAA01LXN0YXIgYXZhdGFyBfz///8oU3lzdGVtLldpbmRvd3MuRm9ybXMuSG9yaXpvbnRhbEFsaWdu
bWVudAEAAAAHdmFsdWVfXwAIAgAAAAAAAAAKBgUAAAAHR3JvdXBBNQs=
</value>
</data>
<data name="ListFallbackItems.Groups1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACJTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5MaXN0Vmlld0dyb3VwBAAAAAZIZWFkZXIPSGVhZGVyQWxpZ25tZW50A1Rh
ZwROYW1lAQQCAShTeXN0ZW0uV2luZG93cy5Gb3Jtcy5Ib3Jpem9udGFsQWxpZ25tZW50AgAAAAIAAAAG
AwAAAA01LXN0YXIgd2VhcG9uBfz///8oU3lzdGVtLldpbmRvd3MuRm9ybXMuSG9yaXpvbnRhbEFsaWdu
bWVudAEAAAAHdmFsdWVfXwAIAgAAAAAAAAAKBgUAAAAHR3JvdXBXNQs=
</value>
</data>
<data name="ListFallbackItems.Groups2" mimetype="application/x-microsoft.net.object.binary.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACJTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5MaXN0Vmlld0dyb3VwBAAAAAZIZWFkZXIPSGVhZGVyQWxpZ25tZW50A1Rh
ZwROYW1lAQQCAShTeXN0ZW0uV2luZG93cy5Gb3Jtcy5Ib3Jpem9udGFsQWxpZ25tZW50AgAAAAIAAAAG
AwAAAA00LXN0YXIgYXZhdGFyBfz///8oU3lzdGVtLldpbmRvd3MuRm9ybXMuSG9yaXpvbnRhbEFsaWdu
bWVudAEAAAAHdmFsdWVfXwAIAgAAAAAAAAAKBgUAAAAHR3JvdXBBNAs=
</value>
</data>
<data name="ListFallbackItems.Groups3" mimetype="application/x-microsoft.net.object.binary.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACJTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5MaXN0Vmlld0dyb3VwBAAAAAZIZWFkZXIPSGVhZGVyQWxpZ25tZW50A1Rh
ZwROYW1lAQQCAShTeXN0ZW0uV2luZG93cy5Gb3Jtcy5Ib3Jpem9udGFsQWxpZ25tZW50AgAAAAIAAAAG
AwAAAA00LXN0YXIgd2VhcG9uBfz///8oU3lzdGVtLldpbmRvd3MuRm9ybXMuSG9yaXpvbnRhbEFsaWdu
bWVudAEAAAAHdmFsdWVfXwAIAgAAAAAAAAAKBgUAAAAHR3JvdXBXNAs=
</value>
</data>
<data name="ListFallbackItems.Groups4" mimetype="application/x-microsoft.net.object.binary.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACJTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5MaXN0Vmlld0dyb3VwBAAAAAZIZWFkZXIPSGVhZGVyQWxpZ25tZW50A1Rh
ZwROYW1lAQQCAShTeXN0ZW0uV2luZG93cy5Gb3Jtcy5Ib3Jpem9udGFsQWxpZ25tZW50AgAAAAIAAAAG
AwAAAA0zLXN0YXIgd2VhcG9uBfz///8oU3lzdGVtLldpbmRvd3MuRm9ybXMuSG9yaXpvbnRhbEFsaWdu
bWVudAEAAAAHdmFsdWVfXwAIAgAAAAAAAAAKBgUAAAAHR3JvdXBXMws=
</value>
</data>
<data name="GrpUpPool.Text" xml:space="preserve">
<value>Up Pool</value>
</data>
<data name="ListUpItems.Groups" mimetype="application/x-microsoft.net.object.binary.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACJTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5MaXN0Vmlld0dyb3VwBAAAAAZIZWFkZXIPSGVhZGVyQWxpZ25tZW50A1Rh
ZwROYW1lAQQCAShTeXN0ZW0uV2luZG93cy5Gb3Jtcy5Ib3Jpem9udGFsQWxpZ25tZW50AgAAAAIAAAAG
AwAAAA01LXN0YXIgYXZhdGFyBfz///8oU3lzdGVtLldpbmRvd3MuRm9ybXMuSG9yaXpvbnRhbEFsaWdu
bWVudAEAAAAHdmFsdWVfXwAIAgAAAAAAAAAKBgUAAAAJR3JvdXBVcEE1Cw==
</value>
</data>
<data name="ListUpItems.Groups1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACJTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5MaXN0Vmlld0dyb3VwBAAAAAZIZWFkZXIPSGVhZGVyQWxpZ25tZW50A1Rh
ZwROYW1lAQQCAShTeXN0ZW0uV2luZG93cy5Gb3Jtcy5Ib3Jpem9udGFsQWxpZ25tZW50AgAAAAIAAAAG
AwAAAA01LXN0YXIgd2VhcG9uBfz///8oU3lzdGVtLldpbmRvd3MuRm9ybXMuSG9yaXpvbnRhbEFsaWdu
bWVudAEAAAAHdmFsdWVfXwAIAgAAAAAAAAAKBgUAAAAJR3JvdXBVcFc1Cw==
</value>
</data>
<data name="ListUpItems.Groups2" mimetype="application/x-microsoft.net.object.binary.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACJTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5MaXN0Vmlld0dyb3VwBAAAAAZIZWFkZXIPSGVhZGVyQWxpZ25tZW50A1Rh
ZwROYW1lAQQCAShTeXN0ZW0uV2luZG93cy5Gb3Jtcy5Ib3Jpem9udGFsQWxpZ25tZW50AgAAAAIAAAAG
AwAAAA00LXN0YXIgYXZhdGFyBfz///8oU3lzdGVtLldpbmRvd3MuRm9ybXMuSG9yaXpvbnRhbEFsaWdu
bWVudAEAAAAHdmFsdWVfXwAIAgAAAAAAAAAKBgUAAAAJR3JvdXBVcEE0Cw==
</value>
</data>
<data name="ListUpItems.Groups3" mimetype="application/x-microsoft.net.object.binary.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACJTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5MaXN0Vmlld0dyb3VwBAAAAAZIZWFkZXIPSGVhZGVyQWxpZ25tZW50A1Rh
ZwROYW1lAQQCAShTeXN0ZW0uV2luZG93cy5Gb3Jtcy5Ib3Jpem9udGFsQWxpZ25tZW50AgAAAAIAAAAG
AwAAAA00LXN0YXIgd2VhcG9uBfz///8oU3lzdGVtLldpbmRvd3MuRm9ybXMuSG9yaXpvbnRhbEFsaWdu
bWVudAEAAAAHdmFsdWVfXwAIAgAAAAAAAAAKBgUAAAAJR3JvdXBVcFc0Cw==
</value>
</data>
<data name="BtnGen.Size" type="System.Drawing.Size, System.Drawing">
<value>85, 23</value>
</data>
<data name="BtnGen.Text" xml:space="preserve">
<value>Gen Json</value>
</data>
<data name="BtnParse.Location" type="System.Drawing.Point, System.Drawing">
<value>409, 201</value>
</data>
<data name="BtnParse.Size" type="System.Drawing.Size, System.Drawing">
<value>85, 23</value>
</data>
<data name="BtnParse.Text" xml:space="preserve">
<value>Parse Json</value>
</data>
<data name="GrpWeights.Text" xml:space="preserve">
<value>Gacha weights</value>
</data>
<data name="LnkWeightHelp.Location" type="System.Drawing.Point, System.Drawing">
<value>399, 0</value>
</data>
<data name="LnkWeightHelp.Size" type="System.Drawing.Size, System.Drawing">
<value>35, 17</value>
</data>
<data name="LnkWeightHelp.Text" xml:space="preserve">
<value>Help</value>
</data>
<data name="LblWeight4.Location" type="System.Drawing.Point, System.Drawing">
<value>40, 61</value>
</data>
<data name="LblWeight4.Size" type="System.Drawing.Size, System.Drawing">
<value>66, 17</value>
</data>
<data name="LblWeight4.Text" xml:space="preserve">
<value>Weights 4</value>
</data>
<data name="LblWeight5.Location" type="System.Drawing.Point, System.Drawing">
<value>40, 32</value>
</data>
<data name="LblWeight5.Size" type="System.Drawing.Size, System.Drawing">
<value>66, 17</value>
</data>
<data name="LblWeight5.Text" xml:space="preserve">
<value>Weights 5</value>
</data>
<data name="GrpBalance.Text" xml:space="preserve">
<value>Character and weapon balance (only mixed pools work)</value>
</data>
<data name="LblPoolWeight4.Location" type="System.Drawing.Point, System.Drawing">
<value>16, 61</value>
</data>
<data name="LblPoolWeight4.Size" type="System.Drawing.Size, System.Drawing">
<value>90, 17</value>
</data>
<data name="LblPoolWeight4.Text" xml:space="preserve">
<value>Pool Weight 4</value>
</data>
<data name="LblPoolWeight5.Location" type="System.Drawing.Point, System.Drawing">
<value>16, 32</value>
</data>
<data name="LblPoolWeight5.Size" type="System.Drawing.Size, System.Drawing">
<value>90, 17</value>
</data>
<data name="LblPoolWeight5.Text" xml:space="preserve">
<value>Pool Weight 5</value>
</data>
<data name="GrpWeightChart.Text" xml:space="preserve">
<value>Weight Chart</value>
</data>
<data name="$this.Text" xml:space="preserve">
<value>Gacha Banner Editor</value>
</data>
</root>

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,454 @@
<?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>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="ChkAutoStripRateUpFromFallback.Location" type="System.Drawing.Point, System.Drawing">
<value>112, 287</value>
</data>
<data name="ChkAutoStripRateUpFromFallback.Size" type="System.Drawing.Size, System.Drawing">
<value>288, 21</value>
</data>
<data name="ChkAutoStripRateUpFromFallback.Text" xml:space="preserve">
<value>Авто возврат шанса выпадения с баннера</value>
</data>
<data name="LblOptions.Location" type="System.Drawing.Point, System.Drawing">
<value>56, 261</value>
</data>
<data name="LblOptions.Size" type="System.Drawing.Size, System.Drawing">
<value>50, 17</value>
</data>
<data name="LblOptions.Text" xml:space="preserve">
<value>Опции</value>
</data>
<data name="ChkRemoveC6FormPool.Size" type="System.Drawing.Size, System.Drawing">
<value>157, 21</value>
</data>
<data name="ChkRemoveC6FormPool.Text" xml:space="preserve">
<value>Удалить пул форм C6</value>
</data>
<data name="LnkOpenOldEditor.Size" type="System.Drawing.Size, System.Drawing">
<value>167, 17</value>
</data>
<data name="LnkOpenOldEditor.Text" xml:space="preserve">
<value>Открыть старый редактор</value>
</data>
<data name="LblGachaType.Location" type="System.Drawing.Point, System.Drawing">
<value>43, 28</value>
</data>
<data name="LblGachaType.Size" type="System.Drawing.Size, System.Drawing">
<value>63, 17</value>
</data>
<data name="LblGachaType.Text" xml:space="preserve">
<value>Тип Гачи</value>
</data>
<data name="LblEventChance4.Location" type="System.Drawing.Point, System.Drawing">
<value>210, 233</value>
</data>
<data name="LblEventChance4.Size" type="System.Drawing.Size, System.Drawing">
<value>86, 17</value>
</data>
<data name="LblEventChance4.Text" xml:space="preserve">
<value>Шанс соб. 4*</value>
</data>
<data name="LblEventChance5.Location" type="System.Drawing.Point, System.Drawing">
<value>20, 233</value>
</data>
<data name="LblEventChance5.Size" type="System.Drawing.Size, System.Drawing">
<value>86, 17</value>
</data>
<data name="LblEventChance5.Text" xml:space="preserve">
<value>Шанс соб. 5*</value>
</data>
<data name="LblSortId.Location" type="System.Drawing.Point, System.Drawing">
<value>66, 204</value>
</data>
<data name="LblSortId.Size" type="System.Drawing.Size, System.Drawing">
<value>40, 17</value>
</data>
<data name="LblSortId.Text" xml:space="preserve">
<value>Сорт.</value>
</data>
<data name="LblGachaTypeTip.Size" type="System.Drawing.Size, System.Drawing">
<value>116, 17</value>
</data>
<data name="LblGachaTypeTip.Text" xml:space="preserve">
<value>Увеличение с 400</value>
</data>
<data name="LblEndTime.Location" type="System.Drawing.Point, System.Drawing">
<value>234, 176</value>
</data>
<data name="LblEndTime.Size" type="System.Drawing.Size, System.Drawing">
<value>47, 17</value>
</data>
<data name="LblEndTime.Text" xml:space="preserve">
<value>Конец</value>
</data>
<data name="LblScheduleId.Location" type="System.Drawing.Point, System.Drawing">
<value>8, 57</value>
</data>
<data name="LblScheduleId.Size" type="System.Drawing.Size, System.Drawing">
<value>98, 17</value>
</data>
<data name="LblScheduleId.Text" xml:space="preserve">
<value>ID расписания</value>
</data>
<data name="LblBeginTime.Location" type="System.Drawing.Point, System.Drawing">
<value>53, 176</value>
</data>
<data name="LblBeginTime.Size" type="System.Drawing.Size, System.Drawing">
<value>53, 17</value>
</data>
<data name="LblBeginTime.Text" xml:space="preserve">
<value>Начало</value>
</data>
<data name="LblScheduleIdTip.Size" type="System.Drawing.Size, System.Drawing">
<value>84, 17</value>
</data>
<data name="LblScheduleIdTip.Text" xml:space="preserve">
<value>Уникальный</value>
</data>
<data name="CmbBannerType.Items" xml:space="preserve">
<value>Стандартная Молитва</value>
</data>
<data name="CmbBannerType.Items1" xml:space="preserve">
<value>Молитва события персонажа</value>
</data>
<data name="CmbBannerType.Items2" xml:space="preserve">
<value>Молитва события с оружием</value>
</data>
<data name="LblSortIdTip.Size" type="System.Drawing.Size, System.Drawing">
<value>121, 17</value>
</data>
<data name="LblSortIdTip.Text" xml:space="preserve">
<value>Показать порядок</value>
</data>
<data name="LblBannerType.Location" type="System.Drawing.Point, System.Drawing">
<value>18, 87</value>
</data>
<data name="LblBannerType.Size" type="System.Drawing.Size, System.Drawing">
<value>88, 17</value>
</data>
<data name="LblBannerType.Text" xml:space="preserve">
<value>Тип баннера</value>
</data>
<data name="RbCostItem224.Size" type="System.Drawing.Size, System.Drawing">
<value>116, 21</value>
</data>
<data name="RbCostItem224.Text" xml:space="preserve">
<value>Судьбоносные</value>
</data>
<data name="LblCostItem.Location" type="System.Drawing.Point, System.Drawing">
<value>34, 148</value>
</data>
<data name="LblCostItem.Size" type="System.Drawing.Size, System.Drawing">
<value>72, 17</value>
</data>
<data name="LblCostItem.Text" xml:space="preserve">
<value>Стоимость</value>
</data>
<data name="LblPrefabPath.Location" type="System.Drawing.Point, System.Drawing">
<value>47, 118</value>
</data>
<data name="LblPrefabPath.Size" type="System.Drawing.Size, System.Drawing">
<value>59, 17</value>
</data>
<data name="LblPrefabPath.Text" xml:space="preserve">
<value>Готовый</value>
</data>
<data name="RbCostItem223.Location" type="System.Drawing.Point, System.Drawing">
<value>234, 146</value>
</data>
<data name="RbCostItem223.Size" type="System.Drawing.Size, System.Drawing">
<value>141, 21</value>
</data>
<data name="RbCostItem223.Text" xml:space="preserve">
<value>Переплетающиеся</value>
</data>
<data name="GrpBannerValues.Text" xml:space="preserve">
<value>Баннер</value>
</data>
<data name="ListFallbackItems.Groups" mimetype="application/x-microsoft.net.object.binary.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACJTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5MaXN0Vmlld0dyb3VwBAAAAAZIZWFkZXIPSGVhZGVyQWxpZ25tZW50A1Rh
ZwROYW1lAQQCAShTeXN0ZW0uV2luZG93cy5Gb3Jtcy5Ib3Jpem9udGFsQWxpZ25tZW50AgAAAAIAAAAG
AwAAAA01LXN0YXIgYXZhdGFyBfz///8oU3lzdGVtLldpbmRvd3MuRm9ybXMuSG9yaXpvbnRhbEFsaWdu
bWVudAEAAAAHdmFsdWVfXwAIAgAAAAAAAAAKBgUAAAAHR3JvdXBBNQs=
</value>
</data>
<data name="ListFallbackItems.Groups1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACJTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5MaXN0Vmlld0dyb3VwBAAAAAZIZWFkZXIPSGVhZGVyQWxpZ25tZW50A1Rh
ZwROYW1lAQQCAShTeXN0ZW0uV2luZG93cy5Gb3Jtcy5Ib3Jpem9udGFsQWxpZ25tZW50AgAAAAIAAAAG
AwAAAA01LXN0YXIgd2VhcG9uBfz///8oU3lzdGVtLldpbmRvd3MuRm9ybXMuSG9yaXpvbnRhbEFsaWdu
bWVudAEAAAAHdmFsdWVfXwAIAgAAAAAAAAAKBgUAAAAHR3JvdXBXNQs=
</value>
</data>
<data name="ListFallbackItems.Groups2" mimetype="application/x-microsoft.net.object.binary.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACJTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5MaXN0Vmlld0dyb3VwBAAAAAZIZWFkZXIPSGVhZGVyQWxpZ25tZW50A1Rh
ZwROYW1lAQQCAShTeXN0ZW0uV2luZG93cy5Gb3Jtcy5Ib3Jpem9udGFsQWxpZ25tZW50AgAAAAIAAAAG
AwAAAA00LXN0YXIgYXZhdGFyBfz///8oU3lzdGVtLldpbmRvd3MuRm9ybXMuSG9yaXpvbnRhbEFsaWdu
bWVudAEAAAAHdmFsdWVfXwAIAgAAAAAAAAAKBgUAAAAHR3JvdXBBNAs=
</value>
</data>
<data name="ListFallbackItems.Groups3" mimetype="application/x-microsoft.net.object.binary.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACJTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5MaXN0Vmlld0dyb3VwBAAAAAZIZWFkZXIPSGVhZGVyQWxpZ25tZW50A1Rh
ZwROYW1lAQQCAShTeXN0ZW0uV2luZG93cy5Gb3Jtcy5Ib3Jpem9udGFsQWxpZ25tZW50AgAAAAIAAAAG
AwAAAA00LXN0YXIgd2VhcG9uBfz///8oU3lzdGVtLldpbmRvd3MuRm9ybXMuSG9yaXpvbnRhbEFsaWdu
bWVudAEAAAAHdmFsdWVfXwAIAgAAAAAAAAAKBgUAAAAHR3JvdXBXNAs=
</value>
</data>
<data name="ListFallbackItems.Groups4" mimetype="application/x-microsoft.net.object.binary.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACJTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5MaXN0Vmlld0dyb3VwBAAAAAZIZWFkZXIPSGVhZGVyQWxpZ25tZW50A1Rh
ZwROYW1lAQQCAShTeXN0ZW0uV2luZG93cy5Gb3Jtcy5Ib3Jpem9udGFsQWxpZ25tZW50AgAAAAIAAAAG
AwAAAA0zLXN0YXIgd2VhcG9uBfz///8oU3lzdGVtLldpbmRvd3MuRm9ybXMuSG9yaXpvbnRhbEFsaWdu
bWVudAEAAAAHdmFsdWVfXwAIAgAAAAAAAAAKBgUAAAAHR3JvdXBXMws=
</value>
</data>
<data name="GrpFallbackPool.Text" xml:space="preserve">
<value>Запасной Пул</value>
</data>
<data name="ListUpItems.Groups" mimetype="application/x-microsoft.net.object.binary.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACJTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5MaXN0Vmlld0dyb3VwBAAAAAZIZWFkZXIPSGVhZGVyQWxpZ25tZW50A1Rh
ZwROYW1lAQQCAShTeXN0ZW0uV2luZG93cy5Gb3Jtcy5Ib3Jpem9udGFsQWxpZ25tZW50AgAAAAIAAAAG
AwAAAA01LXN0YXIgYXZhdGFyBfz///8oU3lzdGVtLldpbmRvd3MuRm9ybXMuSG9yaXpvbnRhbEFsaWdu
bWVudAEAAAAHdmFsdWVfXwAIAgAAAAAAAAAKBgUAAAAJR3JvdXBVcEE1Cw==
</value>
</data>
<data name="ListUpItems.Groups1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACJTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5MaXN0Vmlld0dyb3VwBAAAAAZIZWFkZXIPSGVhZGVyQWxpZ25tZW50A1Rh
ZwROYW1lAQQCAShTeXN0ZW0uV2luZG93cy5Gb3Jtcy5Ib3Jpem9udGFsQWxpZ25tZW50AgAAAAIAAAAG
AwAAAA01LXN0YXIgd2VhcG9uBfz///8oU3lzdGVtLldpbmRvd3MuRm9ybXMuSG9yaXpvbnRhbEFsaWdu
bWVudAEAAAAHdmFsdWVfXwAIAgAAAAAAAAAKBgUAAAAJR3JvdXBVcFc1Cw==
</value>
</data>
<data name="ListUpItems.Groups2" mimetype="application/x-microsoft.net.object.binary.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACJTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5MaXN0Vmlld0dyb3VwBAAAAAZIZWFkZXIPSGVhZGVyQWxpZ25tZW50A1Rh
ZwROYW1lAQQCAShTeXN0ZW0uV2luZG93cy5Gb3Jtcy5Ib3Jpem9udGFsQWxpZ25tZW50AgAAAAIAAAAG
AwAAAA00LXN0YXIgYXZhdGFyBfz///8oU3lzdGVtLldpbmRvd3MuRm9ybXMuSG9yaXpvbnRhbEFsaWdu
bWVudAEAAAAHdmFsdWVfXwAIAgAAAAAAAAAKBgUAAAAJR3JvdXBVcEE0Cw==
</value>
</data>
<data name="ListUpItems.Groups3" mimetype="application/x-microsoft.net.object.binary.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACJTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5MaXN0Vmlld0dyb3VwBAAAAAZIZWFkZXIPSGVhZGVyQWxpZ25tZW50A1Rh
ZwROYW1lAQQCAShTeXN0ZW0uV2luZG93cy5Gb3Jtcy5Ib3Jpem9udGFsQWxpZ25tZW50AgAAAAIAAAAG
AwAAAA00LXN0YXIgd2VhcG9uBfz///8oU3lzdGVtLldpbmRvd3MuRm9ybXMuSG9yaXpvbnRhbEFsaWdu
bWVudAEAAAAHdmFsdWVfXwAIAgAAAAAAAAAKBgUAAAAJR3JvdXBVcFc0Cw==
</value>
</data>
<data name="GrpUpPool.Text" xml:space="preserve">
<value>Верхний Пул</value>
</data>
<data name="BtnGen.Size" type="System.Drawing.Size, System.Drawing">
<value>85, 23</value>
</data>
<data name="BtnGen.Text" xml:space="preserve">
<value>Сген. Json</value>
</data>
<data name="BtnParse.Location" type="System.Drawing.Point, System.Drawing">
<value>409, 201</value>
</data>
<data name="BtnParse.Size" type="System.Drawing.Size, System.Drawing">
<value>85, 23</value>
</data>
<data name="BtnParse.Text" xml:space="preserve">
<value>Загр. Json</value>
</data>
<data name="LnkWeightHelp.Location" type="System.Drawing.Point, System.Drawing">
<value>375, 0</value>
</data>
<data name="LnkWeightHelp.Size" type="System.Drawing.Size, System.Drawing">
<value>60, 17</value>
</data>
<data name="LnkWeightHelp.Text" xml:space="preserve">
<value>Помощь</value>
</data>
<data name="LblWeight4.Location" type="System.Drawing.Point, System.Drawing">
<value>54, 61</value>
</data>
<data name="LblWeight4.Size" type="System.Drawing.Size, System.Drawing">
<value>52, 17</value>
</data>
<data name="LblWeight4.Text" xml:space="preserve">
<value>Веса 5*</value>
</data>
<data name="LblWeight5.Location" type="System.Drawing.Point, System.Drawing">
<value>54, 32</value>
</data>
<data name="LblWeight5.Size" type="System.Drawing.Size, System.Drawing">
<value>52, 17</value>
</data>
<data name="LblWeight5.Text" xml:space="preserve">
<value>Веса 5*</value>
</data>
<data name="GrpWeights.Text" xml:space="preserve">
<value>Gacha Веса</value>
</data>
<data name="LblPoolWeight4.Location" type="System.Drawing.Point, System.Drawing">
<value>28, 61</value>
</data>
<data name="LblPoolWeight4.Size" type="System.Drawing.Size, System.Drawing">
<value>78, 17</value>
</data>
<data name="LblPoolWeight4.Text" xml:space="preserve">
<value>Пул Веса 4*</value>
</data>
<data name="LblPoolWeight5.Location" type="System.Drawing.Point, System.Drawing">
<value>28, 29</value>
</data>
<data name="LblPoolWeight5.Size" type="System.Drawing.Size, System.Drawing">
<value>78, 17</value>
</data>
<data name="LblPoolWeight5.Text" xml:space="preserve">
<value>Пул Веса 5*</value>
</data>
<data name="GrpBalance.Text" xml:space="preserve">
<value>Баланс персонажа и оружия (работают только смешанные пулы)</value>
</data>
<data name="GrpWeightChart.Text" xml:space="preserve">
<value>Таблица веса</value>
</data>
<data name="$this.Text" xml:space="preserve">
<value>Редактор баннеров Gacha</value>
</data>
</root>

View File

@@ -0,0 +1,288 @@
<?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>
<data name="ChkAutoStripRateUpFromFallback.Text" xml:space="preserve">
<value>自動避免UP被基礎抽中</value>
</data>
<data name="LblOptions.Text" xml:space="preserve">
<value>選項</value>
</data>
<data name="LnkOpenOldEditor.Text" xml:space="preserve">
<value>打開舊版本編輯器</value>
</data>
<data name="LblEventChance4.Text" xml:space="preserve">
<value>4星活動爆率</value>
</data>
<data name="LblEventChance5.Text" xml:space="preserve">
<value>5星活動爆率</value>
</data>
<data name="LblSortId.Text" xml:space="preserve">
<value>順序</value>
</data>
<data name="LblGachaTypeTip.Text" xml:space="preserve">
<value>從400開始順序遞增</value>
</data>
<data name="LblEndTime.Text" xml:space="preserve">
<value>結束時間</value>
</data>
<data name="LblBeginTime.Text" xml:space="preserve">
<value>開始時間</value>
</data>
<data name="LblSortIdTip.Text" xml:space="preserve">
<value>客戶端中顯示的順序</value>
</data>
<data name="LblBannerType.Text" xml:space="preserve">
<value>獎池類型</value>
</data>
<data name="RbCostItem224.Text" xml:space="preserve">
<value>相遇之緣</value>
</data>
<data name="LblCostItem.Text" xml:space="preserve">
<value>祈願道具</value>
</data>
<data name="LblPrefabPath.Text" xml:space="preserve">
<value>預製</value>
</data>
<data name="RbCostItem223.Text" xml:space="preserve">
<value>糾纏之緣</value>
</data>
<data name="GrpBannerValues.Text" xml:space="preserve">
<value>卡池參數</value>
</data>
<data name="GrpFallbackPool.Text" xml:space="preserve">
<value>基礎池</value>
</data>
<data name="ListFallbackItems.Groups" mimetype="application/x-microsoft.net.object.binary.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACJTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5MaXN0Vmlld0dyb3VwBAAAAAZIZWFkZXIPSGVhZGVyQWxpZ25tZW50A1Rh
ZwROYW1lAQQCAShTeXN0ZW0uV2luZG93cy5Gb3Jtcy5Ib3Jpem9udGFsQWxpZ25tZW50AgAAAAIAAAAG
AwAAAAo15pif6KeS6ImyBfz///8oU3lzdGVtLldpbmRvd3MuRm9ybXMuSG9yaXpvbnRhbEFsaWdubWVu
dAEAAAAHdmFsdWVfXwAIAgAAAAAAAAAKBgUAAAAHR3JvdXBBNQs=
</value>
</data>
<data name="ListFallbackItems.Groups1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACJTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5MaXN0Vmlld0dyb3VwBAAAAAZIZWFkZXIPSGVhZGVyQWxpZ25tZW50A1Rh
ZwROYW1lAQQCAShTeXN0ZW0uV2luZG93cy5Gb3Jtcy5Ib3Jpem9udGFsQWxpZ25tZW50AgAAAAIAAAAG
AwAAAAo15pif5q2m5ZmoBfz///8oU3lzdGVtLldpbmRvd3MuRm9ybXMuSG9yaXpvbnRhbEFsaWdubWVu
dAEAAAAHdmFsdWVfXwAIAgAAAAAAAAAKBgUAAAAHR3JvdXBXNQs=
</value>
</data>
<data name="ListFallbackItems.Groups2" mimetype="application/x-microsoft.net.object.binary.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACJTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5MaXN0Vmlld0dyb3VwBAAAAAZIZWFkZXIPSGVhZGVyQWxpZ25tZW50A1Rh
ZwROYW1lAQQCAShTeXN0ZW0uV2luZG93cy5Gb3Jtcy5Ib3Jpem9udGFsQWxpZ25tZW50AgAAAAIAAAAG
AwAAAAo05pif6KeS6ImyBfz///8oU3lzdGVtLldpbmRvd3MuRm9ybXMuSG9yaXpvbnRhbEFsaWdubWVu
dAEAAAAHdmFsdWVfXwAIAgAAAAAAAAAKBgUAAAAHR3JvdXBBNAs=
</value>
</data>
<data name="ListFallbackItems.Groups3" mimetype="application/x-microsoft.net.object.binary.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACJTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5MaXN0Vmlld0dyb3VwBAAAAAZIZWFkZXIPSGVhZGVyQWxpZ25tZW50A1Rh
ZwROYW1lAQQCAShTeXN0ZW0uV2luZG93cy5Gb3Jtcy5Ib3Jpem9udGFsQWxpZ25tZW50AgAAAAIAAAAG
AwAAAAo05pif5q2m5ZmoBfz///8oU3lzdGVtLldpbmRvd3MuRm9ybXMuSG9yaXpvbnRhbEFsaWdubWVu
dAEAAAAHdmFsdWVfXwAIAgAAAAAAAAAKBgUAAAAHR3JvdXBXNAs=
</value>
</data>
<data name="ListFallbackItems.Groups4" mimetype="application/x-microsoft.net.object.binary.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACJTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5MaXN0Vmlld0dyb3VwBAAAAAZIZWFkZXIPSGVhZGVyQWxpZ25tZW50A1Rh
ZwROYW1lAQQCAShTeXN0ZW0uV2luZG93cy5Gb3Jtcy5Ib3Jpem9udGFsQWxpZ25tZW50AgAAAAIAAAAG
AwAAAAoz5pif5q2m5ZmoBfz///8oU3lzdGVtLldpbmRvd3MuRm9ybXMuSG9yaXpvbnRhbEFsaWdubWVu
dAEAAAAHdmFsdWVfXwAIAgAAAAAAAAAKBgUAAAAHR3JvdXBXMws=
</value>
</data>
<data name="ListUpItems.Groups" mimetype="application/x-microsoft.net.object.binary.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACJTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5MaXN0Vmlld0dyb3VwBAAAAAZIZWFkZXIPSGVhZGVyQWxpZ25tZW50A1Rh
ZwROYW1lAQQCAShTeXN0ZW0uV2luZG93cy5Gb3Jtcy5Ib3Jpem9udGFsQWxpZ25tZW50AgAAAAIAAAAG
AwAAAAo15pif6KeS6ImyBfz///8oU3lzdGVtLldpbmRvd3MuRm9ybXMuSG9yaXpvbnRhbEFsaWdubWVu
dAEAAAAHdmFsdWVfXwAIAgAAAAAAAAAKBgUAAAAJR3JvdXBVcEE1Cw==
</value>
</data>
<data name="ListUpItems.Groups1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACJTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5MaXN0Vmlld0dyb3VwBAAAAAZIZWFkZXIPSGVhZGVyQWxpZ25tZW50A1Rh
ZwROYW1lAQQCAShTeXN0ZW0uV2luZG93cy5Gb3Jtcy5Ib3Jpem9udGFsQWxpZ25tZW50AgAAAAIAAAAG
AwAAAAo15pif5q2m5ZmoBfz///8oU3lzdGVtLldpbmRvd3MuRm9ybXMuSG9yaXpvbnRhbEFsaWdubWVu
dAEAAAAHdmFsdWVfXwAIAgAAAAAAAAAKBgUAAAAJR3JvdXBVcFc1Cw==
</value>
</data>
<data name="ListUpItems.Groups2" mimetype="application/x-microsoft.net.object.binary.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACJTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5MaXN0Vmlld0dyb3VwBAAAAAZIZWFkZXIPSGVhZGVyQWxpZ25tZW50A1Rh
ZwROYW1lAQQCAShTeXN0ZW0uV2luZG93cy5Gb3Jtcy5Ib3Jpem9udGFsQWxpZ25tZW50AgAAAAIAAAAG
AwAAAAo05pif6KeS6ImyBfz///8oU3lzdGVtLldpbmRvd3MuRm9ybXMuSG9yaXpvbnRhbEFsaWdubWVu
dAEAAAAHdmFsdWVfXwAIAgAAAAAAAAAKBgUAAAAJR3JvdXBVcEE0Cw==
</value>
</data>
<data name="ListUpItems.Groups3" mimetype="application/x-microsoft.net.object.binary.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACJTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5MaXN0Vmlld0dyb3VwBAAAAAZIZWFkZXIPSGVhZGVyQWxpZ25tZW50A1Rh
ZwROYW1lAQQCAShTeXN0ZW0uV2luZG93cy5Gb3Jtcy5Ib3Jpem9udGFsQWxpZ25tZW50AgAAAAIAAAAG
AwAAAAo05pif5q2m5ZmoBfz///8oU3lzdGVtLldpbmRvd3MuRm9ybXMuSG9yaXpvbnRhbEFsaWdubWVu
dAEAAAAHdmFsdWVfXwAIAgAAAAAAAAAKBgUAAAAJR3JvdXBVcFc0Cw==
</value>
</data>
<data name="GrpWeights.Text" xml:space="preserve">
<value>卡池權重與保底機制</value>
</data>
<data name="LnkWeightHelp.Text" xml:space="preserve">
<value>幫助</value>
</data>
<data name="LblWeight4.Text" xml:space="preserve">
<value>4星權重</value>
</data>
<data name="LblWeight5.Text" xml:space="preserve">
<value>5星權重</value>
</data>
<data name="GrpBalance.Text" xml:space="preserve">
<value>角色和武器平衡機制(僅混合池有效)</value>
</data>
<data name="LblPoolWeight4.Text" xml:space="preserve">
<value>4星池權重</value>
</data>
<data name="LblPoolWeight5.Text" xml:space="preserve">
<value>5星池權重</value>
</data>
<data name="GrpWeightChart.Text" xml:space="preserve">
<value>權重圖表</value>
</data>
<data name="$this.Text" xml:space="preserve">
<value>卡池編輯器</value>
</data>
</root>

View File

@@ -264,86 +264,43 @@ namespace GrasscutterTools.Forms
form.TopMost = false;
}
/// <summary>
/// 卡池编辑器窗口实例
/// </summary>
private Form GachaBannerEditor;
private readonly Dictionary<string, Form> MyForms = new Dictionary<string, Form>();
private void ShowForm<T>(string tag) where T : Form, new()
{
if (!MyForms.TryGetValue(tag, out var form) || form.IsDisposed)
form = new T();
MyForms[tag] = form;
if (form.IsHandleCreated)
ToTop(form);
else
form.Show();
}
/// <summary>
/// 点击打开卡池编辑器时触发
/// </summary>
private void BtnOpenGachaBannerEditor_Click(object sender, EventArgs e)
{
if (GachaBannerEditor == null || GachaBannerEditor.IsDisposed)
{
GachaBannerEditor = new FormGachaBannerEditor2();
GachaBannerEditor.Show();
}
else
{
ToTop(GachaBannerEditor);
}
}
=> ShowForm<FormGachaBannersEditor3>("BannersEditor");
/// <summary>
/// 文本浏览器窗口实例
/// 点击打开文本浏览器时触发
/// </summary>
private FormTextMapBrowser TextMapBrowser;
private void BtnOpenTextMap_Click(object sender, EventArgs e)
{
if (TextMapBrowser == null || TextMapBrowser.IsDisposed)
{
TextMapBrowser = new FormTextMapBrowser();
TextMapBrowser.Show();
}
else
{
ToTop(TextMapBrowser);
}
}
/// <summary>
/// 掉落物编辑器窗口实例
/// </summary>
private FormDropEditor DropEditor;
=> ShowForm<FormTextMapBrowser>("TextMapBrowser");
/// <summary>
/// 点击打开掉落物编辑器时触发
/// </summary>
private void BtnOpenDropEditor_Click(object sender, EventArgs e)
{
if (DropEditor == null || DropEditor.IsDisposed)
{
DropEditor = new FormDropEditor();
DropEditor.Show();
}
else
{
ToTop(DropEditor);
}
}
/// <summary>
/// 商店编辑器窗口实例
/// </summary>
private FormShopEditor ShopEditor;
=> ShowForm<FormDropEditor>("DropEditor");
/// <summary>
/// 点击打开商店编辑器时触发
/// </summary>
private void BtnOpenShopEditor_Click(object sender, EventArgs e)
{
if (ShopEditor == null || ShopEditor.IsDisposed)
{
ShopEditor = new FormShopEditor();
ShopEditor.Show();
}
else
{
ToTop(ShopEditor);
}
}
=> ShowForm<FormShopEditor>("ShopEditor");
/// <summary>
/// 语言选中项改变时触发