mirror of
https://github.com/kwsch/NHSE.git
synced 2026-04-05 00:15:08 -05:00
135 lines
3.4 KiB
C#
135 lines
3.4 KiB
C#
using System;
|
|
using System.Windows.Forms;
|
|
using NHSE.Core;
|
|
|
|
namespace NHSE.WinForms;
|
|
|
|
public partial class AchievementEditor : Form
|
|
{
|
|
private readonly Personal Personal;
|
|
private readonly AchievementList List;
|
|
private readonly AchievementRow[] Rows;
|
|
|
|
private int Index = -1;
|
|
|
|
public AchievementEditor(Personal personal)
|
|
{
|
|
InitializeComponent();
|
|
this.TranslateInterface(GameInfo.CurrentLanguage);
|
|
|
|
Personal = personal;
|
|
var list = List = personal.Achievements;
|
|
var str = GameInfo.Strings.InternalNameTranslation;
|
|
for (int i = 0; i < list.Counts.Length; i++)
|
|
LB_Counts.Items.Add(LifeSupportAchievement.GetName(i, list.Counts[i], str));
|
|
|
|
Rows = [AR_1, AR_2, AR_3, AR_4, AR_5, AR_6];
|
|
|
|
LB_Counts.SelectedIndex = 0;
|
|
}
|
|
|
|
private void B_Cancel_Click(object sender, EventArgs e) => Close();
|
|
|
|
private void B_Save_Click(object sender, EventArgs e)
|
|
{
|
|
SaveIndex(Index);
|
|
Personal.Achievements = List;
|
|
Close();
|
|
}
|
|
|
|
private void NUD_Count_ValueChanged(object sender, EventArgs e)
|
|
{
|
|
if (Index < 0)
|
|
return;
|
|
|
|
List.Counts[Index] = (uint) NUD_Count.Value;
|
|
|
|
for (int i = 0; i < Rows.Length; i++)
|
|
Rows[i].ChangeCount(Index, i, List.Counts[Index]);
|
|
|
|
SetEntryDescription(Index);
|
|
}
|
|
|
|
private void SetEntryDescription(int index)
|
|
{
|
|
LB_Counts.Items[index] = LifeSupportAchievement.GetName(index, List.Counts[index], GameInfo.Strings.InternalNameTranslation);
|
|
}
|
|
|
|
private void LB_Counts_SelectedIndexChanged(object sender, EventArgs e)
|
|
{
|
|
if (LB_Counts.SelectedIndex < 0)
|
|
return;
|
|
|
|
SaveIndex(Index);
|
|
LoadIndex(Index = LB_Counts.SelectedIndex);
|
|
}
|
|
|
|
private void LoadIndex(int index)
|
|
{
|
|
if (index < 0)
|
|
return;
|
|
|
|
for (int i = 0; i < Rows.Length; i++)
|
|
Rows[i].LoadRow(List, Index, i);
|
|
|
|
NUD_Unk.Value = List.Flags[index];
|
|
|
|
var val = List.Counts[index];
|
|
NUD_Count.Value = (int)val;
|
|
}
|
|
|
|
private void SaveIndex(in int index)
|
|
{
|
|
if (index < 0)
|
|
return;
|
|
|
|
for (int i = 0; i < Rows.Length; i++)
|
|
Rows[i].SaveRow(List, index, i);
|
|
|
|
List.Flags[index] = (byte)NUD_Unk.Value;
|
|
|
|
// count updated on value changed
|
|
}
|
|
|
|
private void B_Clear_Click(object sender, EventArgs e)
|
|
{
|
|
List.ClearAll(Index);
|
|
LoadIndex(Index);
|
|
System.Media.SystemSounds.Asterisk.Play();
|
|
}
|
|
|
|
private void B_Max_Click(object sender, EventArgs e)
|
|
{
|
|
List.GiveAll(Index, DateTime.Now);
|
|
LoadIndex(Index);
|
|
System.Media.SystemSounds.Asterisk.Play();
|
|
}
|
|
|
|
private void B_GiveAll_Click(object sender, EventArgs e)
|
|
{
|
|
SaveIndex(Index);
|
|
var index = Index;
|
|
Index = -1;
|
|
|
|
List.GiveAll(DateTime.Now);
|
|
for (int i = 0; i < List.Counts.Length; i++)
|
|
SetEntryDescription(i);
|
|
|
|
LoadIndex(Index = index);
|
|
System.Media.SystemSounds.Asterisk.Play();
|
|
}
|
|
|
|
private void B_ClearAll_Click(object sender, EventArgs e)
|
|
{
|
|
SaveIndex(Index);
|
|
var index = Index;
|
|
Index = -1;
|
|
|
|
List.ClearAll();
|
|
for (int i = 0; i < List.Counts.Length; i++)
|
|
SetEntryDescription(i);
|
|
|
|
LoadIndex(Index = index);
|
|
System.Media.SystemSounds.Asterisk.Play();
|
|
}
|
|
} |