Add Weather Page

This commit is contained in:
2023-10-14 11:36:17 +08:00
parent cfdca6f031
commit f8b920100d
18 changed files with 2199 additions and 566 deletions

View File

@ -222,6 +222,7 @@ namespace GrasscutterTools.Forms
CreatePage<PageGiveWeapon>();
CreatePage<PageScene>();
CreatePage<PageSceneTag>();
CreatePage<PageWeather>();
CreatePage<PageTasks>();
CreatePage<PageManagement>();
CreatePage<PageMail>();
@ -338,11 +339,14 @@ namespace GrasscutterTools.Forms
i++;
}
// 加上新增在最后的页面
while (i < Pages.Count)
if (ListPages.Items.Count == i)
{
PageTabOrders.Add(new Tuple<string, bool>(pageKeys[i], true));
ListPages.Items.Add(Pages[pageKeys[i]].Text);
i++;
while (i < Pages.Count)
{
PageTabOrders.Add(new Tuple<string, bool>(pageKeys[i], true));
ListPages.Items.Add(Pages[pageKeys[i]].Text);
i++;
}
}
// 保存页面顺序
SavePageTabOrders();

View File

@ -0,0 +1,42 @@
/**
* Grasscutter Tools
* Copyright (C) 2023 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 Newtonsoft.Json;
namespace GrasscutterTools.Game.Data.Excels
{
[ResourceType("WeatherExcelConfigData.json")]
internal class WeatherData
{
[JsonProperty("areaID")]
public int AreaId { get; set; }
[JsonProperty("weatherAreaId")]
public int WeatherAreaId { get; set; }
[JsonProperty("profileName")]
public string ProfileName { get; set; }
[JsonProperty("defaultClimate")]
public string DefaultClimate { get; set; }
[JsonProperty("sceneID")]
public int SceneId { get; set; }
}
}

View File

@ -69,6 +69,8 @@ namespace GrasscutterTools.Game.Data
public TextMapData TextMapData { get; set; }
public List<WeatherData> WeatherData { get; set; }
public GameResources(string resourcesDirPath, TextMapData textMapData)
{
TextMapData = textMapData;
@ -446,6 +448,31 @@ namespace GrasscutterTools.Game.Data
#endregion
#region Weather
// Weather
sb.Clear();
foreach (var scene in WeatherData
.GroupBy(it => it.SceneId)
.OrderBy(it => it.Key))
{
sb.Append("// ").AppendLine(scene.Key.ToString());
foreach (var weather in scene)
{
var profileName = weather.ProfileName.Substring(weather.ProfileName.LastIndexOf('/') + 1)
.Replace("ESP_", "");
sb.AppendLine($"{weather.AreaId}:{profileName}");
}
}
File.WriteAllText(
Path.Combine(projectResourcesDir, "Weather.txt"),
sb.ToString(),
Encoding.UTF8);
#endregion
File.WriteAllLines(
Path.Combine(projectResourcesDir, "AvatarColor.txt"),
AvatarData.Values.Select(it => $"{it.Id % 1000 + 1000}:{(int)it.QualityType}"),

View File

@ -46,6 +46,7 @@ namespace GrasscutterTools.Game
GachaBannerTitles = new ItemMap(Resources.GachaBannerTitle);
Quests = new ItemMap(Resources.Quest);
ShopType = new ItemMap(Resources.ShopType);
Weathers = new ItemMapGroup(Resources.Weather);
}
public static ItemMap Achievements { get; private set; }
@ -89,5 +90,7 @@ namespace GrasscutterTools.Game
public static ItemMap Quests { get; private set; }
public static ItemMap ShopType { get; private set; }
public static ItemMapGroup Weathers { get; private set; }
}
}

View File

@ -70,7 +70,7 @@ namespace GrasscutterTools.Game
public IEnumerable<int> AllIds => Values.SelectMany(it => it.Ids);
private string[] lines;
public string[] Lines => lines ?? (lines = AllLines.ToArray());
public string[] Lines => lines ??= AllLines.ToArray();
public string this[int id]
{

View File

@ -165,6 +165,7 @@
<Compile Include="Game\Data\Excels\MonsterData.cs" />
<Compile Include="Game\Data\Excels\SceneData.cs" />
<Compile Include="Game\Data\Excels\SceneTagData.cs" />
<Compile Include="Game\Data\Excels\WeatherData.cs" />
<Compile Include="Game\Data\GameResource.cs" />
<Compile Include="Game\Data\GameResources.cs" />
<Compile Include="Game\Data\ResourceTypeAttribute.cs" />
@ -334,6 +335,12 @@
<Compile Include="Pages\PageTools.Designer.cs">
<DependentUpon>PageTools.cs</DependentUpon>
</Compile>
<Compile Include="Pages\PageWeather.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="Pages\PageWeather.Designer.cs">
<DependentUpon>PageWeather.cs</DependentUpon>
</Compile>
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Properties\Resources.zh-TW.Designer.cs">
@ -702,6 +709,9 @@
<EmbeddedResource Include="Pages\PageTools.resx">
<DependentUpon>PageTools.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Pages\PageWeather.resx">
<DependentUpon>PageWeather.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Properties\Resources.zh-TW.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.zh-TW.Designer.cs</LastGenOutput>
@ -806,6 +816,7 @@
<Content Include="Resources\Permissions.txt" />
<Content Include="Resources\SceneTag.txt" />
<Content Include="Resources\WeaponColor.txt" />
<Content Include="Resources\zh-cn\Weather.txt" />
<Content Include="Resources\zh-cn\Achievement.txt" />
<Content Include="Resources\zh-cn\Activity.txt" />
<Content Include="Resources\zh-cn\ArtifactCat.txt" />

View File

@ -40,13 +40,10 @@
this.NUDTpZ = new System.Windows.Forms.NumericUpDown();
this.NUDTpY = new System.Windows.Forms.NumericUpDown();
this.NUDTpX = new System.Windows.Forms.NumericUpDown();
this.CmbClimateType = new System.Windows.Forms.ComboBox();
this.LblClimateType = new System.Windows.Forms.Label();
this.LblSceneDescription = new System.Windows.Forms.Label();
this.ListScenes = new System.Windows.Forms.ListBox();
this.LblTp = new System.Windows.Forms.Label();
this.RbListCutScene = new System.Windows.Forms.RadioButton();
this.ChkLockClimate = new System.Windows.Forms.CheckBox();
this.BtnFreezeTime = new System.Windows.Forms.Button();
((System.ComponentModel.ISupportInitialize)(this.NUDTpZ)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.NUDTpY)).BeginInit();
@ -168,19 +165,6 @@
-2147483648});
this.NUDTpX.Name = "NUDTpX";
//
// CmbClimateType
//
resources.ApplyResources(this.CmbClimateType, "CmbClimateType");
this.CmbClimateType.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.CmbClimateType.FormattingEnabled = true;
this.CmbClimateType.Name = "CmbClimateType";
this.CmbClimateType.SelectedIndexChanged += new System.EventHandler(this.CmbClimateType_SelectedIndexChanged);
//
// LblClimateType
//
resources.ApplyResources(this.LblClimateType, "LblClimateType");
this.LblClimateType.Name = "LblClimateType";
//
// LblSceneDescription
//
resources.ApplyResources(this.LblSceneDescription, "LblSceneDescription");
@ -205,13 +189,6 @@
this.RbListCutScene.UseVisualStyleBackColor = true;
this.RbListCutScene.CheckedChanged += new System.EventHandler(this.RbListCutScene_CheckedChanged);
//
// ChkLockClimate
//
resources.ApplyResources(this.ChkLockClimate, "ChkLockClimate");
this.ChkLockClimate.Name = "ChkLockClimate";
this.ChkLockClimate.UseVisualStyleBackColor = true;
this.ChkLockClimate.CheckedChanged += new System.EventHandler(this.ChkLockClimate_CheckedChanged);
//
// BtnFreezeTime
//
resources.ApplyResources(this.BtnFreezeTime, "BtnFreezeTime");
@ -224,7 +201,6 @@
resources.ApplyResources(this, "$this");
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.BtnFreezeTime);
this.Controls.Add(this.ChkLockClimate);
this.Controls.Add(this.RbListCutScene);
this.Controls.Add(this.RbListDungeons);
this.Controls.Add(this.RbListScene);
@ -237,8 +213,6 @@
this.Controls.Add(this.NUDTpZ);
this.Controls.Add(this.NUDTpY);
this.Controls.Add(this.NUDTpX);
this.Controls.Add(this.CmbClimateType);
this.Controls.Add(this.LblClimateType);
this.Controls.Add(this.LblSceneDescription);
this.Controls.Add(this.ListScenes);
this.Controls.Add(this.LblTp);
@ -264,13 +238,10 @@
private System.Windows.Forms.NumericUpDown NUDTpZ;
private System.Windows.Forms.NumericUpDown NUDTpY;
private System.Windows.Forms.NumericUpDown NUDTpX;
private System.Windows.Forms.ComboBox CmbClimateType;
private System.Windows.Forms.Label LblClimateType;
private System.Windows.Forms.Label LblSceneDescription;
private System.Windows.Forms.ListBox ListScenes;
private System.Windows.Forms.Label LblTp;
private System.Windows.Forms.RadioButton RbListCutScene;
private System.Windows.Forms.CheckBox ChkLockClimate;
private System.Windows.Forms.Button BtnFreezeTime;
}
}

View File

@ -55,8 +55,6 @@ namespace GrasscutterTools.Pages
public override void OnLoad()
{
Scenes = GameData.Scenes.Lines;
CmbClimateType.Items.Clear();
CmbClimateType.Items.AddRange(Resources.ClimateType.Split(','));
}
/// <summary>
@ -130,24 +128,6 @@ namespace GrasscutterTools.Pages
}
}
/// <summary>
/// 气候类型列表
/// </summary>
private static readonly string[] climateTypes = { "none", "sunny", "cloudy", "rain", "thunderstorm", "snow", "mist" };
/// <summary>
/// 气候类型下拉框选中项改变时触发
/// </summary>
private void CmbClimateType_SelectedIndexChanged(object sender, EventArgs e)
{
if (CmbClimateType.SelectedIndex < 0)
return;
if (CommandVersion.Check(CommandVersion.V1_2_2))
SetCommand("/weather", CmbClimateType.SelectedIndex < climateTypes.Length ? climateTypes[CmbClimateType.SelectedIndex] : "none");
else
SetCommand("/weather", $"0 {CmbClimateType.SelectedIndex}");
}
/// <summary>
/// 点击传送按钮时触发
/// </summary>
@ -159,14 +139,6 @@ namespace GrasscutterTools.Pages
SetCommand("/tp", args);
}
/// <summary>
/// 锁定天气
/// </summary>
private void ChkLockClimate_CheckedChanged(object sender, EventArgs e)
{
SetCommand("/prop", $"is_weather_locked {(ChkLockClimate.Checked ? "on" : "off")}");
}
/// <summary>
/// 冻结游戏时间
/// </summary>

View File

@ -118,523 +118,403 @@
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="LblTpX.AutoSize" type="System.Boolean, mscorlib">
<data name="RbListDungeons.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="&gt;&gt;TxtSceneFilter.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="BtnTeleport.Text" xml:space="preserve">
<value>传送</value>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="RbListDungeons.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="BtnTeleport.Size" type="System.Drawing.Size, System.Drawing">
<value>75, 25</value>
<data name="RbListDungeons.Location" type="System.Drawing.Point, System.Drawing">
<value>287, 30</value>
</data>
<data name="&gt;&gt;TxtSceneFilter.Name" xml:space="preserve">
<value>TxtSceneFilter</value>
</data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="LblTpX.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="LblTpZ.TabIndex" type="System.Int32, mscorlib">
<value>10</value>
</data>
<data name="LblTpZ.Size" type="System.Drawing.Size, System.Drawing">
<value>14, 17</value>
</data>
<data name="&gt;&gt;RbListCutScene.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="&gt;&gt;LblTpY.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="NUDTpY.Size" type="System.Drawing.Size, System.Drawing">
<value>80, 23</value>
</data>
<data name="RbListScene.Location" type="System.Drawing.Point, System.Drawing">
<value>287, 3</value>
</data>
<data name="NUDTpZ.Location" type="System.Drawing.Point, System.Drawing">
<value>235, 156</value>
</data>
<data name="ListScenes.Location" type="System.Drawing.Point, System.Drawing">
<value>343, 28</value>
</data>
<data name="&gt;&gt;CmbClimateType.ZOrder" xml:space="preserve">
<value>14</value>
</data>
<data name="&gt;&gt;LblSceneDescription.Name" xml:space="preserve">
<value>LblSceneDescription</value>
</data>
<data name="NUDTpZ.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<data name="ChkLockClimate.Location" type="System.Drawing.Point, System.Drawing">
<value>192, 31</value>
</data>
<data name="LblTp.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="LblTpZ.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<data name="&gt;&gt;LblSceneDescription.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="NUDTpX.Location" type="System.Drawing.Point, System.Drawing">
<value>23, 156</value>
</data>
<data name="LblSceneDescription.Size" type="System.Drawing.Size, System.Drawing">
<value>56, 17</value>
</data>
<data name="&gt;&gt;ChkIncludeSceneId.Type" xml:space="preserve">
<value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;BtnTeleport.ZOrder" xml:space="preserve">
<value>9</value>
</data>
<data name="&gt;&gt;ChkIncludeSceneId.ZOrder" xml:space="preserve">
<value>6</value>
</data>
<data name="&gt;&gt;NUDTpY.Type" xml:space="preserve">
<value>System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="LblSceneDescription.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="LblTpY.Size" type="System.Drawing.Size, System.Drawing">
<value>14, 17</value>
</data>
<data name="LblTpX.Size" type="System.Drawing.Size, System.Drawing">
<value>14, 17</value>
</data>
<data name="&gt;&gt;RbListScene.ZOrder" xml:space="preserve">
<value>4</value>
</data>
<data name="&gt;&gt;BtnFreezeTime.Name" xml:space="preserve">
<value>BtnFreezeTime</value>
</data>
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
<value>7, 17</value>
</data>
<data name="&gt;&gt;LblTpX.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="LblTpX.Text" xml:space="preserve">
<value>x</value>
<data name="RbListDungeons.Size" type="System.Drawing.Size, System.Drawing">
<value>50, 21</value>
</data>
<data name="RbListDungeons.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="CmbClimateType.Location" type="System.Drawing.Point, System.Drawing">
<value>65, 29</value>
</data>
<data name="LblTpZ.Text" xml:space="preserve">
<value>z</value>
</data>
<data name="ChkIncludeSceneId.Enabled" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="LblClimateType.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 32</value>
</data>
<data name="LblTpX.TabIndex" type="System.Int32, mscorlib">
<value>6</value>
</data>
<data name="&gt;&gt;ListScenes.Name" xml:space="preserve">
<value>ListScenes</value>
</data>
<data name="ChkIncludeSceneId.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="&gt;&gt;NUDTpX.ZOrder" xml:space="preserve">
<value>13</value>
</data>
<data name="RbListScene.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="ChkIncludeSceneId.TabIndex" type="System.Int32, mscorlib">
<value>13</value>
</data>
<data name="NUDTpY.TabIndex" type="System.Int32, mscorlib">
<value>9</value>
</data>
<data name="&gt;&gt;LblTpZ.ZOrder" xml:space="preserve">
<value>7</value>
</data>
<data name="&gt;&gt;LblTpZ.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>PageScene</value>
</data>
<data name="&gt;&gt;ChkLockClimate.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="&gt;&gt;NUDTpY.ZOrder" xml:space="preserve">
<value>12</value>
</data>
<data name="&gt;&gt;LblTpY.Name" xml:space="preserve">
<value>LblTpY</value>
</data>
<data name="LblTpY.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="&gt;&gt;LblTpY.ZOrder" xml:space="preserve">
<value>8</value>
</data>
<data name="&gt;&gt;NUDTpX.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="ChkIncludeSceneId.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<data name="ListScenes.ItemHeight" type="System.Int32, mscorlib">
<value>17</value>
</data>
<data name="&gt;&gt;RbListCutScene.Name" xml:space="preserve">
<value>RbListCutScene</value>
</data>
<data name="&gt;&gt;NUDTpZ.ZOrder" xml:space="preserve">
<value>11</value>
</data>
<data name="LblTpY.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<data name="&gt;&gt;RbListScene.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;RbListScene.Type" xml:space="preserve">
<value>System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="ListScenes.TabIndex" type="System.Int32, mscorlib">
<value>15</value>
</data>
<data name="NUDTpZ.Size" type="System.Drawing.Size, System.Drawing">
<value>80, 23</value>
</data>
<data name="ChkLockClimate.TabIndex" type="System.Int32, mscorlib">
<value>16</value>
</data>
<data name="&gt;&gt;NUDTpX.Type" xml:space="preserve">
<value>System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="BtnTeleport.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="RbListCutScene.Location" type="System.Drawing.Point, System.Drawing">
<value>287, 57</value>
</data>
<data name="RbListCutScene.Text" xml:space="preserve">
<value>过场</value>
</data>
<data name="LblTpY.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="&gt;&gt;NUDTpZ.Type" xml:space="preserve">
<value>System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="RbListDungeons.Text" xml:space="preserve">
<value>秘境</value>
</data>
<data name="RbListCutScene.Size" type="System.Drawing.Size, System.Drawing">
<value>50, 21</value>
</data>
<data name="RbListDungeons.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="BtnFreezeTime.Location" type="System.Drawing.Point, System.Drawing">
<value>215, 184</value>
</data>
<data name="LblTpY.Location" type="System.Drawing.Point, System.Drawing">
<value>109, 158</value>
</data>
<data name="LblTp.Size" type="System.Drawing.Size, System.Drawing">
<value>296, 51</value>
</data>
<data name="RbListCutScene.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="LblTpZ.Location" type="System.Drawing.Point, System.Drawing">
<value>215, 158</value>
</data>
<data name="&gt;&gt;RbListCutScene.Type" xml:space="preserve">
<value>System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;NUDTpX.Name" xml:space="preserve">
<value>NUDTpX</value>
</data>
<data name="&gt;&gt;LblTpZ.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="RbListDungeons.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="LblClimateType.Text" xml:space="preserve">
<value>设置天气</value>
</data>
<data name="BtnFreezeTime.TabIndex" type="System.Int32, mscorlib">
<value>17</value>
</data>
<data name="&gt;&gt;LblTp.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;ChkLockClimate.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="NUDTpZ.TabIndex" type="System.Int32, mscorlib">
<value>11</value>
</data>
<data name="&gt;&gt;LblTpY.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="CmbClimateType.Size" type="System.Drawing.Size, System.Drawing">
<value>121, 25</value>
</data>
<data name="&gt;&gt;BtnFreezeTime.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="LblTpX.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 158</value>
</data>
<data name="LblClimateType.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="&gt;&gt;LblClimateType.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="ChkIncludeSceneId.Text" xml:space="preserve">
<value>含场景ID</value>
</data>
<data name="BtnFreezeTime.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<data name="&gt;&gt;LblTpZ.Name" xml:space="preserve">
<value>LblTpZ</value>
</data>
<data name="&gt;&gt;CmbClimateType.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="LblTpZ.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="&gt;&gt;BtnFreezeTime.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;RbListDungeons.Name" xml:space="preserve">
<value>RbListDungeons</value>
</data>
<data name="&gt;&gt;ChkIncludeSceneId.Parent" xml:space="preserve">
<data name="&gt;&gt;RbListDungeons.Type" xml:space="preserve">
<value>System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;RbListDungeons.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="RbListDungeons.Location" type="System.Drawing.Point, System.Drawing">
<value>287, 30</value>
<data name="&gt;&gt;RbListDungeons.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="BtnFreezeTime.Size" type="System.Drawing.Size, System.Drawing">
<value>100, 25</value>
</data>
<data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>GrasscutterTools.Pages.BasePage, GrasscutterTools, Version=1.12.2.0, Culture=neutral, PublicKeyToken=de2b1c089621e923</value>
</data>
<data name="LblTp.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<data name="LblClimateType.AutoSize" type="System.Boolean, mscorlib">
<data name="RbListScene.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="RbListScene.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="&gt;&gt;ListScenes.Type" xml:space="preserve">
<value>System.Windows.Forms.ListBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="NUDTpX.Size" type="System.Drawing.Size, System.Drawing">
<value>80, 23</value>
</data>
<data name="NUDTpY.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<data name="RbListCutScene.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="BtnTeleport.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<data name="ListScenes.Size" type="System.Drawing.Size, System.Drawing">
<value>300, 208</value>
</data>
<data name="&gt;&gt;NUDTpZ.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;ChkLockClimate.Type" xml:space="preserve">
<value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="BtnTeleport.TabIndex" type="System.Int32, mscorlib">
<value>12</value>
</data>
<data name="CmbClimateType.TabIndex" type="System.Int32, mscorlib">
<value>4</value>
</data>
<data name="ChkIncludeSceneId.Location" type="System.Drawing.Point, System.Drawing">
<value>87, 188</value>
</data>
<data name="&gt;&gt;BtnFreezeTime.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;LblTp.Name" xml:space="preserve">
<value>LblTp</value>
</data>
<data name="LblTpY.Text" xml:space="preserve">
<value>y</value>
</data>
<data name="&gt;&gt;LblSceneDescription.ZOrder" xml:space="preserve">
<value>16</value>
<data name="RbListScene.Location" type="System.Drawing.Point, System.Drawing">
<value>287, 3</value>
</data>
<data name="RbListScene.Size" type="System.Drawing.Size, System.Drawing">
<value>50, 21</value>
</data>
<data name="LblTp.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="LblSceneDescription.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="LblClimateType.Size" type="System.Drawing.Size, System.Drawing">
<value>56, 17</value>
</data>
<data name="ChkLockClimate.Text" xml:space="preserve">
<value>锁定</value>
</data>
<data name="ChkLockClimate.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="RbListCutScene.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="&gt;&gt;RbListScene.Name" xml:space="preserve">
<value>RbListScene</value>
</data>
<data name="LblTpY.TabIndex" type="System.Int32, mscorlib">
<value>8</value>
</data>
<data name="&gt;&gt;RbListDungeons.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="LblSceneDescription.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="&gt;&gt;LblTpX.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="TxtSceneFilter.Location" type="System.Drawing.Point, System.Drawing">
<value>343, 2</value>
</data>
<data name="ChkIncludeSceneId.Size" type="System.Drawing.Size, System.Drawing">
<value>76, 21</value>
</data>
<data name="&gt;&gt;BtnTeleport.Name" xml:space="preserve">
<value>BtnTeleport</value>
</data>
<data name="LblTpZ.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="&gt;&gt;ChkIncludeSceneId.Name" xml:space="preserve">
<value>ChkIncludeSceneId</value>
</data>
<data name="&gt;&gt;NUDTpY.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;ChkLockClimate.Name" xml:space="preserve">
<value>ChkLockClimate</value>
</data>
<data name="&gt;&gt;LblClimateType.ZOrder" xml:space="preserve">
<value>15</value>
</data>
<data name="&gt;&gt;CmbClimateType.Type" xml:space="preserve">
<value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;RbListCutScene.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="BtnFreezeTime.Text" xml:space="preserve">
<value>冻结时间</value>
</data>
<data name="&gt;&gt;TxtSceneFilter.Type" xml:space="preserve">
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="LblSceneDescription.Text" xml:space="preserve">
<value>场景控制</value>
</data>
<data name="&gt;&gt;LblTpX.ZOrder" xml:space="preserve">
<value>10</value>
</data>
<data name="TxtSceneFilter.Size" type="System.Drawing.Size, System.Drawing">
<value>300, 23</value>
</data>
<data name="&gt;&gt;CmbClimateType.Name" xml:space="preserve">
<value>CmbClimateType</value>
</data>
<data name="&gt;&gt;RbListDungeons.Type" xml:space="preserve">
<value>System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;LblTp.ZOrder" xml:space="preserve">
<value>18</value>
</data>
<data name="&gt;&gt;LblTp.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;NUDTpY.Name" xml:space="preserve">
<value>NUDTpY</value>
</data>
<data name="LblTp.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 102</value>
</data>
<data name="LblClimateType.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="ChkIncludeSceneId.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="RbListScene.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="ChkLockClimate.Size" type="System.Drawing.Size, System.Drawing">
<value>51, 21</value>
</data>
<data name="LblTpX.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<data name="NUDTpX.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<data name="ListScenes.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Bottom, Left, Right</value>
<data name="RbListScene.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="RbListScene.Text" xml:space="preserve">
<value>场景</value>
</data>
<data name="NUDTpX.TabIndex" type="System.Int32, mscorlib">
<value>7</value>
<data name="&gt;&gt;RbListScene.Name" xml:space="preserve">
<value>RbListScene</value>
</data>
<data name="BtnTeleport.Location" type="System.Drawing.Point, System.Drawing">
<value>6, 185</value>
<data name="&gt;&gt;RbListScene.Type" xml:space="preserve">
<value>System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;RbListScene.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;RbListScene.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="TxtSceneFilter.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Left, Right</value>
</data>
<data name="TxtSceneFilter.Location" type="System.Drawing.Point, System.Drawing">
<value>343, 2</value>
</data>
<data name="TxtSceneFilter.Size" type="System.Drawing.Size, System.Drawing">
<value>300, 23</value>
</data>
<data name="TxtSceneFilter.TabIndex" type="System.Int32, mscorlib">
<value>14</value>
</data>
<data name="&gt;&gt;TxtSceneFilter.Name" xml:space="preserve">
<value>TxtSceneFilter</value>
</data>
<data name="&gt;&gt;TxtSceneFilter.Type" xml:space="preserve">
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;TxtSceneFilter.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;TxtSceneFilter.ZOrder" xml:space="preserve">
<value>4</value>
</data>
<data name="ChkIncludeSceneId.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<data name="ChkIncludeSceneId.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="ChkIncludeSceneId.Enabled" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="ChkIncludeSceneId.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="ChkIncludeSceneId.Location" type="System.Drawing.Point, System.Drawing">
<value>87, 188</value>
</data>
<data name="ChkIncludeSceneId.Size" type="System.Drawing.Size, System.Drawing">
<value>76, 21</value>
</data>
<data name="ChkIncludeSceneId.TabIndex" type="System.Int32, mscorlib">
<value>13</value>
</data>
<data name="ChkIncludeSceneId.Text" xml:space="preserve">
<value>含场景ID</value>
</data>
<data name="&gt;&gt;ChkIncludeSceneId.Name" xml:space="preserve">
<value>ChkIncludeSceneId</value>
</data>
<data name="&gt;&gt;ChkIncludeSceneId.Type" xml:space="preserve">
<value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;ChkIncludeSceneId.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;ChkIncludeSceneId.ZOrder" xml:space="preserve">
<value>5</value>
</data>
<data name="&gt;&gt;LblClimateType.Name" xml:space="preserve">
<value>LblClimateType</value>
<data name="LblTpZ.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<data name="&gt;&gt;ListScenes.ZOrder" xml:space="preserve">
<data name="LblTpZ.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="LblTpZ.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="LblTpZ.Location" type="System.Drawing.Point, System.Drawing">
<value>215, 158</value>
</data>
<data name="LblTpZ.Size" type="System.Drawing.Size, System.Drawing">
<value>14, 17</value>
</data>
<data name="LblTpZ.TabIndex" type="System.Int32, mscorlib">
<value>10</value>
</data>
<data name="LblTpZ.Text" xml:space="preserve">
<value>z</value>
</data>
<data name="&gt;&gt;LblTpZ.Name" xml:space="preserve">
<value>LblTpZ</value>
</data>
<data name="&gt;&gt;LblTpZ.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;LblTpZ.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;LblTpZ.ZOrder" xml:space="preserve">
<value>6</value>
</data>
<data name="LblTpY.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<data name="LblTpY.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="LblTpY.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="LblTpY.Location" type="System.Drawing.Point, System.Drawing">
<value>109, 158</value>
</data>
<data name="LblTpY.Size" type="System.Drawing.Size, System.Drawing">
<value>14, 17</value>
</data>
<data name="LblTpY.TabIndex" type="System.Int32, mscorlib">
<value>8</value>
</data>
<data name="LblTpY.Text" xml:space="preserve">
<value>y</value>
</data>
<data name="&gt;&gt;LblTpY.Name" xml:space="preserve">
<value>LblTpY</value>
</data>
<data name="&gt;&gt;LblTpY.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;LblTpY.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;LblTpY.ZOrder" xml:space="preserve">
<value>7</value>
</data>
<data name="BtnTeleport.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<data name="BtnTeleport.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="BtnTeleport.Location" type="System.Drawing.Point, System.Drawing">
<value>6, 185</value>
</data>
<data name="BtnTeleport.Size" type="System.Drawing.Size, System.Drawing">
<value>75, 25</value>
</data>
<data name="BtnTeleport.TabIndex" type="System.Int32, mscorlib">
<value>12</value>
</data>
<data name="BtnTeleport.Text" xml:space="preserve">
<value>传送</value>
</data>
<data name="&gt;&gt;BtnTeleport.Name" xml:space="preserve">
<value>BtnTeleport</value>
</data>
<data name="&gt;&gt;BtnTeleport.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;BtnTeleport.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;BtnTeleport.ZOrder" xml:space="preserve">
<value>8</value>
</data>
<data name="LblTpX.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<data name="LblTpX.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="LblTpX.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="LblTpX.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 158</value>
</data>
<data name="LblTpX.Size" type="System.Drawing.Size, System.Drawing">
<value>14, 17</value>
</data>
<data name="LblTpX.TabIndex" type="System.Int32, mscorlib">
<value>6</value>
</data>
<data name="LblTpX.Text" xml:space="preserve">
<value>x</value>
</data>
<data name="&gt;&gt;LblTpX.Name" xml:space="preserve">
<value>LblTpX</value>
</data>
<data name="&gt;&gt;LblTpX.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;LblTpX.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;LblTpX.ZOrder" xml:space="preserve">
<value>9</value>
</data>
<data name="NUDTpZ.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<data name="NUDTpZ.Location" type="System.Drawing.Point, System.Drawing">
<value>235, 156</value>
</data>
<data name="NUDTpZ.Size" type="System.Drawing.Size, System.Drawing">
<value>80, 23</value>
</data>
<data name="NUDTpZ.TabIndex" type="System.Int32, mscorlib">
<value>11</value>
</data>
<data name="&gt;&gt;NUDTpZ.Name" xml:space="preserve">
<value>NUDTpZ</value>
</data>
<data name="&gt;&gt;NUDTpZ.Type" xml:space="preserve">
<value>System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;NUDTpZ.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;NUDTpZ.ZOrder" xml:space="preserve">
<value>10</value>
</data>
<data name="NUDTpY.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<data name="NUDTpY.Location" type="System.Drawing.Point, System.Drawing">
<value>129, 156</value>
</data>
<data name="NUDTpY.Size" type="System.Drawing.Size, System.Drawing">
<value>80, 23</value>
</data>
<data name="NUDTpY.TabIndex" type="System.Int32, mscorlib">
<value>9</value>
</data>
<data name="&gt;&gt;NUDTpY.Name" xml:space="preserve">
<value>NUDTpY</value>
</data>
<data name="&gt;&gt;NUDTpY.Type" xml:space="preserve">
<value>System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;NUDTpY.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;NUDTpY.ZOrder" xml:space="preserve">
<value>11</value>
</data>
<data name="NUDTpX.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<data name="NUDTpX.Location" type="System.Drawing.Point, System.Drawing">
<value>23, 156</value>
</data>
<data name="NUDTpX.Size" type="System.Drawing.Size, System.Drawing">
<value>80, 23</value>
</data>
<data name="NUDTpX.TabIndex" type="System.Int32, mscorlib">
<value>7</value>
</data>
<data name="&gt;&gt;NUDTpX.Name" xml:space="preserve">
<value>NUDTpX</value>
</data>
<data name="&gt;&gt;NUDTpX.Type" xml:space="preserve">
<value>System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;NUDTpX.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;NUDTpX.ZOrder" xml:space="preserve">
<value>12</value>
</data>
<data name="LblSceneDescription.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="LblSceneDescription.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="LblSceneDescription.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 3</value>
</data>
<data name="LblSceneDescription.Size" type="System.Drawing.Size, System.Drawing">
<value>56, 17</value>
</data>
<data name="LblSceneDescription.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="LblSceneDescription.Text" xml:space="preserve">
<value>场景控制</value>
</data>
<data name="&gt;&gt;LblSceneDescription.Name" xml:space="preserve">
<value>LblSceneDescription</value>
</data>
<data name="&gt;&gt;LblSceneDescription.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;LblSceneDescription.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;LblSceneDescription.ZOrder" xml:space="preserve">
<value>13</value>
</data>
<data name="ListScenes.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Bottom, Left, Right</value>
</data>
<data name="ListScenes.ItemHeight" type="System.Int32, mscorlib">
<value>17</value>
</data>
<data name="TxtSceneFilter.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Left, Right</value>
<data name="ListScenes.Location" type="System.Drawing.Point, System.Drawing">
<value>343, 28</value>
</data>
<data name="ListScenes.Size" type="System.Drawing.Size, System.Drawing">
<value>300, 208</value>
</data>
<data name="ListScenes.TabIndex" type="System.Int32, mscorlib">
<value>15</value>
</data>
<data name="&gt;&gt;ListScenes.Name" xml:space="preserve">
<value>ListScenes</value>
</data>
<data name="&gt;&gt;ListScenes.Type" xml:space="preserve">
<value>System.Windows.Forms.ListBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;ListScenes.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;ListScenes.ZOrder" xml:space="preserve">
<value>14</value>
</data>
<data name="LblTp.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<data name="LblTp.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="LblTp.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="LblTp.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 102</value>
</data>
<data name="LblTp.Size" type="System.Drawing.Size, System.Drawing">
<value>296, 51</value>
</data>
<data name="LblTp.TabIndex" type="System.Int32, mscorlib">
<value>5</value>
</data>
<data name="LblTp.Text" xml:space="preserve">
<value>坐标传送
@ -642,43 +522,88 @@
命令中可以用~表示当前位置,~100表示相对当前100
</value>
</data>
<data name="&gt;&gt;LblTpX.Name" xml:space="preserve">
<value>LblTpX</value>
<data name="&gt;&gt;LblTp.Name" xml:space="preserve">
<value>LblTp</value>
</data>
<data name="&gt;&gt;RbListDungeons.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;NUDTpZ.Name" xml:space="preserve">
<value>NUDTpZ</value>
</data>
<data name="&gt;&gt;ListScenes.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;BtnTeleport.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;LblSceneDescription.Type" xml:space="preserve">
<data name="&gt;&gt;LblTp.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="LblSceneDescription.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 3</value>
</data>
<data name="&gt;&gt;BtnTeleport.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="RbListDungeons.Size" type="System.Drawing.Size, System.Drawing">
<value>50, 21</value>
</data>
<data name="&gt;&gt;LblClimateType.Parent" xml:space="preserve">
<data name="&gt;&gt;LblTp.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="NUDTpY.Location" type="System.Drawing.Point, System.Drawing">
<value>129, 156</value>
<data name="&gt;&gt;LblTp.ZOrder" xml:space="preserve">
<value>15</value>
</data>
<data name="LblTp.TabIndex" type="System.Int32, mscorlib">
<value>5</value>
<data name="RbListCutScene.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="RbListCutScene.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="RbListCutScene.Location" type="System.Drawing.Point, System.Drawing">
<value>287, 57</value>
</data>
<data name="RbListCutScene.Size" type="System.Drawing.Size, System.Drawing">
<value>50, 21</value>
</data>
<data name="RbListCutScene.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="RbListCutScene.Text" xml:space="preserve">
<value>过场</value>
</data>
<data name="&gt;&gt;RbListCutScene.Name" xml:space="preserve">
<value>RbListCutScene</value>
</data>
<data name="&gt;&gt;RbListCutScene.Type" xml:space="preserve">
<value>System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;RbListCutScene.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;RbListCutScene.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="BtnFreezeTime.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<data name="BtnFreezeTime.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="BtnFreezeTime.Location" type="System.Drawing.Point, System.Drawing">
<value>215, 184</value>
</data>
<data name="BtnFreezeTime.Size" type="System.Drawing.Size, System.Drawing">
<value>100, 25</value>
</data>
<data name="BtnFreezeTime.TabIndex" type="System.Int32, mscorlib">
<value>17</value>
</data>
<data name="BtnFreezeTime.Text" xml:space="preserve">
<value>冻结时间</value>
</data>
<data name="&gt;&gt;BtnFreezeTime.Name" xml:space="preserve">
<value>BtnFreezeTime</value>
</data>
<data name="&gt;&gt;BtnFreezeTime.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;BtnFreezeTime.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;BtnFreezeTime.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
<value>7, 17</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>PageScene</value>
</data>
<data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>GrasscutterTools.Pages.BasePage, GrasscutterTools, Version=1.13.0.0, Culture=neutral, PublicKeyToken=de2b1c089621e923</value>
</data>
</root>

View File

@ -0,0 +1,254 @@
namespace GrasscutterTools.Pages
{
partial class PageWeather
{
/// <summary>
/// 必需的设计器变量。
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// 清理所有正在使用的资源。
/// </summary>
/// <param name="disposing">如果应释放托管资源,为 true否则为 false。</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region
/// <summary>
/// 设计器支持所需的方法 - 不要修改
/// 使用代码编辑器修改此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.TvSceneWeathers = new System.Windows.Forms.TreeView();
this.LblPageTitle = new System.Windows.Forms.Label();
this.CmbClimateType = new System.Windows.Forms.ComboBox();
this.LblClimateType = new System.Windows.Forms.Label();
this.BtnLockWeather = new System.Windows.Forms.Button();
this.BtnUnlockWeather = new System.Windows.Forms.Button();
this.label1 = new System.Windows.Forms.Label();
this.BtnExportWeather = new System.Windows.Forms.Button();
this.BtnImportWeather = new System.Windows.Forms.Button();
this.BtnCreatePullRequest = new System.Windows.Forms.Button();
this.LblPullRequestTip = new System.Windows.Forms.Label();
this.LblClimateTip = new System.Windows.Forms.Label();
this.TxtWeatherFilter = new System.Windows.Forms.TextBox();
this.ListFilteredWeathers = new System.Windows.Forms.ListBox();
this.LblClearFilter = new System.Windows.Forms.Label();
this.SuspendLayout();
//
// TvSceneWeathers
//
this.TvSceneWeathers.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.TvSceneWeathers.FullRowSelect = true;
this.TvSceneWeathers.Location = new System.Drawing.Point(343, 32);
this.TvSceneWeathers.Name = "TvSceneWeathers";
this.TvSceneWeathers.ShowLines = false;
this.TvSceneWeathers.Size = new System.Drawing.Size(300, 204);
this.TvSceneWeathers.TabIndex = 102;
this.TvSceneWeathers.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.TvSceneWeathers_AfterSelect);
//
// LblPageTitle
//
this.LblPageTitle.AutoSize = true;
this.LblPageTitle.Location = new System.Drawing.Point(3, 3);
this.LblPageTitle.Name = "LblPageTitle";
this.LblPageTitle.Size = new System.Drawing.Size(56, 17);
this.LblPageTitle.TabIndex = 0;
this.LblPageTitle.Text = "场景天气";
//
// CmbClimateType
//
this.CmbClimateType.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.CmbClimateType.FormattingEnabled = true;
this.CmbClimateType.Location = new System.Drawing.Point(81, 33);
this.CmbClimateType.Name = "CmbClimateType";
this.CmbClimateType.Size = new System.Drawing.Size(121, 25);
this.CmbClimateType.TabIndex = 2;
this.CmbClimateType.SelectedIndexChanged += new System.EventHandler(this.CmbClimateType_SelectedIndexChanged);
//
// LblClimateType
//
this.LblClimateType.AutoSize = true;
this.LblClimateType.ImeMode = System.Windows.Forms.ImeMode.NoControl;
this.LblClimateType.Location = new System.Drawing.Point(19, 36);
this.LblClimateType.Name = "LblClimateType";
this.LblClimateType.Size = new System.Drawing.Size(56, 17);
this.LblClimateType.TabIndex = 1;
this.LblClimateType.Text = "设置气候";
//
// BtnLockWeather
//
this.BtnLockWeather.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.BtnLockWeather.Location = new System.Drawing.Point(6, 211);
this.BtnLockWeather.Name = "BtnLockWeather";
this.BtnLockWeather.Size = new System.Drawing.Size(150, 25);
this.BtnLockWeather.TabIndex = 10;
this.BtnLockWeather.Tag = "on";
this.BtnLockWeather.Text = "锁定天气";
this.BtnLockWeather.UseVisualStyleBackColor = true;
this.BtnLockWeather.Click += new System.EventHandler(this.BtnLockWeather_Click);
//
// BtnUnlockWeather
//
this.BtnUnlockWeather.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.BtnUnlockWeather.Location = new System.Drawing.Point(162, 211);
this.BtnUnlockWeather.Name = "BtnUnlockWeather";
this.BtnUnlockWeather.Size = new System.Drawing.Size(150, 25);
this.BtnUnlockWeather.TabIndex = 11;
this.BtnUnlockWeather.Tag = "off";
this.BtnUnlockWeather.Text = "解锁天气";
this.BtnUnlockWeather.UseVisualStyleBackColor = true;
this.BtnUnlockWeather.Click += new System.EventHandler(this.BtnLockWeather_Click);
//
// label1
//
this.label1.Location = new System.Drawing.Point(3, 78);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(334, 55);
this.label1.TabIndex = 4;
this.label1.Text = "天气数据目前暂未翻译,在此邀请你参与天气数据翻译,导出天气原始数据,在游戏内测试天气效果,修改数据文件通过提交更改按钮在 Github 创建 Pull Reque" +
"st即可参与贡献";
//
// BtnExportWeather
//
this.BtnExportWeather.Location = new System.Drawing.Point(3, 136);
this.BtnExportWeather.Name = "BtnExportWeather";
this.BtnExportWeather.Size = new System.Drawing.Size(150, 25);
this.BtnExportWeather.TabIndex = 5;
this.BtnExportWeather.Text = "导出原始天气";
this.BtnExportWeather.UseVisualStyleBackColor = true;
this.BtnExportWeather.Click += new System.EventHandler(this.BtnExportWeather_Click);
//
// BtnImportWeather
//
this.BtnImportWeather.Location = new System.Drawing.Point(159, 136);
this.BtnImportWeather.Name = "BtnImportWeather";
this.BtnImportWeather.Size = new System.Drawing.Size(150, 25);
this.BtnImportWeather.TabIndex = 6;
this.BtnImportWeather.Text = "导入天气";
this.BtnImportWeather.UseVisualStyleBackColor = true;
this.BtnImportWeather.Click += new System.EventHandler(this.BtnImportWeather_Click);
//
// BtnCreatePullRequest
//
this.BtnCreatePullRequest.Location = new System.Drawing.Point(3, 167);
this.BtnCreatePullRequest.Name = "BtnCreatePullRequest";
this.BtnCreatePullRequest.Size = new System.Drawing.Size(150, 25);
this.BtnCreatePullRequest.TabIndex = 7;
this.BtnCreatePullRequest.Text = "提交修改 (Github)";
this.BtnCreatePullRequest.UseVisualStyleBackColor = true;
this.BtnCreatePullRequest.Click += new System.EventHandler(this.BtnCreatePullRequest_Click);
//
// LblPullRequestTip
//
this.LblPullRequestTip.AutoSize = true;
this.LblPullRequestTip.ForeColor = System.Drawing.SystemColors.GrayText;
this.LblPullRequestTip.Location = new System.Drawing.Point(156, 171);
this.LblPullRequestTip.Name = "LblPullRequestTip";
this.LblPullRequestTip.Size = new System.Drawing.Size(128, 17);
this.LblPullRequestTip.TabIndex = 8;
this.LblPullRequestTip.Text = "你也可以提交到群文件";
//
// LblClimateTip
//
this.LblClimateTip.AutoSize = true;
this.LblClimateTip.ForeColor = System.Drawing.SystemColors.GrayText;
this.LblClimateTip.Location = new System.Drawing.Point(208, 36);
this.LblClimateTip.Name = "LblClimateTip";
this.LblClimateTip.Size = new System.Drawing.Size(104, 17);
this.LblClimateTip.TabIndex = 3;
this.LblClimateTip.Text = "天气包含默认气候";
//
// TxtWeatherFilter
//
this.TxtWeatherFilter.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.TxtWeatherFilter.Location = new System.Drawing.Point(343, 3);
this.TxtWeatherFilter.Name = "TxtWeatherFilter";
this.TxtWeatherFilter.Size = new System.Drawing.Size(300, 23);
this.TxtWeatherFilter.TabIndex = 100;
this.TxtWeatherFilter.TextChanged += new System.EventHandler(this.TxtWeatherFilter_TextChanged);
//
// ListFilteredWeathers
//
this.ListFilteredWeathers.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.ListFilteredWeathers.FormattingEnabled = true;
this.ListFilteredWeathers.ItemHeight = 17;
this.ListFilteredWeathers.Location = new System.Drawing.Point(343, 26);
this.ListFilteredWeathers.Name = "ListFilteredWeathers";
this.ListFilteredWeathers.Size = new System.Drawing.Size(300, 191);
this.ListFilteredWeathers.TabIndex = 101;
this.ListFilteredWeathers.Visible = false;
this.ListFilteredWeathers.SelectedIndexChanged += new System.EventHandler(this.ListFilteredWeathers_SelectedIndexChanged);
//
// LblClearFilter
//
this.LblClearFilter.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.LblClearFilter.AutoSize = true;
this.LblClearFilter.BackColor = System.Drawing.Color.White;
this.LblClearFilter.Cursor = System.Windows.Forms.Cursors.Hand;
this.LblClearFilter.Location = new System.Drawing.Point(626, 6);
this.LblClearFilter.Name = "LblClearFilter";
this.LblClearFilter.Size = new System.Drawing.Size(16, 17);
this.LblClearFilter.TabIndex = 103;
this.LblClearFilter.Text = "X";
this.LblClearFilter.Visible = false;
this.LblClearFilter.Click += new System.EventHandler(this.LblClearFilter_Click);
//
// PageWeather
//
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 17F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.LblClearFilter);
this.Controls.Add(this.ListFilteredWeathers);
this.Controls.Add(this.TxtWeatherFilter);
this.Controls.Add(this.LblClimateTip);
this.Controls.Add(this.LblPullRequestTip);
this.Controls.Add(this.BtnCreatePullRequest);
this.Controls.Add(this.BtnImportWeather);
this.Controls.Add(this.BtnExportWeather);
this.Controls.Add(this.label1);
this.Controls.Add(this.BtnUnlockWeather);
this.Controls.Add(this.BtnLockWeather);
this.Controls.Add(this.CmbClimateType);
this.Controls.Add(this.LblClimateType);
this.Controls.Add(this.LblPageTitle);
this.Controls.Add(this.TvSceneWeathers);
this.Name = "PageWeather";
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.TreeView TvSceneWeathers;
private System.Windows.Forms.Label LblPageTitle;
private System.Windows.Forms.ComboBox CmbClimateType;
private System.Windows.Forms.Label LblClimateType;
private System.Windows.Forms.Button BtnLockWeather;
private System.Windows.Forms.Button BtnUnlockWeather;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Button BtnExportWeather;
private System.Windows.Forms.Button BtnImportWeather;
private System.Windows.Forms.Button BtnCreatePullRequest;
private System.Windows.Forms.Label LblPullRequestTip;
private System.Windows.Forms.Label LblClimateTip;
private System.Windows.Forms.TextBox TxtWeatherFilter;
private System.Windows.Forms.ListBox ListFilteredWeathers;
private System.Windows.Forms.Label LblClearFilter;
}
}

View File

@ -0,0 +1,201 @@
/**
* Grasscutter Tools
* Copyright (C) 2023 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.IO;
using System.Windows.Forms;
using GrasscutterTools.Game;
using GrasscutterTools.Properties;
using GrasscutterTools.Utils;
namespace GrasscutterTools.Pages
{
internal partial class PageWeather : BasePage
{
public override string Text => Resources.PageWeatherTitle;
public PageWeather()
{
InitializeComponent();
}
public override void OnLoad()
{
CmbClimateType.Items.Clear();
CmbClimateType.Items.AddRange(Resources.ClimateType.Split(','));
LoadWeathers(GameData.Weathers);
}
/// <summary>
/// 气候类型列表
/// </summary>
private static readonly string[] climateTypes = { "none", "sunny", "cloudy", "rain", "thunderstorm", "snow", "mist" };
/// <summary>
/// 气候类型下拉框选中项改变时触发
/// </summary>
private void CmbClimateType_SelectedIndexChanged(object sender, EventArgs e)
{
if (CmbClimateType.SelectedIndex < 0)
return;
if (CommandVersion.Check(CommandVersion.V1_2_2))
SetCommand("/weather", CmbClimateType.SelectedIndex < climateTypes.Length ? climateTypes[CmbClimateType.SelectedIndex] : "none");
else
SetCommand("/weather", $"0 {CmbClimateType.SelectedIndex}");
}
/// <summary>
/// 锁定天气
/// </summary>
private void BtnLockWeather_Click(object sender, EventArgs e)
{
SetCommand("/prop", $"is_weather_locked {((Button)sender).Tag}");
}
private ItemMapGroup weatherSources;
/// <summary>
/// 加载天气
/// </summary>
private void LoadWeathers(ItemMapGroup weathers)
{
weatherSources = weathers;
TvSceneWeathers.BeginUpdate();
TvSceneWeathers.Nodes.Clear();
foreach (var weather in weathers)
{
// 将场景作为标签分类
var sceneName = int.TryParse(weather.Key, out var sceneId)
? GameData.Scenes[sceneId]
: weather.Key;
var node = TvSceneWeathers.Nodes.Add(weather.Key, sceneName);
// 添加所有标签
var weatherName = weather.Value;
for (var i = 0; i < weatherName.Count; i++)
node.Nodes.Add(weatherName.Ids[i].ToString(), weatherName.Lines[i]);
}
TvSceneWeathers.EndUpdate();
}
/// <summary>
/// 导出原始天气数据
/// </summary>
private void BtnExportWeather_Click(object sender, EventArgs e)
{
var dialog = new SaveFileDialog
{
FileName = "Weather.txt",
Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*"
};
if (dialog.ShowDialog() != DialogResult.OK) return;
using var stream = dialog.OpenFile();
using var writer = new StreamWriter(stream);
writer.Write(Resources.Weather);
}
/// <summary>
/// 导入天气数据
/// </summary>
private void BtnImportWeather_Click(object sender, EventArgs e)
{
var dialog = new OpenFileDialog
{
Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*"
};
if (dialog.ShowDialog() != DialogResult.OK) return;
using var stream = dialog.OpenFile();
using var reader = new StreamReader(stream);
try
{
var editedWeather = new ItemMapGroup(reader.ReadToEnd());
LoadWeathers(editedWeather);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, Resources.Error, MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
/// <summary>
/// 在 Github 上创建提交天气更改
/// </summary>
private void BtnCreatePullRequest_Click(object sender, EventArgs e)
{
UIUtil.OpenURL("https://github.com/jie65535/GrasscutterCommandGenerator/edit/main/Source/GrasscutterTools/Resources/zh-cn/Weather.txt");
}
/// <summary>
/// 选中项改变时触发
/// </summary>
private void TvSceneWeathers_AfterSelect(object sender, TreeViewEventArgs e)
{
// 忽略未知操作
if (e.Action == TreeViewAction.Unknown || !e.Node.IsSelected)
return;
// 忽略根节点
if (e.Node.Level == 0)
return;
// 生成命令
SetCommand("/weather", e.Node.Name);
}
/// <summary>
/// 天气过滤栏文本更改时触发
/// </summary>
private void TxtWeatherFilter_TextChanged(object sender, EventArgs e)
{
if (string.IsNullOrWhiteSpace(TxtWeatherFilter.Text))
{
LblClearFilter.Visible = false;
ListFilteredWeathers.Visible = false;
ListFilteredWeathers.Items.Clear();
}
else
{
UIUtil.ListBoxFilter(ListFilteredWeathers, weatherSources.Lines, TxtWeatherFilter.Text);
ListFilteredWeathers.Visible = true;
LblClearFilter.Visible = true;
}
}
/// <summary>
/// 点击清空过滤框标签时触发
/// </summary>
private void LblClearFilter_Click(object sender, EventArgs e)
{
TxtWeatherFilter.Clear();
}
/// <summary>
/// 过滤的天气中选中项改变事件
/// </summary>
private void ListFilteredWeathers_SelectedIndexChanged(object sender, EventArgs e)
{
var item = (string)ListFilteredWeathers.SelectedItem;
// 生成命令
SetCommand("/weather", item.Substring(0, item.IndexOf(':')).Trim());
}
}
}

View File

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

View File

@ -1266,6 +1266,15 @@ namespace GrasscutterTools.Properties {
}
}
/// <summary>
/// 查找类似 天气 的本地化字符串。
/// </summary>
internal static string PageWeatherTitle {
get {
return ResourceManager.GetString("PageWeatherTitle", resourceCulture);
}
}
/// <summary>
/// 查找类似 要设置的权限不能为空! 的本地化字符串。
/// </summary>
@ -1729,5 +1738,41 @@ namespace GrasscutterTools.Properties {
return ResourceManager.GetString("WeaponColor", resourceCulture);
}
}
/// <summary>
/// 查找类似 // 1
///2139:LP_Fog_Light
///2140:LP_Fog_Heavy
///2141:LP_Fog_Light
///2142:LP_Fog_Light
///2143:LP_Fog_Light
///4206:Dq_HeGuan_Doom
///4207:Dq_HeGuan_DoomHeavy
///4208:Dq_HeGuan_DoomHeavyest
///// 3
///1:Md_General
///2:Md_WindDragon
///3:Md_City_Storm
///4:Monster_LupiBoreas
///1000:Md_General
///1001:Md_General
///1002:Md_General
///1003:Md_General
///1004:Md_General
///1005:Md_General
///1006:Md_City_General
///1007:Md_WindDragon
///1008:Md_City_Fenghuajie
///1009:Md_General
///1010:ActivityArena_Fire
///1011:ActivityArena_Sunny
///1012:Md_General
///1013: [字符串的其余部分被截断]&quot;; 的本地化字符串。
/// </summary>
internal static string Weather {
get {
return ResourceManager.GetString("Weather", resourceCulture);
}
}
}
}

View File

@ -384,4 +384,7 @@ Improvement suggestions have been submitted, please use caution to send emails t
<data name="PageSettingsTitle" xml:space="preserve">
<value>Settings</value>
</data>
<data name="PageWeatherTitle" xml:space="preserve">
<value>Weather</value>
</data>
</root>

View File

@ -396,4 +396,10 @@
<data name="PageSettingsTitle" xml:space="preserve">
<value>设置</value>
</data>
<data name="Weather" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\zh-cn\Weather.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>
</data>
<data name="PageWeatherTitle" xml:space="preserve">
<value>天气</value>
</data>
</root>

View File

@ -372,4 +372,7 @@
<data name="PageSettingsTitle" xml:space="preserve">
<value>Настройка</value>
</data>
<data name="PageWeatherTitle" xml:space="preserve">
<value>Погода</value>
</data>
</root>

View File

@ -378,4 +378,7 @@
<data name="PageSettingsTitle" xml:space="preserve">
<value>設定</value>
</data>
<data name="PageWeatherTitle" xml:space="preserve">
<value>天氣</value>
</data>
</root>

File diff suppressed because it is too large Load Diff