mirror of
https://github.com/milimoe/FunGame-Testing.git
synced 2025-04-22 12:19:34 +08:00
200 lines
7.1 KiB
C#
200 lines
7.1 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 ItemCreator : Form
|
|
{
|
|
private ItemManager ItemManager { get; }
|
|
private Item? EditItem { get; }
|
|
|
|
public ItemCreator(ItemManager manager, Item? item = null)
|
|
{
|
|
InitializeComponent();
|
|
ItemManager = manager;
|
|
if (item != null)
|
|
{
|
|
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;
|
|
}
|
|
}
|
|
|
|
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 (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;
|
|
}
|
|
}
|
|
}
|