diff --git a/README.md b/README.md index 5001008..38239ab 100644 --- a/README.md +++ b/README.md @@ -9,8 +9,9 @@ This component works by reading the save data of your Vampire Survivors game, al - Automatically updates based on save data content — no need to manually mark achievements off - Tracks cumulative total kills, skeleton kills, and healing -- Tracks achievements achieved so far, displaying them in the in-game order using the in-game icons +- Tracks achievements attained so far, displaying them in the in-game order using the in-game icons - Achievement descriptions on icon hover +- Automatically detects the game version and shows on the achievements attainable in the detected game version ### Limitations @@ -18,7 +19,9 @@ Achievements and kills/healing are only updated at the end of each run. This is ### Supported versions -Only version 0.2.11 is currently supported. +Vampire Survivors versions 0.2.11 and up are supported. + +Older versions will probably still work, but they will display all 43 achievements attainable in 0.2.11 regardless of their existence in the installed version of Vampire Survivors. Any issues encountered when using this component with a version of Vampire Survivors older than 0.2.11 will not be addressed, as the component does not provide support for those versions. ## Instructions @@ -35,9 +38,9 @@ Only version 0.2.11 is currently supported. 5. Ensure that the Vampire Survivors installation directory has been filled in the text box. If it is not automatically detected, use the `...` button to manually select it 6. Accept the layout and return to the main LiveSplit screen -You may need to readjust your LiveSplit window's size to ensure that the achievements tracker is fully visible. It should look like this: +You may need to readjust your LiveSplit window's size to ensure that the achievements tracker is fully visible. It should look like this (with the exact achievements shown varying depending on your Vampire Survivors version): -![Vampire Survivors Tracker UI in LiveSplit](livesplit-vampiresurvivors_0.2.11.png) +![Vampire Survivors Tracker UI in LiveSplit (Vampire Survivors v0.2.11)](livesplit-vampiresurvivors_0.2.11.png) __Note:__ It will start tracking stats when you start a split, and it will stop tracking when you stop a split. When LiveSplit's timer is not running (unless paused), it will display the default all-zero stats. diff --git a/UI/Controls/VampireSurvivorsControl.Designer.cs b/UI/Controls/VampireSurvivorsControl.Designer.cs index d7ff013..bf86d81 100644 --- a/UI/Controls/VampireSurvivorsControl.Designer.cs +++ b/UI/Controls/VampireSurvivorsControl.Designer.cs @@ -44,10 +44,11 @@ private void InitializeComponent() { this.tblBase.SuspendLayout(); this.pnlCounters.SuspendLayout(); this.SuspendLayout(); - // + // // tblBase - // + // this.tblBase.AutoSize = true; + this.tblBase.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; this.tblBase.ColumnCount = 1; this.tblBase.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F)); this.tblBase.Controls.Add(this.lblAchievements, 0, 1); @@ -55,29 +56,32 @@ private void InitializeComponent() { this.tblBase.Controls.Add(this.flpAchievements, 0, 2); this.tblBase.Dock = System.Windows.Forms.DockStyle.Fill; this.tblBase.Location = new System.Drawing.Point(0, 0); + this.tblBase.MinimumSize = new System.Drawing.Size(300, 60); this.tblBase.Name = "tblBase"; this.tblBase.RowCount = 3; this.tblBase.RowStyles.Add(new System.Windows.Forms.RowStyle()); this.tblBase.RowStyles.Add(new System.Windows.Forms.RowStyle()); this.tblBase.RowStyles.Add(new System.Windows.Forms.RowStyle()); - this.tblBase.Size = new System.Drawing.Size(400, 232); + this.tblBase.Size = new System.Drawing.Size(454, 232); this.tblBase.TabIndex = 0; - // + // // lblAchievements - // + // + this.lblAchievements.Anchor = System.Windows.Forms.AnchorStyles.Top; + this.lblAchievements.AutoSize = true; this.lblAchievements.BackColor = System.Drawing.Color.Transparent; - this.lblAchievements.Dock = System.Windows.Forms.DockStyle.Fill; this.lblAchievements.Font = new System.Drawing.Font("Microsoft Sans Serif", 10F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte) (0))); this.lblAchievements.ForeColor = System.Drawing.SystemColors.ControlLightLight; - this.lblAchievements.Location = new System.Drawing.Point(3, 103); + this.lblAchievements.Location = new System.Drawing.Point(173, 82); + this.lblAchievements.Margin = new System.Windows.Forms.Padding(3, 10, 3, 4); this.lblAchievements.Name = "lblAchievements"; - this.lblAchievements.Size = new System.Drawing.Size(394, 23); + this.lblAchievements.Size = new System.Drawing.Size(108, 17); this.lblAchievements.TabIndex = 4; this.lblAchievements.Text = "Achievements"; this.lblAchievements.TextAlign = System.Drawing.ContentAlignment.TopCenter; - // + // // pnlCounters - // + // this.pnlCounters.AutoSize = true; this.pnlCounters.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; this.pnlCounters.ColumnCount = 4; @@ -97,168 +101,174 @@ private void InitializeComponent() { this.pnlCounters.Controls.Add(this.lblSkelesRem, 2, 2); this.pnlCounters.Controls.Add(this.lblHealingRem, 3, 2); this.pnlCounters.Location = new System.Drawing.Point(3, 3); - this.pnlCounters.MinimumSize = new System.Drawing.Size(300, 80); this.pnlCounters.Name = "pnlCounters"; this.pnlCounters.RowCount = 3; this.pnlCounters.RowStyles.Add(new System.Windows.Forms.RowStyle()); this.pnlCounters.RowStyles.Add(new System.Windows.Forms.RowStyle()); this.pnlCounters.RowStyles.Add(new System.Windows.Forms.RowStyle()); - this.pnlCounters.Size = new System.Drawing.Size(394, 97); + this.pnlCounters.Size = new System.Drawing.Size(344, 66); this.pnlCounters.TabIndex = 1; - // + // // lblKillHeader - // + // + this.lblKillHeader.Anchor = ((System.Windows.Forms.AnchorStyles) ((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); this.lblKillHeader.AutoSize = true; - this.lblKillHeader.Dock = System.Windows.Forms.DockStyle.Fill; this.lblKillHeader.Font = new System.Drawing.Font("Microsoft Sans Serif", 10F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte) (0))); this.lblKillHeader.ForeColor = System.Drawing.SystemColors.ControlLightLight; - this.lblKillHeader.Location = new System.Drawing.Point(101, 0); + this.lblKillHeader.Location = new System.Drawing.Point(89, 0); + this.lblKillHeader.Margin = new System.Windows.Forms.Padding(3, 0, 3, 3); this.lblKillHeader.Name = "lblKillHeader"; - this.lblKillHeader.Size = new System.Drawing.Size(92, 34); + this.lblKillHeader.Size = new System.Drawing.Size(80, 17); this.lblKillHeader.TabIndex = 0; this.lblKillHeader.Text = "Total Kills"; this.lblKillHeader.TextAlign = System.Drawing.ContentAlignment.BottomLeft; - // + // // lblSkelesHeader - // + // + this.lblSkelesHeader.Anchor = ((System.Windows.Forms.AnchorStyles) ((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); this.lblSkelesHeader.AutoSize = true; - this.lblSkelesHeader.Dock = System.Windows.Forms.DockStyle.Fill; this.lblSkelesHeader.Font = new System.Drawing.Font("Microsoft Sans Serif", 10F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte) (0))); this.lblSkelesHeader.ForeColor = System.Drawing.SystemColors.ControlLightLight; - this.lblSkelesHeader.Location = new System.Drawing.Point(199, 0); + this.lblSkelesHeader.Location = new System.Drawing.Point(175, 0); + this.lblSkelesHeader.Margin = new System.Windows.Forms.Padding(3, 0, 3, 3); this.lblSkelesHeader.Name = "lblSkelesHeader"; - this.lblSkelesHeader.Size = new System.Drawing.Size(92, 34); + this.lblSkelesHeader.Size = new System.Drawing.Size(79, 17); this.lblSkelesHeader.TabIndex = 1; - this.lblSkelesHeader.Text = "Skeleton Kills"; + this.lblSkelesHeader.Text = "Skeletons"; this.lblSkelesHeader.TextAlign = System.Drawing.ContentAlignment.BottomLeft; - // + // // lblHealingHeader - // + // + this.lblHealingHeader.Anchor = ((System.Windows.Forms.AnchorStyles) ((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); this.lblHealingHeader.AutoSize = true; - this.lblHealingHeader.Dock = System.Windows.Forms.DockStyle.Fill; this.lblHealingHeader.Font = new System.Drawing.Font("Microsoft Sans Serif", 10F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte) (0))); this.lblHealingHeader.ForeColor = System.Drawing.SystemColors.ControlLightLight; - this.lblHealingHeader.Location = new System.Drawing.Point(297, 0); + this.lblHealingHeader.Location = new System.Drawing.Point(261, 0); + this.lblHealingHeader.Margin = new System.Windows.Forms.Padding(3, 0, 3, 3); this.lblHealingHeader.Name = "lblHealingHeader"; - this.lblHealingHeader.Size = new System.Drawing.Size(94, 34); + this.lblHealingHeader.Size = new System.Drawing.Size(63, 17); this.lblHealingHeader.TabIndex = 2; this.lblHealingHeader.Text = "Healing"; this.lblHealingHeader.TextAlign = System.Drawing.ContentAlignment.BottomLeft; - // + // // lblCumuHeader - // - this.lblCumuHeader.Dock = System.Windows.Forms.DockStyle.Fill; + // + this.lblCumuHeader.Anchor = System.Windows.Forms.AnchorStyles.Left; + this.lblCumuHeader.AutoSize = true; this.lblCumuHeader.Font = new System.Drawing.Font("Microsoft Sans Serif", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte) (0))); this.lblCumuHeader.ForeColor = System.Drawing.SystemColors.ControlLightLight; - this.lblCumuHeader.Location = new System.Drawing.Point(3, 34); + this.lblCumuHeader.Location = new System.Drawing.Point(3, 23); + this.lblCumuHeader.Margin = new System.Windows.Forms.Padding(3); this.lblCumuHeader.Name = "lblCumuHeader"; - this.lblCumuHeader.Size = new System.Drawing.Size(92, 20); + this.lblCumuHeader.Size = new System.Drawing.Size(40, 17); this.lblCumuHeader.TabIndex = 3; this.lblCumuHeader.Text = "Total"; this.lblCumuHeader.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; - // + // // lblRemHeader - // - this.lblRemHeader.Dock = System.Windows.Forms.DockStyle.Fill; + // + this.lblRemHeader.Anchor = System.Windows.Forms.AnchorStyles.Left; + this.lblRemHeader.AutoSize = true; this.lblRemHeader.Font = new System.Drawing.Font("Microsoft Sans Serif", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte) (0))); this.lblRemHeader.ForeColor = System.Drawing.SystemColors.ControlLightLight; - this.lblRemHeader.Location = new System.Drawing.Point(3, 54); + this.lblRemHeader.Location = new System.Drawing.Point(3, 46); + this.lblRemHeader.Margin = new System.Windows.Forms.Padding(3); this.lblRemHeader.Name = "lblRemHeader"; - this.lblRemHeader.Size = new System.Drawing.Size(92, 43); + this.lblRemHeader.Size = new System.Drawing.Size(75, 17); this.lblRemHeader.TabIndex = 4; this.lblRemHeader.Text = "Remaining"; this.lblRemHeader.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; - // + // // lblKillsCumu - // + // + this.lblKillsCumu.Anchor = System.Windows.Forms.AnchorStyles.Right; this.lblKillsCumu.AutoSize = true; - this.lblKillsCumu.Dock = System.Windows.Forms.DockStyle.Fill; this.lblKillsCumu.ForeColor = System.Drawing.SystemColors.ControlLightLight; - this.lblKillsCumu.Location = new System.Drawing.Point(101, 34); + this.lblKillsCumu.Location = new System.Drawing.Point(156, 25); this.lblKillsCumu.Name = "lblKillsCumu"; - this.lblKillsCumu.Size = new System.Drawing.Size(92, 20); + this.lblKillsCumu.Size = new System.Drawing.Size(13, 13); this.lblKillsCumu.TabIndex = 5; this.lblKillsCumu.Text = "0"; this.lblKillsCumu.TextAlign = System.Drawing.ContentAlignment.MiddleRight; - // + // // lblSkelesCumu - // + // + this.lblSkelesCumu.Anchor = System.Windows.Forms.AnchorStyles.Right; this.lblSkelesCumu.AutoSize = true; - this.lblSkelesCumu.Dock = System.Windows.Forms.DockStyle.Fill; this.lblSkelesCumu.ForeColor = System.Drawing.SystemColors.ControlLightLight; - this.lblSkelesCumu.Location = new System.Drawing.Point(199, 34); + this.lblSkelesCumu.Location = new System.Drawing.Point(242, 25); this.lblSkelesCumu.Name = "lblSkelesCumu"; - this.lblSkelesCumu.Size = new System.Drawing.Size(92, 20); + this.lblSkelesCumu.Size = new System.Drawing.Size(13, 13); this.lblSkelesCumu.TabIndex = 6; this.lblSkelesCumu.Text = "0"; this.lblSkelesCumu.TextAlign = System.Drawing.ContentAlignment.MiddleRight; - // + // // lblHealingCumu - // + // + this.lblHealingCumu.Anchor = System.Windows.Forms.AnchorStyles.Right; this.lblHealingCumu.AutoSize = true; - this.lblHealingCumu.Dock = System.Windows.Forms.DockStyle.Fill; this.lblHealingCumu.ForeColor = System.Drawing.SystemColors.ControlLightLight; - this.lblHealingCumu.Location = new System.Drawing.Point(297, 34); + this.lblHealingCumu.Location = new System.Drawing.Point(328, 25); this.lblHealingCumu.Name = "lblHealingCumu"; - this.lblHealingCumu.Size = new System.Drawing.Size(94, 20); + this.lblHealingCumu.Size = new System.Drawing.Size(13, 13); this.lblHealingCumu.TabIndex = 7; this.lblHealingCumu.Text = "0"; this.lblHealingCumu.TextAlign = System.Drawing.ContentAlignment.MiddleRight; - // + // // lblKillsRem - // + // + this.lblKillsRem.Anchor = System.Windows.Forms.AnchorStyles.Right; this.lblKillsRem.AutoSize = true; - this.lblKillsRem.Dock = System.Windows.Forms.DockStyle.Fill; this.lblKillsRem.ForeColor = System.Drawing.SystemColors.ControlLightLight; - this.lblKillsRem.Location = new System.Drawing.Point(101, 54); + this.lblKillsRem.Location = new System.Drawing.Point(156, 48); this.lblKillsRem.Name = "lblKillsRem"; - this.lblKillsRem.Size = new System.Drawing.Size(92, 43); + this.lblKillsRem.Size = new System.Drawing.Size(13, 13); this.lblKillsRem.TabIndex = 8; this.lblKillsRem.Text = "0"; this.lblKillsRem.TextAlign = System.Drawing.ContentAlignment.MiddleRight; - // + // // lblSkelesRem - // + // + this.lblSkelesRem.Anchor = System.Windows.Forms.AnchorStyles.Right; this.lblSkelesRem.AutoSize = true; - this.lblSkelesRem.Dock = System.Windows.Forms.DockStyle.Fill; this.lblSkelesRem.ForeColor = System.Drawing.SystemColors.ControlLightLight; - this.lblSkelesRem.Location = new System.Drawing.Point(199, 54); + this.lblSkelesRem.Location = new System.Drawing.Point(242, 48); this.lblSkelesRem.Name = "lblSkelesRem"; - this.lblSkelesRem.Size = new System.Drawing.Size(92, 43); + this.lblSkelesRem.Size = new System.Drawing.Size(13, 13); this.lblSkelesRem.TabIndex = 9; this.lblSkelesRem.Text = "0"; this.lblSkelesRem.TextAlign = System.Drawing.ContentAlignment.MiddleRight; - // + // // lblHealingRem - // + // + this.lblHealingRem.Anchor = System.Windows.Forms.AnchorStyles.Right; this.lblHealingRem.AutoSize = true; - this.lblHealingRem.Dock = System.Windows.Forms.DockStyle.Fill; this.lblHealingRem.ForeColor = System.Drawing.SystemColors.ControlLightLight; - this.lblHealingRem.Location = new System.Drawing.Point(297, 54); + this.lblHealingRem.Location = new System.Drawing.Point(328, 48); this.lblHealingRem.Name = "lblHealingRem"; - this.lblHealingRem.Size = new System.Drawing.Size(94, 43); + this.lblHealingRem.Size = new System.Drawing.Size(13, 13); this.lblHealingRem.TabIndex = 10; this.lblHealingRem.Text = "0"; this.lblHealingRem.TextAlign = System.Drawing.ContentAlignment.MiddleRight; - // + // // flpAchievements - // + // this.flpAchievements.AutoSize = true; this.flpAchievements.Dock = System.Windows.Forms.DockStyle.Fill; - this.flpAchievements.Location = new System.Drawing.Point(3, 129); + this.flpAchievements.Location = new System.Drawing.Point(3, 106); this.flpAchievements.Name = "flpAchievements"; - this.flpAchievements.Size = new System.Drawing.Size(394, 100); + this.flpAchievements.Size = new System.Drawing.Size(448, 123); this.flpAchievements.TabIndex = 5; - // + // // VampireSurvivorsControl - // + // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.AutoSize = true; this.Controls.Add(this.tblBase); - this.MinimumSize = new System.Drawing.Size(400, 100); + this.MinimumSize = new System.Drawing.Size(300, 100); this.Name = "VampireSurvivorsControl"; - this.Size = new System.Drawing.Size(400, 232); + this.Size = new System.Drawing.Size(454, 232); this.Load += new System.EventHandler(this.VampireSurvivorsControl_Load); this.tblBase.ResumeLayout(false); this.tblBase.PerformLayout(); diff --git a/livesplit-vampiresurvivors_0.2.11.png b/livesplit-vampiresurvivors_0.2.11.png index 1be11b6..6a2ff7f 100644 Binary files a/livesplit-vampiresurvivors_0.2.11.png and b/livesplit-vampiresurvivors_0.2.11.png differ diff --git a/livesplit-vampiresurvivors_0.2.12.png b/livesplit-vampiresurvivors_0.2.12.png new file mode 100644 index 0000000..8b80039 Binary files /dev/null and b/livesplit-vampiresurvivors_0.2.12.png differ