Files
2026-11-07 13:30:45 +07:00

532 lines
16 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using INILoader;
namespace ItemDictionary
{
public partial class ItemDictionary : Form
{
private void LoadItemData()
{
String item_path = String.Format("{0}/config/sp2_item.ini", main_path);
INILoader.INILoader item_file_loader = new INILoader.INILoader(item_path, false);
item_file_loader.SetTitle("common_info");
int count = item_file_loader.LoadInt("item_group_cnt", 0);
for (int i = 0; i < count; ++i)
{
String group_key = String.Format("item_group{0}", i + 1);
String temp = item_file_loader.LoadString(group_key, "");
String path = String.Format("{0}\\config\\{1}", main_path, temp);
if (File.Exists(path) == false)
continue;
INILoader.INILoader item_loader = new INILoader.INILoader(path, false);
item_loader.SetTitle("common");
int item_count = item_loader.LoadInt("item_cnt", 0);
if (item_count == 0)
continue;
for (int j = 0; j < item_count; ++j)
{
String title = String.Format("item{0}", j + 1);
item_loader.SetTitle(title);
ItemData data = new ItemData();
int code = item_loader.LoadInt("code", 0);
int type = code/100000;
switch( type )
{
case 0:
data.desc = "일반 무기";
break;
case 1:
data.desc = "일반 갑옷";
break;
case 2:
data.desc = "일반 투구";
break;
case 3:
data.desc = "일반 망토";
break;
default:
data.desc = "오브젝트";
break;
}
data.type = "장비";
data.name = item_loader.LoadString("name", "");
data.pack_name = item_loader.LoadString("item_large_icon0", "");
item_data_list.Add(data);
}
}
}
private void LoadExtraItemData()
{
String item_path = String.Format("{0}/config/sp2_extraitem.ini", main_path);
INILoader.INILoader item_file_loader = new INILoader.INILoader(item_path, false);
item_file_loader.SetTitle("common_info");
int count = item_file_loader.LoadInt("item_group_cnt", 0);
for (int i = 0; i < count; ++i)
{
String group_key = String.Format("item_group{0}", i + 1);
String temp = item_file_loader.LoadString(group_key, "");
String path = String.Format("{0}\\config\\{1}", main_path, temp);
if (File.Exists(path) == false)
continue;
INILoader.INILoader item_loader = new INILoader.INILoader(path, false);
item_loader.SetTitle("common");
int item_count = item_loader.LoadInt("item_cnt", 0);
if (item_count == 0)
continue;
for (int j = 0; j < item_count; ++j)
{
String title = String.Format("item{0}", j + 1);
item_loader.SetTitle(title);
ItemData data = new ItemData();
int code = item_loader.LoadInt("code", 0);
int type = code / 100000;
switch (type)
{
case 0:
data.desc = "고급 무기";
break;
case 1:
data.desc = "고급 갑옷";
break;
case 2:
data.desc = "고급 투구";
break;
case 3:
data.desc = "고급 망토";
break;
default:
data.desc = "오브젝트";
break;
}
data.type = "고급장비";
data.name = item_loader.LoadString("name", "");
data.pack_name = item_loader.LoadString("item_large_icon0", "");
data.item_code = code;
item_data_list.Add(data);
}
}
}
private void LoadSkillData()
{
String skill_path = String.Format("{0}/config/sp2_skill.ini", main_path);
INILoader.INILoader skill_file_loader = new INILoader.INILoader(skill_path, false);
skill_file_loader.SetTitle( "common_info" );
int count = skill_file_loader.LoadInt( "skill_group_cnt", 0 );
for( int i=0; i<count; ++i )
{
String group_key = String.Format( "skill_group{0}", i+1 );
String temp = skill_file_loader.LoadString( group_key, "" );
String path = String.Format("{0}\\config\\{1}", main_path, temp );
if( File.Exists( path ) == false )
continue;
INILoader.INILoader skill_loader = new INILoader.INILoader(path, false);
skill_loader.SetTitle( "common" );
int skill_count = skill_loader.LoadInt( "skill_cnt", 0 );
if( skill_count == 0 )
continue;
for( int j=0; j<skill_count; ++j )
{
String title = String.Format( "skill{0}", j+1 );
skill_loader.SetTitle( title );
ItemData data = new ItemData();
data.type = "스킬";
String name = skill_loader.LoadString( "desc_full_name", "" );
if( String.IsNullOrEmpty(name) )
data.name = skill_loader.LoadString( "desc_name", "" );
else
data.name = name;
data.desc = skill_loader.LoadString( "desc", "" );
data.name += " (";
data.name += skill_loader.LoadString( "name", "" );
data.name += ")";
data.pack_name = skill_loader.LoadString( "icon", "" );
item_data_list.Add(data);
}
}
}
private void LoadMedalData()
{
String medal_path = String.Format("{0}/config/sp2_medalitem_info.ini", main_path);
String medal_manual_path = String.Format("{0}/config/sp2_medal_inven_manual.ini", main_path);
INILoader.INILoader medal_loader = new INILoader.INILoader(medal_path, false);
INILoader.INILoader medal_manual_loader = new INILoader.INILoader(medal_manual_path, false);
medal_loader.SetTitle("item_info_common");
int cnt = medal_loader.LoadInt("max_item_info", 0);
for (int i = 0; i < cnt; ++i)
{
medal_loader.SetTitle(String.Format("item_info_{0}", i + 1));
ItemData data = new ItemData();
data.pack_name = medal_loader.LoadString("icon", "");
data.name = medal_loader.LoadString("name", "");
if (String.IsNullOrEmpty(data.name))
{
continue;
}
String manual = medal_loader.LoadString("manual", "");
StringBuilder sb = new StringBuilder();
medal_manual_loader.SetTitle(String.Format("Manual{0}", manual));
for (int j = 0; j < 30; ++j)
{
String desc = medal_manual_loader.LoadString(String.Format("{0}Text1", j + 1), "");
if (String.IsNullOrEmpty(desc))
{
data.desc = sb.ToString();
break;
}
if (j != 0)
sb.Append(Environment.NewLine);
sb.Append(desc);
}
data.type = "메달";
item_data_list.Add(data);
}
}
private void LoadQuestData()
{
String path = String.Format("{0}/config/sp2_quest_info.ini", main_path);
INILoader.INILoader quest_file_loader = new INILoader.INILoader(path, false);
quest_file_loader.SetTitle( "common" );
int count = quest_file_loader.LoadInt( "max_quest", 0 );
for( int i=0; i<count; ++i )
{
quest_file_loader.SetTitle(String.Format("quest{0}", i + 1));
int quest_cnt = quest_file_loader.LoadInt("max_sub_quest", 0);
for( int j=0; j<quest_cnt; ++j )
{
ItemData data = new ItemData();
String icon_name = String.Format( "sub{0}_icon", j+1 );
String name = String.Format( "sub{0}_title", j+1 );
String desc = String.Format( "sub{0}_progress", j+1 );
data.pack_name = quest_file_loader.LoadString(icon_name, "");
data.name = quest_file_loader.LoadString(name, "");
data.desc = quest_file_loader.LoadString(desc, "");
data.type = "퀘스트";
item_data_list.Add(data);
}
}
}
private void LoadEtcItemData()
{
String etcitem_manual_path = String.Format("{0}/config/sp2_etc_inven_manual.ini", main_path);
String path = String.Format("{0}/config/sp2_etcitem_info.ini", main_path);
INILoader.INILoader loader = new INILoader.INILoader(path, false);
INILoader.INILoader etcitem_manual_loader = new INILoader.INILoader(etcitem_manual_path, false);
loader.SetTitle("common");
int count = loader.LoadInt("max", 0);
for (int i = 0; i < count; ++i)
{
String title = String.Format("etcitem{0}", i+1 );
loader.SetTitle(title);
ItemData data = new ItemData();
data.pack_name = loader.LoadString("icon_name", "");
data.name = loader.LoadString("name", "");
data.type = "특별아이템";
int manual = loader.LoadInt("inventory_manual", 0);
StringBuilder sb = new StringBuilder();
etcitem_manual_loader.SetTitle(String.Format("Manual{0}", manual));
for (int j = 0; j < 30; ++j)
{
String desc = etcitem_manual_loader.LoadString(String.Format("{0}Text1", j + 1), "");
if (String.IsNullOrEmpty(desc))
{
data.desc = sb.ToString();
break;
}
if (j != 0)
sb.Append(Environment.NewLine);
sb.Append(desc);
}
item_data_list.Add(data);
}
}
private void LoadCostumeData()
{
String path = String.Format("{0}/config/sp2_costume.ini", main_path);
INILoader.INILoader loader = new INILoader.INILoader(path, false);
loader.SetTitle("common_info");
int count = loader.LoadInt("costume_group_cnt", 0);
for (int i = 0; i < count; ++i)
{
String group_key = String.Format("costume_group{0}", i + 1);
String temp = loader.LoadString(group_key, "");
String costume_path = String.Format("{0}\\config\\{1}", main_path, temp);
if (File.Exists(costume_path) == false)
continue;
INILoader.INILoader costume_loader = new INILoader.INILoader(costume_path, false);
costume_loader.SetTitle( "common_info" );
int costume_cnt = costume_loader.LoadInt("costume_cnt", 0);
for( int j=0; j<costume_cnt; ++j )
{
String title = String.Format( "costume{0}", j+1 );
costume_loader.SetTitle( title );
ItemData data = new ItemData();
data.pack_name = costume_loader.LoadString("icon_name", "");
if( String.IsNullOrEmpty(data.pack_name) )
{
int code = costume_loader.LoadInt( "costum_code", 0 );
if( code > 0 )
{
ItemData item_data = item_data_list.Find( p => p.item_code == code );
if( !String.IsNullOrEmpty(item_data.pack_name) )
data.pack_name = item_data.pack_name;
}
}
data.name = costume_loader.LoadString("name", "");
data.desc = "";
data.type = "코스튬";
item_data_list.Add(data);
}
}
}
private void LoadAccessoryData()
{
String path = String.Format("{0}/config/sp2_accessory.ini", main_path);
INILoader.INILoader loader = new INILoader.INILoader(path, false);
loader.SetTitle("common_info");
int count = loader.LoadInt("item_group_cnt", 0);
for (int i = 0; i < count; ++i)
{
String group_key = String.Format("item_group{0}", i + 1);
String temp = loader.LoadString(group_key, "");
String accessory_path = String.Format("{0}\\config\\{1}", main_path, temp);
if (File.Exists(accessory_path) == false)
continue;
INILoader.INILoader item_loader = new INILoader.INILoader(accessory_path, false);
item_loader.SetTitle("common");
int item_cnt = item_loader.LoadInt("item_cnt", 0);
for (int j = 0; j < item_cnt; ++j)
{
String title = String.Format("item{0}", j + 1);
item_loader.SetTitle(title);
ItemData data = new ItemData();
data.pack_name = item_loader.LoadString("item_large_icon0", "");
data.name = item_loader.LoadString("name", "");
data.desc = "";
int desc_cnt = item_loader.LoadInt( "max_tooltip_text_size", 0 );
for( int k=0; k<desc_cnt; ++k )
{
if( String.IsNullOrEmpty(data.desc) )
{
String key = String.Format("tooltip_text{0}", k + 1);
data.desc = item_loader.LoadString(key, "");
}
else
{
String key = String.Format("tooltip_text{0}", k + 1);
data.desc += Environment.NewLine + item_loader.LoadString(key, "");
}
}
data.type = "악세사리";
item_data_list.Add(data);
}
}
}
private void LoadDecoManData()
{
String path = String.Format("{0}/config/sp2_deco_man.ini", main_path);
String deco_manual_path = String.Format("{0}/config/sp2_deco_manual.ini", main_path);
INILoader.INILoader loader = new INILoader.INILoader(path, false);
INILoader.INILoader deco_manual_loader = new INILoader.INILoader(deco_manual_path, false);
loader.SetTitle("Info");
int count = loader.LoadInt("max_Deco", 0);
for (int i = 0; i < count; ++i)
{
String title = String.Format("Deco{0}", i + 1);
loader.SetTitle(title);
int deco_cnt = loader.LoadInt( "Max", 0 );
for( int j=0; j<deco_cnt; ++j )
{
ItemData data = new ItemData();
String item_name = String.Format( "Name_{0}", j+1 );
String icon_name = String.Format( "Icon_{0}", j+1 );
String manual_name = String.Format( "manual_{0}", j+1 );
data.pack_name = loader.LoadString(icon_name, "");
data.name = loader.LoadString(item_name, "");
data.type = "남성치장";
int manual = loader.LoadInt( manual_name, 0 );
StringBuilder sb = new StringBuilder();
deco_manual_loader.SetTitle(String.Format("Manual{0}", manual));
for (int k = 0; k < 30; ++k)
{
String desc = deco_manual_loader.LoadString(String.Format("{0}Text1", k + 1), "");
if (String.IsNullOrEmpty(desc))
{
data.desc = sb.ToString();
break;
}
if (k != 0)
sb.Append(Environment.NewLine);
sb.Append(desc);
}
item_data_list.Add(data);
}
}
}
private void LoadDecoWomanData()
{
String path = String.Format("{0}/config/sp2_deco_woman.ini", main_path);
String deco_manual_path = String.Format("{0}/config/sp2_deco_manual.ini", main_path);
INILoader.INILoader loader = new INILoader.INILoader(path, false);
INILoader.INILoader deco_manual_loader = new INILoader.INILoader(deco_manual_path, false);
loader.SetTitle("Info");
int count = loader.LoadInt("max_Deco", 0);
for (int i = 0; i < count; ++i)
{
String title = String.Format("Deco{0}", i + 1);
loader.SetTitle(title);
int deco_cnt = loader.LoadInt("Max", 0);
for (int j = 0; j < deco_cnt; ++j)
{
ItemData data = new ItemData();
String item_name = String.Format("Name_{0}", j + 1);
String icon_name = String.Format("Icon_{0}", j + 1);
String manual_name = String.Format("manual_{0}", j + 1);
data.pack_name = loader.LoadString(icon_name, "");
data.name = loader.LoadString(item_name, "");
data.type = "여성치장";
int manual = loader.LoadInt(manual_name, 0);
StringBuilder sb = new StringBuilder();
deco_manual_loader.SetTitle(String.Format("Manual{0}", manual));
for (int k = 0; k < 30; ++k)
{
String desc = deco_manual_loader.LoadString(String.Format("{0}Text1", k + 1), "");
if (String.IsNullOrEmpty(desc))
{
data.desc = sb.ToString();
break;
}
if (k != 0)
sb.Append(Environment.NewLine);
sb.Append(desc);
}
item_data_list.Add(data);
}
}
}
private void LoadCustomDesc()
{
item_custom_list = new List<ItemCustomData>();
item_custom_list.Clear();
if (!File.Exists("./custom_desc.txt"))
return;
StreamReader sr = new StreamReader("./custom_desc.txt");
String szLine = String.Empty;
while (sr.Peek() > -1)
{
szLine = sr.ReadLine();
char[] charSeparators = new char[] { ',' };
String[] RetString = szLine.Split(charSeparators, 2);
if( RetString.Length == 2 )
{
ItemCustomData data;
data.pack_name = RetString[0];
data.desc = RetString[1];
item_custom_list.Add(data);
}
}
sr.Close();
}
private void SaveCustomDesc()
{
if( item_custom_list.Count == 0 )
return;
StreamWriter sw = new StreamWriter("./custom_desc.txt");
foreach( ItemCustomData data in item_custom_list )
{
if( String.IsNullOrEmpty(data.desc) )
continue;
String line = String.Format( "{0},{1}", data.pack_name, data.desc );
sw.WriteLine(line);
}
sw.Close();
}
}
}