Commit 646db356 authored by keyongyu's avatar keyongyu

mse

parent dbf678f5
......@@ -52,7 +52,7 @@ public static string GetHtmlContentByUrl(string url)
try {
HttpWebRequest httpWebRequest =
(HttpWebRequest)WebRequest.Create(url);
httpWebRequest.Timeout = 30000;
httpWebRequest.Timeout = 15000;
using(HttpWebResponse httpWebResponse =
(HttpWebResponse)httpWebRequest.GetResponse())
{
......
......@@ -309,6 +309,7 @@ public static int CopyDB(string DB, bool ignore,params Card[] cards)
}
#endregion
#region 压缩数据库
public static void Compression(string db)
{
if (File.Exists(db))
......@@ -326,7 +327,7 @@ public static void Compression(string db)
}
}
#endregion
#region SQL语句
#region 查询
......
......@@ -6,27 +6,190 @@
*
*/
using System;
using System.IO;
using System.Configuration;
using System.Collections.Generic;
using System.Text;
using System.IO.Compression;
namespace DataEditorX.Core
{
/// <summary>
/// Description of MSE.
/// </summary>
public class MSE
{
/*
*
normal monster 通常怪兽
effect monster 效果怪兽
fusion monster 融合怪兽
ritual monster 仪式怪兽
synchro monster 同调怪兽
token monster 衍生物
xyz monster 超量怪兽
spell card 魔法
trap card 陷阱
*/
static bool isInit=false;
public static void Init()
static MSEConfig cfg;
static Dictionary<long,string> mTypedic;
static Dictionary<long,string> mRacedic;
public static void Init(string path,
Dictionary<long,string> typedic,
Dictionary<long,string> racedic)
{
if(isInit)
return;
//cut images
//type
//race
//effect
cfg=new MSEConfig(path);
mTypedic = typedic;
mRacedic = racedic;
MSEConvert.Init(typedic, racedic);
}
public static void Save(string file, Card[] cards,string pic){
string setFile=file+".txt";
string[] images=WriteSet(setFile, cards, pic);
using(ZipStorer zips=ZipStorer.Create(file, ""))
{
zips.AddFile(setFile,"set","");
foreach ( string img in images )
{
zips.AddFile(img, Path.GetFileNameWithoutExtension(img),"");
}
zips.Close();
}
File.Delete(setFile);
}
public static string[] WriteSet(string file,Card[] cards,string pic)
{
List<string> list=new List<string>();
using(FileStream fs=new FileStream(file,
FileMode.Create, FileAccess.Write))
{
StreamWriter sw=new StreamWriter(fs, Encoding.UTF8);
sw.WriteLine(cfg.head);
foreach(Card c in cards)
{
string jpg=Path.Combine(pic,c.id+".jpg");
if(File.Exists(jpg)){
list.Add(jpg);
jpg=Path.GetFileNameWithoutExtension(jpg);
}
else
jpg="";
public static void Save(string file,Card[] cards,string pic){
MSE.Init();
if(c.IsType(CardType.TYPE_SPELL))
sw.WriteLine(getSpell(c, jpg));
else if(c.IsType(CardType.TYPE_TRAP))
sw.WriteLine(getTrap(c, jpg));
else if(c.IsType(CardType.TYPE_PENDULUM))
sw.WriteLine(getPendulum(c, jpg));
else
sw.WriteLine(getMonster(c, jpg));
}
sw.Close();
}
return list.ToArray();
}
static string getMonster(Card c,string img)
{
StringBuilder sb=new StringBuilder(cfg.monster);
string[] types=MSEConvert.GetTypes(c);
string race=MSEConvert.GetRace(c.race);
sb.Replace("%type%", types[0]);
sb.Replace("%name%", c.name);
sb.Replace("%attribute%", MSEConvert.GetAttribute(c.attribute));
sb.Replace("%level%", MSEConvert.GetStar(c.level));
sb.Replace("%image%", img);
sb.Replace("%race%", race);
sb.Replace("%type1%",types[1]);
sb.Replace("%type2%",types[2]);
sb.Replace("%type3%",types[3]);
sb.Replace("%desc%", MSEConvert.ReDesc(c.desc));
if(!string.IsNullOrEmpty(race))
{
sb.Replace("%atk%", (c.atk<0)?"?":c.atk.ToString());
sb.Replace("%def%", (c.def<0)?"?":c.def.ToString());
}
sb.Replace("%code%",c.id.ToString("00000000"));
return sb.ToString();
}
static string getPendulum(Card c,string img)
{
StringBuilder sb=new StringBuilder(cfg.pendulum);
string[] types=MSEConvert.GetTypes(c);
string race=MSEConvert.GetRace(c.race);
sb.Replace("%type%", types[0]);
sb.Replace("%name%", c.name);
sb.Replace("%attribute%", MSEConvert.GetAttribute(c.attribute));
sb.Replace("%level%", MSEConvert.GetStar(c.level));
sb.Replace("%image%", img);
sb.Replace("%race%", race);
sb.Replace("%type1%",types[1]);
sb.Replace("%type2%",types[2]);
sb.Replace("%type3%",types[3]);
sb.Replace("%desc%", MSEConvert.ReDesc(
MSEConvert.GetDesc(c.desc, cfg.regx_monster)));
if(!string.IsNullOrEmpty(race))
{
sb.Replace("%atk%", (c.atk<0)?"?":c.atk.ToString());
sb.Replace("%def%", (c.def<0)?"?":c.def.ToString());
}
sb.Replace("%code%",c.id.ToString("00000000"));
sb.Replace("%pl%", ((c.level >> 0x18) & 0xff).ToString());
sb.Replace("%pr%", ((c.level >> 0x10) & 0xff).ToString());
sb.Replace("%pdesc%",MSEConvert.ReDesc(
MSEConvert.GetDesc(c.desc, cfg.regx_pendulum)));
return sb.ToString();
}
static string getSpell(Card c,string img)
{
string level="";
if(c.IsType(CardType.TYPE_EQUIP))
level="+";
else if(c.IsType(CardType.TYPE_QUICKPLAY))
level="$";
else if(c.IsType(CardType.TYPE_FIELD))
level="&";
else if(c.IsType(CardType.TYPE_CONTINUOUS))
level="%";
else if(c.IsType(CardType.TYPE_RITUAL))
level="#";
else
level="^";
StringBuilder sb=new StringBuilder(cfg.spelltrap);
sb.Replace("%type%", "spell card");
sb.Replace("%name%", c.name);
sb.Replace("%attribute%", "spell");
sb.Replace("%level%", level);
sb.Replace("%image%", img);
sb.Replace("%desc%", MSEConvert.ReDesc(c.desc));
sb.Replace("%code%", c.id.ToString("00000000"));
return sb.ToString();
}
static string getTrap(Card c,string img)
{
string level="";
if(c.IsType(CardType.TYPE_COUNTER))
level="!";
else if(c.IsType(CardType.TYPE_CONTINUOUS))
level="%";
else
level="^";
StringBuilder sb=new StringBuilder(cfg.spelltrap);
sb.Replace("%type%", "trap card");
sb.Replace("%name%", c.name);
sb.Replace("%attribute%", "trap");
sb.Replace("%level%", level);
sb.Replace("%image%", img);
sb.Replace("%desc%", MSEConvert.ReDesc(c.desc));
sb.Replace("%code%", c.id.ToString("00000000"));
return sb.ToString();
}
}
......
/*
* 由SharpDevelop创建。
* 用户: Acer
* 日期: 2014-10-15
* 时间: 15:47
*
*/
using System;
using System.Configuration;
using System.IO;
using DataEditorX.Language;
namespace DataEditorX.Core
{
/// <summary>
/// Description of MSEConfig.
/// </summary>
public class MSEConfig
{
public MSEConfig(string path)
{
regx_pendulum=ConfigurationManager.AppSettings["mse-pendulum-text"];
regx_monster=ConfigurationManager.AppSettings["mse-monster-text"];
if(regx_monster==null)
regx_monster="(\\s\\S*?)";
else
regx_monster=regx_monster.Replace("\\n","\n");
if(regx_pendulum==null)
regx_pendulum="(\\s\\S*?)";
else
regx_pendulum=regx_pendulum.Replace("\\n","\n");
head = read(path, "mse-head.txt");
monster = read(path, "mse-monster.txt");
pendulum = read(path, "mse-pendulum.txt");
spelltrap = read(path, "mse-spelltrap.txt");
}
string read(string path,string name)
{
string tmp=Path.Combine(path, name);
return File.Exists(tmp)?File.ReadAllText(tmp):"";
}
public string regx_pendulum;
public string regx_monster;
public string head;
public string monster;
public string pendulum;
public string spelltrap;
}
}
/*
* 由SharpDevelop创建。
* 用户: Acer
* 日期: 2014-10-15
* 时间: 15:46
*
*/
using System;
using System.Text;
using System.Collections.Generic;
using System.Text.RegularExpressions;
namespace DataEditorX.Core
{
/// <summary>
/// Description of MSEConvert.
/// </summary>
public class MSEConvert
{
static Dictionary<long,string> mTypedic=null;
static Dictionary<long,string> mRacedic=null;
public static void Init(Dictionary<long,string> typedic,
Dictionary<long,string> racedic)
{
mTypedic = typedic;
mRacedic = racedic;
}
public static string ReDesc(string desc)
{
StringBuilder sb=new StringBuilder(desc);
sb.Replace(Environment.NewLine, "\n");
sb.Replace("\n\n","\n");
sb.Replace("\n","\n\t\t");
sb.Replace(" ","^");
return sb.ToString();
}
public static string[] GetTypes(Card c)
{
string[] types=new string[]{"normal monster","","",""};
if(c.IsType(CardType.TYPE_MONSTER))
{//卡片类型和第1效果
if(c.IsType(CardType.TYPE_XYZ)){
types[0]="xyz monster";
types[1]=GetType(CardType.TYPE_XYZ);
}
else if(c.IsType(CardType.TYPE_TOKEN)){
types[0]="token monster";
}
else if(c.IsType(CardType.TYPE_RITUAL)){
types[0]="ritual monster";
types[1]=GetType(CardType.TYPE_RITUAL);
}
else if(c.IsType(CardType.TYPE_FUSION)){
types[0]="fusion monster";
types[1]=GetType(CardType.TYPE_FUSION);
}
else if(c.IsType(CardType.TYPE_SYNCHRO)){
types[0]="synchro monster";
types[1]=GetType(CardType.TYPE_SYNCHRO);
}
else if(c.IsType(CardType.TYPE_EFFECT)){
types[0]="effect monster";
}
else
types[0]="normal monster";
//同调
if(types[0]=="synchro monster" || types[0]=="token monster")
{
if(c.IsType(CardType.TYPE_TUNER)
&& c.IsType(CardType.TYPE_EFFECT))
{//调整效果
types[2]=GetType(CardType.TYPE_TUNER);
types[3]=GetType(CardType.TYPE_EFFECT);
}
else if(c.IsType(CardType.TYPE_TUNER))
{
types[2]=GetType(CardType.TYPE_TUNER);
}
else if(c.IsType(CardType.TYPE_EFFECT))
{
types[2]=GetType(CardType.TYPE_EFFECT);
}
}
else if(types[0] == "normal monster")
{
if(c.IsType(CardType.TYPE_PENDULUM))//灵摆
types[1]=GetType(CardType.TYPE_PENDULUM);
else if(c.IsType(CardType.TYPE_TUNER))//调整
types[1]=GetType(CardType.TYPE_TUNER);
}
else if(types[0] != "effect monster")
{//效果
if(c.IsType(CardType.TYPE_EFFECT))
types[2]=GetType(CardType.TYPE_EFFECT);
}
else
{//效果怪兽
if(c.IsType(CardType.TYPE_PENDULUM))
{
types[1]=GetType(CardType.TYPE_PENDULUM);
types[2]=GetType(CardType.TYPE_EFFECT);
}
else if(c.IsType(CardType.TYPE_TUNER))
types[1]=GetType(CardType.TYPE_TUNER);
else if(c.IsType(CardType.TYPE_SPIRIT))
types[1]=GetType(CardType.TYPE_SPIRIT);
else if(c.IsType(CardType.TYPE_TOON))
types[1]=GetType(CardType.TYPE_TOON);
else if(c.IsType(CardType.TYPE_UNION))
types[1]=GetType(CardType.TYPE_UNION);
else if(c.IsType(CardType.TYPE_DUAL))
types[1]=GetType(CardType.TYPE_DUAL);
else
types[1]=GetType(CardType.TYPE_EFFECT);
}
}
return types;
}
static string GetType(CardType type)
{
long key=(long)type;
if(mTypedic==null)
return "";
if(mTypedic.ContainsKey(key))
return mTypedic[key].Trim();
return "";
}
public static string GetStar(long level)
{
long j=level&0xff;
string star="";
for(int i=0;i<j;i++)
{
star+="*";
}
return star;
}
public static string GetRace(long race)
{
if(mRacedic==null)
return "";
if(mRacedic.ContainsKey(race))
return mRacedic[race];
return "";
}
public static string GetDesc(string desc,string regx)
{
desc=desc.Replace(Environment.NewLine,"\n");
Regex regex=new Regex(regx);
Match mc=regex.Match(desc);
if(mc.Success)
return (mc.Groups.Count>1)?
mc.Groups[1].Value:mc.Groups[0].Value;
return "";
}
public static string GetAttribute(int attr)
{
CardAttribute cattr= (CardAttribute)attr;
string sattr="none";
switch(cattr)
{
case CardAttribute.ATTRIBUTE_DARK:
sattr="dark";
break;
case CardAttribute.ATTRIBUTE_DEVINE:
sattr="divine";
break;
case CardAttribute.ATTRIBUTE_EARTH:
sattr="earth";
break;
case CardAttribute.ATTRIBUTE_FIRE:
sattr="fire";
break;
case CardAttribute.ATTRIBUTE_LIGHT:
sattr="light";
break;
case CardAttribute.ATTRIBUTE_WATER:
sattr="water";
break;
case CardAttribute.ATTRIBUTE_WIND:
sattr="wind";
break;
}
return sattr;
}
}
}
......@@ -165,8 +165,6 @@ public static void ConvertImages(string imgpath,string gamepath,bool isreplace)
string filename=mArgs[0];
replace=(mArgs[1]==Boolean.TrueString)?true:false;
DataBase.CopyDB(filename, !replace,cardlist);
//
MyMsg.Show(LMSG.copyDBIsOK);
}
break;
case MyTask.CutImages:
......@@ -177,13 +175,11 @@ public static void ConvertImages(string imgpath,string gamepath,bool isreplace)
replace=false;
}
CutImages(mArgs[0],mArgs[1],replace);
MyMsg.Show(LMSG.CutImageOK);
}
break;
case MyTask.SaveAsMSE:
if(mArgs!=null && mArgs.Length>=2){
MSE.Save(mArgs[0], cardlist, mArgs[1]);
MyMsg.Show(LMSG.SaveMseOK);
}
break;
case MyTask.ConvertImages:
......@@ -194,12 +190,9 @@ public static void ConvertImages(string imgpath,string gamepath,bool isreplace)
replace=false;
}
ConvertImages(mArgs[0],mArgs[1],replace);
MyMsg.Show(LMSG.ConvertImageOK);
}
break;
}
nowTask=MyTask.NONE;
cardlist=null;
mArgs=null;
}
......
This diff is collapsed.
......@@ -21,10 +21,9 @@ namespace DataEditorX
{
public partial class DataEditForm : Form
{
#region 成员变量
string ydkfile=null;
string imagepath=null;
#region 成员变量
string GAMEPATH,PICPATH,PICPATH2,LUAPTH,IMAGEPATH;
Card oldCard=new Card(0);
Card srcCard=new Card(0);
......@@ -36,6 +35,10 @@ public partial class DataEditForm : Form
int cardcount;
string undoString;
List<Card> cardlist=new List<Card>();
bool setcodeIsedit1;
bool setcodeIsedit2;
bool setcodeIsedit3;
bool setcodeIsedit4;
Image m_cover;
Dictionary<long, string> dicCardRules=null;
......@@ -73,6 +76,7 @@ void DataEditFormLoad(object sender, EventArgs e)
Application.Exit();
}
string datapath=Path.Combine(Application.StartupPath, dir);
InitPath(datapath);
LANG.InitForm(this, conflang);
......@@ -87,6 +91,7 @@ void DataEditFormLoad(object sender, EventArgs e)
title=this.Text;
InitGameData();
MSE.Init(datapath, dicCardTypes, dicCardRaces);
SetCDB(nowCdbFile);
//设置空白卡片
......@@ -275,11 +280,18 @@ void SetCard(Card c)
SetSelect(dicCardLevels,cb_cardlevel,(long)(c.level&0xff));
SetSelect(dicCardRaces,cb_cardrace,c.race);
SetSelect(dicSetnames, cb_setname1, c.setcode&0xffff);
SetSelect(dicSetnames, cb_setname2, (c.setcode>>0x10)&0xffff);
SetSelect(dicSetnames, cb_setname3, (c.setcode>>0x20)&0xffff);
SetSelect(dicSetnames, cb_setname4, (c.setcode>>0x30)&0xffff);
setSetcode(c.setcode);
long sc1=c.setcode&0xffff;
long sc2=(c.setcode>>0x10)&0xffff;
long sc3=(c.setcode>>0x20)&0xffff;
long sc4=(c.setcode>>0x30)&0xffff;
tb_setcode1.Text=sc1.ToString("x");
tb_setcode2.Text=sc2.ToString("x");
tb_setcode3.Text=sc3.ToString("x");
tb_setcode4.Text=sc4.ToString("x");
SetSelect(dicSetnames, cb_setname1, sc1);
SetSelect(dicSetnames, cb_setname2, sc2);
SetSelect(dicSetnames, cb_setname3, sc3);
SetSelect(dicSetnames, cb_setname4, sc4);
SetCheck(pl_cardtype,c.type);
SetCheck(pl_category,c.category);
......@@ -371,7 +383,16 @@ Card GetCard()
long.TryParse(GetSelect(dicCardLevels,cb_cardlevel),out c.level);
long.TryParse(GetSelect(dicCardRaces,cb_cardrace),out c.race);
c.setcode = getSetcodeByText();
int.TryParse(tb_setcode1.Text, NumberStyles.HexNumber,null,out temp);
c.setcode +=temp;
int.TryParse(tb_setcode2.Text, NumberStyles.HexNumber,null,out temp);
c.setcode +=temp<<0x10;
int.TryParse(tb_setcode3.Text, NumberStyles.HexNumber,null,out temp);
c.setcode +=temp<<0x20;
int.TryParse(tb_setcode4.Text, NumberStyles.HexNumber,null,out temp);
c.setcode +=temp<<0x30;
//c.setcode = getSetcodeByText();
c.type=GetCheck(pl_cardtype);
c.category=GetCheck(pl_category);
......@@ -395,6 +416,12 @@ Card GetCard()
}
//得到所选值
string GetSelectHex(Dictionary<long, string> dic,ComboBox cb)
{
long temp;
long.TryParse(GetSelect(dic,cb),out temp);
return temp.ToString("x");
}
string GetSelect(Dictionary<long, string> dic,ComboBox cb)
{
long fkey=0;
......@@ -821,22 +848,9 @@ void Btn_imgClick(object sender, EventArgs e)
if(dlg.ShowDialog()==DialogResult.OK)
{
//dlg.FileName;
pl_image.BackgroundImage.Dispose();
pl_image.BackgroundImage=m_cover;
string f=Path.Combine(PICPATH,tid+".jpg");
TaskHelper.ToImg(dlg.FileName,f,
Path.Combine(PICPATH2,tid+".jpg"));
setImage(f);
}
}
InportImage(dlg.FileName, tid);
}
void setImage(string f){
if(File.Exists(f)){
Bitmap temp=new Bitmap(f);
pl_image.BackgroundImage=temp;
}
else
pl_image.BackgroundImage=m_cover;
}
#endregion
......@@ -1074,125 +1088,110 @@ void BackgroundWorker1DoWork(object sender, System.ComponentModel.DoWorkEventArg
//任务完成
void BackgroundWorker1RunWorkerCompleted(object sender, System.ComponentModel.RunWorkerCompletedEventArgs e)
{
//TaskHelper.getTask();
//
int t=title.LastIndexOf(" (");
if(t>0)
{
title=title.Substring(0,t);
SetTitle();
}
MyTask mt=TaskHelper.getTask();
switch(mt){
case MyTask.CheckUpdate:break;
case MyTask.CopyDataBase:
MyMsg.Show(LMSG.copyDBIsOK);
break;
case MyTask.CutImages:
MyMsg.Show(LMSG.CutImageOK);
break;
case MyTask.SaveAsMSE:
MyMsg.Show(LMSG.SaveMseOK);
break;
case MyTask.ConvertImages:
MyMsg.Show(LMSG.ConvertImageOK);
break;
}
}
#endregion
#region setcode
string Add0(long num,int len){
string str=num.ToString("x");
int j=len-str.Length;
for(int i=0;i<j;i++){
str="0"+str;
}
return str;
}
void setSetcode(long setcode){
string setname="";
string strtip="";
if(setcode<0){
setcode = getSetcodeBySelect();
}
long s1=setcode&0xffff;
long s2=(setcode>>0x10)&0xffff;
long s3=(setcode>>0x20)&0xffff;
long s4=(setcode>>0x30)&0xffff;
if(s4>0){
setname=Add0(s4,4)
+" "+Add0(s3,4)
+" "+Add0(s2,4)
+" "+Add0(s1,4);
strtip=DataManager.GetValue(dicSetnames,s1)
+Environment.NewLine
+DataManager.GetValue(dicSetnames,s2)
+Environment.NewLine
+DataManager.GetValue(dicSetnames,s3)
+Environment.NewLine
+DataManager.GetValue(dicSetnames,s4);
}
else if(s3>0){
setname=Add0(s3,4)
+" "+Add0(s2,4)
+" "+Add0(s1,4);
strtip=DataManager.GetValue(dicSetnames,s1)
+Environment.NewLine
+DataManager.GetValue(dicSetnames,s2)
+Environment.NewLine
+DataManager.GetValue(dicSetnames,s3);
}
else if(s2>0){
setname=Add0(s2,4)
+" "+Add0(s1,4);
strtip=DataManager.GetValue(dicSetnames,s1)
+Environment.NewLine
+DataManager.GetValue(dicSetnames,s2);
}
else if(s1>0){
setname=Add0(s1,4);
strtip=DataManager.GetValue(dicSetnames,s1);
}
else{
setname="0";
strtip="N/A";
}
toolTip1.SetToolTip(lb_setcode,strtip);
tb_setcode.Text=setname;
}
long getSetcodeByText(){
long ltemp;
long.TryParse(tb_setcode.Text.Replace(" ",""),
NumberStyles.HexNumber, null, out ltemp);
return ltemp;
}
long getSetcodeBySelect(){
long ltemp;
long setcode;
long.TryParse(GetSelect(dicSetnames, cb_setname1), out ltemp);
setcode=ltemp;
long.TryParse(GetSelect(dicSetnames, cb_setname2), out ltemp);
setcode+=(ltemp<<0x10);
long.TryParse(GetSelect(dicSetnames, cb_setname3), out ltemp);
setcode+=(ltemp<<0x20);
long.TryParse(GetSelect(dicSetnames, cb_setname4), out ltemp);
setcode+=(ltemp<<0x30);
return setcode;
}
void Cb_setname2SelectedIndexChanged(object sender, EventArgs e)
{
setSetcode(-1);
if(setcodeIsedit2)
return;
setcodeIsedit2=true;
tb_setcode2.Text=GetSelectHex(dicSetnames, cb_setname2);
setcodeIsedit2=false;
}
void Cb_setname1SelectedIndexChanged(object sender, EventArgs e)
{
setSetcode(-1);
if(setcodeIsedit1)
return;
setcodeIsedit1=true;
tb_setcode1.Text=GetSelectHex(dicSetnames, cb_setname1);
setcodeIsedit1=false;
}
void Cb_setname3SelectedIndexChanged(object sender, EventArgs e)
{
setSetcode(-1);
if(setcodeIsedit3)
return;
setcodeIsedit3=true;
tb_setcode3.Text=GetSelectHex(dicSetnames, cb_setname3);
setcodeIsedit3=false;
}
void Cb_setname4SelectedIndexChanged(object sender, EventArgs e)
{
setSetcode(-1);
if(setcodeIsedit4)
return;
setcodeIsedit4=true;
tb_setcode4.Text=GetSelectHex(dicSetnames, cb_setname4);
setcodeIsedit4=false;
}
void Tb_setcode4TextChanged(object sender, EventArgs e)
{
if(setcodeIsedit4)
return;
setcodeIsedit4=true;
long temp;
long.TryParse(tb_setcode4.Text,out temp);
SetSelect(dicSetnames, cb_setname4, temp);
setcodeIsedit4=false;
}
void Tb_setcodeTextChanged(object sender, EventArgs e)
void Tb_setcode3TextChanged(object sender, EventArgs e)
{
long sc=getSetcodeByText();
if(sc==0 && tb_setcode.Text.Length>1){
MyMsg.Show(LMSG.Setcode_error);
if(setcodeIsedit3)
return;
setcodeIsedit3=true;
long temp;
long.TryParse(tb_setcode3.Text,out temp);
SetSelect(dicSetnames, cb_setname3, temp);
setcodeIsedit3=false;
}
else
setSetcode(sc);
void Tb_setcode2TextChanged(object sender, EventArgs e)
{
if(setcodeIsedit2)
return;
setcodeIsedit2=true;
long temp;
long.TryParse(tb_setcode2.Text,out temp);
SetSelect(dicSetnames, cb_setname2, temp);
setcodeIsedit2=false;
}
void Tb_setcode1TextChanged(object sender, EventArgs e)
{
if(setcodeIsedit1)
return;
setcodeIsedit1=true;
long temp;
long.TryParse(tb_setcode1.Text,out temp);
SetSelect(dicSetnames, cb_setname1, temp);
setcodeIsedit1=false;
}
#endregion
......@@ -1303,5 +1302,42 @@ void Menuitem_saveasmseClick(object sender, EventArgs e)
}
#endregion
#region inprot image
void Pl_imageDragDrop(object sender, DragEventArgs e)
{
string[] files=e.Data.GetData(DataFormats.FileDrop) as string[];
#if DEBUG
MessageBox.Show(files[0]);
#endif
if(File.Exists(files[0]))
InportImage(files[0], tb_cardcode.Text);
}
void Pl_imageDragEnter(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(DataFormats.FileDrop))
e.Effect = DragDropEffects.Link; //重要代码:表明是链接类型的数据,比如文件路径
else
e.Effect = DragDropEffects.None;
}
void InportImage(string file,string tid)
{
pl_image.BackgroundImage.Dispose();
pl_image.BackgroundImage=m_cover;
string f=Path.Combine(PICPATH,tid+".jpg");
TaskHelper.ToImg(file,f,
Path.Combine(PICPATH2,tid+".jpg"));
setImage(f);
}
void setImage(string f){
if(File.Exists(f)){
Bitmap temp=new Bitmap(f);
pl_image.BackgroundImage=temp;
}
else
pl_image.BackgroundImage=m_cover;
}
#endregion
}
}
......@@ -123,9 +123,6 @@
<metadata name="backgroundWorker1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>130, 17</value>
</metadata>
<metadata name="toolTip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>287, 17</value>
</metadata>
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>25</value>
</metadata>
......
......@@ -66,6 +66,8 @@
<Compile Include="Core\DataManager.cs" />
<Compile Include="Core\ImageSet.cs" />
<Compile Include="Core\MSE.cs" />
<Compile Include="Core\MSEConfig.cs" />
<Compile Include="Core\MSEConvert.cs" />
<Compile Include="Core\TaskHelper.cs" />
<Compile Include="DataEditForm.cs" />
<Compile Include="DataEditForm.Designer.cs">
......@@ -125,7 +127,18 @@
<None Include="chinese\message.txt">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="chinese\mse-set.txt" />
<None Include="chinese\mse-monster.txt">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="chinese\mse-head.txt">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="chinese\mse-pendulum.txt">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="chinese\mse-spelltrap.txt">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="english\card-attribute.txt">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
......@@ -156,6 +169,18 @@
<None Include="english\message.txt">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="english\mse-head.txt">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="english\mse-monster.txt">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="english\mse-pendulum.txt">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="english\mse-spelltrap.txt">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="Magic Set Editor 2\update\download.bat">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
......
......@@ -28,4 +28,4 @@
//
// You can specify all the values or you can use the default the Revision and
// Build Numbers by using the '*' as shown below:
[assembly: AssemblyVersion("1.5.3.0")]
[assembly: AssemblyVersion("1.5.5.0")]
<?xml version="1.0" encoding="utf-8" ?>
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<connectionStrings>
<!-- Example connection to a SQL Server Database on localhost. -->
......@@ -23,5 +23,8 @@
<add key="image_other" value="25,54,128,128" />
<add key="image_xyz" value="24,51,128,128" />
<add key="image_pendulum" value="14,46,149,120" />
<!-- MSE -->
<add key="mse-pendulum-text" value="】[\s\S]*?\n([\S\s]*?)\n【" />
<add key="mse-monster-text" value="果】\n([\S\s]*)" />
</appSettings>
</configuration>
\ No newline at end of file
0x0 卡片种族
0x1 战士
0x2 魔法使
0x4 天使
0x8 恶魔
0x10 不死
0x20 机械
0x40 水
0x80 炎
0x100 岩石
0x200 鸟兽
0x400 植物
0x800 昆虫
0x1000 雷
0x2000 龙
0x4000 兽
0x8000 兽战士
0x10000 恐龙
0x20000 鱼
0x40000 海龙
0x80000 爬虫类
0x100000 念动力
0x200000 幻神兽
0x400000 创造神
0x800000 幻龙
\ No newline at end of file
0x1 战士族
0x2 魔法使族
0x4 天使族
0x8 恶魔族
0x10 不死族
0x20 机械族
0x40 水族
0x80 炎族
0x100 岩石族
0x200 鸟兽族
0x400 植物族
0x800 昆虫族
0x1000 雷族
0x2000 龙族
0x4000 兽族
0x8000 兽战士族
0x10000 恐龙族
0x20000 鱼族
0x40000 海龙族
0x80000 爬虫类族
0x100000 念动力族
0x200000 幻神兽族
0x400000 创造神族
0x800000 幻龙族
\ No newline at end of file
......@@ -22,4 +22,4 @@
0x200000 反转
0x400000 卡通
0x800000 超量
0x1000000 摇摆
\ No newline at end of file
0x1000000 灵摆
\ No newline at end of file
......@@ -16,12 +16,11 @@ DataEditForm->lb_categorys 效果种类
DataEditForm->lb_pleft_right PScale
DataEditForm->lb_scripttext
DataEditForm->lb_tiptexts 提示文字
DataEditForm->lb_setcode 卡片系列(最多4个)
DataEditForm->lb_types 卡片种类
DataEditForm->lb2 /
DataEditForm->lb4 /
DataEditForm->lb5 /
DataEditForm->lv_cardlist0 卡片密码
DataEditForm->lv_cardlist0 密码
DataEditForm->lv_cardlist1 卡片名称
DataEditForm->menuitem_compdb 压缩当前数据库
DataEditForm->menuitem_convertimage 批量导入卡图
......
mse version: 0.3.8
game: yugioh
stylesheet: standard
set info:
language: CN
edition: MSE Editrion
ST mark is text: yes
pendulum image is small: yes
\ No newline at end of file
card:
card type: %type%
name: %name%
attribute: %attribute%
level: %level%
image: %image%
type 1: %race%
type 2: %type1%
type 3: %type2%
type 4: %type3%
rule text:
%desc%
attack: %atk%
defense: %def%
gamecode: %code%
\ No newline at end of file
card:
card type: %type%
name: %name%
attribute: %attribute%
level: %level%
image: %image%
type 1: %race%
type 2: %type1%
type 3: %type2%
type 4: %type3%
rule text:
%desc%
attack: %atk%
defense: %def%
gamecode: %code%
pendulum: medium
pendulum scale 1: %pl%
pendulum scale 2: %pr%
pendulum text:
%pdesc%
\ No newline at end of file
###################################################
# MSE 2.0.0
# only head,line,end use space split,other use tab split.
# other use tab split
# author 菜菜
# Encode UTF-8 have BMOM
# /n/t/space/Space
################################################
############head string
head mse version: 0.3.8
head game: yugioh
head stylesheet: standard
head set info:
head language: CN
head ST mark is text: yes
head pendulum image is small: yes
############card info string
info card:
info card type: normal monster
info name: <i>A・O・J</i>
info attribute: wind
info level: ******
info image:
info type 1: 魔法使い族
info type 2: 効果
info type 3:
info number:
info edition: MEDE IN MSE
info rule text:
info 魔法魔法魔法魔法魔法魔法
info pendulum scale 1: 2
info pendulum scale 2: 3
info attack: ?
info defense: 5000
info gamecode: 123456789
info pendulum: medium
info pendulum text:
info 魔法魔法魔法魔法魔法魔法
# none,big,medium,small
###################card type
type normal monster 通常怪兽
type effect monster 效果怪兽
type fusion monster 融合怪兽
type ritual monster 仪式怪兽
type synchro monster 同调怪兽
type token monster 衍生物
type xyz monster 超量怪兽
type spell card 魔法
type trap card 陷阱
###################spell trap type
type quick-play 速攻魔法
type equip 装备魔法
type field 场地魔法
type ritual 仪式魔法
type continuous 永续魔法
type normal 通常魔法
type normalTrap 通常陷阱
type counterTrap 反击陷阱
type continuousTrap 永续陷阱
###################card attribute
attribute 0 none
attribute 1 地
attribute 2 水
attribute 4 炎
attribute 8 风
attribute 10 光
attribute 20 暗
attribute 40 神
attribute spell 魔
attribute trap 陷
#################level,spell,trap,symbol
level star *
level quick-play $
level equip +
level field &
level ritual #
level continuous %
level normal ^
level normalTrap ^
level counterTrap !
level continuousTrap %
###############effect type words
effect Synchro 同调
effect Xyz 超量
effect Fusion 融合
effect Ritual 仪式
effect Effect 效果
effect Tuner 调整
effect Spirit 灵魂
effect Toon 卡通
effect Gemini 二重
effect Union 同盟
effect Pendulum 灵摆
########################monster race words
race 0
race 1 战士族
race 2 魔法使族
race 4 天使族
race 8 恶魔族
race 10 不死族
race 20 机械族
race 40 水族
race 80 炎族
race 100 岩石族
race 200 鸟兽族
race 400 植物族
race 800 昆虫族
race 1000 雷族
race 2000 龙族
race 4000 兽族
race 8000 兽战士族
race 10000 恐龙族
race 20000 鱼族
race 40000 海龙族
race 80000 爬虫类族
race 100000 念动力族
race 200000 幻神兽族
race 400000 创造神族
race 800000 幻龙族
#######################
text pendulum ^→[\S\s]*?【怪
text normal 果】[\S\s]*?
#######################replace words
name 鮟鱇 <i>鮟鱇</i>
name 璣 <i>璣</i>
desc 鮟鱇 <i>鮟鱇</i>
desc 璣 <i>璣</i>
#desc 。● 。/n●
desc /n /n/t/t
#desc /space /Space
desc /space ^
\ No newline at end of file
card:
card type: %type%
name: %name%
attribute: %attribute%
level: %level%
image: %image%
rule text:
%desc%
gamecode: %code%
\ No newline at end of file
......@@ -16,7 +16,6 @@ DataEditForm->lb_categorys Category
DataEditForm->lb_pleft_right PScale
DataEditForm->lb_scripttext
DataEditForm->lb_tiptexts TipText
DataEditForm->lb_setcode SetCode(Max 4)
DataEditForm->lb_types Card Type
DataEditForm->lb2 /
DataEditForm->lb4 /
......
mse version: 0.3.8
game: yugioh
stylesheet: standard
set info:
language: EN
edition: MSE Editrion
ST mark is text: yes
pendulum image is small: yes
\ No newline at end of file
card:
card type: %type%
name: %name%
attribute: %attribute%
level: %level%
image: %image%
type 1: %race%
type 2: %type1%
type 3: %type2%
type 4: %type3%
rule text:
%desc%
attack: %atk%
defense: %def%
gamecode: %code%
\ No newline at end of file
card:
card type: %type%
name: %name%
attribute: %attribute%
level: %level%
image: %image%
type 1: %race%
type 2: %type1%
type 3: %type2%
type 4: %type3%
rule text:
%desc%
attack: %atk%
defense: %def%
gamecode: %code%
pendulum: medium
pendulum scale 1: %pl%
pendulum scale 2: %pr%
pendulum text:
%pdesc%
\ No newline at end of file
card:
card type: %type%
name: %name%
attribute: %attribute%
level: %level%
image: %image%
rule text:
%desc%
gamecode: %code%
\ No newline at end of file
[DataEditorX]1.5.3.0[DataEditorX]
[DataEditorX]1.5.5.0[DataEditorX]
[URL]https://github.com/247321453/DataEditorX/raw/master/win32/win32.zip[URL]
★使用前,请关联lua的打开方式,例如记事本,notepad++,等。
......@@ -47,6 +47,12 @@ DataEditorX.exe.config
描述不详细的bug,我修复不了。(都不知道是bug是什么)
★更新历史
1.5.5.0
完成导出MSE存档,简体测试OK
注:config设置P描述和正常描述的分离的正则表达式
mse-head.txt的language设置语言:CN,TW,JP,EN,KO
1.5.4.0
setcode编辑框
1.5.3.0
增加压缩数据库
1.5.2.1
......
No preview for this file type
<?xml version="1.0" encoding="utf-8" ?>
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<connectionStrings>
<!-- Example connection to a SQL Server Database on localhost. -->
......@@ -23,5 +23,8 @@
<add key="image_other" value="25,54,128,128" />
<add key="image_xyz" value="24,51,128,128" />
<add key="image_pendulum" value="14,46,149,120" />
<!-- MSE -->
<add key="mse-pendulum-text" value="】[\s\S]*?\n([\S\s]*?)\n【" />
<add key="mse-monster-text" value="果】\n([\S\s]*)" />
</appSettings>
</configuration>
\ No newline at end of file
0x0 卡片种族
0x1 战士
0x2 魔法使
0x4 天使
0x8 恶魔
0x10 不死
0x20 机械
0x40 水
0x80 炎
0x100 岩石
0x200 鸟兽
0x400 植物
0x800 昆虫
0x1000 雷
0x2000 龙
0x4000 兽
0x8000 兽战士
0x10000 恐龙
0x20000 鱼
0x40000 海龙
0x80000 爬虫类
0x100000 念动力
0x200000 幻神兽
0x400000 创造神
0x800000 幻龙
\ No newline at end of file
0x1 战士族
0x2 魔法使族
0x4 天使族
0x8 恶魔族
0x10 不死族
0x20 机械族
0x40 水族
0x80 炎族
0x100 岩石族
0x200 鸟兽族
0x400 植物族
0x800 昆虫族
0x1000 雷族
0x2000 龙族
0x4000 兽族
0x8000 兽战士族
0x10000 恐龙族
0x20000 鱼族
0x40000 海龙族
0x80000 爬虫类族
0x100000 念动力族
0x200000 幻神兽族
0x400000 创造神族
0x800000 幻龙族
\ No newline at end of file
......@@ -22,5 +22,4 @@
0x200000 反转
0x400000 卡通
0x800000 超量
0x1000000 摇摆
0x2000000 特殊召唤
\ No newline at end of file
0x1000000 灵摆
\ No newline at end of file
......@@ -16,12 +16,11 @@ DataEditForm->lb_categorys 效果种类
DataEditForm->lb_pleft_right PScale
DataEditForm->lb_scripttext
DataEditForm->lb_tiptexts 提示文字
DataEditForm->lb_setcode 卡片系列(最多4个)
DataEditForm->lb_types 卡片种类
DataEditForm->lb2 /
DataEditForm->lb4 /
DataEditForm->lb5 /
DataEditForm->lv_cardlist0 卡片密码
DataEditForm->lv_cardlist0 密码
DataEditForm->lv_cardlist1 卡片名称
DataEditForm->menuitem_compdb 压缩当前数据库
DataEditForm->menuitem_convertimage 批量导入卡图
......
mse version: 0.3.8
game: yugioh
stylesheet: standard
set info:
language: CN
edition: MSE Editrion
ST mark is text: yes
pendulum image is small: yes
\ No newline at end of file
card:
card type: %type%
name: %name%
attribute: %attribute%
level: %level%
image: %image%
type 1: %race%
type 2: %type1%
type 3: %type2%
type 4: %type3%
rule text:
%desc%
attack: %atk%
defense: %def%
gamecode: %code%
\ No newline at end of file
card:
card type: %type%
name: %name%
attribute: %attribute%
level: %level%
image: %image%
type 1: %race%
type 2: %type1%
type 3: %type2%
type 4: %type3%
rule text:
%desc%
attack: %atk%
defense: %def%
gamecode: %code%
pendulum: medium
pendulum scale 1: %pl%
pendulum scale 2: %pr%
pendulum text:
%pdesc%
\ No newline at end of file
card:
card type: %type%
name: %name%
attribute: %attribute%
level: %level%
image: %image%
rule text:
%desc%
gamecode: %code%
\ No newline at end of file
......@@ -16,7 +16,6 @@ DataEditForm->lb_categorys Category
DataEditForm->lb_pleft_right PScale
DataEditForm->lb_scripttext
DataEditForm->lb_tiptexts TipText
DataEditForm->lb_setcode SetCode(Max 4)
DataEditForm->lb_types Card Type
DataEditForm->lb2 /
DataEditForm->lb4 /
......
mse version: 0.3.8
game: yugioh
stylesheet: standard
set info:
language: EN
edition: MSE Editrion
ST mark is text: yes
pendulum image is small: yes
\ No newline at end of file
card:
card type: %type%
name: %name%
attribute: %attribute%
level: %level%
image: %image%
type 1: %race%
type 2: %type1%
type 3: %type2%
type 4: %type3%
rule text:
%desc%
attack: %atk%
defense: %def%
gamecode: %code%
\ No newline at end of file
card:
card type: %type%
name: %name%
attribute: %attribute%
level: %level%
image: %image%
type 1: %race%
type 2: %type1%
type 3: %type2%
type 4: %type3%
rule text:
%desc%
attack: %atk%
defense: %def%
gamecode: %code%
pendulum: medium
pendulum scale 1: %pl%
pendulum scale 2: %pr%
pendulum text:
%pdesc%
\ No newline at end of file
card:
card type: %type%
name: %name%
attribute: %attribute%
level: %level%
image: %image%
rule text:
%desc%
gamecode: %code%
\ No newline at end of file
[DataEditorX]1.5.3.0[DataEditorX]
[DataEditorX]1.5.5.0[DataEditorX]
[URL]https://github.com/247321453/DataEditorX/raw/master/win32/win32.zip[URL]
★使用前,请关联lua的打开方式,例如记事本,notepad++,等。
......@@ -47,6 +47,12 @@ DataEditorX.exe.config
描述不详细的bug,我修复不了。(都不知道是bug是什么)
★更新历史
1.5.5.0
完成导出MSE存档,简体测试OK
注:config设置P描述和正常描述的分离的正则表达式
mse-head.txt的language设置语言:CN,TW,JP,EN,KO
1.5.4.0
setcode编辑框
1.5.3.0
增加压缩数据库
1.5.2.1
......
No preview for this file type
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment