mirror of
https://github.com/jie65535/GrasscutterCommandGenerator.git
synced 2025-06-07 22:59:14 +08:00
Add Activity Config Editor (CHS Only)
This commit is contained in:
parent
f4ec2ee5fa
commit
226742776f
@ -67,6 +67,9 @@
|
||||
<setting name="NavContainerSplitterDistance" serializeAs="String">
|
||||
<value>0</value>
|
||||
</setting>
|
||||
<setting name="ActivityConfigJsonPath" serializeAs="String">
|
||||
<value />
|
||||
</setting>
|
||||
</GrasscutterTools.Properties.Settings>
|
||||
</userSettings>
|
||||
</configuration>
|
448
Source/GrasscutterTools/Forms/FormActivityEditor.Designer.cs
generated
Normal file
448
Source/GrasscutterTools/Forms/FormActivityEditor.Designer.cs
generated
Normal file
@ -0,0 +1,448 @@
|
||||
namespace GrasscutterTools.Forms
|
||||
{
|
||||
partial class FormActivityEditor
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.BtnSave = new System.Windows.Forms.Button();
|
||||
this.BtnLoad = new System.Windows.Forms.Button();
|
||||
this.ActivityConfigJsonPath = new System.Windows.Forms.TextBox();
|
||||
this.LblActivityConfigJsonPath = new System.Windows.Forms.Label();
|
||||
this.GrpAllActivity = new System.Windows.Forms.GroupBox();
|
||||
this.ListAllActivity = new System.Windows.Forms.ListView();
|
||||
this.GrpFileActivity = new System.Windows.Forms.GroupBox();
|
||||
this.GrpActivityInfo = new System.Windows.Forms.GroupBox();
|
||||
this.LblActivityTitle = new System.Windows.Forms.Label();
|
||||
this.LblActivityParmEditTip = new System.Windows.Forms.Label();
|
||||
this.BtnDelete = new System.Windows.Forms.Button();
|
||||
this.BtnAddOrUpdate = new System.Windows.Forms.Button();
|
||||
this.DTPEndTime = new System.Windows.Forms.DateTimePicker();
|
||||
this.DTPBeginTime = new System.Windows.Forms.DateTimePicker();
|
||||
this.TxtMeetCondList = new System.Windows.Forms.TextBox();
|
||||
this.NUDScheduleId = new System.Windows.Forms.NumericUpDown();
|
||||
this.NUDActivityType = new System.Windows.Forms.NumericUpDown();
|
||||
this.NUDActivityId = new System.Windows.Forms.NumericUpDown();
|
||||
this.LblEndTime = new System.Windows.Forms.Label();
|
||||
this.LblBeginTime = new System.Windows.Forms.Label();
|
||||
this.LblMeetCondList = new System.Windows.Forms.Label();
|
||||
this.LblScheduleId = new System.Windows.Forms.Label();
|
||||
this.LblActivityType = new System.Windows.Forms.Label();
|
||||
this.LblActivityId = new System.Windows.Forms.Label();
|
||||
this.ColumnActivityName = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
this.ColumnActivityId = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
this.ListActivityConfigItems = new System.Windows.Forms.ListView();
|
||||
this.ColActivityId = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
this.ColActivityTitle = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
this.ColActivityBeginTime = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
this.ColActivityEndTime = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
this.GrpAllActivity.SuspendLayout();
|
||||
this.GrpFileActivity.SuspendLayout();
|
||||
this.GrpActivityInfo.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.NUDScheduleId)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.NUDActivityType)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.NUDActivityId)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// BtnSave
|
||||
//
|
||||
this.BtnSave.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.BtnSave.ImeMode = System.Windows.Forms.ImeMode.NoControl;
|
||||
this.BtnSave.Location = new System.Drawing.Point(776, 12);
|
||||
this.BtnSave.Name = "BtnSave";
|
||||
this.BtnSave.Size = new System.Drawing.Size(100, 23);
|
||||
this.BtnSave.TabIndex = 3;
|
||||
this.BtnSave.Text = "保存";
|
||||
this.BtnSave.UseVisualStyleBackColor = true;
|
||||
this.BtnSave.Click += new System.EventHandler(this.BtnSave_Click);
|
||||
//
|
||||
// BtnLoad
|
||||
//
|
||||
this.BtnLoad.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.BtnLoad.ImeMode = System.Windows.Forms.ImeMode.NoControl;
|
||||
this.BtnLoad.Location = new System.Drawing.Point(671, 12);
|
||||
this.BtnLoad.Name = "BtnLoad";
|
||||
this.BtnLoad.Size = new System.Drawing.Size(100, 23);
|
||||
this.BtnLoad.TabIndex = 2;
|
||||
this.BtnLoad.Text = "加载";
|
||||
this.BtnLoad.UseVisualStyleBackColor = true;
|
||||
this.BtnLoad.Click += new System.EventHandler(this.BtnLoad_Click);
|
||||
//
|
||||
// ActivityConfigJsonPath
|
||||
//
|
||||
this.ActivityConfigJsonPath.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.ActivityConfigJsonPath.Location = new System.Drawing.Point(176, 12);
|
||||
this.ActivityConfigJsonPath.Name = "ActivityConfigJsonPath";
|
||||
this.ActivityConfigJsonPath.Size = new System.Drawing.Size(489, 23);
|
||||
this.ActivityConfigJsonPath.TabIndex = 1;
|
||||
//
|
||||
// LblActivityConfigJsonPath
|
||||
//
|
||||
this.LblActivityConfigJsonPath.AutoSize = true;
|
||||
this.LblActivityConfigJsonPath.ImeMode = System.Windows.Forms.ImeMode.NoControl;
|
||||
this.LblActivityConfigJsonPath.Location = new System.Drawing.Point(17, 15);
|
||||
this.LblActivityConfigJsonPath.Name = "LblActivityConfigJsonPath";
|
||||
this.LblActivityConfigJsonPath.Size = new System.Drawing.Size(153, 17);
|
||||
this.LblActivityConfigJsonPath.TabIndex = 0;
|
||||
this.LblActivityConfigJsonPath.Text = "ActivityConfig.json 路径:";
|
||||
//
|
||||
// GrpAllActivity
|
||||
//
|
||||
this.GrpAllActivity.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.GrpAllActivity.Controls.Add(this.ListAllActivity);
|
||||
this.GrpAllActivity.Location = new System.Drawing.Point(612, 41);
|
||||
this.GrpAllActivity.Name = "GrpAllActivity";
|
||||
this.GrpAllActivity.Size = new System.Drawing.Size(260, 328);
|
||||
this.GrpAllActivity.TabIndex = 6;
|
||||
this.GrpAllActivity.TabStop = false;
|
||||
this.GrpAllActivity.Text = "已知活动 by dplek";
|
||||
//
|
||||
// ListAllActivity
|
||||
//
|
||||
this.ListAllActivity.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
|
||||
this.ColumnActivityId,
|
||||
this.ColumnActivityName});
|
||||
this.ListAllActivity.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.ListAllActivity.FullRowSelect = true;
|
||||
this.ListAllActivity.HideSelection = false;
|
||||
this.ListAllActivity.Location = new System.Drawing.Point(3, 19);
|
||||
this.ListAllActivity.MultiSelect = false;
|
||||
this.ListAllActivity.Name = "ListAllActivity";
|
||||
this.ListAllActivity.Size = new System.Drawing.Size(254, 306);
|
||||
this.ListAllActivity.TabIndex = 0;
|
||||
this.ListAllActivity.UseCompatibleStateImageBehavior = false;
|
||||
this.ListAllActivity.View = System.Windows.Forms.View.Details;
|
||||
this.ListAllActivity.SelectedIndexChanged += new System.EventHandler(this.ListAllActivity_SelectedIndexChanged);
|
||||
//
|
||||
// GrpFileActivity
|
||||
//
|
||||
this.GrpFileActivity.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.GrpFileActivity.Controls.Add(this.ListActivityConfigItems);
|
||||
this.GrpFileActivity.Location = new System.Drawing.Point(12, 41);
|
||||
this.GrpFileActivity.Name = "GrpFileActivity";
|
||||
this.GrpFileActivity.Size = new System.Drawing.Size(260, 328);
|
||||
this.GrpFileActivity.TabIndex = 4;
|
||||
this.GrpFileActivity.TabStop = false;
|
||||
this.GrpFileActivity.Text = "当前文件";
|
||||
//
|
||||
// GrpActivityInfo
|
||||
//
|
||||
this.GrpActivityInfo.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.GrpActivityInfo.Controls.Add(this.LblActivityTitle);
|
||||
this.GrpActivityInfo.Controls.Add(this.LblActivityParmEditTip);
|
||||
this.GrpActivityInfo.Controls.Add(this.BtnDelete);
|
||||
this.GrpActivityInfo.Controls.Add(this.BtnAddOrUpdate);
|
||||
this.GrpActivityInfo.Controls.Add(this.DTPEndTime);
|
||||
this.GrpActivityInfo.Controls.Add(this.DTPBeginTime);
|
||||
this.GrpActivityInfo.Controls.Add(this.TxtMeetCondList);
|
||||
this.GrpActivityInfo.Controls.Add(this.NUDScheduleId);
|
||||
this.GrpActivityInfo.Controls.Add(this.NUDActivityType);
|
||||
this.GrpActivityInfo.Controls.Add(this.NUDActivityId);
|
||||
this.GrpActivityInfo.Controls.Add(this.LblEndTime);
|
||||
this.GrpActivityInfo.Controls.Add(this.LblBeginTime);
|
||||
this.GrpActivityInfo.Controls.Add(this.LblMeetCondList);
|
||||
this.GrpActivityInfo.Controls.Add(this.LblScheduleId);
|
||||
this.GrpActivityInfo.Controls.Add(this.LblActivityType);
|
||||
this.GrpActivityInfo.Controls.Add(this.LblActivityId);
|
||||
this.GrpActivityInfo.Location = new System.Drawing.Point(278, 41);
|
||||
this.GrpActivityInfo.Name = "GrpActivityInfo";
|
||||
this.GrpActivityInfo.Size = new System.Drawing.Size(328, 328);
|
||||
this.GrpActivityInfo.TabIndex = 5;
|
||||
this.GrpActivityInfo.TabStop = false;
|
||||
this.GrpActivityInfo.Text = "活动信息";
|
||||
//
|
||||
// LblActivityTitle
|
||||
//
|
||||
this.LblActivityTitle.AutoEllipsis = true;
|
||||
this.LblActivityTitle.ForeColor = System.Drawing.SystemColors.GrayText;
|
||||
this.LblActivityTitle.Location = new System.Drawing.Point(173, 45);
|
||||
this.LblActivityTitle.Name = "LblActivityTitle";
|
||||
this.LblActivityTitle.Size = new System.Drawing.Size(134, 17);
|
||||
this.LblActivityTitle.TabIndex = 2;
|
||||
this.LblActivityTitle.Text = "活动名称";
|
||||
//
|
||||
// LblActivityParmEditTip
|
||||
//
|
||||
this.LblActivityParmEditTip.AutoSize = true;
|
||||
this.LblActivityParmEditTip.ForeColor = System.Drawing.SystemColors.GrayText;
|
||||
this.LblActivityParmEditTip.Location = new System.Drawing.Point(40, 251);
|
||||
this.LblActivityParmEditTip.Name = "LblActivityParmEditTip";
|
||||
this.LblActivityParmEditTip.Size = new System.Drawing.Size(248, 17);
|
||||
this.LblActivityParmEditTip.TabIndex = 13;
|
||||
this.LblActivityParmEditTip.Text = "提示:通常情况下你只需要修改活动进行时间";
|
||||
//
|
||||
// BtnDelete
|
||||
//
|
||||
this.BtnDelete.Enabled = false;
|
||||
this.BtnDelete.Location = new System.Drawing.Point(199, 271);
|
||||
this.BtnDelete.Name = "BtnDelete";
|
||||
this.BtnDelete.Size = new System.Drawing.Size(89, 30);
|
||||
this.BtnDelete.TabIndex = 15;
|
||||
this.BtnDelete.Text = "- 删除";
|
||||
this.BtnDelete.UseVisualStyleBackColor = true;
|
||||
this.BtnDelete.Click += new System.EventHandler(this.BtnDelete_Click);
|
||||
//
|
||||
// BtnAddOrUpdate
|
||||
//
|
||||
this.BtnAddOrUpdate.Location = new System.Drawing.Point(43, 271);
|
||||
this.BtnAddOrUpdate.Name = "BtnAddOrUpdate";
|
||||
this.BtnAddOrUpdate.Size = new System.Drawing.Size(150, 30);
|
||||
this.BtnAddOrUpdate.TabIndex = 14;
|
||||
this.BtnAddOrUpdate.Text = "√ 添加或更新";
|
||||
this.BtnAddOrUpdate.UseVisualStyleBackColor = true;
|
||||
this.BtnAddOrUpdate.Click += new System.EventHandler(this.BtnAddOrUpdate_Click);
|
||||
//
|
||||
// DTPEndTime
|
||||
//
|
||||
this.DTPEndTime.Location = new System.Drawing.Point(107, 188);
|
||||
this.DTPEndTime.Name = "DTPEndTime";
|
||||
this.DTPEndTime.Size = new System.Drawing.Size(200, 23);
|
||||
this.DTPEndTime.TabIndex = 12;
|
||||
//
|
||||
// DTPBeginTime
|
||||
//
|
||||
this.DTPBeginTime.Location = new System.Drawing.Point(107, 159);
|
||||
this.DTPBeginTime.Name = "DTPBeginTime";
|
||||
this.DTPBeginTime.Size = new System.Drawing.Size(200, 23);
|
||||
this.DTPBeginTime.TabIndex = 10;
|
||||
//
|
||||
// TxtMeetCondList
|
||||
//
|
||||
this.TxtMeetCondList.Location = new System.Drawing.Point(107, 130);
|
||||
this.TxtMeetCondList.Name = "TxtMeetCondList";
|
||||
this.TxtMeetCondList.Size = new System.Drawing.Size(200, 23);
|
||||
this.TxtMeetCondList.TabIndex = 8;
|
||||
//
|
||||
// NUDScheduleId
|
||||
//
|
||||
this.NUDScheduleId.Location = new System.Drawing.Point(107, 101);
|
||||
this.NUDScheduleId.Maximum = new decimal(new int[] {
|
||||
2147483647,
|
||||
0,
|
||||
0,
|
||||
0});
|
||||
this.NUDScheduleId.Name = "NUDScheduleId";
|
||||
this.NUDScheduleId.Size = new System.Drawing.Size(80, 23);
|
||||
this.NUDScheduleId.TabIndex = 6;
|
||||
//
|
||||
// NUDActivityType
|
||||
//
|
||||
this.NUDActivityType.Location = new System.Drawing.Point(107, 72);
|
||||
this.NUDActivityType.Maximum = new decimal(new int[] {
|
||||
2147483647,
|
||||
0,
|
||||
0,
|
||||
0});
|
||||
this.NUDActivityType.Name = "NUDActivityType";
|
||||
this.NUDActivityType.Size = new System.Drawing.Size(60, 23);
|
||||
this.NUDActivityType.TabIndex = 4;
|
||||
//
|
||||
// NUDActivityId
|
||||
//
|
||||
this.NUDActivityId.Location = new System.Drawing.Point(107, 43);
|
||||
this.NUDActivityId.Maximum = new decimal(new int[] {
|
||||
2147483647,
|
||||
0,
|
||||
0,
|
||||
0});
|
||||
this.NUDActivityId.Name = "NUDActivityId";
|
||||
this.NUDActivityId.Size = new System.Drawing.Size(60, 23);
|
||||
this.NUDActivityId.TabIndex = 1;
|
||||
this.NUDActivityId.ValueChanged += new System.EventHandler(this.NUDActivityId_ValueChanged);
|
||||
//
|
||||
// LblEndTime
|
||||
//
|
||||
this.LblEndTime.AutoSize = true;
|
||||
this.LblEndTime.Location = new System.Drawing.Point(21, 193);
|
||||
this.LblEndTime.Name = "LblEndTime";
|
||||
this.LblEndTime.Size = new System.Drawing.Size(80, 17);
|
||||
this.LblEndTime.TabIndex = 11;
|
||||
this.LblEndTime.Text = "活动结束时间";
|
||||
//
|
||||
// LblBeginTime
|
||||
//
|
||||
this.LblBeginTime.AutoSize = true;
|
||||
this.LblBeginTime.Location = new System.Drawing.Point(21, 164);
|
||||
this.LblBeginTime.Name = "LblBeginTime";
|
||||
this.LblBeginTime.Size = new System.Drawing.Size(80, 17);
|
||||
this.LblBeginTime.TabIndex = 9;
|
||||
this.LblBeginTime.Text = "活动开始时间";
|
||||
//
|
||||
// LblMeetCondList
|
||||
//
|
||||
this.LblMeetCondList.AutoSize = true;
|
||||
this.LblMeetCondList.Location = new System.Drawing.Point(21, 133);
|
||||
this.LblMeetCondList.Name = "LblMeetCondList";
|
||||
this.LblMeetCondList.Size = new System.Drawing.Size(80, 17);
|
||||
this.LblMeetCondList.TabIndex = 7;
|
||||
this.LblMeetCondList.Text = "满足条件列表";
|
||||
//
|
||||
// LblScheduleId
|
||||
//
|
||||
this.LblScheduleId.AutoSize = true;
|
||||
this.LblScheduleId.Location = new System.Drawing.Point(21, 103);
|
||||
this.LblScheduleId.Name = "LblScheduleId";
|
||||
this.LblScheduleId.Size = new System.Drawing.Size(45, 17);
|
||||
this.LblScheduleId.TabIndex = 5;
|
||||
this.LblScheduleId.Text = "计划ID";
|
||||
//
|
||||
// LblActivityType
|
||||
//
|
||||
this.LblActivityType.AutoSize = true;
|
||||
this.LblActivityType.Location = new System.Drawing.Point(21, 74);
|
||||
this.LblActivityType.Name = "LblActivityType";
|
||||
this.LblActivityType.Size = new System.Drawing.Size(56, 17);
|
||||
this.LblActivityType.TabIndex = 3;
|
||||
this.LblActivityType.Text = "活动类型";
|
||||
//
|
||||
// LblActivityId
|
||||
//
|
||||
this.LblActivityId.AutoSize = true;
|
||||
this.LblActivityId.Location = new System.Drawing.Point(21, 45);
|
||||
this.LblActivityId.Name = "LblActivityId";
|
||||
this.LblActivityId.Size = new System.Drawing.Size(45, 17);
|
||||
this.LblActivityId.TabIndex = 0;
|
||||
this.LblActivityId.Text = "活动ID";
|
||||
//
|
||||
// ColumnActivityName
|
||||
//
|
||||
this.ColumnActivityName.Text = "活动名称";
|
||||
this.ColumnActivityName.Width = 300;
|
||||
//
|
||||
// ColumnActivityId
|
||||
//
|
||||
this.ColumnActivityId.Text = "ID";
|
||||
this.ColumnActivityId.Width = 50;
|
||||
//
|
||||
// ListActivityConfigItems
|
||||
//
|
||||
this.ListActivityConfigItems.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
|
||||
this.ColActivityId,
|
||||
this.ColActivityTitle,
|
||||
this.ColActivityBeginTime,
|
||||
this.ColActivityEndTime});
|
||||
this.ListActivityConfigItems.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.ListActivityConfigItems.FullRowSelect = true;
|
||||
this.ListActivityConfigItems.HideSelection = false;
|
||||
this.ListActivityConfigItems.Location = new System.Drawing.Point(3, 19);
|
||||
this.ListActivityConfigItems.MultiSelect = false;
|
||||
this.ListActivityConfigItems.Name = "ListActivityConfigItems";
|
||||
this.ListActivityConfigItems.Size = new System.Drawing.Size(254, 306);
|
||||
this.ListActivityConfigItems.TabIndex = 0;
|
||||
this.ListActivityConfigItems.UseCompatibleStateImageBehavior = false;
|
||||
this.ListActivityConfigItems.View = System.Windows.Forms.View.Details;
|
||||
this.ListActivityConfigItems.SelectedIndexChanged += new System.EventHandler(this.ListActivityConfigItems_SelectedIndexChanged);
|
||||
//
|
||||
// ColActivityId
|
||||
//
|
||||
this.ColActivityId.Text = "ID";
|
||||
this.ColActivityId.Width = 50;
|
||||
//
|
||||
// ColActivityTitle
|
||||
//
|
||||
this.ColActivityTitle.Text = "活动名称";
|
||||
this.ColActivityTitle.Width = 150;
|
||||
//
|
||||
// ColActivityBeginTime
|
||||
//
|
||||
this.ColActivityBeginTime.Text = "开始时间";
|
||||
this.ColActivityBeginTime.Width = 120;
|
||||
//
|
||||
// ColActivityEndTime
|
||||
//
|
||||
this.ColActivityEndTime.Text = "结束时间";
|
||||
this.ColActivityEndTime.Width = 120;
|
||||
//
|
||||
// FormActivityEditor
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 17F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(884, 381);
|
||||
this.Controls.Add(this.GrpAllActivity);
|
||||
this.Controls.Add(this.GrpActivityInfo);
|
||||
this.Controls.Add(this.GrpFileActivity);
|
||||
this.Controls.Add(this.BtnSave);
|
||||
this.Controls.Add(this.BtnLoad);
|
||||
this.Controls.Add(this.ActivityConfigJsonPath);
|
||||
this.Controls.Add(this.LblActivityConfigJsonPath);
|
||||
this.Font = new System.Drawing.Font("Microsoft YaHei UI", 9F);
|
||||
this.Margin = new System.Windows.Forms.Padding(4);
|
||||
this.MinimumSize = new System.Drawing.Size(900, 420);
|
||||
this.Name = "FormActivityEditor";
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
|
||||
this.Text = "ActivityConfig.json Editor";
|
||||
this.GrpAllActivity.ResumeLayout(false);
|
||||
this.GrpFileActivity.ResumeLayout(false);
|
||||
this.GrpActivityInfo.ResumeLayout(false);
|
||||
this.GrpActivityInfo.PerformLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.NUDScheduleId)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.NUDActivityType)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.NUDActivityId)).EndInit();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.Button BtnSave;
|
||||
private System.Windows.Forms.Button BtnLoad;
|
||||
private System.Windows.Forms.TextBox ActivityConfigJsonPath;
|
||||
private System.Windows.Forms.Label LblActivityConfigJsonPath;
|
||||
private System.Windows.Forms.GroupBox GrpAllActivity;
|
||||
private System.Windows.Forms.GroupBox GrpFileActivity;
|
||||
private System.Windows.Forms.GroupBox GrpActivityInfo;
|
||||
private System.Windows.Forms.ListView ListAllActivity;
|
||||
private System.Windows.Forms.Label LblEndTime;
|
||||
private System.Windows.Forms.Label LblBeginTime;
|
||||
private System.Windows.Forms.Label LblMeetCondList;
|
||||
private System.Windows.Forms.Label LblScheduleId;
|
||||
private System.Windows.Forms.Label LblActivityType;
|
||||
private System.Windows.Forms.Label LblActivityId;
|
||||
private System.Windows.Forms.Button BtnDelete;
|
||||
private System.Windows.Forms.Button BtnAddOrUpdate;
|
||||
private System.Windows.Forms.DateTimePicker DTPEndTime;
|
||||
private System.Windows.Forms.DateTimePicker DTPBeginTime;
|
||||
private System.Windows.Forms.TextBox TxtMeetCondList;
|
||||
private System.Windows.Forms.NumericUpDown NUDScheduleId;
|
||||
private System.Windows.Forms.NumericUpDown NUDActivityType;
|
||||
private System.Windows.Forms.NumericUpDown NUDActivityId;
|
||||
private System.Windows.Forms.Label LblActivityParmEditTip;
|
||||
private System.Windows.Forms.Label LblActivityTitle;
|
||||
private System.Windows.Forms.ColumnHeader ColumnActivityId;
|
||||
private System.Windows.Forms.ColumnHeader ColumnActivityName;
|
||||
private System.Windows.Forms.ListView ListActivityConfigItems;
|
||||
private System.Windows.Forms.ColumnHeader ColActivityId;
|
||||
private System.Windows.Forms.ColumnHeader ColActivityTitle;
|
||||
private System.Windows.Forms.ColumnHeader ColActivityBeginTime;
|
||||
private System.Windows.Forms.ColumnHeader ColActivityEndTime;
|
||||
}
|
||||
}
|
301
Source/GrasscutterTools/Forms/FormActivityEditor.cs
Normal file
301
Source/GrasscutterTools/Forms/FormActivityEditor.cs
Normal file
@ -0,0 +1,301 @@
|
||||
/**
|
||||
* 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.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Windows.Forms;
|
||||
|
||||
using GrasscutterTools.Game;
|
||||
using GrasscutterTools.Game.Activity;
|
||||
using GrasscutterTools.Properties;
|
||||
using GrasscutterTools.Utils;
|
||||
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace GrasscutterTools.Forms
|
||||
{
|
||||
public partial class FormActivityEditor : Form
|
||||
{
|
||||
#region - 成员 -
|
||||
|
||||
private List<ActivityConfigItem> ActivityConfigItems;
|
||||
|
||||
#endregion - 成员 -
|
||||
|
||||
#region - 构造与窗体事件 -
|
||||
|
||||
public FormActivityEditor()
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
Icon = Resources.IconGrasscutter;
|
||||
|
||||
DTPBeginTime.Value = DateTime.Today;
|
||||
DTPEndTime.Value = DateTime.Today.AddMonths(1);
|
||||
}
|
||||
|
||||
protected override void OnLoad(EventArgs e)
|
||||
{
|
||||
base.OnLoad(e);
|
||||
LoadAllActivity();
|
||||
|
||||
try
|
||||
{
|
||||
// 加载文件路径
|
||||
var path = Settings.Default.ActivityConfigJsonPath;
|
||||
ActivityConfigJsonPath.Text = path;
|
||||
if (!string.IsNullOrEmpty(path) && File.Exists(path))
|
||||
LoadActivityConfig(path);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show(ex.ToString(), Resources.Error, MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
}
|
||||
|
||||
protected override void OnFormClosed(FormClosedEventArgs e)
|
||||
{
|
||||
Settings.Default.ActivityConfigJsonPath = ActivityConfigJsonPath.Text;
|
||||
|
||||
base.OnFormClosed(e);
|
||||
}
|
||||
|
||||
#endregion - 构造与窗体事件 -
|
||||
|
||||
#region - ActivityConfig.json 文件相关 -
|
||||
|
||||
/// <summary>
|
||||
/// 加载按钮点击时触发
|
||||
/// </summary>
|
||||
private void BtnLoad_Click(object sender, EventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
var path = ActivityConfigJsonPath.Text.Trim();
|
||||
if (path == string.Empty)
|
||||
{
|
||||
var dialog = new OpenFileDialog
|
||||
{
|
||||
FileName = "ActivityConfig.json",
|
||||
Filter = "ActivityConfig.Json (*.json)|*.json|All files (*.*)|*.*",
|
||||
};
|
||||
var result = dialog.ShowDialog();
|
||||
if (result == DialogResult.OK)
|
||||
path = ActivityConfigJsonPath.Text = dialog.FileName;
|
||||
else
|
||||
return;
|
||||
}
|
||||
|
||||
// 反序列化
|
||||
LoadActivityConfig(path);
|
||||
MessageBox.Show("OK", Resources.Tips, MessageBoxButtons.OK);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show(ex.ToString(), Resources.Error, MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 加载活动配置
|
||||
/// </summary>
|
||||
/// <param name="path">ActivityConfig.json 文件路径</param>
|
||||
private void LoadActivityConfig(string path)
|
||||
{
|
||||
ActivityConfigItems = JsonConvert.DeserializeObject<List<ActivityConfigItem>>(File.ReadAllText(path)) ?? new List<ActivityConfigItem>();
|
||||
ListActivityConfigItems.BeginUpdate();
|
||||
ListActivityConfigItems.Items.Clear();
|
||||
ListActivityConfigItems.Items.AddRange(ActivityConfigItems.Select(Convert).ToArray());
|
||||
ListActivityConfigItems.EndUpdate();
|
||||
}
|
||||
|
||||
private ListViewItem Convert(ActivityConfigItem item)
|
||||
{
|
||||
return new ListViewItem(new[]
|
||||
{
|
||||
item.ActivityId.ToString(),
|
||||
GameData.Activity[item.ActivityId],
|
||||
item.BeginTime.ToShortDateString(),
|
||||
item.EndTime.ToShortDateString(),
|
||||
});
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 保存按钮点击时触发
|
||||
/// </summary>
|
||||
private void BtnSave_Click(object sender, EventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
var path = ActivityConfigJsonPath.Text.Trim();
|
||||
if (path == string.Empty)
|
||||
{
|
||||
var dialog = new SaveFileDialog
|
||||
{
|
||||
FileName = "ActivityConfig.json",
|
||||
Filter = "ActivityConfig.json (*.json)|*.json|All files (*.*)|*.*",
|
||||
};
|
||||
var result = dialog.ShowDialog();
|
||||
if (result == DialogResult.OK)
|
||||
path = ActivityConfigJsonPath.Text = dialog.FileName;
|
||||
else
|
||||
return;
|
||||
}
|
||||
|
||||
// 序列化
|
||||
File.WriteAllText(path, JsonConvert.SerializeObject(ActivityConfigItems, Formatting.Indented));
|
||||
MessageBox.Show("OK", Resources.Tips, MessageBoxButtons.OK);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show(ex.ToString(), Resources.Error, MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
}
|
||||
|
||||
#endregion - ActivityConfig.json 文件相关 -
|
||||
|
||||
#region - 活动列表 -
|
||||
|
||||
/// <summary>
|
||||
/// 加载所有活动
|
||||
/// </summary>
|
||||
private void LoadAllActivity()
|
||||
{
|
||||
ListAllActivity.BeginUpdate();
|
||||
foreach (var grp in GameData.Activity)
|
||||
{
|
||||
var grpControl = ListAllActivity.Groups.Add(grp.Key, grp.Key);
|
||||
for (var i = 0; i < grp.Value.Count; i++)
|
||||
{
|
||||
ListAllActivity.Items.Add(new ListViewItem(new[]
|
||||
{
|
||||
grp.Value.Ids[i].ToString(), grp.Value.Names[i]
|
||||
}, grpControl));
|
||||
}
|
||||
}
|
||||
ListAllActivity.EndUpdate();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 所有活动列表选中项改变时触发
|
||||
/// </summary>
|
||||
private void ListAllActivity_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (ListAllActivity.SelectedItems.Count == 0)
|
||||
return;
|
||||
NUDActivityId.Text = ListAllActivity.SelectedItems[0].Text;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show(ex.ToString(), Resources.Error, MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 活动ID改变时触发
|
||||
/// </summary>
|
||||
private void NUDActivityId_ValueChanged(object sender, EventArgs e)
|
||||
{
|
||||
// 更新活动名称到提示文本
|
||||
var activityId = (int)NUDActivityId.Value;
|
||||
LblActivityTitle.Text = GameData.Activity[activityId];
|
||||
|
||||
// 检查是否在列表中,允许删除
|
||||
var item = ActivityConfigItems.Find(it => it.ActivityId == activityId);
|
||||
BtnDelete.Enabled = item != null;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 点击添加或更新按钮时触发
|
||||
/// </summary>
|
||||
private async void BtnAddOrUpdate_Click(object sender, EventArgs e)
|
||||
{
|
||||
var activityId = (int)NUDActivityId.Value;
|
||||
var item = ActivityConfigItems.Find(it => it.ActivityId == activityId);
|
||||
if (item == null)
|
||||
{
|
||||
item = new ActivityConfigItem();
|
||||
ActivityConfigItems.Add(item);
|
||||
ListActivityConfigItems.Items.Add(Convert(item));
|
||||
}
|
||||
|
||||
item.ActivityType = (int)NUDActivityType.Value;
|
||||
item.ScheduleId = (int)NUDScheduleId.Value;
|
||||
try
|
||||
{
|
||||
item.MeetCondList = TxtMeetCondList.Text.Split(',').Select(it => int.Parse(it.Trim())).ToList();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
item.MeetCondList = new List<int>();
|
||||
}
|
||||
|
||||
if (DTPBeginTime.Value > DTPEndTime.Value)
|
||||
{
|
||||
// ?
|
||||
}
|
||||
|
||||
item.BeginTime = DTPBeginTime.Value.Date;
|
||||
item.EndTime = DTPEndTime.Value.Date.AddDays(1).AddSeconds(-1);
|
||||
|
||||
BtnDelete.Enabled = true;
|
||||
await UIUtil.ButtonComplete(BtnAddOrUpdate);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 点击删除按钮时触发
|
||||
/// </summary>
|
||||
private void BtnDelete_Click(object sender, EventArgs e)
|
||||
{
|
||||
var activityId = (int)NUDActivityId.Value;
|
||||
var index = ActivityConfigItems.FindIndex(it => it.ActivityId == activityId);
|
||||
if (index != -1)
|
||||
{
|
||||
ListActivityConfigItems.Items.RemoveAt(index);
|
||||
ActivityConfigItems.RemoveAt(index);
|
||||
}
|
||||
BtnDelete.Enabled = false;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 当前文件活动配置列表选中项改变时触发
|
||||
/// </summary>
|
||||
private void ListActivityConfigItems_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (ListActivityConfigItems.SelectedItems.Count == 0)
|
||||
return;
|
||||
var index = ListActivityConfigItems.SelectedIndices[0];
|
||||
var configItem = ActivityConfigItems[index];
|
||||
NUDActivityId.Value = configItem.ActivityId;
|
||||
NUDActivityType.Value = configItem.ActivityType;
|
||||
NUDScheduleId.Value = configItem.ScheduleId;
|
||||
TxtMeetCondList.Text = configItem.MeetCondList?.Count > 0
|
||||
? string.Join(",", configItem.MeetCondList)
|
||||
: string.Empty;
|
||||
DTPBeginTime.Value = configItem.BeginTime;
|
||||
DTPEndTime.Value = configItem.EndTime;
|
||||
}
|
||||
|
||||
#endregion - 活动列表 -
|
||||
}
|
||||
}
|
120
Source/GrasscutterTools/Forms/FormActivityEditor.resx
Normal file
120
Source/GrasscutterTools/Forms/FormActivityEditor.resx
Normal 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>
|
65
Source/GrasscutterTools/Game/Activity/ActivityConfigItem.cs
Normal file
65
Source/GrasscutterTools/Game/Activity/ActivityConfigItem.cs
Normal file
@ -0,0 +1,65 @@
|
||||
/**
|
||||
* 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.Collections.Generic;
|
||||
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace GrasscutterTools.Game.Activity
|
||||
{
|
||||
public class ActivityConfigItem
|
||||
{
|
||||
/// <summary>
|
||||
/// 活动ID
|
||||
/// </summary>
|
||||
[JsonProperty("activityId")]
|
||||
public int ActivityId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 活动类型
|
||||
/// </summary>
|
||||
[JsonProperty("activityType")]
|
||||
public int ActivityType { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 调度ID
|
||||
/// </summary>
|
||||
[JsonProperty("scheduleId")]
|
||||
public int ScheduleId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 满足条件列表
|
||||
/// </summary>
|
||||
[JsonProperty("meetCondList")]
|
||||
public List<int> MeetCondList { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 活动开始时间
|
||||
/// </summary>
|
||||
[JsonProperty("beginTime")]
|
||||
public DateTime BeginTime { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 活动结束时间
|
||||
/// </summary>
|
||||
[JsonProperty("endTime")]
|
||||
public DateTime EndTime { get; set; }
|
||||
}
|
||||
}
|
@ -26,6 +26,7 @@ namespace GrasscutterTools.Game
|
||||
public static void LoadResources()
|
||||
{
|
||||
Achievements = new ItemMap(Resources.Achievement);
|
||||
Activity = new ItemMapGroup(Resources.Activity);
|
||||
Artifacts = new ItemMap(Resources.Artifact);
|
||||
ArtifactCats = new ItemMap(Resources.ArtifactCat);
|
||||
ArtifactMainAttribution = new ItemMap(Resources.ArtifactMainAttribution);
|
||||
@ -46,6 +47,9 @@ namespace GrasscutterTools.Game
|
||||
}
|
||||
|
||||
public static ItemMap Achievements { get; private set; }
|
||||
|
||||
public static ItemMapGroup Activity { get; private set; }
|
||||
|
||||
public static ItemMap Artifacts { get; private set; }
|
||||
|
||||
public static ItemMap ArtifactCats { get; private set; }
|
||||
|
@ -87,6 +87,12 @@
|
||||
<ItemGroup>
|
||||
<Compile Include="DispatchServer\DispatchServerAPI.cs" />
|
||||
<Compile Include="DispatchServer\Model\ServerStatus.cs" />
|
||||
<Compile Include="Forms\FormActivityEditor.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Forms\FormActivityEditor.Designer.cs">
|
||||
<DependentUpon>FormActivityEditor.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Forms\FormDropEditor.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
@ -129,6 +135,7 @@
|
||||
<Compile Include="Forms\FormTextMapBrowser.Designer.cs">
|
||||
<DependentUpon>FormTextMapBrowser.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Game\Activity\ActivityConfigItem.cs" />
|
||||
<Compile Include="Game\CommandVersion.cs" />
|
||||
<Compile Include="Game\Drop\DropData.cs" />
|
||||
<Compile Include="Game\Drop\DropInfo.cs" />
|
||||
@ -269,6 +276,9 @@
|
||||
<Compile Include="Utils\Logger.cs" />
|
||||
<Compile Include="Utils\GithubHelper.cs" />
|
||||
<Compile Include="Utils\UIUtil.cs" />
|
||||
<EmbeddedResource Include="Forms\FormActivityEditor.resx">
|
||||
<DependentUpon>FormActivityEditor.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Forms\FormDropEditor.en-US.resx">
|
||||
<DependentUpon>FormDropEditor.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
@ -370,9 +380,18 @@
|
||||
<EmbeddedResource Include="Pages\PageAbout.zh-TW.resx">
|
||||
<DependentUpon>PageAbout.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Pages\PageAchievement.en-US.resx">
|
||||
<DependentUpon>PageAchievement.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Pages\PageAchievement.resx">
|
||||
<DependentUpon>PageAchievement.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Pages\PageAchievement.ru-RU.resx">
|
||||
<DependentUpon>PageAchievement.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Pages\PageAchievement.zh-TW.resx">
|
||||
<DependentUpon>PageAchievement.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Pages\PageAvatar.en-US.resx">
|
||||
<DependentUpon>PageAvatar.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
@ -628,6 +647,7 @@
|
||||
<Content Include="Resources\Permissions.txt" />
|
||||
<Content Include="Resources\WeaponColor.txt" />
|
||||
<Content Include="Resources\zh-cn\Achievement.txt" />
|
||||
<Content Include="Resources\zh-cn\Activity.txt" />
|
||||
<Content Include="Resources\zh-cn\ArtifactCat.txt" />
|
||||
<Content Include="Resources\zh-cn\ArtifactMainAttribution.txt" />
|
||||
<Content Include="Resources\zh-cn\Artifact.txt" />
|
||||
@ -682,5 +702,6 @@
|
||||
<Version>4.3.0</Version>
|
||||
</PackageReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup />
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
</Project>
|
14
Source/GrasscutterTools/Pages/PageHome.Designer.cs
generated
14
Source/GrasscutterTools/Pages/PageHome.Designer.cs
generated
@ -45,6 +45,7 @@
|
||||
this.NUDUid = new System.Windows.Forms.NumericUpDown();
|
||||
this.ChkIncludeUID = new System.Windows.Forms.CheckBox();
|
||||
this.LblDefaultUid = new System.Windows.Forms.Label();
|
||||
this.BtnActivityEditor = new System.Windows.Forms.Button();
|
||||
((System.ComponentModel.ISupportInitialize)(this.GrasscutterToolsIcon)).BeginInit();
|
||||
this.GrpSettings.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.NUDUid)).BeginInit();
|
||||
@ -118,9 +119,9 @@
|
||||
//
|
||||
// CmbGcVersions
|
||||
//
|
||||
resources.ApplyResources(this.CmbGcVersions, "CmbGcVersions");
|
||||
this.CmbGcVersions.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.CmbGcVersions.FormattingEnabled = true;
|
||||
resources.ApplyResources(this.CmbGcVersions, "CmbGcVersions");
|
||||
this.CmbGcVersions.Name = "CmbGcVersions";
|
||||
//
|
||||
// ChkTopMost
|
||||
@ -131,9 +132,9 @@
|
||||
//
|
||||
// CmbLanguage
|
||||
//
|
||||
resources.ApplyResources(this.CmbLanguage, "CmbLanguage");
|
||||
this.CmbLanguage.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.CmbLanguage.FormattingEnabled = true;
|
||||
resources.ApplyResources(this.CmbLanguage, "CmbLanguage");
|
||||
this.CmbLanguage.Name = "CmbLanguage";
|
||||
//
|
||||
// LblLanguage
|
||||
@ -167,10 +168,18 @@
|
||||
resources.ApplyResources(this.LblDefaultUid, "LblDefaultUid");
|
||||
this.LblDefaultUid.Name = "LblDefaultUid";
|
||||
//
|
||||
// BtnActivityEditor
|
||||
//
|
||||
resources.ApplyResources(this.BtnActivityEditor, "BtnActivityEditor");
|
||||
this.BtnActivityEditor.Name = "BtnActivityEditor";
|
||||
this.BtnActivityEditor.UseVisualStyleBackColor = true;
|
||||
this.BtnActivityEditor.Click += new System.EventHandler(this.BtnActivityEditor_Click);
|
||||
//
|
||||
// PageHome
|
||||
//
|
||||
resources.ApplyResources(this, "$this");
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.Controls.Add(this.BtnActivityEditor);
|
||||
this.Controls.Add(this.LblAbout);
|
||||
this.Controls.Add(this.BtnOpenTextMap);
|
||||
this.Controls.Add(this.BtnOpenGachaBannerEditor);
|
||||
@ -207,5 +216,6 @@
|
||||
private System.Windows.Forms.NumericUpDown NUDUid;
|
||||
private System.Windows.Forms.CheckBox ChkIncludeUID;
|
||||
private System.Windows.Forms.Label LblDefaultUid;
|
||||
private System.Windows.Forms.Button BtnActivityEditor;
|
||||
}
|
||||
}
|
||||
|
@ -152,6 +152,12 @@ namespace GrasscutterTools.Pages
|
||||
private void BtnOpenShopEditor_Click(object sender, EventArgs e)
|
||||
=> ShowForm<FormShopEditor>("ShopEditor");
|
||||
|
||||
/// <summary>
|
||||
/// 点击打开活动编辑器时触发
|
||||
/// </summary>
|
||||
private void BtnActivityEditor_Click(object sender, EventArgs e)
|
||||
=> ShowForm<FormActivityEditor>("ActivityEditor");
|
||||
|
||||
/// <summary>
|
||||
/// 当选中语言改变时触发
|
||||
/// </summary>
|
||||
@ -194,5 +200,6 @@ namespace GrasscutterTools.Pages
|
||||
LnkNewVersion.Visible = false;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
@ -136,9 +136,6 @@
|
||||
<data name="BtnOpenGachaBannerEditor.Text" xml:space="preserve">
|
||||
<value>Gacha Editor</value>
|
||||
</data>
|
||||
<data name="GrpSettings.Text" xml:space="preserve">
|
||||
<value>Settings</value>
|
||||
</data>
|
||||
<data name="ChkTopMost.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>109, 21</value>
|
||||
</data>
|
||||
@ -151,4 +148,13 @@
|
||||
<data name="ChkIncludeUID.Text" xml:space="preserve">
|
||||
<value>Include UID</value>
|
||||
</data>
|
||||
<data name="GrpSettings.Text" xml:space="preserve">
|
||||
<value>Settings</value>
|
||||
</data>
|
||||
<data name="BtnActivityEditor.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>542, 213</value>
|
||||
</data>
|
||||
<data name="BtnActivityEditor.Text" xml:space="preserve">
|
||||
<value>Activity Editor</value>
|
||||
</data>
|
||||
</root>
|
File diff suppressed because it is too large
Load Diff
@ -121,6 +121,10 @@
|
||||
<data name="BtnOpenShopEditor.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>140, 23</value>
|
||||
</data>
|
||||
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="BtnOpenShopEditor.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>4</value>
|
||||
</data>
|
||||
<data name="BtnOpenShopEditor.Text" xml:space="preserve">
|
||||
<value>Редактор магазина</value>
|
||||
</data>
|
||||
@ -130,6 +134,9 @@
|
||||
<data name="BtnOpenDropEditor.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>140, 23</value>
|
||||
</data>
|
||||
<data name="BtnOpenDropEditor.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>5</value>
|
||||
</data>
|
||||
<data name="BtnOpenDropEditor.Text" xml:space="preserve">
|
||||
<value>Редактор дропа</value>
|
||||
</data>
|
||||
@ -142,15 +149,31 @@
|
||||
<data name="BtnOpenTextMap.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>140, 23</value>
|
||||
</data>
|
||||
<data name="BtnOpenTextMap.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>7</value>
|
||||
</data>
|
||||
<data name="BtnOpenTextMap.Text" xml:space="preserve">
|
||||
<value>Браузер карт</value>
|
||||
</data>
|
||||
<data name="BtnOpenGachaBannerEditor.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>140, 23</value>
|
||||
</data>
|
||||
<data name="BtnOpenGachaBannerEditor.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>6</value>
|
||||
</data>
|
||||
<data name="BtnOpenGachaBannerEditor.Text" xml:space="preserve">
|
||||
<value>Редактор баннеров</value>
|
||||
</data>
|
||||
<data name="GrasscutterToolsIcon.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>333, 146</value>
|
||||
</data>
|
||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="GrasscutterToolsIcon.SizeMode" type="System.Windows.Forms.PictureBoxSizeMode, System.Windows.Forms">
|
||||
<value>Zoom</value>
|
||||
</data>
|
||||
<data name="GrpSettings.Text" xml:space="preserve">
|
||||
<value>Настройки</value>
|
||||
</data>
|
||||
<data name="ChkTopMost.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>140, 21</value>
|
||||
</data>
|
||||
@ -163,7 +186,16 @@
|
||||
<data name="ChkIncludeUID.Text" xml:space="preserve">
|
||||
<value>Включить UID</value>
|
||||
</data>
|
||||
<data name="GrpSettings.Text" xml:space="preserve">
|
||||
<value>Настройки</value>
|
||||
<data name="BtnActivityEditor.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>310, 155</value>
|
||||
</data>
|
||||
<data name="BtnActivityEditor.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>150, 23</value>
|
||||
</data>
|
||||
<data name="BtnActivityEditor.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>3</value>
|
||||
</data>
|
||||
<data name="BtnActivityEditor.Text" xml:space="preserve">
|
||||
<value>Редактор активности</value>
|
||||
</data>
|
||||
</root>
|
@ -135,4 +135,7 @@
|
||||
<data name="ChkTopMost.Text" xml:space="preserve">
|
||||
<value>窗口置頂</value>
|
||||
</data>
|
||||
<data name="BtnActivityEditor.Text" xml:space="preserve">
|
||||
<value>活動編輯器</value>
|
||||
</data>
|
||||
</root>
|
@ -87,6 +87,53 @@ namespace GrasscutterTools.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 //[Activity ids-3.6 by dplek]
|
||||
///// Activity
|
||||
///2001:1.1未归的熄星
|
||||
///2002:1.3海灯节
|
||||
///2003:1.4风花节
|
||||
///2004:1.5导能原盘-诸论
|
||||
///2005:1.6盛夏!海岛?大冒险!
|
||||
///2006:2.0谒索雷痕
|
||||
///2007:2.1韶光抚月
|
||||
///2008:2.2雾海悬谜境
|
||||
///2009:2.3皑尘与白雪
|
||||
///2010:2.4飞彩镌流年
|
||||
///2011:2.5三界路飨祭
|
||||
///2012:2.6堇庭华彩
|
||||
///2013:2.7荒梦藏虞渊
|
||||
///2014:2.8远海诗夏游纪
|
||||
///2015:3.0雕琢童心
|
||||
///2016:3.1杯中遥吟之歌
|
||||
///2017:3.2智巧灵蕈大竞逐
|
||||
///2018:3.3秋津森夜试胆会
|
||||
///2019:3.4磬弦奏华夜
|
||||
///2020:3.5风花的呼吸
|
||||
///// 1.0
|
||||
///1001:海灯节
|
||||
///5001:元素烘炉(test)
|
||||
///5002:且试身手
|
||||
///5003:百货奇货
|
||||
///// 1.1
|
||||
///5004:映天之章
|
||||
///5005:元素烘炉
|
||||
///5006:佳肴尚温
|
||||
///5007:飞行挑战
|
||||
///// 1.2
|
||||
///3001:白垩与黑龙
|
||||
///5008:三清玲之章(废稿)
|
||||
///5009:古闻之章(钟离传说-1)
|
||||
///5010:鲸天之章(公子传说-1)
|
||||
///5011:秘宝迷踪
|
||||
///5012:百 [字符串的其余部分被截断]"; 的本地化字符串。
|
||||
/// </summary>
|
||||
internal static string Activity {
|
||||
get {
|
||||
return ResourceManager.GetString("Activity", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 全部 的本地化字符串。
|
||||
/// </summary>
|
||||
|
@ -360,4 +360,7 @@
|
||||
<data name="PageAchievementTitle" xml:space="preserve">
|
||||
<value>成就</value>
|
||||
</data>
|
||||
<data name="Activity" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\zh-cn\Activity.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>
|
||||
</data>
|
||||
</root>
|
@ -250,5 +250,17 @@ namespace GrasscutterTools.Properties {
|
||||
this["NavContainerSplitterDistance"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("")]
|
||||
public string ActivityConfigJsonPath {
|
||||
get {
|
||||
return ((string)(this["ActivityConfigJsonPath"]));
|
||||
}
|
||||
set {
|
||||
this["ActivityConfigJsonPath"] = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -59,5 +59,8 @@
|
||||
<Setting Name="NavContainerSplitterDistance" Type="System.Int32" Scope="User">
|
||||
<Value Profile="(Default)">0</Value>
|
||||
</Setting>
|
||||
<Setting Name="ActivityConfigJsonPath" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)" />
|
||||
</Setting>
|
||||
</Settings>
|
||||
</SettingsFile>
|
203
Source/GrasscutterTools/Resources/zh-cn/Activity.txt
Normal file
203
Source/GrasscutterTools/Resources/zh-cn/Activity.txt
Normal file
@ -0,0 +1,203 @@
|
||||
//[Activity ids-3.6 by dplek]
|
||||
// Activity
|
||||
2001:1.1未归的熄星
|
||||
2002:1.3海灯节
|
||||
2003:1.4风花节
|
||||
2004:1.5导能原盘-诸论
|
||||
2005:1.6盛夏!海岛?大冒险!
|
||||
2006:2.0谒索雷痕
|
||||
2007:2.1韶光抚月
|
||||
2008:2.2雾海悬谜境
|
||||
2009:2.3皑尘与白雪
|
||||
2010:2.4飞彩镌流年
|
||||
2011:2.5三界路飨祭
|
||||
2012:2.6堇庭华彩
|
||||
2013:2.7荒梦藏虞渊
|
||||
2014:2.8远海诗夏游纪
|
||||
2015:3.0雕琢童心
|
||||
2016:3.1杯中遥吟之歌
|
||||
2017:3.2智巧灵蕈大竞逐
|
||||
2018:3.3秋津森夜试胆会
|
||||
2019:3.4磬弦奏华夜
|
||||
2020:3.5风花的呼吸
|
||||
// 1.0
|
||||
1001:海灯节
|
||||
5001:元素烘炉(test)
|
||||
5002:且试身手
|
||||
5003:百货奇货
|
||||
// 1.1
|
||||
5004:映天之章
|
||||
5005:元素烘炉
|
||||
5006:佳肴尚温
|
||||
5007:飞行挑战
|
||||
// 1.2
|
||||
3001:白垩与黑龙
|
||||
5008:三清玲之章(废稿)
|
||||
5009:古闻之章(钟离传说-1)
|
||||
5010:鲸天之章(公子传说-1)
|
||||
5011:秘宝迷踪
|
||||
5012:百货奇货-2
|
||||
5014:无相交响诗
|
||||
// 1.3
|
||||
5015:仙麟之章(甘雨传说-1)
|
||||
5016:福至五彩
|
||||
5017:龙蜥寻踪(显示漂浮秘灵)
|
||||
6002:威撼山岳(古岩巨蜥)
|
||||
6003:异乡食记
|
||||
5018:引蝶之章(胡桃传说-1)
|
||||
5019:争斗激流
|
||||
// 1.4
|
||||
5020:纯水之愿
|
||||
5021:邀约事件-第一辑
|
||||
// 1.5
|
||||
5022:迷城战线
|
||||
5023:风行迷踪
|
||||
5024:折箭觅踪
|
||||
5025:古闻之章(钟离传说-2)
|
||||
5026:刺骨幽寒(无相之冰)
|
||||
5027:翠石砌玉壶(尘歌壶)
|
||||
5028:邀约事件-第二辑
|
||||
5029:浪沫之章(优菈传说-1)
|
||||
// 1.6
|
||||
5030:无尽骤战
|
||||
5031:风来人剑斗奇谭
|
||||
5032:砰砰魔球总动员
|
||||
5033:回声轻叙(芭芭拉皮肤)
|
||||
6005:振袖秋风问红叶(主线)
|
||||
// 2.0
|
||||
6003:筑机战阵(恒常机关阵列)
|
||||
5034:幻影心流
|
||||
5035:秘宝迷踪-2
|
||||
5036:炽焰轰转(无相之火)
|
||||
5037:机关奇谭-灵妙之局
|
||||
5038:琉金之章(宵宫传说-1)
|
||||
5039:雪鹤之章-(神里绫华传说-1)
|
||||
// 2.1
|
||||
5040:百人一揆-1
|
||||
5041:月中王国(钓鱼)
|
||||
5042:狂浪谲波(无相之水)
|
||||
5043:深空霆雷(雷音权现)
|
||||
5044:漂浮秘灵
|
||||
5045:眠龙之章(珊瑚宫心海传说-1)
|
||||
5046:天下人之章(雷电将军传说-1)
|
||||
// 2.2
|
||||
5047:梦里生花
|
||||
5048:邀约事件-第三辑
|
||||
5049:古时孤影
|
||||
5050:镜花听世(音游)
|
||||
// 2.3
|
||||
5051:万端珊瑚事件簿·犬武者
|
||||
5052:鱼群大爆发(钓鱼常驻)
|
||||
5053:导能原盘-跋尾
|
||||
5054:迷城战线·光界篇
|
||||
5059:天牛之章(荒泷一斗传说-1)
|
||||
5056:邀约事件-第四辑
|
||||
5060:兽境裂隙(兽境猎犬)
|
||||
// 2.4
|
||||
5055:山海八所巡礼
|
||||
5057:邀约事件-第五辑
|
||||
5061:冰雷与共(渊下宫龙蜥)
|
||||
5063:风起鹤归(主线)
|
||||
5064:渊下宫(新地图开启)
|
||||
// 2.5
|
||||
5062:曲生酌微梦
|
||||
5065:神工天巧
|
||||
5066:有香自西来-1
|
||||
5069:仙狐之章(八重神子传说-1)
|
||||
5070:天下人之章(雷电将军传说-2)
|
||||
5076:百人一揆
|
||||
// 2.6
|
||||
5067:振晶的研究
|
||||
5068:画外旅照-1
|
||||
5071:巨虺蟠渊(层岩巨渊巨蛇)
|
||||
5074:邀约事件-第七辑
|
||||
5075:层岩巨渊(新地图)
|
||||
5077:回响渊底的安魂曲(主线)
|
||||
5078:神守柏之章(神里绫人传说-1)
|
||||
// 2.7
|
||||
5080:炉心机造
|
||||
5081:幽客之章(夜兰传说任务-1)
|
||||
5079:深泥奇谭
|
||||
5072:荒泷极上盛世豪鼓大祭典(音游)
|
||||
5073:邀约事件-第六辑
|
||||
// 2.8
|
||||
5082:恒动械画
|
||||
5083:追想练行
|
||||
5084:幻声留形(菲谢尔)
|
||||
5085:残象暗战(迪卢克)
|
||||
5088:枫红之章(枫原万叶传说-1)
|
||||
5097:邀约事件-第八辑
|
||||
// 3.0
|
||||
5086:幽林蕈雨(须弥草鸡)
|
||||
5087:片剂深研
|
||||
5089:雷極之花(雷树)
|
||||
5090:溢神的论证-1
|
||||
5091:秘宝迷踪-3
|
||||
5092:郭狐之章(提纳里传说-1)
|
||||
5093:诸法丛林(新地图)
|
||||
// 3.1
|
||||
5094:百人一揆
|
||||
5095:侚察五凤
|
||||
5096:寻星之旅
|
||||
5098:智巧灵蕈大竞逐(test)
|
||||
5100:金狼之章(赛诺传说-1)
|
||||
5101:睡莲之章(妮露传说-1)
|
||||
5102:沙海热梦(新地图)
|
||||
5103:永动龙兽(兆载永劫龙兽)
|
||||
5104:统辖矩阵(会隐形的机关boss)
|
||||
5105:迷梦与空幻与欺骗(主线)
|
||||
// 3.2
|
||||
5098:智巧灵蕈大竞逐(test)
|
||||
5099:冒险家试炼
|
||||
5107:无相交响诗-离调乐段
|
||||
5108:画外旅照-青植之篇
|
||||
5109:虚空鼓动,劫火高扬(主线)
|
||||
5113:智慧主之章(纳西妲传说-1)
|
||||
5106:草覆地法(无相之草)
|
||||
// 3.3
|
||||
5110:骰子,猫与卡牌的战场(七圣召唤常驻)
|
||||
5111:风行迷踪
|
||||
5112:跨野寻踪
|
||||
5114:迷城战线·沙域篇
|
||||
5115:倾落伽蓝
|
||||
// 3.4
|
||||
5116:蔷薇再开时(丽莎)
|
||||
5117:演武传心(神里绫华)
|
||||
5118:荒泷极意堂堂斗虫大试合
|
||||
5119:七圣召唤-热斗模式·全方位后援
|
||||
5121:天隼之章(艾尔海森传说-1)
|
||||
5122:沙原之主(新怪物)
|
||||
5126:千壑沙地(新地图)
|
||||
5127:邀约事件-第九辑
|
||||
// 3.5
|
||||
5120:灵蕈棋阵
|
||||
5123:振晶的复核实验
|
||||
5124:卡利贝尔
|
||||
5125:有香自西来-寻味地北
|
||||
5130:迪希雅传说
|
||||
// 3.6
|
||||
5128:风沙轰鸣
|
||||
5129:合剂演进
|
||||
5131:苍漠囿图(新地图开启)
|
||||
5132:忆昔诸途巡历(花神书前置)
|
||||
5134:深罪施洗(新怪物展示)
|
||||
5136:悬壶之章(白术传说任务)
|
||||
5139:智慧主之章-2(纳西妲传说任务)
|
||||
// 新手与特殊活动
|
||||
101:前路既定
|
||||
1014:送芭芭拉活动
|
||||
1023:打深渊送香菱活动
|
||||
8001:星之归还
|
||||
10001:(test)1.0签到
|
||||
10002:(test)高价值一次性签到
|
||||
10003:把握每日
|
||||
10004:把握每日
|
||||
10005:虹旅藏金
|
||||
10006:虹旅藏金
|
||||
10007:虹旅藏金
|
||||
10010:把握每日
|
||||
10011:富贵登门
|
||||
10012:异乡食记
|
||||
10013:云流星奔
|
||||
50001:万民同行
|
||||
50002:浅唱祈礼
|
Loading…
Reference in New Issue
Block a user