diff --git a/Desktop/FunGame.Testing.Desktop.csproj b/Desktop/FunGame.Testing.Desktop.csproj
index e632b8e..fe03116 100644
--- a/Desktop/FunGame.Testing.Desktop.csproj
+++ b/Desktop/FunGame.Testing.Desktop.csproj
@@ -25,10 +25,10 @@
-
+
Form
-
+
Form
diff --git a/Desktop/Program.cs b/Desktop/Program.cs
index c6fa213..f971433 100644
--- a/Desktop/Program.cs
+++ b/Desktop/Program.cs
@@ -14,7 +14,7 @@ namespace Desktop
// see https://aka.ms/applicationconfiguration.
ApplicationConfiguration.Initialize();
//Application.Run(new ChessBoardExample.ChessBoardExample());
- Application.Run(new EntityCreator());
+ Application.Run(new EntityEditor());
}
}
}
\ No newline at end of file
diff --git a/Desktop/Solutions/EntityCreator/CreateCharacter.Designer.cs b/Desktop/Solutions/EntityCreator/CharacterCreator.Designer.cs
similarity index 99%
rename from Desktop/Solutions/EntityCreator/CreateCharacter.Designer.cs
rename to Desktop/Solutions/EntityCreator/CharacterCreator.Designer.cs
index 93ea773..e94f8ed 100644
--- a/Desktop/Solutions/EntityCreator/CreateCharacter.Designer.cs
+++ b/Desktop/Solutions/EntityCreator/CharacterCreator.Designer.cs
@@ -1,6 +1,6 @@
namespace Milimoe.FunGame.Testing.Desktop.Solutions
{
- partial class CreateCharacter
+ partial class CharacterCreator
{
///
/// Required designer variable.
diff --git a/Desktop/Solutions/EntityCreator/CharacterCreator.cs b/Desktop/Solutions/EntityCreator/CharacterCreator.cs
index 11ed26e..64d144b 100644
--- a/Desktop/Solutions/EntityCreator/CharacterCreator.cs
+++ b/Desktop/Solutions/EntityCreator/CharacterCreator.cs
@@ -1,47 +1,205 @@
using Milimoe.FunGame.Core.Api.Utility;
using Milimoe.FunGame.Core.Entity;
+using Milimoe.FunGame.Core.Library.Constant;
namespace Milimoe.FunGame.Testing.Desktop.Solutions
{
- public class CharacterCreator
+ public partial class CharacterCreator : Form
{
- public Dictionary LoadedCharacters { get; set; } = [];
+ private CharacterManager CharacterManager { get; }
+ private Character? EditCharacter { get; }
- public void Load()
+ public CharacterCreator(CharacterManager manager, Character? character = null)
{
- EntityModuleConfig config = new("EntityCreator", "character.creator");
- config.LoadConfig();
- LoadedCharacters = new(config);
- foreach (Character c in LoadedCharacters.Values)
+ InitializeComponent();
+ CharacterManager = manager;
+ if (character != null)
{
- c.Recovery();
+ 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();
}
}
- public bool Add(string name, Character character)
+ private void BtnCreate_Click(object sender, EventArgs e)
{
- return LoadedCharacters.TryAdd(name, character);
- }
-
- public bool Remove(string name)
- {
- return LoadedCharacters.Remove(name);
- }
-
- public void Save()
- {
- EntityModuleConfig config = new("EntityCreator", "character.creator");
- foreach (string key in LoadedCharacters.Keys)
+ Character c;
+ if (EditCharacter != null)
{
- config.Add(key, LoadedCharacters[key]);
+ c = EditCharacter;
}
- config.SaveConfig();
- }
+ else
+ {
+ c = Factory.GetCharacter();
+ }
+ string name;
- public void OpenCreator(Character? character = null)
- {
- CreateCharacter creator = new(this, character);
- creator.ShowDialog();
+ 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 = "";
}
}
}
diff --git a/Desktop/Solutions/EntityCreator/CreateCharacter.resx b/Desktop/Solutions/EntityCreator/CharacterCreator.resx
similarity index 100%
rename from Desktop/Solutions/EntityCreator/CreateCharacter.resx
rename to Desktop/Solutions/EntityCreator/CharacterCreator.resx
diff --git a/Desktop/Solutions/EntityCreator/CharacterManager.cs b/Desktop/Solutions/EntityCreator/CharacterManager.cs
new file mode 100644
index 0000000..c8bae63
--- /dev/null
+++ b/Desktop/Solutions/EntityCreator/CharacterManager.cs
@@ -0,0 +1,47 @@
+using Milimoe.FunGame.Core.Api.Utility;
+using Milimoe.FunGame.Core.Entity;
+
+namespace Milimoe.FunGame.Testing.Desktop.Solutions
+{
+ public class CharacterManager
+ {
+ public Dictionary LoadedCharacters { get; set; } = [];
+
+ public void Load()
+ {
+ EntityModuleConfig config = new("EntityEditor", "characters");
+ config.LoadConfig();
+ LoadedCharacters = new(config);
+ foreach (Character c in LoadedCharacters.Values)
+ {
+ c.Recovery();
+ }
+ }
+
+ public bool Add(string name, Character character)
+ {
+ return LoadedCharacters.TryAdd(name, character);
+ }
+
+ public bool Remove(string name)
+ {
+ return LoadedCharacters.Remove(name);
+ }
+
+ public void Save()
+ {
+ EntityModuleConfig config = new("EntityEditor", "characters");
+ foreach (string key in LoadedCharacters.Keys)
+ {
+ config.Add(key, LoadedCharacters[key]);
+ }
+ config.SaveConfig();
+ }
+
+ public void OpenCreator(Character? character = null)
+ {
+ CharacterCreator manager = new(this, character);
+ manager.ShowDialog();
+ }
+ }
+}
diff --git a/Desktop/Solutions/EntityCreator/CreateCharacter.cs b/Desktop/Solutions/EntityCreator/CreateCharacter.cs
deleted file mode 100644
index 5c8c6f4..0000000
--- a/Desktop/Solutions/EntityCreator/CreateCharacter.cs
+++ /dev/null
@@ -1,205 +0,0 @@
-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 CreateCharacter : Form
- {
- private CharacterCreator CharacterCreator { get; }
- private Character? EditCharacter { get; }
-
- public CreateCharacter(CharacterCreator creator, Character? character = null)
- {
- InitializeComponent();
- CharacterCreator = creator;
- if (character != null)
- {
- Text = "角色编辑器";
- BtnCreate.Text = "编辑";
- EditCharacter = character;
- TextName.Text = character.Name;
- TextCode.Text = creator.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 (CharacterCreator.Add(name, c))
- {
- ShowDetail d = new(CharacterCreator, 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 = "";
- }
- }
-}
diff --git a/Desktop/Solutions/EntityCreator/CreateItem.cs b/Desktop/Solutions/EntityCreator/CreateItem.cs
deleted file mode 100644
index 45369e9..0000000
--- a/Desktop/Solutions/EntityCreator/CreateItem.cs
+++ /dev/null
@@ -1,199 +0,0 @@
-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 CreateItem : Form
- {
- private ItemCreator ItemCreator { get; }
- private Item? EditItem { get; }
-
- public CreateItem(ItemCreator creator, Item? item = null)
- {
- InitializeComponent();
- ItemCreator = creator;
- if (item != null)
- {
- Text = "物品编辑器";
- BtnCreate.Text = "编辑";
- EditItem = item;
- TextID.Text = item.Id.ToString();
- TextName.Text = item.Name;
- TextCode.Text = creator.LoadedItems.Where(kv => kv.Value.Equals(item)).Select(kv => kv.Key).FirstOrDefault() ?? "";
- ComboItemType.Text = ItemSet.GetItemTypeName(item.ItemType);
- CheckboxIsWeapon.Checked = item.ItemType == ItemType.Weapon;
- ComboWeapon.Text = ItemSet.GetWeaponTypeName(item.WeaponType);
- ComboWeapon.Enabled = item.ItemType == ItemType.Weapon;
- CheckboxIsEquip.Checked = item.Equipable;
- ComboEquip.Text = ItemSet.GetEquipSlotTypeName(item.EquipSlotType);
- ComboEquip.Enabled = item.Equipable;
- CheckboxIsPurchasable.Checked = item.IsPurchasable;
- TextPrice.Text = item.Price.ToString();
- TextPrice.Enabled = item.IsPurchasable;
- CheckboxIsSellable.Checked = item.IsSellable;
- CheckboxIsTradable.Checked = item.IsTradable;
- if (item.NextSellableTime > DateTime.Now && item.NextSellableTime < DateTime.MaxValue) DateTimePickerSell.Value = item.NextSellableTime;
- DateTimePickerSell.Enabled = !item.IsSellable;
- if (item.NextTradableTime > DateTime.Now && item.NextTradableTime < DateTime.MaxValue) DateTimePickerTrade.Value = item.NextTradableTime;
- DateTimePickerTrade.Enabled = !item.IsTradable;
- }
- else
- {
- CheckboxIsWeapon.Checked = false;
- ComboWeapon.Enabled = false;
- CheckboxIsEquip.Checked = false;
- ComboEquip.Enabled = false;
- CheckboxIsPurchasable.Checked = false;
- TextPrice.Enabled = false;
- CheckboxIsSellable.Checked = true;
- CheckboxIsTradable.Checked = true;
- DateTimePickerSell.Value = DateTime.Now;
- DateTimePickerSell.Enabled = false;
- DateTimePickerTrade.Value = DateTime.Now;
- DateTimePickerTrade.Enabled = false;
- }
- }
-
- private void BtnCreate_Click(object sender, EventArgs e)
- {
- Item i;
- if (EditItem != null)
- {
- i = EditItem;
- }
- else
- {
- i = Factory.GetItem();
- }
- string name;
-
- if (TextID.Text.Trim() != "" && long.TryParse(TextID.Text.Trim(), out long id))
- {
- i.Id = id;
- }
- else
- {
- MessageBox.Show("ID不能为空。");
- return;
- }
-
- if (TextName.Text.Trim() != "")
- {
- i.Name = TextName.Text.Trim();
- }
- else
- {
- MessageBox.Show("名称不能为空。");
- return;
- }
-
- if (TextCode.Text.Trim() != "")
- {
- name = TextCode.Text.Trim();
- }
- else
- {
- MessageBox.Show("物品存档标识不能为空。");
- return;
- }
-
- if (CheckboxIsWeapon.Checked && ComboWeapon.Text.Trim() != "")
- {
- i.WeaponType = ItemSet.GetWeaponTypeFromName(ComboWeapon.Text.Trim());
- }
-
- if (CheckboxIsEquip.Checked && ComboEquip.Text.Trim() != "")
- {
- i.EquipSlotType = ItemSet.GetEquipSlotTypeFromName(ComboEquip.Text.Trim());
- }
-
- if (CheckboxIsPurchasable.Checked && TextPrice.Text.Trim() != "" && double.TryParse(TextPrice.Text.Trim(), out double price))
- {
- i.Price = price;
- }
-
- if (!CheckboxIsSellable.Checked && DateTime.Now < DateTimePickerSell.Value)
- {
- i.NextSellableTime = DateTimePickerSell.Value;
- }
-
- if (!CheckboxIsTradable.Checked && DateTime.Now < DateTimePickerTrade.Value)
- {
- i.NextTradableTime = DateTimePickerTrade.Value;
- }
-
- if (EditItem != null)
- {
- MessageBox.Show("保存成功!");
- Dispose();
- return;
- }
- else
- {
- if (ItemCreator.Add(name, i))
- {
- ShowDetail d = new(null, null, ItemCreator);
- d.SetText(-1, i, i.ToString());
- d.Text = "预览模式";
- d.ShowDialog();
- d.Dispose();
- if (MessageBox.Show("添加成功!是否继续添加?", "提示", MessageBoxButtons.YesNo) == DialogResult.No)
- {
- Dispose();
- return;
- }
- }
- else
- {
- MessageBox.Show("添加失败!");
- }
- }
-
- TextID.Text = "";
- TextName.Text = "";
- TextCode.Text = "";
- ComboItemType.Text = "";
- CheckboxIsWeapon.Checked = false;
- ComboWeapon.Text = "";
- ComboWeapon.Enabled = false;
- CheckboxIsEquip.Checked = false;
- ComboEquip.Text = "";
- ComboEquip.Enabled = false;
- CheckboxIsPurchasable.Checked = false;
- TextPrice.Text = "";
- TextPrice.Enabled = false;
- CheckboxIsSellable.Checked = true;
- CheckboxIsTradable.Checked = true;
- DateTimePickerSell.Value = DateTime.Now;
- DateTimePickerSell.Enabled = false;
- DateTimePickerTrade.Value = DateTime.Now;
- DateTimePickerTrade.Enabled = false;
- }
-
- private void CheckboxIsWeapon_CheckedChanged(object sender, EventArgs e)
- {
- ComboWeapon.Enabled = CheckboxIsWeapon.Checked;
- }
-
- private void CheckboxIsEquip_CheckedChanged(object sender, EventArgs e)
- {
- ComboEquip.Enabled = CheckboxIsEquip.Checked;
- }
-
- private void CheckboxIsPurchasable_CheckedChanged(object sender, EventArgs e)
- {
- TextPrice.Enabled = CheckboxIsPurchasable.Checked;
- }
-
- private void CheckboxIsSellable_CheckedChanged(object sender, EventArgs e)
- {
- DateTimePickerSell.Enabled = !CheckboxIsSellable.Checked;
- }
-
- private void CheckboxIsTradable_CheckedChanged(object sender, EventArgs e)
- {
- DateTimePickerTrade.Enabled = !CheckboxIsTradable.Checked;
- }
- }
-}
diff --git a/Desktop/Solutions/EntityCreator/CreateSkill.cs b/Desktop/Solutions/EntityCreator/CreateSkill.cs
deleted file mode 100644
index c7b608f..0000000
--- a/Desktop/Solutions/EntityCreator/CreateSkill.cs
+++ /dev/null
@@ -1,104 +0,0 @@
-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 CreateSkill : Form
- {
- private SkillCreator SkillCreator { get; }
- private Skill? EditSkill { get; }
-
- public CreateSkill(SkillCreator creator, Skill? skill = null)
- {
- InitializeComponent();
- SkillCreator = creator;
- if (skill != null)
- {
- Text = "技能编辑器";
- BtnCreate.Text = "编辑";
- EditSkill = skill;
- TextID.Text = skill.Id.ToString();
- TextCode.Text = creator.LoadedSkills.Where(kv => kv.Value.Equals(skill)).Select(kv => kv.Key).FirstOrDefault() ?? "";
- TextName.Text = skill.Name;
- ComboSkillType.Text = SkillSet.GetSkillTypeName(skill.SkillType);
- }
- }
-
- private void BtnCreate_Click(object sender, EventArgs e)
- {
- Skill s;
- if (EditSkill != null)
- {
- s = EditSkill;
- }
- else
- {
- s = Factory.GetSkill();
- }
- string name;
-
- if (TextID.Text.Trim() != "" && long.TryParse(TextID.Text.Trim(), out long id))
- {
- s.Id = id;
- }
- else
- {
- MessageBox.Show("ID不能为空。");
- return;
- }
-
- if (TextName.Text.Trim() != "")
- {
- s.Name = TextName.Text.Trim();
- }
- else
- {
- MessageBox.Show("名称不能为空。");
- return;
- }
-
- if (TextCode.Text.Trim() != "")
- {
- name = TextCode.Text.Trim();
- }
- else
- {
- MessageBox.Show("技能存档标识不能为空。");
- return;
- }
-
- if (EditSkill != null)
- {
- MessageBox.Show("保存成功!");
- Dispose();
- return;
- }
- else
- {
- if (SkillCreator.Add(name, s))
- {
- ShowDetail d = new(null, SkillCreator, null);
- d.SetText(-1, s, s.ToString());
- d.Text = "预览模式";
- d.ShowDialog();
- d.Dispose();
- if (MessageBox.Show("添加成功!是否继续添加?", "提示", MessageBoxButtons.YesNo) == DialogResult.No)
- {
- Dispose();
- return;
- }
- }
- else
- {
- MessageBox.Show("添加失败!");
- }
- }
-
- TextID.Text = "";
- TextCode.Text = "";
- TextName.Text = "";
- ComboSkillType.Text = "";
- }
- }
-}
diff --git a/Desktop/Solutions/EntityCreator/EntityCreator.Designer.cs b/Desktop/Solutions/EntityCreator/EntityEditor.Designer.cs
similarity index 98%
rename from Desktop/Solutions/EntityCreator/EntityCreator.Designer.cs
rename to Desktop/Solutions/EntityCreator/EntityEditor.Designer.cs
index 7722432..9e64579 100644
--- a/Desktop/Solutions/EntityCreator/EntityCreator.Designer.cs
+++ b/Desktop/Solutions/EntityCreator/EntityEditor.Designer.cs
@@ -1,6 +1,6 @@
namespace Milimoe.FunGame.Testing.Desktop.Solutions
{
- partial class EntityCreator
+ partial class EntityEditor
{
///
/// Required designer variable.
@@ -275,7 +275,7 @@
删除角色技能.UseVisualStyleBackColor = true;
删除角色技能.Click += 删除角色技能_Click;
//
- // EntityCreator
+ // EntityEditor
//
AutoScaleDimensions = new SizeF(7F, 17F);
AutoScaleMode = AutoScaleMode.Font;
@@ -299,9 +299,11 @@
Controls.Add(查看现有物品);
Controls.Add(查看现有技能);
Controls.Add(查看现有角色);
- Name = "EntityCreator";
+ FormBorderStyle = FormBorderStyle.FixedSingle;
+ MaximizeBox = false;
+ Name = "EntityEditor";
StartPosition = FormStartPosition.CenterScreen;
- Text = "实体创建器";
+ Text = "实体编辑器";
列表.ResumeLayout(false);
ResumeLayout(false);
}
diff --git a/Desktop/Solutions/EntityCreator/EntityCreator.cs b/Desktop/Solutions/EntityCreator/EntityEditor.cs
similarity index 81%
rename from Desktop/Solutions/EntityCreator/EntityCreator.cs
rename to Desktop/Solutions/EntityCreator/EntityEditor.cs
index 055f79b..192b731 100644
--- a/Desktop/Solutions/EntityCreator/EntityCreator.cs
+++ b/Desktop/Solutions/EntityCreator/EntityEditor.cs
@@ -1,27 +1,26 @@
-using Microsoft.VisualBasic;
-using Milimoe.FunGame.Core.Api.Utility;
+using Milimoe.FunGame.Core.Api.Utility;
using Milimoe.FunGame.Core.Entity;
using Milimoe.FunGame.Core.Library.Common.Addon;
using Milimoe.FunGame.Core.Library.Constant;
namespace Milimoe.FunGame.Testing.Desktop.Solutions
{
- public partial class EntityCreator : Form
+ public partial class EntityEditor : Form
{
private static GameModuleLoader? GameModuleLoader { get; set; } = null;
- private CharacterCreator CharacterCreator { get; } = new();
- private SkillCreator SkillCreator { get; } = new();
- private ItemCreator ItemCreator { get; } = new();
+ private CharacterManager CharacterManager { get; } = new();
+ private SkillManager SkillManager { get; } = new();
+ private ItemManager ItemManager { get; } = new();
private bool CheckSelectedIndex => 实际列表.SelectedIndex != -1 && 实际列表.SelectedIndex < 实际列表.Items.Count;
private int nowClick = 0;
- public EntityCreator()
+ public EntityEditor()
{
InitializeComponent();
GameModuleLoader = LoadModules();
- CharacterCreator.Load();
- SkillCreator.Load();
- ItemCreator.Load();
+ CharacterManager.Load();
+ SkillManager.Load();
+ ItemManager.Load();
查看现有技能方法();
查看现有物品方法();
查看现有角色方法();
@@ -30,9 +29,9 @@ namespace Milimoe.FunGame.Testing.Desktop.Solutions
private void 查看现有角色方法()
{
实际列表.Items.Clear();
- foreach (string name in CharacterCreator.LoadedCharacters.Keys)
+ foreach (string name in CharacterManager.LoadedCharacters.Keys)
{
- 实际列表.Items.Add(CharacterCreator.LoadedCharacters[name]);
+ 实际列表.Items.Add(CharacterManager.LoadedCharacters[name]);
}
nowClick = 0;
}
@@ -40,9 +39,9 @@ namespace Milimoe.FunGame.Testing.Desktop.Solutions
private void 查看现有技能方法()
{
实际列表.Items.Clear();
- foreach (string name in SkillCreator.LoadedSkills.OrderBy(kv => kv.Value.Id).Select(kv => kv.Key))
+ foreach (string name in SkillManager.LoadedSkills.OrderBy(kv => kv.Value.Id).Select(kv => kv.Key))
{
- 实际列表.Items.Add(GetSkillDisplayName(SkillCreator, name));
+ 实际列表.Items.Add(GetSkillDisplayName(SkillManager, name));
}
nowClick = 1;
}
@@ -50,9 +49,9 @@ namespace Milimoe.FunGame.Testing.Desktop.Solutions
private void 查看现有物品方法()
{
实际列表.Items.Clear();
- foreach (string name in ItemCreator.LoadedItems.OrderBy(kv => kv.Value.Id).Select(kv => kv.Key))
+ foreach (string name in ItemManager.LoadedItems.OrderBy(kv => kv.Value.Id).Select(kv => kv.Key))
{
- 实际列表.Items.Add(GetItemDisplayName(ItemCreator, name));
+ 实际列表.Items.Add(GetItemDisplayName(ItemManager, name));
}
nowClick = 2;
}
@@ -83,27 +82,27 @@ namespace Milimoe.FunGame.Testing.Desktop.Solutions
private void 全部保存_Click(object sender, EventArgs e)
{
- CharacterCreator.Save();
- SkillCreator.Save();
- ItemCreator.Save();
+ CharacterManager.Save();
+ SkillManager.Save();
+ ItemManager.Save();
MessageBox.Show("保存成功!");
}
private void 保存角色_Click(object sender, EventArgs e)
{
- CharacterCreator.Save();
+ CharacterManager.Save();
MessageBox.Show("保存成功!");
}
private void 保存技能_Click(object sender, EventArgs e)
{
- SkillCreator.Save();
+ SkillManager.Save();
MessageBox.Show("保存成功!");
}
private void 保存物品_Click(object sender, EventArgs e)
{
- ItemCreator.Save();
+ ItemManager.Save();
MessageBox.Show("保存成功!");
}
@@ -143,16 +142,16 @@ namespace Milimoe.FunGame.Testing.Desktop.Solutions
{
if (CheckSelectedIndex)
{
- ShowDetail d = new(CharacterCreator, SkillCreator, ItemCreator);
+ ShowDetail d = new(CharacterManager, SkillManager, ItemManager);
switch (nowClick)
{
case 0:
- Character? character = CharacterCreator.LoadedCharacters.Values.Where(c => c.ToString() == 实际列表.Items[实际列表.SelectedIndex].ToString()).FirstOrDefault();
+ Character? character = CharacterManager.LoadedCharacters.Values.Where(c => c.ToString() == 实际列表.Items[实际列表.SelectedIndex].ToString()).FirstOrDefault();
d.SetText(nowClick, character, character?.GetInfo() ?? "");
d.ShowDialog();
break;
case 1:
- Skill? s = SkillCreator.LoadedSkills.Where(kv => GetSkillDisplayName(SkillCreator, kv.Key) == 实际列表.Items[实际列表.SelectedIndex].ToString()).Select(kv => kv.Value).FirstOrDefault();
+ Skill? s = SkillManager.LoadedSkills.Where(kv => GetSkillDisplayName(SkillManager, kv.Key) == 实际列表.Items[实际列表.SelectedIndex].ToString()).Select(kv => kv.Value).FirstOrDefault();
if (s != null)
{
Skill? s2 = 从模组加载器中获取技能(s.Id, s.Name, s.SkillType);
@@ -165,7 +164,7 @@ namespace Milimoe.FunGame.Testing.Desktop.Solutions
}
break;
case 2:
- Item? i = ItemCreator.LoadedItems.Where(kv => GetItemDisplayName(ItemCreator, kv.Key) == 实际列表.Items[实际列表.SelectedIndex].ToString()).Select(kv => kv.Value).FirstOrDefault();
+ Item? i = ItemManager.LoadedItems.Where(kv => GetItemDisplayName(ItemManager, kv.Key) == 实际列表.Items[实际列表.SelectedIndex].ToString()).Select(kv => kv.Value).FirstOrDefault();
if (i != null)
{
Item? i2 = 从模组加载器中获取物品(i.Id, i.Name, i.ItemType);
@@ -187,14 +186,14 @@ namespace Milimoe.FunGame.Testing.Desktop.Solutions
private void 为角色添加技能方法()
{
- if (SkillCreator.LoadedSkills.Count != 0)
+ if (SkillManager.LoadedSkills.Count != 0)
{
ShowList l = new();
- l.AddListItem(SkillCreator.LoadedSkills.OrderBy(kv => kv.Value.Id).Where(kv => kv.Value.SkillType != SkillType.Item).Select(kv => GetSkillDisplayName(SkillCreator, kv.Key)).ToArray());
+ l.AddListItem(SkillManager.LoadedSkills.OrderBy(kv => kv.Value.Id).Where(kv => kv.Value.SkillType != SkillType.Item).Select(kv => GetSkillDisplayName(SkillManager, kv.Key)).ToArray());
l.ShowDialog();
string selected = l.SelectItem;
- Character? c = CharacterCreator.LoadedCharacters.Values.Where(c => c.ToString() == 实际列表.Items[实际列表.SelectedIndex].ToString()).FirstOrDefault();
- Skill? s = SkillCreator.LoadedSkills.Where(kv => GetSkillDisplayName(SkillCreator, kv.Key) == selected).Select(kv => kv.Value).FirstOrDefault();
+ Character? c = CharacterManager.LoadedCharacters.Values.Where(c => c.ToString() == 实际列表.Items[实际列表.SelectedIndex].ToString()).FirstOrDefault();
+ Skill? s = SkillManager.LoadedSkills.Where(kv => GetSkillDisplayName(SkillManager, kv.Key) == selected).Select(kv => kv.Value).FirstOrDefault();
if (c != null && s != null)
{
Skill? s2 = 从模组加载器中获取技能(s.Id, s.Name, s.SkillType);
@@ -214,14 +213,14 @@ namespace Milimoe.FunGame.Testing.Desktop.Solutions
private void 为角色添加物品方法()
{
- if (ItemCreator.LoadedItems.Count != 0)
+ if (ItemManager.LoadedItems.Count != 0)
{
ShowList l = new();
- l.AddListItem(ItemCreator.LoadedItems.OrderBy(kv => kv.Value.Id).Select(kv => GetItemDisplayName(ItemCreator, kv.Key)).ToArray());
+ l.AddListItem(ItemManager.LoadedItems.OrderBy(kv => kv.Value.Id).Select(kv => GetItemDisplayName(ItemManager, kv.Key)).ToArray());
l.ShowDialog();
string selected = l.SelectItem;
- Character? c = CharacterCreator.LoadedCharacters.Values.Where(c => c.ToString() == 实际列表.Items[实际列表.SelectedIndex].ToString()).FirstOrDefault();
- Item? i = ItemCreator.LoadedItems.Where(kv => GetItemDisplayName(ItemCreator, kv.Key) == selected).Select(kv => kv.Value).FirstOrDefault();
+ Character? c = CharacterManager.LoadedCharacters.Values.Where(c => c.ToString() == 实际列表.Items[实际列表.SelectedIndex].ToString()).FirstOrDefault();
+ Item? i = ItemManager.LoadedItems.Where(kv => GetItemDisplayName(ItemManager, kv.Key) == selected).Select(kv => kv.Value).FirstOrDefault();
if (c != null && i != null)
{
Item? i2 = 从模组加载器中获取物品(i.Id, i.Name, i.ItemType);
@@ -241,7 +240,7 @@ namespace Milimoe.FunGame.Testing.Desktop.Solutions
private void 删除角色技能方法()
{
- Character? c = CharacterCreator.LoadedCharacters.Values.Where(c => c.ToString() == 实际列表.Items[实际列表.SelectedIndex].ToString()).FirstOrDefault();
+ Character? c = CharacterManager.LoadedCharacters.Values.Where(c => c.ToString() == 实际列表.Items[实际列表.SelectedIndex].ToString()).FirstOrDefault();
if (c != null)
{
if (c.Skills.Count != 0)
@@ -262,7 +261,7 @@ namespace Milimoe.FunGame.Testing.Desktop.Solutions
private void 删除角色物品方法()
{
- Character? c = CharacterCreator.LoadedCharacters.Values.Where(c => c.ToString() == 实际列表.Items[实际列表.SelectedIndex].ToString()).FirstOrDefault();
+ Character? c = CharacterManager.LoadedCharacters.Values.Where(c => c.ToString() == 实际列表.Items[实际列表.SelectedIndex].ToString()).FirstOrDefault();
if (c != null)
{
if (c.Items.Count != 0)
@@ -318,19 +317,19 @@ namespace Milimoe.FunGame.Testing.Desktop.Solutions
private void 创建角色_Click(object sender, EventArgs e)
{
- CharacterCreator.OpenCreator();
+ CharacterManager.OpenCreator();
查看现有角色方法();
}
private void 创建技能_Click(object sender, EventArgs e)
{
- SkillCreator.OpenCreator();
+ SkillManager.OpenCreator();
查看现有技能方法();
}
private void 创建物品_Click(object sender, EventArgs e)
{
- ItemCreator.OpenCreator();
+ ItemManager.OpenCreator();
查看现有物品方法();
}
@@ -338,8 +337,8 @@ namespace Milimoe.FunGame.Testing.Desktop.Solutions
{
if (CheckSelectedIndex && nowClick == 0 && MessageBox.Show("是否删除", "删除", MessageBoxButtons.YesNo) == DialogResult.Yes)
{
- string name = CharacterCreator.LoadedCharacters.Where(ky => ky.Value.ToString() == 实际列表.Items[实际列表.SelectedIndex].ToString()).FirstOrDefault().Key ?? "";
- if (CharacterCreator.Remove(name))
+ string name = CharacterManager.LoadedCharacters.Where(ky => ky.Value.ToString() == 实际列表.Items[实际列表.SelectedIndex].ToString()).FirstOrDefault().Key ?? "";
+ if (CharacterManager.Remove(name))
{
MessageBox.Show("删除成功!");
查看现有角色方法();
@@ -355,8 +354,8 @@ namespace Milimoe.FunGame.Testing.Desktop.Solutions
{
if (CheckSelectedIndex && nowClick == 1 && MessageBox.Show("是否删除", "删除", MessageBoxButtons.YesNo) == DialogResult.Yes)
{
- string name = SkillCreator.LoadedSkills.Where(kv => GetSkillDisplayName(SkillCreator, kv.Key) == 实际列表.Items[实际列表.SelectedIndex].ToString()).FirstOrDefault().Key ?? "";
- if (SkillCreator.Remove(name))
+ string name = SkillManager.LoadedSkills.Where(kv => GetSkillDisplayName(SkillManager, kv.Key) == 实际列表.Items[实际列表.SelectedIndex].ToString()).FirstOrDefault().Key ?? "";
+ if (SkillManager.Remove(name))
{
MessageBox.Show("删除成功!");
查看现有技能方法();
@@ -372,8 +371,8 @@ namespace Milimoe.FunGame.Testing.Desktop.Solutions
{
if (CheckSelectedIndex && nowClick == 2 && MessageBox.Show("是否删除", "删除", MessageBoxButtons.YesNo) == DialogResult.Yes)
{
- string name = ItemCreator.LoadedItems.Where(kv => GetItemDisplayName(ItemCreator, kv.Key) == 实际列表.Items[实际列表.SelectedIndex].ToString()).FirstOrDefault().Key ?? "";
- if (ItemCreator.Remove(name))
+ string name = ItemManager.LoadedItems.Where(kv => GetItemDisplayName(ItemManager, kv.Key) == 实际列表.Items[实际列表.SelectedIndex].ToString()).FirstOrDefault().Key ?? "";
+ if (ItemManager.Remove(name))
{
MessageBox.Show("删除成功!");
查看现有物品方法();
@@ -389,16 +388,16 @@ namespace Milimoe.FunGame.Testing.Desktop.Solutions
{
if (MessageBox.Show("重新读取会丢失未保存的数据,是否确认重新读取全部?", "重新读取全部", MessageBoxButtons.YesNo) == DialogResult.Yes)
{
- CharacterCreator.Load();
- SkillCreator.Load();
- ItemCreator.Load();
+ CharacterManager.Load();
+ SkillManager.Load();
+ ItemManager.Load();
查看现有技能方法();
查看现有物品方法();
查看现有角色方法();
}
}
- public static string GetSkillDisplayName(SkillCreator skillCreator, string name)
+ public static string GetSkillDisplayName(SkillManager skillCreator, string name)
{
if (skillCreator.LoadedSkills.TryGetValue(name, out Skill? skill) && skill != null)
{
@@ -407,7 +406,7 @@ namespace Milimoe.FunGame.Testing.Desktop.Solutions
return "";
}
- public static string GetItemDisplayName(ItemCreator itemCreator, string name)
+ public static string GetItemDisplayName(ItemManager itemCreator, string name)
{
if (itemCreator.LoadedItems.TryGetValue(name, out Item? item) && item != null)
{
diff --git a/Desktop/Solutions/EntityCreator/CreateItem.resx b/Desktop/Solutions/EntityCreator/EntityEditor.resx
similarity index 100%
rename from Desktop/Solutions/EntityCreator/CreateItem.resx
rename to Desktop/Solutions/EntityCreator/EntityEditor.resx
diff --git a/Desktop/Solutions/EntityCreator/CreateItem.Designer.cs b/Desktop/Solutions/EntityCreator/ItemCreator.Designer.cs
similarity index 99%
rename from Desktop/Solutions/EntityCreator/CreateItem.Designer.cs
rename to Desktop/Solutions/EntityCreator/ItemCreator.Designer.cs
index afe18e8..d80926f 100644
--- a/Desktop/Solutions/EntityCreator/CreateItem.Designer.cs
+++ b/Desktop/Solutions/EntityCreator/ItemCreator.Designer.cs
@@ -1,6 +1,6 @@
namespace Milimoe.FunGame.Testing.Desktop.Solutions
{
- partial class CreateItem
+ partial class ItemCreator
{
///
/// Required designer variable.
diff --git a/Desktop/Solutions/EntityCreator/ItemCreator.cs b/Desktop/Solutions/EntityCreator/ItemCreator.cs
index 115a8f8..0b60c1a 100644
--- a/Desktop/Solutions/EntityCreator/ItemCreator.cs
+++ b/Desktop/Solutions/EntityCreator/ItemCreator.cs
@@ -1,43 +1,199 @@
using Milimoe.FunGame.Core.Api.Utility;
using Milimoe.FunGame.Core.Entity;
+using Milimoe.FunGame.Core.Library.Constant;
namespace Milimoe.FunGame.Testing.Desktop.Solutions
{
- public class ItemCreator
+ public partial class ItemCreator : Form
{
- public Dictionary LoadedItems { get; set; } = [];
+ private ItemManager ItemManager { get; }
+ private Item? EditItem { get; }
- public void Load()
+ public ItemCreator(ItemManager manager, Item? item = null)
{
- EntityModuleConfig- config = new("EntityCreator", "item.creator");
- config.LoadConfig();
- LoadedItems = new(config);
- }
-
- public bool Add(string name, Item item)
- {
- return LoadedItems.TryAdd(name, item);
- }
-
- public bool Remove(string name)
- {
- return LoadedItems.Remove(name);
- }
-
- public void Save()
- {
- EntityModuleConfig
- config = new("EntityCreator", "item.creator");
- foreach (string key in LoadedItems.Keys)
+ InitializeComponent();
+ ItemManager = manager;
+ if (item != null)
{
- config.Add(key, LoadedItems[key]);
+ Text = "物品编辑器";
+ BtnCreate.Text = "编辑";
+ EditItem = item;
+ TextID.Text = item.Id.ToString();
+ TextName.Text = item.Name;
+ TextCode.Text = manager.LoadedItems.Where(kv => kv.Value.Equals(item)).Select(kv => kv.Key).FirstOrDefault() ?? "";
+ ComboItemType.Text = ItemSet.GetItemTypeName(item.ItemType);
+ CheckboxIsWeapon.Checked = item.ItemType == ItemType.Weapon;
+ ComboWeapon.Text = ItemSet.GetWeaponTypeName(item.WeaponType);
+ ComboWeapon.Enabled = item.ItemType == ItemType.Weapon;
+ CheckboxIsEquip.Checked = item.Equipable;
+ ComboEquip.Text = ItemSet.GetEquipSlotTypeName(item.EquipSlotType);
+ ComboEquip.Enabled = item.Equipable;
+ CheckboxIsPurchasable.Checked = item.IsPurchasable;
+ TextPrice.Text = item.Price.ToString();
+ TextPrice.Enabled = item.IsPurchasable;
+ CheckboxIsSellable.Checked = item.IsSellable;
+ CheckboxIsTradable.Checked = item.IsTradable;
+ if (item.NextSellableTime > DateTime.Now && item.NextSellableTime < DateTime.MaxValue) DateTimePickerSell.Value = item.NextSellableTime;
+ DateTimePickerSell.Enabled = !item.IsSellable;
+ if (item.NextTradableTime > DateTime.Now && item.NextTradableTime < DateTime.MaxValue) DateTimePickerTrade.Value = item.NextTradableTime;
+ DateTimePickerTrade.Enabled = !item.IsTradable;
+ }
+ else
+ {
+ CheckboxIsWeapon.Checked = false;
+ ComboWeapon.Enabled = false;
+ CheckboxIsEquip.Checked = false;
+ ComboEquip.Enabled = false;
+ CheckboxIsPurchasable.Checked = false;
+ TextPrice.Enabled = false;
+ CheckboxIsSellable.Checked = true;
+ CheckboxIsTradable.Checked = true;
+ DateTimePickerSell.Value = DateTime.Now;
+ DateTimePickerSell.Enabled = false;
+ DateTimePickerTrade.Value = DateTime.Now;
+ DateTimePickerTrade.Enabled = false;
}
- config.SaveConfig();
}
- public void OpenCreator(Item? item = null)
+ private void BtnCreate_Click(object sender, EventArgs e)
{
- CreateItem creator = new(this, item);
- creator.ShowDialog();
+ Item i;
+ if (EditItem != null)
+ {
+ i = EditItem;
+ }
+ else
+ {
+ i = Factory.GetItem();
+ }
+ string name;
+
+ if (TextID.Text.Trim() != "" && long.TryParse(TextID.Text.Trim(), out long id))
+ {
+ i.Id = id;
+ }
+ else
+ {
+ MessageBox.Show("ID不能为空。");
+ return;
+ }
+
+ if (TextName.Text.Trim() != "")
+ {
+ i.Name = TextName.Text.Trim();
+ }
+ else
+ {
+ MessageBox.Show("名称不能为空。");
+ return;
+ }
+
+ if (TextCode.Text.Trim() != "")
+ {
+ name = TextCode.Text.Trim();
+ }
+ else
+ {
+ MessageBox.Show("物品存档标识不能为空。");
+ return;
+ }
+
+ if (CheckboxIsWeapon.Checked && ComboWeapon.Text.Trim() != "")
+ {
+ i.WeaponType = ItemSet.GetWeaponTypeFromName(ComboWeapon.Text.Trim());
+ }
+
+ if (CheckboxIsEquip.Checked && ComboEquip.Text.Trim() != "")
+ {
+ i.EquipSlotType = ItemSet.GetEquipSlotTypeFromName(ComboEquip.Text.Trim());
+ }
+
+ if (CheckboxIsPurchasable.Checked && TextPrice.Text.Trim() != "" && double.TryParse(TextPrice.Text.Trim(), out double price))
+ {
+ i.Price = price;
+ }
+
+ if (!CheckboxIsSellable.Checked && DateTime.Now < DateTimePickerSell.Value)
+ {
+ i.NextSellableTime = DateTimePickerSell.Value;
+ }
+
+ if (!CheckboxIsTradable.Checked && DateTime.Now < DateTimePickerTrade.Value)
+ {
+ i.NextTradableTime = DateTimePickerTrade.Value;
+ }
+
+ if (EditItem != null)
+ {
+ MessageBox.Show("保存成功!");
+ Dispose();
+ return;
+ }
+ else
+ {
+ if (ItemManager.Add(name, i))
+ {
+ ShowDetail d = new(null, null, ItemManager);
+ d.SetText(-1, i, i.ToString());
+ d.Text = "预览模式";
+ d.ShowDialog();
+ d.Dispose();
+ if (MessageBox.Show("添加成功!是否继续添加?", "提示", MessageBoxButtons.YesNo) == DialogResult.No)
+ {
+ Dispose();
+ return;
+ }
+ }
+ else
+ {
+ MessageBox.Show("添加失败!");
+ }
+ }
+
+ TextID.Text = "";
+ TextName.Text = "";
+ TextCode.Text = "";
+ ComboItemType.Text = "";
+ CheckboxIsWeapon.Checked = false;
+ ComboWeapon.Text = "";
+ ComboWeapon.Enabled = false;
+ CheckboxIsEquip.Checked = false;
+ ComboEquip.Text = "";
+ ComboEquip.Enabled = false;
+ CheckboxIsPurchasable.Checked = false;
+ TextPrice.Text = "";
+ TextPrice.Enabled = false;
+ CheckboxIsSellable.Checked = true;
+ CheckboxIsTradable.Checked = true;
+ DateTimePickerSell.Value = DateTime.Now;
+ DateTimePickerSell.Enabled = false;
+ DateTimePickerTrade.Value = DateTime.Now;
+ DateTimePickerTrade.Enabled = false;
+ }
+
+ private void CheckboxIsWeapon_CheckedChanged(object sender, EventArgs e)
+ {
+ ComboWeapon.Enabled = CheckboxIsWeapon.Checked;
+ }
+
+ private void CheckboxIsEquip_CheckedChanged(object sender, EventArgs e)
+ {
+ ComboEquip.Enabled = CheckboxIsEquip.Checked;
+ }
+
+ private void CheckboxIsPurchasable_CheckedChanged(object sender, EventArgs e)
+ {
+ TextPrice.Enabled = CheckboxIsPurchasable.Checked;
+ }
+
+ private void CheckboxIsSellable_CheckedChanged(object sender, EventArgs e)
+ {
+ DateTimePickerSell.Enabled = !CheckboxIsSellable.Checked;
+ }
+
+ private void CheckboxIsTradable_CheckedChanged(object sender, EventArgs e)
+ {
+ DateTimePickerTrade.Enabled = !CheckboxIsTradable.Checked;
}
}
}
diff --git a/Desktop/Solutions/EntityCreator/CreateSkill.resx b/Desktop/Solutions/EntityCreator/ItemCreator.resx
similarity index 100%
rename from Desktop/Solutions/EntityCreator/CreateSkill.resx
rename to Desktop/Solutions/EntityCreator/ItemCreator.resx
diff --git a/Desktop/Solutions/EntityCreator/ItemManager.cs b/Desktop/Solutions/EntityCreator/ItemManager.cs
new file mode 100644
index 0000000..3194699
--- /dev/null
+++ b/Desktop/Solutions/EntityCreator/ItemManager.cs
@@ -0,0 +1,43 @@
+using Milimoe.FunGame.Core.Api.Utility;
+using Milimoe.FunGame.Core.Entity;
+
+namespace Milimoe.FunGame.Testing.Desktop.Solutions
+{
+ public class ItemManager
+ {
+ public Dictionary LoadedItems { get; set; } = [];
+
+ public void Load()
+ {
+ EntityModuleConfig
- config = new("EntityEditor", "items");
+ config.LoadConfig();
+ LoadedItems = new(config);
+ }
+
+ public bool Add(string name, Item item)
+ {
+ return LoadedItems.TryAdd(name, item);
+ }
+
+ public bool Remove(string name)
+ {
+ return LoadedItems.Remove(name);
+ }
+
+ public void Save()
+ {
+ EntityModuleConfig
- config = new("EntityEditor", "items");
+ foreach (string key in LoadedItems.Keys)
+ {
+ config.Add(key, LoadedItems[key]);
+ }
+ config.SaveConfig();
+ }
+
+ public void OpenCreator(Item? item = null)
+ {
+ ItemCreator manager = new(this, item);
+ manager.ShowDialog();
+ }
+ }
+}
diff --git a/Desktop/Solutions/EntityCreator/ShowDetail.cs b/Desktop/Solutions/EntityCreator/ShowDetail.cs
index 99ec046..cbf7c42 100644
--- a/Desktop/Solutions/EntityCreator/ShowDetail.cs
+++ b/Desktop/Solutions/EntityCreator/ShowDetail.cs
@@ -4,18 +4,18 @@ namespace Milimoe.FunGame.Testing.Desktop.Solutions
{
public partial class ShowDetail : Form
{
- private CharacterCreator? CharacterCreator { get; }
- private SkillCreator? SkillCreator { get; }
- private ItemCreator? ItemCreator { get; }
+ private CharacterManager? CharacterManager { get; }
+ private SkillManager? SkillManager { get; }
+ private ItemManager? ItemManager { get; }
private int NowClick { get; set; } = -1;
private BaseEntity? BaseEntity { get; set; }
- public ShowDetail(CharacterCreator? characterCreator, SkillCreator? skillCreator, ItemCreator? itemCreator)
+ public ShowDetail(CharacterManager? characterManager, SkillManager? skillManager, ItemManager? itemManager)
{
InitializeComponent();
- CharacterCreator = characterCreator;
- SkillCreator = skillCreator;
- ItemCreator = itemCreator;
+ CharacterManager = characterManager;
+ SkillManager = skillManager;
+ ItemManager = itemManager;
Text = "详细信息查看";
}
@@ -62,32 +62,32 @@ namespace Milimoe.FunGame.Testing.Desktop.Solutions
{
if (NowClick == 0 && BaseEntity is Character c)
{
- CharacterCreator?.OpenCreator(c);
+ CharacterManager?.OpenCreator(c);
}
else if (NowClick == 1 && BaseEntity is Skill s)
{
- SkillCreator?.OpenCreator(s);
+ SkillManager?.OpenCreator(s);
}
else if (NowClick == 2 && BaseEntity is Item i)
{
- ItemCreator?.OpenCreator(i);
+ ItemManager?.OpenCreator(i);
}
}
private void 加物品_Click(object sender, EventArgs e)
{
- if (NowClick == 0 && ItemCreator != null && BaseEntity is Character c)
+ if (NowClick == 0 && ItemManager != null && BaseEntity is Character c)
{
- if (ItemCreator.LoadedItems.Count != 0)
+ if (ItemManager.LoadedItems.Count != 0)
{
ShowList l = new();
- l.AddListItem(ItemCreator.LoadedItems.OrderBy(kv => kv.Value.Id).Select(kv => EntityCreator.GetItemDisplayName(ItemCreator, kv.Key)).ToArray());
+ l.AddListItem(ItemManager.LoadedItems.OrderBy(kv => kv.Value.Id).Select(kv => EntityEditor.GetItemDisplayName(ItemManager, kv.Key)).ToArray());
l.ShowDialog();
string selected = l.SelectItem;
- Item? i = ItemCreator.LoadedItems.Where(kv => EntityCreator.GetItemDisplayName(ItemCreator, kv.Key) == selected).Select(kv => kv.Value).FirstOrDefault();
+ Item? i = ItemManager.LoadedItems.Where(kv => EntityEditor.GetItemDisplayName(ItemManager, kv.Key) == selected).Select(kv => kv.Value).FirstOrDefault();
if (c != null && i != null)
{
- Item? i2 = EntityCreator.从模组加载器中获取物品(i.Id, i.Name, i.ItemType);
+ Item? i2 = EntityEditor.从模组加载器中获取物品(i.Id, i.Name, i.ItemType);
if (i2 != null)
{
i.SetPropertyToItemModuleNew(i2);
@@ -106,18 +106,18 @@ namespace Milimoe.FunGame.Testing.Desktop.Solutions
private void 加技能_Click(object sender, EventArgs e)
{
- if (NowClick == 0 && SkillCreator != null && BaseEntity is Character c)
+ if (NowClick == 0 && SkillManager != null && BaseEntity is Character c)
{
- if (SkillCreator.LoadedSkills.Count != 0)
+ if (SkillManager.LoadedSkills.Count != 0)
{
ShowList l = new();
- l.AddListItem(SkillCreator.LoadedSkills.OrderBy(kv => kv.Value.Id).Where(kv => kv.Value.SkillType != Core.Library.Constant.SkillType.Item).Select(kv => EntityCreator.GetSkillDisplayName(SkillCreator, kv.Key)).ToArray());
+ l.AddListItem(SkillManager.LoadedSkills.OrderBy(kv => kv.Value.Id).Where(kv => kv.Value.SkillType != Core.Library.Constant.SkillType.Item).Select(kv => EntityEditor.GetSkillDisplayName(SkillManager, kv.Key)).ToArray());
l.ShowDialog();
string selected = l.SelectItem;
- Skill? s = SkillCreator.LoadedSkills.Where(kv => EntityCreator.GetSkillDisplayName(SkillCreator, kv.Key) == selected).Select(kv => kv.Value).FirstOrDefault();
+ Skill? s = SkillManager.LoadedSkills.Where(kv => EntityEditor.GetSkillDisplayName(SkillManager, kv.Key) == selected).Select(kv => kv.Value).FirstOrDefault();
if (c != null && s != null)
{
- Skill? s2 = EntityCreator.从模组加载器中获取技能(s.Id, s.Name, s.SkillType);
+ Skill? s2 = EntityEditor.从模组加载器中获取技能(s.Id, s.Name, s.SkillType);
if (s2 != null)
{
s = s2;
diff --git a/Desktop/Solutions/EntityCreator/CreateSkill.Designer.cs b/Desktop/Solutions/EntityCreator/SkillCreator.Designer.cs
similarity index 99%
rename from Desktop/Solutions/EntityCreator/CreateSkill.Designer.cs
rename to Desktop/Solutions/EntityCreator/SkillCreator.Designer.cs
index 7c67972..fd22e3a 100644
--- a/Desktop/Solutions/EntityCreator/CreateSkill.Designer.cs
+++ b/Desktop/Solutions/EntityCreator/SkillCreator.Designer.cs
@@ -1,6 +1,6 @@
namespace Milimoe.FunGame.Testing.Desktop.Solutions
{
- partial class CreateSkill
+ partial class SkillCreator
{
///
/// Required designer variable.
diff --git a/Desktop/Solutions/EntityCreator/SkillCreator.cs b/Desktop/Solutions/EntityCreator/SkillCreator.cs
index cc6f487..2b14f9c 100644
--- a/Desktop/Solutions/EntityCreator/SkillCreator.cs
+++ b/Desktop/Solutions/EntityCreator/SkillCreator.cs
@@ -1,43 +1,104 @@
using Milimoe.FunGame.Core.Api.Utility;
using Milimoe.FunGame.Core.Entity;
+using Milimoe.FunGame.Core.Library.Constant;
namespace Milimoe.FunGame.Testing.Desktop.Solutions
{
- public class SkillCreator
+ public partial class SkillCreator : Form
{
- public Dictionary LoadedSkills { get; set; } = [];
+ private SkillManager SkillManager { get; }
+ private Skill? EditSkill { get; }
- public void Load()
+ public SkillCreator(SkillManager manager, Skill? skill = null)
{
- EntityModuleConfig config = new("EntityCreator", "skill.creator");
- config.LoadConfig();
- LoadedSkills = new(config);
- }
-
- public bool Add(string name, Skill skill)
- {
- return LoadedSkills.TryAdd(name, skill);
- }
-
- public bool Remove(string name)
- {
- return LoadedSkills.Remove(name);
- }
-
- public void Save()
- {
- EntityModuleConfig config = new("EntityCreator", "skill.creator");
- foreach (string key in LoadedSkills.Keys)
+ InitializeComponent();
+ SkillManager = manager;
+ if (skill != null)
{
- config.Add(key, LoadedSkills[key]);
+ Text = "技能编辑器";
+ BtnCreate.Text = "编辑";
+ EditSkill = skill;
+ TextID.Text = skill.Id.ToString();
+ TextCode.Text = manager.LoadedSkills.Where(kv => kv.Value.Equals(skill)).Select(kv => kv.Key).FirstOrDefault() ?? "";
+ TextName.Text = skill.Name;
+ ComboSkillType.Text = SkillSet.GetSkillTypeName(skill.SkillType);
}
- config.SaveConfig();
}
- public void OpenCreator(Skill? skill = null)
+ private void BtnCreate_Click(object sender, EventArgs e)
{
- CreateSkill creator = new(this, skill);
- creator.ShowDialog();
+ Skill s;
+ if (EditSkill != null)
+ {
+ s = EditSkill;
+ }
+ else
+ {
+ s = Factory.GetSkill();
+ }
+ string name;
+
+ if (TextID.Text.Trim() != "" && long.TryParse(TextID.Text.Trim(), out long id))
+ {
+ s.Id = id;
+ }
+ else
+ {
+ MessageBox.Show("ID不能为空。");
+ return;
+ }
+
+ if (TextName.Text.Trim() != "")
+ {
+ s.Name = TextName.Text.Trim();
+ }
+ else
+ {
+ MessageBox.Show("名称不能为空。");
+ return;
+ }
+
+ if (TextCode.Text.Trim() != "")
+ {
+ name = TextCode.Text.Trim();
+ }
+ else
+ {
+ MessageBox.Show("技能存档标识不能为空。");
+ return;
+ }
+
+ if (EditSkill != null)
+ {
+ MessageBox.Show("保存成功!");
+ Dispose();
+ return;
+ }
+ else
+ {
+ if (SkillManager.Add(name, s))
+ {
+ ShowDetail d = new(null, SkillManager, null);
+ d.SetText(-1, s, s.ToString());
+ d.Text = "预览模式";
+ d.ShowDialog();
+ d.Dispose();
+ if (MessageBox.Show("添加成功!是否继续添加?", "提示", MessageBoxButtons.YesNo) == DialogResult.No)
+ {
+ Dispose();
+ return;
+ }
+ }
+ else
+ {
+ MessageBox.Show("添加失败!");
+ }
+ }
+
+ TextID.Text = "";
+ TextCode.Text = "";
+ TextName.Text = "";
+ ComboSkillType.Text = "";
}
}
}
diff --git a/Desktop/Solutions/EntityCreator/EntityCreator.resx b/Desktop/Solutions/EntityCreator/SkillCreator.resx
similarity index 100%
rename from Desktop/Solutions/EntityCreator/EntityCreator.resx
rename to Desktop/Solutions/EntityCreator/SkillCreator.resx
diff --git a/Desktop/Solutions/EntityCreator/SkillManager.cs b/Desktop/Solutions/EntityCreator/SkillManager.cs
new file mode 100644
index 0000000..3438f4f
--- /dev/null
+++ b/Desktop/Solutions/EntityCreator/SkillManager.cs
@@ -0,0 +1,43 @@
+using Milimoe.FunGame.Core.Api.Utility;
+using Milimoe.FunGame.Core.Entity;
+
+namespace Milimoe.FunGame.Testing.Desktop.Solutions
+{
+ public class SkillManager
+ {
+ public Dictionary LoadedSkills { get; set; } = [];
+
+ public void Load()
+ {
+ EntityModuleConfig config = new("EntityEditor", "skills");
+ config.LoadConfig();
+ LoadedSkills = new(config);
+ }
+
+ public bool Add(string name, Skill skill)
+ {
+ return LoadedSkills.TryAdd(name, skill);
+ }
+
+ public bool Remove(string name)
+ {
+ return LoadedSkills.Remove(name);
+ }
+
+ public void Save()
+ {
+ EntityModuleConfig config = new("EntityEditor", "skills");
+ foreach (string key in LoadedSkills.Keys)
+ {
+ config.Add(key, LoadedSkills[key]);
+ }
+ config.SaveConfig();
+ }
+
+ public void OpenCreator(Skill? skill = null)
+ {
+ SkillCreator manager = new(this, skill);
+ manager.ShowDialog();
+ }
+ }
+}