206 lines
6.9 KiB
C#

using Milimoe.FunGame.Core.Api.Utility;
using Milimoe.FunGame.Core.Entity;
using Milimoe.FunGame.Core.Library.Constant;
namespace Milimoe.FunGame.Testing.Desktop.Solutions
{
public partial class CharacterCreator : Form
{
private CharacterManager CharacterManager { get; }
private Character? EditCharacter { get; }
public CharacterCreator(CharacterManager manager, Character? character = null)
{
InitializeComponent();
CharacterManager = manager;
if (character != null)
{
Text = "角色编辑器";
BtnCreate.Text = "编辑";
EditCharacter = character;
TextName.Text = character.Name;
TextCode.Text = manager.LoadedCharacters.Where(kv => kv.Value == character).Select(kv => kv.Key).FirstOrDefault() ?? "";
TextFirstName.Text = character.FirstName;
TextNickName.Text = character.NickName;
TextATK.Text = character.InitialATK.ToString();
TextHP.Text = character.InitialHP.ToString();
TextMP.Text = character.InitialMP.ToString();
TextHR.Text = character.InitialHR.ToString();
TextMR.Text = character.InitialMR.ToString();
ComboPA.Text = CharacterSet.GetPrimaryAttributeName(character.PrimaryAttribute);
TextSTR.Text = character.InitialSTR.ToString();
TextGrowthSTR.Text = character.STRGrowth.ToString();
TextAGI.Text = character.InitialAGI.ToString();
TextGrowthAGI.Text = character.AGIGrowth.ToString();
TextINT.Text = character.InitialINT.ToString();
TextGrowthINT.Text = character.INTGrowth.ToString();
}
}
private void BtnCreate_Click(object sender, EventArgs e)
{
Character c;
if (EditCharacter != null)
{
c = EditCharacter;
}
else
{
c = Factory.GetCharacter();
}
string name;
if (TextName.Text.Trim() != "")
{
c.Name = TextName.Text.Trim();
}
else
{
MessageBox.Show("姓不能为空。");
return;
}
if (TextCode.Text.Trim() != "")
{
name = TextCode.Text.Trim();
}
else
{
MessageBox.Show("角色存档标识不能为空。");
return;
}
if (TextFirstName.Text.Trim() != "")
{
c.FirstName = TextFirstName.Text.Trim();
}
if (TextNickName.Text.Trim() != "")
{
c.NickName = TextNickName.Text.Trim();
}
if (TextATK.Text.Trim() != "" && double.TryParse(TextATK.Text.Trim(), out double atk))
{
c.InitialATK = atk;
}
if (TextHP.Text.Trim() != "" && double.TryParse(TextHP.Text.Trim(), out double hp))
{
c.InitialHP = hp;
}
if (TextMP.Text.Trim() != "" && double.TryParse(TextMP.Text.Trim(), out double mp))
{
c.InitialMP = mp;
}
if (TextHR.Text.Trim() != "" && double.TryParse(TextHR.Text.Trim(), out double hr))
{
c.InitialHR = hr;
}
if (TextMR.Text.Trim() != "" && double.TryParse(TextMR.Text.Trim(), out double mr))
{
c.InitialMR = mr;
}
if (ComboPA.Text.Trim() != "")
{
string pa = ComboPA.Text.Trim();
if (pa == "敏捷")
{
c.PrimaryAttribute = PrimaryAttribute.AGI;
}
else if (pa == "智力")
{
c.PrimaryAttribute = PrimaryAttribute.INT;
}
else
{
c.PrimaryAttribute = PrimaryAttribute.STR;
}
}
if (TextSTR.Text.Trim() != "" && double.TryParse(TextSTR.Text.Trim(), out double str))
{
c.InitialSTR = str;
}
if (TextGrowthSTR.Text.Trim() != "" && double.TryParse(TextGrowthSTR.Text.Trim(), out double strg))
{
c.STRGrowth = strg;
}
if (TextAGI.Text.Trim() != "" && double.TryParse(TextAGI.Text.Trim(), out double agi))
{
c.InitialAGI = agi;
}
if (TextGrowthAGI.Text.Trim() != "" && double.TryParse(TextGrowthAGI.Text.Trim(), out double agig))
{
c.AGIGrowth = agig;
}
if (TextINT.Text.Trim() != "" && double.TryParse(TextINT.Text.Trim(), out double @int))
{
c.InitialINT = @int;
}
if (TextGrowthINT.Text.Trim() != "" && double.TryParse(TextGrowthINT.Text.Trim(), out double intg))
{
c.INTGrowth = intg;
}
if (TextSPD.Text.Trim() != "" && double.TryParse(TextSPD.Text.Trim(), out double spd))
{
c.InitialSPD = spd;
}
if (EditCharacter != null)
{
MessageBox.Show("保存成功!");
Dispose();
return;
}
else
{
if (CharacterManager.Add(name, c))
{
ShowDetail d = new(CharacterManager, null, null);
d.SetText(-1, c, c.GetInfo());
d.Text = "预览模式";
d.ShowDialog();
d.Dispose();
if (MessageBox.Show("添加成功!是否继续添加?", "提示", MessageBoxButtons.YesNo) == DialogResult.No)
{
Dispose();
return;
}
}
else
{
MessageBox.Show("添加失败!");
}
}
TextName.Text = "";
TextCode.Text = "";
TextFirstName.Text = "";
TextNickName.Text = "";
TextATK.Text = "";
TextHP.Text = "";
TextMP.Text = "";
TextHR.Text = "";
TextMR.Text = "";
ComboPA.Text = "";
TextSTR.Text = "";
TextGrowthSTR.Text = "";
TextAGI.Text = "";
TextGrowthAGI.Text = "";
TextINT.Text = "";
TextGrowthINT.Text = "";
}
}
}