Manually defining nickname from another lang

Don't automatically flag as Nicknamed if the pasted text
This commit is contained in:
Kurt
2017-02-03 21:48:43 -08:00
parent b9efca759f
commit 53eb8f9f57
2 changed files with 57 additions and 50 deletions

View File

@@ -300,7 +300,6 @@ private void loadConfig(out bool BAKprompt, out bool showChangelog, out int lang
BAKprompt = Settings.BAKPrompt = true;
Settings.Version = Resources.ProgramVersion;
Settings.Save();
}
// Main Menu Strip UI Functions
private void mainMenuOpen(object sender, EventArgs e)
@@ -1345,17 +1344,17 @@ private void InitializeFields()
}
private void TemplateFields()
{
CB_Species.SelectedValue = SAV.MaxSpeciesID;
CB_GameOrigin.SelectedIndex = 0;
CB_Move1.SelectedValue = 1;
TB_OT.Text = "PKHeX";
TB_TID.Text = 12345.ToString();
TB_SID.Text = 54321.ToString();
CB_GameOrigin.SelectedIndex = 0;
int curlang = Array.IndexOf(GameInfo.lang_val, curlanguage);
CB_Language.SelectedIndex = curlang > CB_Language.Items.Count - 1 ? 1 : curlang;
CB_Ball.SelectedIndex = Math.Min(0, CB_Ball.Items.Count - 1);
CB_Country.SelectedIndex = Math.Min(0, CB_Country.Items.Count - 1);
CAL_MetDate.Value = CAL_EggDate.Value = DateTime.Today;
CB_Species.SelectedValue = SAV.MaxSpeciesID;
CHK_Nicknamed.Checked = false;
}
private void InitializeLanguage()
@@ -2515,9 +2514,9 @@ private void updateNickname(object sender, EventArgs e)
if (fieldsInitialized && ModifierKeys == Keys.Alt && sender != null) // Export Showdown
{ clickShowdownExportPKM(sender, e); return; }
int lang = WinFormsUtil.getIndex(CB_Language);
if (sender == CB_Language || sender == CHK_Nicknamed)
{
int lang = WinFormsUtil.getIndex(CB_Language);
switch (lang)
{
case 9:
@@ -2536,24 +2535,20 @@ private void updateNickname(object sender, EventArgs e)
// Fetch Current Species and set it as Nickname Text
int species = WinFormsUtil.getIndex(CB_Species);
if (species < 1 || species > SAV.MaxSpeciesID)
TB_Nickname.Text = "";
else
{
// get language
int lang = WinFormsUtil.getIndex(CB_Language);
if (CHK_IsEgg.Checked) species = 0; // Set species to 0 to get the egg name.
string nick = PKX.getSpeciesName(CHK_IsEgg.Checked ? 0 : species, lang);
{ TB_Nickname.Text = ""; return; }
if (CHK_IsEgg.Checked)
species = 0; // get the egg name.
if (SAV.Generation < 5) // All caps GenIV and previous
nick = nick.ToUpper();
if (SAV.Generation < 3)
nick = nick.Replace(" ", "");
TB_Nickname.Text = nick;
if (SAV.Generation == 1)
((PK1)pkm).setNotNicknamed();
if (SAV.Generation == 2)
((PK2)pkm).setNotNicknamed();
}
// If name is that of another language, don't replace the nickname
if (species != 0 && !PKX.getIsNicknamedAnyLanguage(species, SAV.Generation, TB_Nickname.Text))
return;
TB_Nickname.Text = PKX.getSpeciesNameGeneration(species, lang, SAV.Generation);
if (SAV.Generation == 1)
((PK1) pkm).setNotNicknamed();
if (SAV.Generation == 2)
((PK2) pkm).setNotNicknamed();
}
private void updateNicknameClick(object sender, MouseEventArgs e)
{
@@ -3603,25 +3598,19 @@ private void updateIsNicknamed(object sender, EventArgs e)
if (!fieldsLoaded)
return;
if (!CHK_Nicknamed.Checked)
{
int species = WinFormsUtil.getIndex(CB_Species);
if (species < 1 || species > SAV.MaxSpeciesID)
return;
int lang = WinFormsUtil.getIndex(CB_Language);
if (CHK_IsEgg.Checked) species = 0; // Set species to 0 to get the egg name.
string nick = PKX.getSpeciesName(CHK_IsEgg.Checked ? 0 : species, lang);
pkm.Nickname = TB_Nickname.Text;
if (CHK_Nicknamed.Checked)
return;
if (SAV.Generation < 5) // All caps GenIV and previous
nick = nick.ToUpper();
if (SAV.Generation < 3)
nick = nick.Replace(" ", "");
if (TB_Nickname.Text != nick)
{
CHK_Nicknamed.Checked = true;
pkm.Nickname = TB_Nickname.Text;
}
}
int species = WinFormsUtil.getIndex(CB_Species);
if (species < 1 || species > SAV.MaxSpeciesID)
return;
if (CHK_IsEgg.Checked)
species = 0; // get the egg name.
if (PKX.getIsNicknamedAnyLanguage(species, SAV.Generation, TB_Nickname.Text))
CHK_Nicknamed.Checked = true;
}
// Generic Subfunctions //

View File

@@ -53,13 +53,7 @@ public static bool getIsPKM(long len)
SIZE_6STORED, SIZE_6PARTY
}.Contains((int)len);
}
// C# PKX Function Library
// No WinForm object related code, only to calculate information.
// May require re-referencing to main form for string array referencing.
// Relies on Util for some common operations.
// Data
public static uint LCRNG(uint seed)
{
const uint a = 0x41C64E6D;
@@ -198,13 +192,37 @@ public static uint LCRNG(ref uint seed)
public static string getSpeciesName(int species, int lang)
{
try { return SpeciesLang[lang][species]; }
catch { return ""; }
if (lang < 0 || SpeciesLang.Length <= lang)
return "";
if (species < 0 || SpeciesLang[0].Length <= species)
return "";
return SpeciesLang[lang][species];
}
public static bool getIsNicknamed(int species, string nick)
{
try { return SpeciesLang.All(list => list[species].ToUpper() != nick); }
catch { return false; }
if (species < 0 || SpeciesLang[0].Length <= species)
return false;
return SpeciesLang.All(list => list[species].ToUpper() != nick);
}
public static string getSpeciesNameGeneration(int species, int lang, int generation)
{
string nick = getSpeciesName(species, lang);
if (generation < 5) // All caps GenIV and previous
nick = nick.ToUpper();
if (generation < 3)
nick = nick.Replace(" ", "");
return nick;
}
public static bool getIsNicknamedAnyLanguage(int species, int generation, string nick)
{
int len = SpeciesLang.Length;
for (int i = 0; i < len; i++)
if (getSpeciesNameGeneration(species, i, generation) == nick)
return false;
return true;
}
public static readonly PersonalTable Personal = PersonalTable.SM;