LosaDev source snapshot 2019
This commit is contained in:
commit
c198676e97
20588 files changed
+8812878
No files matched your search
@@ -0,0 +1,481 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.IO;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Windows.Forms;
|
||||
using S16.Drawing;
|
||||
using XMLLoader;
|
||||
using System.Xml;
|
||||
using INILoader;
|
||||
|
||||
namespace ItemDictionary
|
||||
{
|
||||
public partial class ItemDictionary : Form
|
||||
{
|
||||
String main_path;
|
||||
String cur_pack;
|
||||
List<ItemData> item_data_list;
|
||||
List<PackData> icon_pack_list;
|
||||
List<ItemCustomData> item_custom_list;
|
||||
|
||||
private xmlLoader m_xmlLoader;
|
||||
|
||||
public ItemDictionary()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private void Form1_Load(object sender, EventArgs e)
|
||||
{
|
||||
this.SetStyle( ControlStyles.OptimizedDoubleBuffer, true );
|
||||
|
||||
icon_pack_list = new List<PackData>();
|
||||
|
||||
INILoader.INILoader loader = new INILoader.INILoader("./ItemDictionary.ini", false);
|
||||
loader.SetTitle("path");
|
||||
main_path = loader.LoadString( "path", "" );
|
||||
|
||||
m_xmlLoader = new xmlLoader(String.Format("{0}/XML/uiimageset.xml", main_path ) );
|
||||
|
||||
LoadData();
|
||||
|
||||
imagetreeView.SuspendLayout();
|
||||
XmlElement element = m_xmlLoader.GetElement();
|
||||
foreach (XmlNode ImageSetNode in element.ChildNodes)
|
||||
{
|
||||
if (ImageSetNode.Name == "#comment")
|
||||
continue;
|
||||
|
||||
ImageTreeNode node = new ImageTreeNode( "Imageset",
|
||||
"",
|
||||
ImageSetNode.Attributes["Name"].Value,
|
||||
ImageSetNode.Attributes["File"].Value,
|
||||
0, 0, 0, 0, 0, 0 );
|
||||
imagetreeView.Nodes.Add( node );
|
||||
|
||||
String set_name = ImageSetNode.Attributes["Name"].Value.ToString();
|
||||
|
||||
foreach( XmlNode ImageNode in ImageSetNode.ChildNodes )
|
||||
{
|
||||
if (ImageNode.Name == "#comment")
|
||||
continue;
|
||||
int offsetX = 0;
|
||||
int offsetY = 0;
|
||||
foreach ( XmlAttribute att in ImageNode.Attributes )
|
||||
{
|
||||
if( att.Name == "OffsetX" )
|
||||
offsetX = Int32.Parse( att.Value );
|
||||
else if( att.Name == "OffsetY" )
|
||||
offsetY = Int32.Parse( att.Value );
|
||||
}
|
||||
|
||||
String pack_name = String.Format( "{0}#{1}", set_name, ImageNode.Attributes["Name"].Value );
|
||||
ImageTreeNode child_node = new ImageTreeNode( "Image",
|
||||
pack_name,
|
||||
ImageNode.Attributes["Name"].Value,
|
||||
ImageSetNode.Attributes["File"].Value,
|
||||
Int32.Parse( ImageNode.Attributes["X"].Value ),
|
||||
Int32.Parse( ImageNode.Attributes["Y"].Value ),
|
||||
Int32.Parse( ImageNode.Attributes["Width"].Value ),
|
||||
Int32.Parse( ImageNode.Attributes["Height"].Value ),
|
||||
offsetX,
|
||||
offsetY );
|
||||
|
||||
node.Nodes.Add( child_node );
|
||||
|
||||
PackData data;
|
||||
data.file = ImageSetNode.Attributes["File"].Value.ToString();
|
||||
data.pack = pack_name;
|
||||
data.x = Int32.Parse( ImageNode.Attributes["X"].Value );
|
||||
data.y = Int32.Parse( ImageNode.Attributes["Y"].Value );
|
||||
data.width = Int32.Parse( ImageNode.Attributes["Width"].Value );
|
||||
data.height = Int32.Parse( ImageNode.Attributes["Height"].Value );
|
||||
data.offset_x = offsetX;
|
||||
data.offset_y = offsetY;
|
||||
icon_pack_list.Add(data);
|
||||
}
|
||||
}
|
||||
|
||||
imagetreeView.Sort();
|
||||
|
||||
imagetreeView.ResumeLayout(false);
|
||||
}
|
||||
|
||||
private void RefreshTextureBox( String _path )
|
||||
{
|
||||
if( Path.GetExtension(_path) != ".dds" )
|
||||
return;
|
||||
|
||||
String path = String.Format( "{0}/resource/texture/{1}", main_path, _path );
|
||||
if (File.Exists(path) == false)
|
||||
{
|
||||
TextureBox.Image = null;
|
||||
return;
|
||||
}
|
||||
|
||||
TextureBox.Image = null;
|
||||
|
||||
DDSImage image = new DDSImage(File.ReadAllBytes(path));
|
||||
if( image.BitmapImage.Width > 512 || image.BitmapImage.Height > 512 )
|
||||
{
|
||||
TextureBox.SizeMode = PictureBoxSizeMode.Zoom;
|
||||
TextureBox.Image = image.BitmapImage;
|
||||
}
|
||||
else
|
||||
{
|
||||
TextureBox.SizeMode = PictureBoxSizeMode.Normal;
|
||||
TextureBox.Image = image.BitmapImage;
|
||||
}
|
||||
}
|
||||
|
||||
private void TextureBox_Click(object sender, EventArgs e)
|
||||
{
|
||||
if( String.IsNullOrEmpty(cur_pack) )
|
||||
return;
|
||||
|
||||
MouseEventArgs me = e as MouseEventArgs;
|
||||
Point pos = me.Location;
|
||||
foreach ( PackData data in icon_pack_list )
|
||||
{
|
||||
|
||||
if( data.file != cur_pack )
|
||||
continue;
|
||||
|
||||
Rectangle rec = new Rectangle( data.x, data.y, data.width, data.height );
|
||||
if( rec.Contains(pos) )
|
||||
{
|
||||
RefreshTextureBox(cur_pack);
|
||||
|
||||
Graphics g = Graphics.FromImage(TextureBox.Image);
|
||||
|
||||
Pen pen = new Pen(Color.Red, 2);
|
||||
g.DrawRectangle(pen, data.x, data.y, data.width, data.height);
|
||||
|
||||
//MessageBox.Show( data.pack );
|
||||
|
||||
String[] token = data.pack.Split('#');
|
||||
FocusTreeViewNode( token[0], token[1] );
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void ImageTree_AfterSelect(object sender, TreeViewEventArgs e)
|
||||
{
|
||||
TreeView tree = (TreeView)sender;
|
||||
|
||||
if (tree.SelectedNode.Parent == null)
|
||||
{
|
||||
ImageTreeNode node = tree.SelectedNode as ImageTreeNode;
|
||||
RefreshTextureBox( node.file );
|
||||
SetDesc("");
|
||||
cur_pack = node.file;
|
||||
}
|
||||
else
|
||||
{
|
||||
ImageTreeNode parent_node = tree.SelectedNode.Parent as ImageTreeNode;
|
||||
ImageTreeNode node = tree.SelectedNode as ImageTreeNode;
|
||||
SetDesc(node.pack_name);
|
||||
|
||||
PackData data = icon_pack_list.Find( p => p.pack == node.pack_name );
|
||||
|
||||
RefreshTextureBox( data.file );
|
||||
Graphics g = Graphics.FromImage(TextureBox.Image);
|
||||
|
||||
Pen pen = new Pen(Color.Red, 2);
|
||||
g.DrawRectangle(pen, data.x, data.y, data.width, data.height);
|
||||
|
||||
cur_pack = parent_node.file;
|
||||
}
|
||||
}
|
||||
|
||||
private void LoadData()
|
||||
{
|
||||
if( item_data_list == null )
|
||||
item_data_list = new List<ItemData>();
|
||||
else
|
||||
item_data_list.Clear();
|
||||
|
||||
LoadItemData();
|
||||
LoadExtraItemData();
|
||||
LoadSkillData();
|
||||
LoadMedalData();
|
||||
LoadQuestData();
|
||||
LoadEtcItemData();
|
||||
LoadCostumeData();
|
||||
LoadAccessoryData();
|
||||
LoadDecoManData();
|
||||
LoadDecoWomanData();
|
||||
LoadCustomDesc();
|
||||
|
||||
/*StreamWriter sw = new StreamWriter("test.txt");
|
||||
foreach( ItemData data in item_data_list )
|
||||
{
|
||||
String line = String.Format( "{0},{1},{2},{3}", data.pack_name, data.name, data.desc, "" );
|
||||
sw.WriteLine(line);
|
||||
}
|
||||
sw.Close();*/
|
||||
|
||||
item_grideView.SuspendLayout();
|
||||
item_grideView.RowHeadersVisible = false;
|
||||
item_grideView.Rows.Clear();
|
||||
item_grideView.Columns.Add("pack", "팩");
|
||||
item_grideView.Columns.Add("type", "타입");
|
||||
item_grideView.Columns.Add("name", "이름");
|
||||
item_grideView.Columns.Add("desc", "설명");
|
||||
item_grideView.ResumeLayout(false);
|
||||
}
|
||||
|
||||
private void SetGridView( List<ItemData> list )
|
||||
{
|
||||
item_grideView.SuspendLayout();
|
||||
item_grideView.Rows.Clear();
|
||||
|
||||
foreach (ItemData data in list)
|
||||
{
|
||||
DataGridViewRow r = item_grideView.Rows[item_grideView.Rows.Add(new DataGridViewRow())];
|
||||
r.Cells["pack"].Value = data.pack_name;
|
||||
r.Cells["type"].Value = data.type;
|
||||
r.Cells["name"].Value = data.name;
|
||||
r.Cells["desc"].Value = data.desc;
|
||||
}
|
||||
|
||||
item_grideView.AutoResizeColumns();
|
||||
item_grideView.ResumeLayout(false);
|
||||
}
|
||||
|
||||
private void FocusTreeViewNode( String value1, String value2 )
|
||||
{
|
||||
if( String.IsNullOrEmpty(value2) )
|
||||
{
|
||||
TreeNode[] node = imagetreeView.Nodes.Find(value1, false);
|
||||
if (node.Length > 0)
|
||||
{
|
||||
imagetreeView.SelectedNode = node[0];
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
TreeNode[] parent_node = imagetreeView.Nodes.Find(value1, false);
|
||||
if (parent_node.Length > 0)
|
||||
{
|
||||
TreeNode[] node = parent_node[0].Nodes.Find(value2, false);
|
||||
if (node.Length > 0)
|
||||
{
|
||||
imagetreeView.SelectedNode = node[0];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void item_CellMouseClick(object sender, DataGridViewCellEventArgs e)
|
||||
{
|
||||
if( e.RowIndex < 0 )
|
||||
return;
|
||||
|
||||
DataGridViewCell cell = (DataGridViewCell)item_grideView.Rows[e.RowIndex].Cells["pack"];
|
||||
PackData data = icon_pack_list.Find( p => p.pack == cell.Value.ToString() );
|
||||
|
||||
if( String.IsNullOrEmpty(data.pack) )
|
||||
{
|
||||
MessageBox.Show("!?");
|
||||
return;
|
||||
}
|
||||
|
||||
RefreshTextureBox( data.file );
|
||||
if( !String.IsNullOrEmpty(data.pack) )
|
||||
{
|
||||
Graphics g = Graphics.FromImage(TextureBox.Image);
|
||||
|
||||
Pen pen = new Pen(Color.Red, 2);
|
||||
g.DrawRectangle(pen, data.x, data.y, data.width, data.height);
|
||||
|
||||
SetDesc(data.pack);
|
||||
|
||||
String[] token = data.pack.Split('#');
|
||||
if( token.Length == 1 )
|
||||
{
|
||||
FocusTreeViewNode( token[0], "" );
|
||||
|
||||
}
|
||||
else if( token.Length == 2 )
|
||||
{
|
||||
FocusTreeViewNode( token[0], token[1] );
|
||||
}
|
||||
|
||||
cur_pack = data.file;
|
||||
}
|
||||
}
|
||||
|
||||
private void search_TextBox_KeyDown(object sender, KeyEventArgs e)
|
||||
{
|
||||
if( e.KeyCode != Keys.Return )
|
||||
return;
|
||||
|
||||
if (String.IsNullOrEmpty(search_TextBox.Text))
|
||||
return;
|
||||
|
||||
List<ItemData> list = new List<ItemData>();
|
||||
|
||||
foreach (ItemData data in item_data_list)
|
||||
{
|
||||
if (data.name.Contains(search_TextBox.Text))
|
||||
{
|
||||
list.Add(data);
|
||||
}
|
||||
else if (data.desc.Contains(search_TextBox.Text))
|
||||
{
|
||||
list.Add(data);
|
||||
}
|
||||
else if (data.type.Contains(search_TextBox.Text))
|
||||
{
|
||||
list.Add(data);
|
||||
}
|
||||
else if( Regex.IsMatch(data.pack_name, search_TextBox.Text, RegexOptions.IgnoreCase) )
|
||||
{
|
||||
list.Add(data);
|
||||
}
|
||||
}
|
||||
|
||||
String search_pack_name = String.Empty;
|
||||
foreach (ItemCustomData data in item_custom_list)
|
||||
{
|
||||
if (data.desc.Contains(search_TextBox.Text))
|
||||
{
|
||||
search_pack_name = data.pack_name;
|
||||
}
|
||||
|
||||
if (!String.IsNullOrEmpty(search_pack_name))
|
||||
{
|
||||
ItemData item_data = list.Find(p => p.pack_name == search_pack_name);
|
||||
if (String.IsNullOrEmpty(item_data.pack_name))
|
||||
{
|
||||
ItemData temp = new ItemData();
|
||||
temp.pack_name = search_pack_name;
|
||||
list.Add(temp);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
foreach (PackData data in icon_pack_list)
|
||||
{
|
||||
|
||||
if (Regex.IsMatch(data.pack, search_TextBox.Text, RegexOptions.IgnoreCase))
|
||||
{
|
||||
ItemData item_data = list.Find(p => p.pack_name == data.pack);
|
||||
if (String.IsNullOrEmpty(item_data.pack_name))
|
||||
{
|
||||
ItemData temp = new ItemData();
|
||||
temp.pack_name = data.pack;
|
||||
list.Add(temp);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (list.Count > 0)
|
||||
{
|
||||
SetGridView(list);
|
||||
}
|
||||
else
|
||||
{
|
||||
MessageBox.Show( "검색결과가 없습니다.", "검색실패", MessageBoxButtons.OK, MessageBoxIcon.Information );
|
||||
}
|
||||
}
|
||||
|
||||
private void refresh_custom_desc(object sender, KeyEventArgs e)
|
||||
{
|
||||
if (e.KeyCode != Keys.Return)
|
||||
return;
|
||||
|
||||
if (String.IsNullOrEmpty(pack_textBox.Text))
|
||||
return;
|
||||
|
||||
bool is_refresh = false;
|
||||
for( int i=0; i<item_custom_list.Count; ++i )
|
||||
{
|
||||
if( item_custom_list[i].pack_name == pack_textBox.Text )
|
||||
{
|
||||
ItemCustomData data;
|
||||
data.pack_name = pack_textBox.Text;
|
||||
data.desc = custom_desc_textBox.Text;
|
||||
item_custom_list[i] = data;
|
||||
is_refresh = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if( !is_refresh && !String.IsNullOrEmpty(custom_desc_textBox.Text) )
|
||||
{
|
||||
ItemCustomData data;
|
||||
data.pack_name = pack_textBox.Text;
|
||||
data.desc = custom_desc_textBox.Text;
|
||||
item_custom_list.Add(data);
|
||||
}
|
||||
|
||||
SaveCustomDesc();
|
||||
}
|
||||
|
||||
private void Form1_Shown(object sender, EventArgs e)
|
||||
{
|
||||
search_TextBox.Focus();
|
||||
}
|
||||
|
||||
private void SetDesc( String pack_name )
|
||||
{
|
||||
PackData data = icon_pack_list.Find( p => p.pack == pack_name );
|
||||
|
||||
pack_textBox.Clear();
|
||||
desc_textBox.Clear();
|
||||
|
||||
if( !String.IsNullOrEmpty(data.pack) )
|
||||
{
|
||||
pack_textBox.Text = data.pack;
|
||||
|
||||
String info = String.Format("[이미지정보]{0}",Environment.NewLine);
|
||||
info += String.Format("위치 : {0}, {1}{2}", data.x, data.y, Environment.NewLine);
|
||||
info += String.Format("크기 : {0}*{1}{2}", data.width, data.height, Environment.NewLine);
|
||||
info += String.Format("옵셋 : {0}, {1}", data.offset_x, data.offset_y);
|
||||
desc_textBox.Text = info;
|
||||
|
||||
int add_count = 0;
|
||||
List<ItemData> item_datas = item_data_list.FindAll( p => p.pack_name == pack_name );
|
||||
foreach( ItemData item_data in item_datas )
|
||||
{
|
||||
String desc = String.Format( "{0} / {1} 아이콘{2}{3}{4}", item_data.name, item_data.type, Environment.NewLine, Environment.NewLine, item_data.desc );
|
||||
desc_textBox.Text += Environment.NewLine;
|
||||
desc_textBox.Text += Environment.NewLine;
|
||||
desc_textBox.Text += "------------------------------------------------";
|
||||
desc_textBox.Text += Environment.NewLine;
|
||||
desc_textBox.Text += desc;
|
||||
add_count++;
|
||||
if( add_count >= 10 )
|
||||
{
|
||||
desc_textBox.Text += Environment.NewLine;
|
||||
desc_textBox.Text += Environment.NewLine;
|
||||
desc_textBox.Text += "------------------------------------------------";
|
||||
desc_textBox.Text += Environment.NewLine;
|
||||
desc_textBox.Text += String.Format( "사용하는 위치가 너무 많아 검색을 종료합니다." );
|
||||
desc_textBox.Text += Environment.NewLine;
|
||||
desc_textBox.Text += String.Format( "총 사용량 {0}건.", item_datas.Count );
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ItemCustomData custom_data = item_custom_list.Find( p => p.pack_name == pack_name );
|
||||
if( !String.IsNullOrEmpty(custom_data.pack_name) )
|
||||
{
|
||||
custom_desc_textBox.Text = custom_data.desc;
|
||||
}
|
||||
else
|
||||
{
|
||||
custom_desc_textBox.Text = "";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user