Implement prefab options #17

This commit is contained in:
2022-05-11 22:15:19 +08:00
parent c089b7ac07
commit 68c42b16dd
10 changed files with 1275 additions and 1258 deletions

View File

@ -60,19 +60,14 @@ namespace GrasscutterTools
this.LblSoftPityTip = new System.Windows.Forms.Label();
this.LblBasePurpleWeight = new System.Windows.Forms.Label();
this.CmbBannerType = new System.Windows.Forms.ComboBox();
this.TxtTitlePath = new System.Windows.Forms.TextBox();
this.LblSortIdTip = new System.Windows.Forms.Label();
this.NUDBasePurpleWeight = new System.Windows.Forms.NumericUpDown();
this.LblBannerType = new System.Windows.Forms.Label();
this.LblTitlePath = new System.Windows.Forms.Label();
this.LblBasePurpleWeightTip = new System.Windows.Forms.Label();
this.RbCostItem224 = new System.Windows.Forms.RadioButton();
this.TxtPrefabPath = new System.Windows.Forms.TextBox();
this.TxtPreviewPrefabPath = new System.Windows.Forms.TextBox();
this.LblBaseYellowWeightTip = new System.Windows.Forms.Label();
this.LblCostItem = new System.Windows.Forms.Label();
this.LblPrefabPath = new System.Windows.Forms.Label();
this.LblPreviewPrefabPath = new System.Windows.Forms.Label();
this.RbCostItem223 = new System.Windows.Forms.RadioButton();
this.GrpPurplePool = new System.Windows.Forms.GroupBox();
this.ListPurplePool = new System.Windows.Forms.CheckedListBox();
@ -82,6 +77,7 @@ namespace GrasscutterTools
this.BtnGen = new System.Windows.Forms.Button();
this.TxtJson = new System.Windows.Forms.TextBox();
this.BtnParse = new System.Windows.Forms.Button();
this.CmbPrefab = new System.Windows.Forms.ComboBox();
this.GrpBannerValues.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.NUDEventChance)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.NUDBaseYellowWeight)).BeginInit();
@ -101,6 +97,7 @@ namespace GrasscutterTools
// GrpBannerValues
//
resources.ApplyResources(this.GrpBannerValues, "GrpBannerValues");
this.GrpBannerValues.Controls.Add(this.CmbPrefab);
this.GrpBannerValues.Controls.Add(this.LblEventChanceTip);
this.GrpBannerValues.Controls.Add(this.NUDEventChance);
this.GrpBannerValues.Controls.Add(this.LblGachaType);
@ -130,19 +127,14 @@ namespace GrasscutterTools
this.GrpBannerValues.Controls.Add(this.LblSoftPityTip);
this.GrpBannerValues.Controls.Add(this.LblBasePurpleWeight);
this.GrpBannerValues.Controls.Add(this.CmbBannerType);
this.GrpBannerValues.Controls.Add(this.TxtTitlePath);
this.GrpBannerValues.Controls.Add(this.LblSortIdTip);
this.GrpBannerValues.Controls.Add(this.NUDBasePurpleWeight);
this.GrpBannerValues.Controls.Add(this.LblBannerType);
this.GrpBannerValues.Controls.Add(this.LblTitlePath);
this.GrpBannerValues.Controls.Add(this.LblBasePurpleWeightTip);
this.GrpBannerValues.Controls.Add(this.RbCostItem224);
this.GrpBannerValues.Controls.Add(this.TxtPrefabPath);
this.GrpBannerValues.Controls.Add(this.TxtPreviewPrefabPath);
this.GrpBannerValues.Controls.Add(this.LblBaseYellowWeightTip);
this.GrpBannerValues.Controls.Add(this.LblCostItem);
this.GrpBannerValues.Controls.Add(this.LblPrefabPath);
this.GrpBannerValues.Controls.Add(this.LblPreviewPrefabPath);
this.GrpBannerValues.Controls.Add(this.RbCostItem223);
this.GrpBannerValues.Name = "GrpBannerValues";
this.GrpBannerValues.TabStop = false;
@ -174,8 +166,8 @@ namespace GrasscutterTools
//
// NUDBaseYellowWeight
//
resources.ApplyResources(this.NUDBaseYellowWeight, "NUDBaseYellowWeight");
this.NUDBaseYellowWeight.DecimalPlaces = 2;
resources.ApplyResources(this.NUDBaseYellowWeight, "NUDBaseYellowWeight");
this.NUDBaseYellowWeight.Name = "NUDBaseYellowWeight";
this.NUDBaseYellowWeight.Value = new decimal(new int[] {
6,
@ -190,8 +182,8 @@ namespace GrasscutterTools
//
// TxtRateUpItems2
//
resources.ApplyResources(this.TxtRateUpItems2, "TxtRateUpItems2");
this.TxtRateUpItems2.BackColor = System.Drawing.Color.White;
resources.ApplyResources(this.TxtRateUpItems2, "TxtRateUpItems2");
this.TxtRateUpItems2.Name = "TxtRateUpItems2";
this.TxtRateUpItems2.ReadOnly = true;
//
@ -287,8 +279,8 @@ namespace GrasscutterTools
//
// TxtRateUpItems1
//
resources.ApplyResources(this.TxtRateUpItems1, "TxtRateUpItems1");
this.TxtRateUpItems1.BackColor = System.Drawing.Color.White;
resources.ApplyResources(this.TxtRateUpItems1, "TxtRateUpItems1");
this.TxtRateUpItems1.Name = "TxtRateUpItems1";
this.TxtRateUpItems1.ReadOnly = true;
//
@ -374,20 +366,15 @@ namespace GrasscutterTools
//
// CmbBannerType
//
resources.ApplyResources(this.CmbBannerType, "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";
//
// TxtTitlePath
//
resources.ApplyResources(this.TxtTitlePath, "TxtTitlePath");
this.TxtTitlePath.Name = "TxtTitlePath";
//
// LblSortIdTip
//
resources.ApplyResources(this.LblSortIdTip, "LblSortIdTip");
@ -395,8 +382,8 @@ namespace GrasscutterTools
//
// NUDBasePurpleWeight
//
resources.ApplyResources(this.NUDBasePurpleWeight, "NUDBasePurpleWeight");
this.NUDBasePurpleWeight.DecimalPlaces = 2;
resources.ApplyResources(this.NUDBasePurpleWeight, "NUDBasePurpleWeight");
this.NUDBasePurpleWeight.Name = "NUDBasePurpleWeight";
this.NUDBasePurpleWeight.Value = new decimal(new int[] {
51,
@ -409,11 +396,6 @@ namespace GrasscutterTools
resources.ApplyResources(this.LblBannerType, "LblBannerType");
this.LblBannerType.Name = "LblBannerType";
//
// LblTitlePath
//
resources.ApplyResources(this.LblTitlePath, "LblTitlePath");
this.LblTitlePath.Name = "LblTitlePath";
//
// LblBasePurpleWeightTip
//
resources.ApplyResources(this.LblBasePurpleWeightTip, "LblBasePurpleWeightTip");
@ -427,16 +409,6 @@ namespace GrasscutterTools
this.RbCostItem224.TabStop = true;
this.RbCostItem224.UseVisualStyleBackColor = true;
//
// TxtPrefabPath
//
resources.ApplyResources(this.TxtPrefabPath, "TxtPrefabPath");
this.TxtPrefabPath.Name = "TxtPrefabPath";
//
// TxtPreviewPrefabPath
//
resources.ApplyResources(this.TxtPreviewPrefabPath, "TxtPreviewPrefabPath");
this.TxtPreviewPrefabPath.Name = "TxtPreviewPrefabPath";
//
// LblBaseYellowWeightTip
//
resources.ApplyResources(this.LblBaseYellowWeightTip, "LblBaseYellowWeightTip");
@ -452,11 +424,6 @@ namespace GrasscutterTools
resources.ApplyResources(this.LblPrefabPath, "LblPrefabPath");
this.LblPrefabPath.Name = "LblPrefabPath";
//
// LblPreviewPrefabPath
//
resources.ApplyResources(this.LblPreviewPrefabPath, "LblPreviewPrefabPath");
this.LblPreviewPrefabPath.Name = "LblPreviewPrefabPath";
//
// RbCostItem223
//
resources.ApplyResources(this.RbCostItem223, "RbCostItem223");
@ -473,8 +440,8 @@ namespace GrasscutterTools
//
// ListPurplePool
//
resources.ApplyResources(this.ListPurplePool, "ListPurplePool");
this.ListPurplePool.CheckOnClick = true;
resources.ApplyResources(this.ListPurplePool, "ListPurplePool");
this.ListPurplePool.FormattingEnabled = true;
this.ListPurplePool.Name = "ListPurplePool";
this.ListPurplePool.ItemCheck += new System.Windows.Forms.ItemCheckEventHandler(this.ListPurplePool_ItemCheck);
@ -488,8 +455,8 @@ namespace GrasscutterTools
//
// ListYellowPool
//
resources.ApplyResources(this.ListYellowPool, "ListYellowPool");
this.ListYellowPool.CheckOnClick = true;
resources.ApplyResources(this.ListYellowPool, "ListYellowPool");
this.ListYellowPool.FormattingEnabled = true;
this.ListYellowPool.Name = "ListYellowPool";
this.ListYellowPool.ItemCheck += new System.Windows.Forms.ItemCheckEventHandler(this.ListYellowPool_ItemCheck);
@ -522,6 +489,13 @@ namespace GrasscutterTools
this.BtnParse.UseVisualStyleBackColor = true;
this.BtnParse.Click += new System.EventHandler(this.BtnParse_Click);
//
// CmbPrefab
//
this.CmbPrefab.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.CmbPrefab.FormattingEnabled = true;
resources.ApplyResources(this.CmbPrefab, "CmbPrefab");
this.CmbPrefab.Name = "CmbPrefab";
//
// FormGachaBannerEditor
//
resources.ApplyResources(this, "$this");
@ -583,19 +557,14 @@ namespace GrasscutterTools
private System.Windows.Forms.Label LblSoftPityTip;
private System.Windows.Forms.Label LblBasePurpleWeight;
private System.Windows.Forms.ComboBox CmbBannerType;
private System.Windows.Forms.TextBox TxtTitlePath;
private System.Windows.Forms.Label LblSortIdTip;
private System.Windows.Forms.NumericUpDown NUDBasePurpleWeight;
private System.Windows.Forms.Label LblBannerType;
private System.Windows.Forms.Label LblTitlePath;
private System.Windows.Forms.Label LblBasePurpleWeightTip;
private System.Windows.Forms.RadioButton RbCostItem224;
private System.Windows.Forms.TextBox TxtPrefabPath;
private System.Windows.Forms.TextBox TxtPreviewPrefabPath;
private System.Windows.Forms.Label LblBaseYellowWeightTip;
private System.Windows.Forms.Label LblCostItem;
private System.Windows.Forms.Label LblPrefabPath;
private System.Windows.Forms.Label LblPreviewPrefabPath;
private System.Windows.Forms.RadioButton RbCostItem223;
private System.Windows.Forms.GroupBox GrpPurplePool;
private System.Windows.Forms.CheckedListBox ListPurplePool;
@ -605,5 +574,6 @@ namespace GrasscutterTools
private System.Windows.Forms.TextBox TxtJson;
private System.Windows.Forms.Button BtnGen;
private System.Windows.Forms.Button BtnParse;
private System.Windows.Forms.ComboBox CmbPrefab;
}
}

View File

@ -26,9 +26,16 @@ namespace GrasscutterTools
Icon = Resources.IconGrasscutter;
CmbBannerType.SelectedIndex = 0;
InitBannerPrefab();
InitCheckedListBoxs();
}
private void InitBannerPrefab()
{
CmbPrefab.Items.Clear();
CmbPrefab.Items.AddRange(GameData.GachaBannerPrefabs.Names);
}
private void InitCheckedListBoxs()
{
InitCheckedListBox(ListYellowPool, "yellow");
@ -78,9 +85,10 @@ namespace GrasscutterTools
NUDGachaType.Value = banner.GachaType;
NUDScheduleId.Value = banner.ScheduleId;
CmbBannerType.SelectedIndex = (int)banner.BannerType;
TxtPrefabPath.Text = banner.PrefabPath;
TxtPreviewPrefabPath.Text = banner.PreviewPrefabPath;
TxtTitlePath.Text = banner.TitlePath;
if (string.IsNullOrEmpty(banner.TitlePath) || !int.TryParse(banner.TitlePath.Substring("UI_GACHA_SHOW_PANEL_A".Length, 3), out int prefabId))
CmbPrefab.SelectedIndex = -1;
else
CmbPrefab.SelectedIndex = Array.IndexOf(GameData.GachaBannerPrefabs.Ids, prefabId);
RbCostItem224.Checked = banner.CostItem == 224;
RbCostItem223.Checked = banner.CostItem == 223;
NUDBeginTime.Value = banner.BeginTime;
@ -108,6 +116,13 @@ namespace GrasscutterTools
MessageBox.Show("请选择奖池类型", "输入错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
return null;
}
if (CmbPrefab.SelectedIndex < 0)
{
MessageBox.Show("请选择奖池预制", "输入错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
return null;
}
int[] yellowIds;
if (string.IsNullOrEmpty(TxtRateUpItems1.Text))
yellowIds = new int[0];
@ -120,14 +135,15 @@ namespace GrasscutterTools
else
purpleIds = TxtRateUpItems2.Text.Split(',').Select(s => int.Parse(s.Trim())).ToArray();
var prefabId = GameData.GachaBannerPrefabs.Ids[CmbPrefab.SelectedIndex];
GachaBanner banner = new GachaBanner
{
GachaType = (int)NUDGachaType.Value,
ScheduleId = (int)NUDScheduleId.Value,
BannerType = (BannerType)CmbBannerType.SelectedIndex,
PrefabPath = TxtPrefabPath.Text,
PreviewPrefabPath = TxtPreviewPrefabPath.Text,
TitlePath = TxtTitlePath.Text,
PrefabPath = $"GachaShowPanel_A{prefabId:000}",
PreviewPrefabPath = $"UI_Tab_GachaShowPanel_A{prefabId:000}",
TitlePath = $"UI_GACHA_SHOW_PANEL_A{prefabId:000}_TITLE",
CostItem = RbCostItem224.Checked ? 224 : 223,
BeginTime = (int)NUDBeginTime.Value,
EndTime = (int)NUDEndTime.Value,

File diff suppressed because it is too large Load Diff

View File

@ -20,6 +20,7 @@ namespace GrasscutterTools.Game
Weapons = new ItemMap(Resources.Weapon);
WeaponColors = new ItemMap(Resources.WeaponColor);
Ornaments = new ItemMap(Resources.Ornament);
GachaBannerPrefabs = new ItemMap(Resources.GachaBennerPrefab);
}
public static ItemMap Animals { get; private set; }
@ -50,5 +51,7 @@ namespace GrasscutterTools.Game
public static ItemMap Ornaments { get; private set; }
public static ItemMap GachaBannerPrefabs { get; private set; }
}
}

View File

@ -284,6 +284,7 @@
<Content Include="Resources\en-us\ArtifactSubAttribution.txt" />
<Content Include="Resources\en-us\Avatar.txt" />
<Content Include="Resources\en-us\CustomCommands.txt" />
<Content Include="Resources\en-us\GachaBennerPrefab.txt" />
<Content Include="Resources\en-us\Item.txt" />
<Content Include="Resources\en-us\Monster.txt" />
<Content Include="Resources\en-us\NPC.txt" />
@ -304,6 +305,7 @@
<Content Include="Resources\zh-cn\Avatar.txt" />
<Content Include="Resources\zh-cn\CustomCommands.txt" />
<Content Include="Resources\AvatarColor.txt" />
<Content Include="Resources\zh-cn\GachaBennerPrefab.txt" />
<Content Include="Resources\zh-cn\Item.txt" />
<Content Include="Resources\zh-cn\Monster.txt" />
<Content Include="Resources\zh-cn\NPC.txt" />

View File

@ -450,6 +450,49 @@ namespace GrasscutterTools.Properties {
}
}
/// <summary>
/// 查找类似 007: 初行者推荐祈愿
///008: 奔行世间
///009: 杯装之诗
///010: 黎明巡礼
///011: 南风之眷
///012: 靖妖傩舞
///013: 神铸赋形
///015: 闪焰的驻足
///016: 初行者推荐祈愿
///017: 奔行世间
///018: 闪焰的驻足
///019: 杯装之诗
///020: 神铸赋形
///021: 神铸赋形
///022: 奔行世间
///023: 暂别冬都
///024: 陵薮市朝
///027: 深秘之息
///028: 浮生孰来
///031: 烟火之邀
///032: 鱼龙灯昼
///033: 赤团开时
///036: 杯装之诗
///037: 暂别冬都
///040: 陵薮市朝
///041: 浪涌之瞬
///045: 叶落风随
///048: 白鹭之庭
///049: 焰色天河
///052: 影寂天下人
///053: 浮岳虹珠
///061: 鬼门斗宴
///065: 出尘入世
///071: 华紫樱绯
///076: 苍流踏花 的本地化字符串。
/// </summary>
internal static string GachaBennerPrefab {
get {
return ResourceManager.GetString("GachaBennerPrefab", resourceCulture);
}
}
/// <summary>
/// 查找类似于 (图标) 的 System.Drawing.Icon 类型的本地化资源。
/// </summary>

View File

@ -148,6 +148,9 @@
<data name="CustomCommands" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\en-us\CustomCommands.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>
</data>
<data name="GachaBennerPrefab" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\en-us\GachaBennerPrefab.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>
</data>
<data name="IconGrasscutter" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\IconGrasscutter.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>

View File

@ -148,6 +148,9 @@
<data name="CustomCommands" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\zh-cn\CustomCommands.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>
</data>
<data name="GachaBennerPrefab" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\zh-cn\GachaBennerPrefab.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>
</data>
<data name="IconGrasscutter" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\IconGrasscutter.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>

View File

@ -0,0 +1,35 @@
007: Beginners' wish
008: Wanderlust Invocation
009: Ballad in Goblets
010: Dawn Pilgrimage
011: Grace of Southwind
012: Bane of All Evil
013: Epitome Invocation
015: Sparkling Steps
016: Beginners' wish
017: Wanderlust Invocation
018: Sparkling Steps
019: Ballad in Goblets
020: Epitome Invocation
021: Epitome Invocation
022: Wanderlust Invocation
023: Farewell of Snezhnaya
024: Gentry of Hermitage
027: Secretum Secretorum
028: Adrift in the Harbor
031: Invitation to Mundane Life
032: Dance of Lanterns
033: Moment of Bloom
036: Ballad in Goblets
037: Farewell of Snezhnaya
040: Gentry of Hermitage
041: Born of Ocean Swell
045: Leaves in the Wind
048: The Heron's Court
049: Tapestry of Golden Flames
052: Reign of Serenity
053: Drifting Luminescence
061: Oni's Royale
065: The Transcendent One Returns
071: Everbloom Violet
076: Azure Excursion

View File

@ -0,0 +1,35 @@
007: 初行者推荐祈愿
008: 奔行世间
009: 杯装之诗
010: 黎明巡礼
011: 南风之眷
012: 靖妖傩舞
013: 神铸赋形
015: 闪焰的驻足
016: 初行者推荐祈愿
017: 奔行世间
018: 闪焰的驻足
019: 杯装之诗
020: 神铸赋形
021: 神铸赋形
022: 奔行世间
023: 暂别冬都
024: 陵薮市朝
027: 深秘之息
028: 浮生孰来
031: 烟火之邀
032: 鱼龙灯昼
033: 赤团开时
036: 杯装之诗
037: 暂别冬都
040: 陵薮市朝
041: 浪涌之瞬
045: 叶落风随
048: 白鹭之庭
049: 焰色天河
052: 影寂天下人
053: 浮岳虹珠
061: 鬼门斗宴
065: 出尘入世
071: 华紫樱绯
076: 苍流踏花