From 6d8a07867bdd8c0e963be475c063a8d9100c89d1 Mon Sep 17 00:00:00 2001 From: Logue Date: Thu, 3 Nov 2011 09:33:08 +0900 Subject: [PATCH 1/8] Add Japanese Language --- CookImplement.csproj | 202 ++++++++-------- Dialog/ErrorDialog.Designer.cs | 230 ++++++++---------- Dialog/ErrorDialog.ja-JP.resx | 152 ++++++++++++ Dialog/ErrorDialog.resx | 428 ++++++++++++++++++++++++--------- 4 files changed, 667 insertions(+), 345 deletions(-) create mode 100644 Dialog/ErrorDialog.ja-JP.resx diff --git a/CookImplement.csproj b/CookImplement.csproj index ff11328..d5448a8 100644 --- a/CookImplement.csproj +++ b/CookImplement.csproj @@ -1,105 +1,111 @@ - - - - Debug - AnyCPU - 8.0.30703 - 2.0 - {D054C6EC-DA06-4040-B2D1-86F663D68DAC} - Library - Properties - CookImplement - CookImplement - v3.0 - 512 - - - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - - - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - - - - - - - - - - Form - - - ErrorDialog.cs - - - - True - True - Resources.resx - - - - - ErrorDialog.cs - - - ResXFileCodeGenerator - Resources.Designer.cs - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + Debug + AnyCPU + 8.0.30703 + 2.0 + {D054C6EC-DA06-4040-B2D1-86F663D68DAC} + Library + Properties + CookImplement + CookImplement + v3.0 + 512 + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + false + + + + + + + + + + + + Form + + + ErrorDialog.cs + + + + True + True + Resources.resx + + + + + ErrorDialog.cs + + + ErrorDialog.cs + + + ResXFileCodeGenerator + Resources.Designer.cs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + --> \ No newline at end of file diff --git a/Dialog/ErrorDialog.Designer.cs b/Dialog/ErrorDialog.Designer.cs index d421a50..36d352a 100644 --- a/Dialog/ErrorDialog.Designer.cs +++ b/Dialog/ErrorDialog.Designer.cs @@ -1,129 +1,103 @@ -namespace CookImplement.Dialog -{ - partial class ErrorDialog - { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows Form Designer generated code - - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - this.label1 = new System.Windows.Forms.Label(); - this.label2 = new System.Windows.Forms.Label(); - this.textBox1 = new System.Windows.Forms.TextBox(); - this.button1 = new System.Windows.Forms.Button(); - this.button2 = new System.Windows.Forms.Button(); - this.linkLabel1 = new System.Windows.Forms.LinkLabel(); - this.SuspendLayout(); - // - // label1 - // - this.label1.AutoSize = true; - this.label1.Location = new System.Drawing.Point(14, 41); - this.label1.Name = "label1"; - this.label1.Size = new System.Drawing.Size(270, 30); - this.label1.TabIndex = 0; - this.label1.Text = "아래 내용을 복사하여 개발자에게 보고해 주세요.\r\n프로그램 개선에 큰 도움이 됩니다."; - // - // label2 - // - this.label2.AutoSize = true; - this.label2.Font = new System.Drawing.Font("Malgun Gothic", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); - this.label2.ForeColor = System.Drawing.SystemColors.HotTrack; - this.label2.Location = new System.Drawing.Point(12, 11); - this.label2.Name = "label2"; - this.label2.Size = new System.Drawing.Size(194, 25); - this.label2.TabIndex = 1; - this.label2.Text = "에러가 발생했습니다."; - // - // textBox1 - // - this.textBox1.BackColor = System.Drawing.SystemColors.ButtonFace; - this.textBox1.Enabled = false; - this.textBox1.Location = new System.Drawing.Point(17, 79); - this.textBox1.Multiline = true; - this.textBox1.Name = "textBox1"; - this.textBox1.Size = new System.Drawing.Size(355, 216); - this.textBox1.TabIndex = 2; - // - // button1 - // - this.button1.Location = new System.Drawing.Point(297, 301); - this.button1.Name = "button1"; - this.button1.Size = new System.Drawing.Size(75, 23); - this.button1.TabIndex = 3; - this.button1.Text = "닫기"; - this.button1.UseVisualStyleBackColor = true; - this.button1.Click += new System.EventHandler(this.button1_Click); - // - // button2 - // - this.button2.Location = new System.Drawing.Point(216, 301); - this.button2.Name = "button2"; - this.button2.Size = new System.Drawing.Size(75, 23); - this.button2.TabIndex = 3; - this.button2.Text = "복사하기"; - this.button2.UseVisualStyleBackColor = true; - this.button2.Click += new System.EventHandler(this.button2_Click); - // - // linkLabel1 - // - this.linkLabel1.AutoSize = true; - this.linkLabel1.Location = new System.Drawing.Point(14, 305); - this.linkLabel1.Name = "linkLabel1"; - this.linkLabel1.Size = new System.Drawing.Size(61, 15); - this.linkLabel1.TabIndex = 4; - this.linkLabel1.TabStop = true; - this.linkLabel1.Text = "linkLabel1"; - // - // ErrorDialog - // - this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.BackColor = System.Drawing.Color.White; - this.ClientSize = new System.Drawing.Size(384, 334); - this.Controls.Add(this.linkLabel1); - this.Controls.Add(this.button2); - this.Controls.Add(this.button1); - this.Controls.Add(this.textBox1); - this.Controls.Add(this.label2); - this.Controls.Add(this.label1); - this.Font = new System.Drawing.Font("Malgun Gothic", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); - this.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); - this.Name = "ErrorDialog"; - this.Text = "Error"; - this.ResumeLayout(false); - this.PerformLayout(); - - } - - #endregion - - private System.Windows.Forms.Label label1; - private System.Windows.Forms.Label label2; - private System.Windows.Forms.TextBox textBox1; - private System.Windows.Forms.Button button1; - private System.Windows.Forms.Button button2; - private System.Windows.Forms.LinkLabel linkLabel1; - } +namespace CookImplement.Dialog +{ + partial class ErrorDialog + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ErrorDialog)); + this.label1 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.textBox1 = new System.Windows.Forms.TextBox(); + this.button1 = new System.Windows.Forms.Button(); + this.button2 = new System.Windows.Forms.Button(); + this.linkLabel1 = new System.Windows.Forms.LinkLabel(); + this.SuspendLayout(); + // + // label1 + // + resources.ApplyResources(this.label1, "label1"); + this.label1.Name = "label1"; + // + // label2 + // + resources.ApplyResources(this.label2, "label2"); + this.label2.ForeColor = System.Drawing.SystemColors.HotTrack; + this.label2.Name = "label2"; + // + // textBox1 + // + resources.ApplyResources(this.textBox1, "textBox1"); + this.textBox1.BackColor = System.Drawing.SystemColors.ButtonFace; + this.textBox1.Name = "textBox1"; + // + // button1 + // + resources.ApplyResources(this.button1, "button1"); + this.button1.Name = "button1"; + this.button1.UseVisualStyleBackColor = true; + this.button1.Click += new System.EventHandler(this.button1_Click); + // + // button2 + // + resources.ApplyResources(this.button2, "button2"); + this.button2.Name = "button2"; + this.button2.UseVisualStyleBackColor = true; + this.button2.Click += new System.EventHandler(this.button2_Click); + // + // linkLabel1 + // + resources.ApplyResources(this.linkLabel1, "linkLabel1"); + this.linkLabel1.Name = "linkLabel1"; + this.linkLabel1.TabStop = true; + // + // ErrorDialog + // + resources.ApplyResources(this, "$this"); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.BackColor = System.Drawing.Color.White; + this.Controls.Add(this.linkLabel1); + this.Controls.Add(this.button2); + this.Controls.Add(this.button1); + this.Controls.Add(this.textBox1); + this.Controls.Add(this.label2); + this.Controls.Add(this.label1); + this.Name = "ErrorDialog"; + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.TextBox textBox1; + private System.Windows.Forms.Button button1; + private System.Windows.Forms.Button button2; + private System.Windows.Forms.LinkLabel linkLabel1; + } } \ No newline at end of file diff --git a/Dialog/ErrorDialog.ja-JP.resx b/Dialog/ErrorDialog.ja-JP.resx new file mode 100644 index 0000000..11bb10f --- /dev/null +++ b/Dialog/ErrorDialog.ja-JP.resx @@ -0,0 +1,152 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + 255, 15 + + + 以下の内容をコピーして、開発者に報告してください。 +プログラムの改善に役立たせていただきます。 + + + メイリオ, 14.25pt + + + 221, 28 + + + エラーが発生しました。 + + + 閉じる + + + コピー + + + 65, 15 + + + Meiryo UI, 9pt + + + エラー + + \ No newline at end of file diff --git a/Dialog/ErrorDialog.resx b/Dialog/ErrorDialog.resx index 7080a7d..45a811d 100644 --- a/Dialog/ErrorDialog.resx +++ b/Dialog/ErrorDialog.resx @@ -1,120 +1,310 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + 0 + + + 3 + + + True + + + + Malgun Gothic, 14.25pt + + + 7, 15 + + + 4 + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + linkLabel1 + + + System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 2 + + + 12, 11 + + + 216, 301 + + + System.Windows.Forms.Form, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 4 + + + ErrorDialog + + + 복사하기 + + + 355, 216 + + + $this + + + $this + + + 14, 41 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 아래 내용을 복사하여 개발자에게 보고해 주세요. +프로그램 개선에 큰 도움이 됩니다. + + + False + + + textBox1 + + + 384, 334 + + + 5 + + + 75, 23 + + + label1 + + + label2 + + + System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + True + + + $this + + + $this + + + True + + + linkLabel1 + + + 194, 25 + + + 2 + + + 61, 15 + + + 에러가 발생했습니다. + + + 14, 305 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 75, 23 + + + System.Windows.Forms.LinkLabel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 1 + + + True + + + 1 + + + 3 + + + 3 + + + 17, 79 + + + 270, 30 + + + button1 + + + 0 + + + 닫기 + + + 297, 301 + + + Malgun Gothic, 9pt + + + Error + + + button2 + + + + 3, 4, 3, 4 + + + $this + + + True + + + ja-JP + \ No newline at end of file From efe6ba46c7ed257707e7673a67d06eb7bc097eef Mon Sep 17 00:00:00 2001 From: Logue Date: Thu, 3 Nov 2011 09:36:07 +0900 Subject: [PATCH 2/8] Reduce PNG image file size by pngcrush. --- Resources/00-P.png | Bin 4239 -> 3696 bytes Resources/01-F.png | Bin 3948 -> 3527 bytes Resources/02-E.png | Bin 4032 -> 3628 bytes Resources/03-D.png | Bin 3642 -> 3212 bytes Resources/04-C.png | Bin 3933 -> 3505 bytes Resources/05-B.png | Bin 4006 -> 3589 bytes Resources/06-A.png | Bin 4476 -> 4032 bytes Resources/07-9.png | Bin 4180 -> 3791 bytes Resources/08-8.png | Bin 4226 -> 3838 bytes Resources/09-7.png | Bin 3044 -> 2817 bytes Resources/10-6.png | Bin 2738 -> 2506 bytes 11 files changed, 0 insertions(+), 0 deletions(-) diff --git a/Resources/00-P.png b/Resources/00-P.png index 2b6b3f67ae4bff2c920bc50fd1972a7bad50f9cb..e04088a40c2400140e3b31052d663a0e51a6df71 100644 GIT binary patch literal 3696 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 diff --git a/Resources/01-F.png b/Resources/01-F.png index 014f42c79e1ad528fb816ec35f00bbe0e8563944..7a9268bae0893f06b17a5a4560f4572c24860281 100644 GIT binary patch delta 3526 zcmV;%4LS1c9>*JyBYzE!NklFV^XJYmn&s|H zQvBphUFd&TSp&{bPA}4nHK{&e{N(f^FT~1lQH9H&8YsLF>wi+B4*SZ_i&Qv?oy1OJ zC$W>*N$ezc5<7{V#7<%-vA<=P%<6bvMe{P6WkFBk5qU@y;jD^gP4dHwHK_{9NCBBY z17)dm&(6$8m^mQoV?Hn|Y74*O^ng0u7=>4hRv&)StQ2||O2E%0* z%zBuzpaC-CWB7e_Rnah*$`7x2maDgHX7=O|;ZRTce4>RPOilGrQG}cX~TJGqw zQ?Ut3ZiK@uOiJO#Z10WjgD*Kh(?{MJl8g5`gNPwkl0Vi4U@@eiZy<&)i%VxFQ|)q0 z9s1#0FB1ZlH1?VGg}J)0AD`N)Zc$lXj_6BMqAd-Hq1lp^W&zvWpe!F-aJ6&geKx=%?D4r`l1hsbb%C!SiDbtJTFdplj7fq?PA-ZToQh3Egh9 zCk7?3aRcCa(bf8ohsPF}20q;WM`8#Ui}hB~nB(!hbWjXRre;D|G|($; zAKPu!btPz9@Q{6q{f##j3xWhdjDg}69}=MUEXc;cAE=5iz7A_1M8J5-CixWOO-l-)gl)|!d`rM zdVMkB7JeMqz%uoxr{~LaOII0F5^m7yp4ztVI?zn0CsaLc)wV?vg}&<%UL^6{0Dqsq zZMUd=a5lS4WsVi2m13f>m=u_%4&^X}po9|Ke*aB*zV|QBuLi4L%o9poI~DkXSd;c3 zbX`HTMOmbKV)$hIm0i2re1jO2IB0u5GRGTpT)Z+^U9I(rmF2yN(ig;}%oK`SF|teZ zG&c1>im}@^Q)SSO5`z+3p_IdVKYwgwV>&CBArPC-6fUJz=tqZ?UPk7NR{LV0-BLNd zaq!u^N-U?eP|L-PJc#xEO^%AwR3nYOrJ~@kqO?t$+2!G3t7%{Q3WuDNE6Z~>`qE&^ z)QmkU!Lec@CFj+#Il2XkR2_12T2}6fCBDaEyCMQ#7As!L6kid85@Ed%>wk8(r)$TG z(ex#*eot&%3k!Ie+^>{{5|?bndMtKGZ%+xGtrO(|v1Dzs67%h1b*y|zY`XD8yBb1_ zo8qUB-utt&cKZoR%G}_HHSXCcR`|qz#F%DqdtpUNYcuy0K{TrigTXmrUj8|O|q`u4LF7-fH2E>>8)vjdHl^$Q) zmD>|I8wpP#Pmj+ZZhTWW@?df71Pw7*NinRoKHsr;x$CmXLJdF+e7N}_-J})DYGbn- zQN-Y&Sh~6dh387E*zU!Ui@2tP+$D+A%kwoVuM^9IeX-A%TYJce0e^~>aKk|CXx7bz z)w`AC#wCmG>80xxD>2dvKnbuOtPn9+p@h{x5*xNU7Ug8YvL_~k#<4nocLBHdK43SL zqgCqFt_CG8i(o@a>lG@}3a}E-R|phHJs+?Yi;1f}T1>V*7UR8mMh=NIDu$}WbKEqJ zn(EF_jisVGmW%TJ*?;-f%4)?w%dmc*DacN^%+thoH`9_yf{1Yp%g{&SCUqgxngX7_co{vVMPYkek&NvzRH$d;wtPIzAF#Q#8o3*l{~V z`D(E$nrF0Ch<|KQC#%qudkjtaiCO8+g=)v~9jNLSA^OAdfku7ZkR*XE`-yFgSo#!O zVhZp^1!A)$Z-ii+@N6p$EtH;pWopV@h-p>_B1uxZbPkTmJmw-kI>$;{!4Q#IT{-}j zIL@oO1MW@e3MG(4>1~J!)M)QbR1E6tHtQWD1|Ntm7k?^{Rw$vQFMIOA3h;B8W5vWA zO+AX^CauJcceo=pW!fvNW6$xJsTh`7QVe&5tx%CxG_nh& z?H$F9#ZU@(>-%Ui*{`~S_PSP=ba5OpC^eKGID--zWX?+9>EQ{18uOA2L$m#K>)`GB zQUwT?aDVe9w0<-UAS1@*bXyJ)gVio4rV*o6V*2-Db4eEe>2EeDuP%-CYLg@dpuSX9 z!{kU?PPdT*P%*W4+dCcX@=HonhOq}XCDoNG)E-0a=_8To3*ca`6NIK(Zq(RVdJ17J zG)bf_9>p8mJ3Z0oRjBTAd_F%YlpE>uV>WZ9Vt(vKV0?2DJp#<7{ z2RR4-RlqsQRE!&Q9czHawtuM%#JZTo01UUEG?4jPU}@bQ#RNAcx>)RqarRSTg%QtQ zA-2+8R?27)FIWkf#)g$dw$>|=RWypBBJ(dPmR^!uSL#v>KD&fqF%BBor5ZzGqOl=v znSZl9C?+259w!DRkOe9$fvd|ED*K0gjM87D=Efq^sv)ivYQmk-DU2n z(hWY+O37>%pe=L#y7rqnJB4U|o+=NC%psvy-A zrf}3m$Ly-^3LTW_SGkI^j*krhrmZq}5amC48E62{Dwf5EE`0D*@YdSbqt6 zO>V(TBKP5@+l%V6Dw3?xKNSddbJpU7?c18 zMOZ-z(Bv3tBjNsz)#qYpirg9je7akM^;nGEI94nMtFE*-Zqll|wWJl0;W}2V{WO~{ zf!cJ|(vN;CBSk(?tkHAA{`ohzJ%8?9eBK8AO6Fgc_)WUg=<#=YY|L^)0TkZWqF9Nq z5W%NwoG#J(vbLH;M|is@tBO?`Gh!8pztZoWVeUG3y6kJ2M>}D%E4&0!42v<=kXDUI zyI{g2AuI8aC?_`kFlz#{m#GqG; zM}hJT$Dm+&MZM8T3?@UwSd2zdP1!x@yRv7pt2uwOXV6eW z#ORO|;wF~Q+#shB@PPGhR-GFjN8z;vk+7S+nlmAPU-jsFGzt zk5rZZ5#(3TuzdT;9N`8ZO`MkLN5wt@VwuBY^6HD}>7ukxg}6e~Kw(fk?~Ue81BJf; zna76?#O)J1EB%`Ndz{R9`FLqDant3ok8&8|vDlGfT#-*hS&2^^uz!`9os0%kVm^vV zHyN(t2&;c81|?DWe4pzO~ zOXlM}bUVZh!AkVFCx1NZDBpJxL%0Cz?TJl~@eKQr`zf+KIX9W~3|10(p!%(9$xurz5-H5B!=-*ep4d#(G~lMiFt{Sq0hUY^1CfETtAsI-7I>^N$m7(q?6c5 z>?C#)JBgjdPGTpqli1se{Q?{i`<3|B#ePZt2LL&?6!YOeaR2}S07*qoM6N<$f)UBF AO8@`> literal 3948 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

#MuVzBlsNOfp#&ULgvG$ru?*)yZKO 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 mhQG--`KN>R|Mk9qO#gpwuDq8VQ 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 M07*qoM6N<$g7T*Be*gdg diff --git a/Resources/04-C.png b/Resources/04-C.png index cfc5fe2deea3e79bafdd71653dceee5a975946ef..874bbb1ba7847a95bb583d0ec5d8ded7e9b119b3 100644 GIT binary patch delta 3504 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 diff --git a/Resources/05-B.png b/Resources/05-B.png index 957bff2194ed0419f7975e9564b7a07dd798b854..ba177d78f41c4d8086ebe0d3203017dd163ed7f4 100644 GIT binary patch delta 3588 zcmV+f4*T(@AB7x{BYzFdNklP^8IEG945PI)8uaY-R9XmZ|9-=mzQ(q4>Plqaz0_I zKOEIX{Ogwf!0ZpF7wN^;xijGY;q)SR#Ol~s#^xUl6z+(1xqqOE`-49hRyc|s#g1Y} zv7^{g>|e~aYqf<*W45~yS*H-xog5_{!+y_XfH=>E3;81q$u0MVE*{V14?AI zd68@84Id-vP>rH?CD}a);DARtYYij0(GK; zBAkFaF`C?_JAc2f@>IlqZEBX0PE@hJOilWPF4q;t&#&_-vo0KB?&0+s#884~5ra<| zO#n^~KKE$E5HKovlgm%x@meZDtP(HK*Vzxn^3Wx+(7yI8uqqtn;Z|B5UaU#sqmfcq zIgw9#-+4DZ5c4)1ly4Psq8e?~D_kx~`!rXnRFATgX-(`T1M;UYb12I%(O?`@tV(p0J6-K~nMD{4PCshaS&UvoVgOz0 z!nFjK64zh?-vlfstqPD_39BMB4=hGjfVx^jX3LO5iWNV?+C%O+u)4l9$B2DdfbI6< z$bUxAwW&lXy}vpE6f1H&m>80f5N(~()lx<0N<}6pDG9k3#tW#mM4(`WlEgS-Hf^p~KL8!&wXtMRgi!n~ZYo=F+J1WV`te0%tOp zR7C=c!~@%}GePMv>Nt}c)&5Gw808qm(|^S28(bcn_(kUW~;8F58UXfn}A9j197{Wzj zy;WlDT*4i(VE`q>Ub@>B0i=A(A0nq=yWIn;`Ilsf}16 z4~1c5T^N&#lL^##6$*JcbM1HF(yoe+ zpxbUh7Pz46*4=j1ZNFu~<$&9@C4W(7VY2Y4U0E-0SKkCUzA&^rnSpj0ccmCQQrU>R z0T&&NICz4XxKqq@5`)#kvu>`escVC7ovLCp*Mt=j2h%k01@GTC|v!2moeN(Z(j`ILeL&91|_mW zNvU}Imvi=7=R6dKn@`M4CLwWi@v16P8LmyQBonf!GNMcu^ay|$VnvV-;zoMGTL*5y zF|=#no%=3I(TfZbgV-|F9)BlR#nkwqoiOVn1{mE0uI`WJEZhk6gbi@>Dbuf);KA<6m)``G2i}csp*@) z|BHi#xTEQD44paGHIRo>kPWQsv@K`h)FB=gL+3bHQIsD0*MBN3p+tJo&9y2uHprtX#B5!&6)`A*Xlk?7BgE=5`LS5@>tY1l;1ez8rDzpJ-6OXhv2_s; z(1Q|a%K&1x;grPiGEyQADkhSR%kme+0L5y0eoA8W$70u>qoyLtfWt-ZZ4iK%1yHlEc;Bbtp^;w}32_JIl0J7R>;%Y&v)h-DSQ3gu(PkOJ>K zi#`+W-qqO&;hmk36~KAU+!1r4jSN;S=Gz8XxI*l~nSWsM^gGv$=Qi%!N4KGg15jeO zc3nzCj1tNpc_E)c`0gy6i4R230K`1YP%!t!mf7scb@L><)3vs5wR!$>871Gd@`t0Est#F?hw z2KUX~<9}X|{u6i(4T6>kOCAJbz|m9X3#Myxm8OcRTn@A?I^P^*(c3JV)_FkKhNw2* zJ_jEIA61AZLU73d_e-0vX`L=+j@dKZ3W0uFF0eozPQH9FwqHE3`lQL_i=T>B@g<wXSn|1Sb@D z2H~ITzA39Wl=^NQr>bx=O&#P)HS{ zsZwE;I=p;CZahuK6J*QOY|_cYVw>CqaD(Apu@TB2u%{8HC6{87Lo?73J*tmH8*vXu&xGOUjz6;8DM3pRKe_dw;jl|J&3goHh@w_gxJ9TO5 zGQrdaRbscLtxhM`iAjrqWuz@rihO`|FZaS{Fz;;iHOC(Dub>IZDJ$T2b6MTu&Dxx3+Lv>4u1@b#GrRkKSU`61_dY zR}B3uS>YfJdaHZII2Cyrk*#3J;rd5nwBRyqxq%*X!=~Owt$TU0AY^}TGk-MHpi84J zuA`-7k@@O*cvpH5HYby3N=_-kr>4RZZL!rx!t^RA-4T{N@8c4 zw)yOE#D*nFXE_8-6)W$ImGu2oEX95d`@kDmhRWs=b)xnAYH<074K`a@QYFF7(wA6Y z-8$S&^>I*=kWIucCArH{RfPkZib^c0>irUAraj9K3Zxr+kn5t=?tk~|$q^lV>VC74 z!DnBoyNhHHhMj%7+IR6*xkB#A8Qn^kntt%0)j!@#l^Keg!`nXUVd%|Qo!Y&-i{j3( zne@&Y?~WL|ak#2qu==NB)DgiAhWlG|pvPhynH`7y8pV0IA2D+KNxeG!zI(Bknbz$q zOCs6>-rvP{P~+;j+<*H!l8n~{V_e>E#@kfo4r60yH29l-v;(m!ngAT|nGxe1?yyUP zVz{&Uh4=A^%MlxL7oAXoPaRKwCH(jGHF`#5Q^OG?95^?%Lp$8e*L>wPT(Nc%M-w4z#9=sh`x z{6l_7Ri)5^Y1*4)%?|^|vh?u0mJ0 zlHcVhcKq?_QS2yo6g!F?#g1Y}v7^{g?66`lfP2JV5-(lsMe;xWQ8r5hJnnY@0000< KMNUMnLSTZhnA~ds literal 4006 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 M07*qoM6N<$g1{}~XaE2J diff --git a/Resources/06-A.png b/Resources/06-A.png index 6f3405a4ffa285dab29059a7b3d2990b1cbf8369..8787445ed1ab8dfece3801df7bd4ffe3eb1a228e 100644 GIT binary patch literal 4032 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 FV1lCQCzSvI literal 4180 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 AF8}}l literal 4226 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 YAB_93=Pn`a#Q*>R07*qoM6N<$f}>#tZvX%Q diff --git a/Resources/09-7.png b/Resources/09-7.png index 3880476c53059c4d61db83507211488f9fb87a38..0d6e3b2983891f98b4a52113e7f60558346f7a44 100644 GIT binary patch delta 2028 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 JPDHLkV1l3RJdOYW delta 1948 zcmV;N2V?lk6S5VMBMtxrXF*Lt006O%3;baPu^|ove*g(^NLh0L01m=m!FRJL_8mDh%4!!Xx%6?I8S{{K(fxmPy9K$`B!KI}u3mKY78 z)lxZMS^I9!_lH2GjN`P@GP5pERO3rqHcC3LGA9+m&3WJU2S6r?lWAdfQ|fe@d#7Y3 zbFYoJ(lv+?;o7%7r;dYE94Cov^wL%?Rf9n$>jqI(($%Vh9Cps+?{+*t4vMLyZf6c0(qZ!hY0uh)2gH)ayBd1y8e{0pbv=1tlUY$f`-3&$$M2^|iFqwnf zEr`>AI9I~y*!DpUKvyW}{;aj2588$n5`oIqMqoPhL6$(9>+5TpZo#A07fyB_`!)@E zd82Z**@(=|4?veM?l#xo(9pJHg21}QAq}@55akM-7oW6U_CZTL7{uM(rX7xU!qMF8 z76iK0O(3S+-Q5Y7l|>(fe`iMxNq61AhPkjC&9)0fc744e(2EaBd0X_%UNlBI@%LJ8he19x%STLSo%^-Rw%bOH#cyT*Pk#s0m2R3M!6--WPB>T(cTvpTYw$V zo3}}9y?G@j7n8{v%3!~$C$?0nfJ#7CV|kQ7WOjNgDHEHvmfE z`y)y)EL0$&ZXk89-5UxEfhnnS=M+|uV~S?83>lD?R*)#RigSS#gX@of7J&e&@nY51YK~LV-#TKX{wA?)3BvE3Yrx-w0N)7C#XUmpj}V_5-_J@ z+_jg!!GTHVTRjJ66PtF1NGECZD~(p-6n-HZyh4f)2B#F`oYhN@h4BlDK*FMjq0`uL z|20K=-k0g}@)Mqi@w9R#uR5O}2o1Lv=#7iZc+z~le|)9Nk00$6dvuGfx}=X?kF&oS z?UX8o71ZI-mPnjoGVe4UPjDuv)0mELI84rW;yN~J?ZJ@sj@h+S(S#UigsQ+V)iz^lv#Atvp7PkOc@;3e6zHR zJvm Date: Sat, 5 Nov 2011 22:14:34 +0900 Subject: [PATCH 3/8] Move to Korean Strings to Resource for i18n. Update Japanese Translation. Add English Translation. --- CookImplement.cs | 1140 +++++++++++++++--------------- CookImplement.csproj | 5 + Dialog/ErrorDialog.Designer.cs | 2 - Dialog/ErrorDialog.cs | 4 +- Dialog/ErrorDialog.en.resx | 149 ++++ Dialog/ErrorDialog.ja-JP.resx | 2 +- Dialog/ErrorDialog.resx | 58 +- Properties/Resources.Designer.cs | 462 ++++++++---- Properties/Resources.en.resx | 226 ++++++ Properties/Resources.ja-JP.resx | 226 ++++++ Properties/Resources.resx | 378 ++++++---- 11 files changed, 1761 insertions(+), 891 deletions(-) create mode 100644 Dialog/ErrorDialog.en.resx create mode 100644 Properties/Resources.en.resx create mode 100644 Properties/Resources.ja-JP.resx diff --git a/CookImplement.cs b/CookImplement.cs index 5743d29..ff1e409 100644 --- a/CookImplement.cs +++ b/CookImplement.cs @@ -1,565 +1,577 @@ -using System; -using System.Collections.Generic; -using System.Text; -using System.Drawing; -using CookImplement.Dialog; - -namespace CookImplement -{ - public class Rank - { - public String rName; - public Char rNumber; - public Int32 rIndex; - public Image rImage; - - public enum rNames - { 혼합 = 0, 굽기 = 1, 삶기 = 2, 반죽 = 3, 끓이기 = 4, 면 = 5, 튀기기 = 6, 볶기 = 7, 파스타 = 8, 잼 = 9, 파이 = 10 }; - - public Rank(Char RankNumber) - { - - this.rNumber = RankNumber; - } - public Rank(int RankNumber) - { - - } - - public static char checkRank(int i) - { - switch (i) - { - case 0: return 'P'; - case 1: return 'F'; - case 2: return 'E'; - case 3: return 'D'; - case 4: return 'C'; - case 5: return 'B'; - case 6: return 'A'; - case 7: return '9'; - case 8: return '8'; - case 9: return '7'; - case 10: return '6'; - default: return '\0'; - } - } - public static int checkRank(char c) - { - switch (c) - { - case 'P': return 0; - case 'F': return 1; - case 'E': return 2; - case 'D': return 3; - case 'C': return 4; - case 'B': return 5; - case 'A': return 6; - case '9': return 7; - case '8': return 8; - case '7': return 9; - case '6': return 10; - default: return -1; - } - } - } - public class Cook - { - public enum RankName - { 혼합 = 0, 굽기 = 1, 삶기 = 2, 반죽 = 3, 끓이기 = 4, 면 = 5, 튀기기 = 6, 볶기 = 7, 파스타 = 8, 잼 = 9, 파이 = 10 }; - private int cNumber; - private String cName; - private String cRank; - private int[] cEffect; - private String cSpecialEffect = ""; - private String[] cStuff; - private int[] cStuffRatio; - - public Cook(string data) - { - RefreshData(data); - } - public Cook() - { - } - - public void RefreshData(string s) - { - short foodindex = 0, i = 0, j = 0; - string[] datas = s.Split(';'); - string[] buffer; - cEffect = new int[11]; - int[] intbuffer = new int[3]; - try - { - for (j = 0; j < cEffect.Length; j++) cEffect[j] = 0; - while (i < 5) - { - switch (i) - { - case 0: - cNumber = foodindex; - cName = datas[i]; - break; - case 1: - cRank = datas[i]; - break; - case 2: - cStuff = datas[i].Split(','); - break; - case 3: // 091120 Fix : Data File 구조 변경 - buffer = datas[i].Split(','); - for (j = 0; j < buffer.Length; j++) - { - string[] parsebuffer = buffer[j].Split(':'); - int parsemode = int.Parse(parsebuffer[0]); - if (parsemode == 0) - { - if (parsebuffer[1].Equals("1")) - { - cSpecialEffect += "요리재료"; - cEffect[parsemode] += 1; - } - else - { - cSpecialEffect += parsebuffer[1]; - if (!parsebuffer[1].Contains("없음")) cEffect[parsemode] += 2; - else cEffect[parsemode] = -1; - } - } - else if (parsemode == 10) - { - cEffect[parsemode] = int.Parse(parsebuffer[1]); - cSpecialEffect += "다이어트 효과"; - } - else - { - cEffect[parsemode] = int.Parse(parsebuffer[1]); - } - } - break; - case 4: - buffer = datas[i].Split(','); - j = 0; - while (j < 3) - { - intbuffer[j] = int.Parse(buffer[j]); - j++; - } - cStuffRatio = intbuffer; - break; - } - i++; - } - } - catch (IndexOutOfRangeException e) - { - - ErrorDialog error = new ErrorDialog(s, e.StackTrace); error.ShowDialog(); - } - } - public static char checkRank(int i) - { - switch (i) - { - case 0: return 'P'; - case 1: return 'F'; - case 2: return 'E'; - case 3: return 'D'; - case 4: return 'C'; - case 5: return 'B'; - case 6: return 'A'; - case 7: return '9'; - case 8: return '8'; - case 9: return '7'; - case 10: return '6'; - default: return '\0'; - } - } - public static int checkRank(char c) - { - switch (c) - { - case 'P': return 0; - case 'F': return 1; - case 'E': return 2; - case 'D': return 3; - case 'C': return 4; - case 'B': return 5; - case 'A': return 6; - case '9': return 7; - case '8': return 8; - case '7': return 9; - case '6': return 10; - default: return -999; - } - } - - public char Rank - { - get - { - char[] buffer = cRank.ToCharArray(); - return buffer[0]; - } - } - public String Name - { - get { return cName; } - } - public String[] Stuff - { - get { return cStuff; } - } - public String SEffect - { - get { return cSpecialEffect; } - } - - public int getNumber() - { - return cNumber; - } - public char getRank() - { - char[] buffer = cRank.ToCharArray(); - return buffer[0]; - } - public String getRankName() - { - return ""; - } - public String getName() - { - return cName; - } - public String[] getStuff() - { - return cStuff; - } - public String getStuffForString() - { - String buffer = ""; - for (int i = 0; i < cStuff.Length; i++) - { - buffer += cStuff[i]; - if (i == 0) buffer += " / "; - else if (i == 1 && cStuff.Length == 3) buffer += " / "; - } - return buffer; - } - public int[] getEffectArray() - { - return cEffect; - } - public String getEffectToInt() - { - StringBuilder buffer = new StringBuilder(); - for (int i = 0; i < cEffect.Length; i++) - { - if (cEffect[i] != 0) - { - if (i == 0) - { - if (cEffect[i] == 1) buffer.Append(i + ":요리 재료"); - else if (cEffect[i] == 2) buffer.Append(i + ":" + cSpecialEffect); - else if (cEffect[i] == -1) buffer.Append(i + ":효과 없음"); - } - else if (i == 10) buffer.Append(i + ":7"); - else - { - buffer.Append(i + ":"); - if (cEffect[i] > 0) buffer.Append("+" + cEffect[i]); - else buffer.Append(cEffect[i]); - } - buffer.Append(','); - } - } - buffer.Remove(buffer.Length - 1, 1); - buffer.Append(';'); - return buffer.ToString(); - } - public String getEffect() - { - StringBuilder buffer = new StringBuilder(); - for (int i = 0; i < cEffect.Length; i++) - { - if (cEffect[i] != 0) - { - if (!(buffer.Length == 0)) buffer.Append(", "); - switch (i) - { - case 0: - if (cEffect[i] == 1) - { - buffer.Append("요리재료로 쓰임"); - break; - } - else - { - buffer.Append(cSpecialEffect); - break; - } - case 1: - buffer.Append("체력 "); - break; - case 2: - buffer.Append("지력 "); - break; - case 3: - buffer.Append("솜씨 "); - break; - case 4: - buffer.Append("의지 "); - break; - case 5: - buffer.Append("행운 "); - break; - case 6: - buffer.Append("최대생명력 "); - break; - case 7: - buffer.Append("최대마나 "); - break; - case 8: - buffer.Append("최대스태미너 "); - break; - case 9: - buffer.Append("스태미너 회복도 "); - break; - case 10: - if (cEffect[i] > 0) - buffer.Append("다이어트 효과"); - break; - } - if (i != 0 && i != 10) - { - if (cEffect[i] > 0) - buffer.Append("+" + cEffect[i]); - else - buffer.Append(cEffect[i]); - } - } - } - /* if (cSpecialEffect != "") - { - if (buffer != null) buffer.Append(", " + cSpecialEffect); - else buffer.Append(cSpecialEffect); - } */ - return buffer.ToString(); - } - public int[] getRatio() - { - return cStuffRatio; - } - - override public String ToString() - { - StringBuilder buffer = new StringBuilder(); - buffer.Append(cName + ";"); - buffer.Append(cRank + ";"); - for (int i = 0; i < cStuff.Length; i++) - { - buffer.Append(cStuff[i]); - if (i == 0) buffer.Append(','); - else if (i == 1 && cStuff.Length == 3) buffer.Append(','); - } - buffer.Append(';'); - buffer.Append(this.getEffectToInt()); - for (int i = 0; i < cStuffRatio.Length; i++) - { - buffer.Append(cStuffRatio[i]); - if (i != cStuffRatio.Length - 1) buffer.Append(','); - } - return buffer.ToString(); - } - override public bool Equals(Object o) - { - Cook buffer = (Cook)o; - if (this.cName.Equals(buffer.getName())) - return true; - else - return false; - } - override public int GetHashCode() - { - return base.GetHashCode(); - } - } - public class CookData - { - private Cook SelectedCook; private int CookIndex; - private Stuff[] SelectedStuffs = new Stuff[3]; - private List CookList; - private List StuffList; - private String ChkKeyword; - - public Cook cook - { - get { return SelectedCook; } - } - public int cIndex - { - get { return CookIndex; } - } - public Stuff[] stuffs - { - get { return SelectedStuffs; } - } - public List cList - { - get { return CookList; } - } - public List sList - { - get { return StuffList; } - } - - public CookData(List CList, List SList, int index) - { - this.CookList = CList; - this.StuffList = SList; - this.CookIndex = index; - this.SelectedCook = this.CookList[this.CookIndex]; - CheckStuff(); - } - public CookData(List CList, List SList, String name) - { - this.CookList = CList; - this.StuffList = SList; - this.ChkKeyword = name; - this.CookIndex = this.CookList.FindIndex(FindCookName); - this.SelectedCook = this.CookList[CookIndex]; - CheckStuff(); - } - public CookData(List CList, List SList, Cook cook) - { - this.CookList = CList; - this.StuffList = SList; - this.ChkKeyword = cook.getName(); - this.CookIndex = this.CookList.FindIndex(FindCookName); - this.SelectedCook = this.CookList[CookIndex]; - CheckStuff(); - } - - private void CheckStuff() - { - String[] buffer = SelectedCook.getStuff(); - for (int i = 0; i < buffer.Length; i++) - { - this.ChkKeyword = buffer[i]; - SelectedStuffs[i] = StuffList.Find(FindStuffName); - } - } - private bool FindCookName(Cook o) - { - if (o.getName() == ChkKeyword) return true; - else return false; - } - private bool FindStuffName(Stuff o) - { - if (o.sName == ChkKeyword) return true; - else return false; - } - } - public class Stuff - { - public enum SellerName - { - 케이틴 = 0, 글리니스 = 1, 세나 = 2, 글루아스 = 3, 리리스 = 4, - 에피 = 5, 제니퍼 = 6, 루와이 = 7, 피에릭 = 8, 글라니테스 = 9, - 고든 = 10, 프레이저 = 11, 반스트 = 12, 채집 = 13, 요리 = 14, - 루카스 = 15, 카독 = 16 - }; - private String Name; - private int Price; - private List SellingPoint = new List(); - - public String sName - { - get { return this.Name; } - } - public int sPrice - { - get { return this.Price; } - } - public List sSellingPoint - { - get { return this.SellingPoint; } - } - - ///

- /// Make object through 'Console Input' - /// Only for using testments. - /// - public Stuff() - { - try - { - Console.Write("재료 이름을 입력하세요.\n# "); - this.Name = Console.ReadLine(); - Console.Write("재료 가격을 입력하세요.\n# "); - this.Price = Int32.Parse(Console.ReadLine()); - Console.Write("재료 입수 방법을 입력하세요.\n "); - Console.Write("케이틴 = 0, 글리니스 = 1, 세나 = 2, 글루아스 = 3, 리리스 = 4, \n에피 = 5, 제니퍼 = 6, 루와이 = 7, 피에릭 = 8, 글라니테스 = 9, \n반스트 = 10, 고든 = 11, 프레이저 = 12, 채집 = 13, 요리 = 14 \n#"); - int i = -1; - i = Int32.Parse(Console.ReadLine()); - while (i >= 0 && i <= 15) - { - SellingPoint.Add((SellerName)Enum.Parse(typeof(SellerName), i.ToString())); - Console.Write("# "); - i = Int32.Parse(Console.ReadLine()); - } - Console.WriteLine(this.ToString()); - } - catch (IndexOutOfRangeException e) - { - Console.WriteLine("입력한 데이터의 형식이 잘못 되었습니다."); - Console.WriteLine(e.StackTrace); - Console.WriteLine("계속 진행하려면 아무 키나 누르세요."); - } - } - /// - /// Make object through 'Passed Data' - /// - /// Serialized Data - public Stuff(String data) - { - try - { - String[] StuffDatas = data.Split('/'); - if (StuffDatas.Length == 3) - { - String[] SellerDatas = StuffDatas[2].Split(','); - this.Name = StuffDatas[0]; - this.Price = Int32.Parse(StuffDatas[1]); - for (int i = 0; i < SellerDatas.Length; i++) SellingPoint.Add((SellerName)Enum.Parse(typeof(SellerName), SellerDatas[i])); - } - } - catch (IndexOutOfRangeException e) - { - Console.WriteLine("데이터 파일의 형식이 잘못 되었습니다."); - Console.WriteLine(e.StackTrace); - Console.WriteLine("계속 진행하려면 아무 키나 누르세요."); - } - } - public override String ToString() - { - int i = 0; String sellers = ""; - while (i < SellingPoint.Count) - { - sellers += SellingPoint[i++].ToString(); - if (i != SellingPoint.Count) sellers += ','; - } - return Name + "/" + Price + "/" + sellers; - } - public override bool Equals(object obj) - { - return base.Equals(obj); - } - public override int GetHashCode() - { - return base.GetHashCode(); - } - } +using System; +using System.Collections.Generic; +using System.Text; +using System.Drawing; +using CookImplement.Dialog; + +namespace CookImplement +{ + public class Rank + { + public String rName; + public Char rNumber; + public Int32 rIndex; + public Image rImage; + + public enum rNames + { + 혼합 = 0, + 굽기 = 1, + 삶기 = 2, + 반죽 = 3, + 끓이기 = 4, + 면 = 5, + 튀기기 = 6, + 볶기 = 7, + 파스타 = 8, + 잼 = 9, + 파이 = 10 + }; + + public Rank(Char RankNumber) + { + + this.rNumber = RankNumber; + } + public Rank(int RankNumber) + { + + } + + public static char checkRank(int i) + { + switch (i) + { + case 0: return 'P'; + case 1: return 'F'; + case 2: return 'E'; + case 3: return 'D'; + case 4: return 'C'; + case 5: return 'B'; + case 6: return 'A'; + case 7: return '9'; + case 8: return '8'; + case 9: return '7'; + case 10: return '6'; + default: return '\0'; + } + } + public static int checkRank(char c) + { + switch (c) + { + case 'P': return 0; + case 'F': return 1; + case 'E': return 2; + case 'D': return 3; + case 'C': return 4; + case 'B': return 5; + case 'A': return 6; + case '9': return 7; + case '8': return 8; + case '7': return 9; + case '6': return 10; + default: return -1; + } + } + } + public class Cook + { + public enum RankName + { 혼합 = 0, 굽기 = 1, 삶기 = 2, 반죽 = 3, 끓이기 = 4, 면 = 5, 튀기기 = 6, 볶기 = 7, 파스타 = 8, 잼 = 9, 파이 = 10 }; + private int cNumber; + private String cName; + private String cRank; + private int[] cEffect; + private String cSpecialEffect = ""; + private String[] cStuff; + private int[] cStuffRatio; + + public Cook(string data) + { + RefreshData(data); + } + public Cook() + { + } + + public void RefreshData(string s) + { + short foodindex = 0, i = 0, j = 0; + string[] datas = s.Split(';'); + string[] buffer; + cEffect = new int[11]; + int[] intbuffer = new int[3]; + try + { + for (j = 0; j < cEffect.Length; j++) cEffect[j] = 0; + while (i < 5) + { + switch (i) + { + case 0: + cNumber = foodindex; + cName = datas[i]; + break; + case 1: + cRank = datas[i]; + break; + case 2: + cStuff = datas[i].Split(','); + break; + case 3: // 091120 Fix : Data File 구조 변경 + buffer = datas[i].Split(','); + for (j = 0; j < buffer.Length; j++) + { + string[] parsebuffer = buffer[j].Split(':'); + int parsemode = int.Parse(parsebuffer[0]); + if (parsemode == 0) + { + if (parsebuffer[1].Equals("1")) + { + cSpecialEffect += CookImplement.Properties.Resources.StrStuff; + cEffect[parsemode] += 1; + } + else + { + cSpecialEffect += parsebuffer[1]; + if (!parsebuffer[1].Contains(CookImplement.Properties.Resources.StrNothing)) cEffect[parsemode] += 2; + else cEffect[parsemode] = -1; + } + } + else if (parsemode == 10) + { + cEffect[parsemode] = int.Parse(parsebuffer[1]); + cSpecialEffect += CookImplement.Properties.Resources.Effect10; + } + else + { + cEffect[parsemode] = int.Parse(parsebuffer[1]); + } + } + break; + case 4: + buffer = datas[i].Split(','); + j = 0; + while (j < 3) + { + intbuffer[j] = int.Parse(buffer[j]); + j++; + } + cStuffRatio = intbuffer; + break; + } + i++; + } + } + catch (IndexOutOfRangeException e) + { + + ErrorDialog error = new ErrorDialog(s, e.StackTrace); error.ShowDialog(); + } + } + public static char checkRank(int i) + { + switch (i) + { + case 0: return 'P'; + case 1: return 'F'; + case 2: return 'E'; + case 3: return 'D'; + case 4: return 'C'; + case 5: return 'B'; + case 6: return 'A'; + case 7: return '9'; + case 8: return '8'; + case 9: return '7'; + case 10: return '6'; + default: return '\0'; + } + } + public static int checkRank(char c) + { + switch (c) + { + case 'P': return 0; + case 'F': return 1; + case 'E': return 2; + case 'D': return 3; + case 'C': return 4; + case 'B': return 5; + case 'A': return 6; + case '9': return 7; + case '8': return 8; + case '7': return 9; + case '6': return 10; + default: return -999; + } + } + + public char Rank + { + get + { + char[] buffer = cRank.ToCharArray(); + return buffer[0]; + } + } + public String Name + { + get { return cName; } + } + public String[] Stuff + { + get { return cStuff; } + } + public String SEffect + { + get { return cSpecialEffect; } + } + + public int getNumber() + { + return cNumber; + } + public char getRank() + { + char[] buffer = cRank.ToCharArray(); + return buffer[0]; + } + public String getRankName() + { + return ""; + } + public String getName() + { + return cName; + } + public String[] getStuff() + { + return cStuff; + } + public String getStuffForString() + { + String buffer = ""; + for (int i = 0; i < cStuff.Length; i++) + { + buffer += cStuff[i]; + if (i == 0) buffer += " / "; + else if (i == 1 && cStuff.Length == 3) buffer += " / "; + } + return buffer; + } + public int[] getEffectArray() + { + return cEffect; + } + public String getEffectToInt() + { + StringBuilder buffer = new StringBuilder(); + for (int i = 0; i < cEffect.Length; i++) + { + if (cEffect[i] != 0) + { + if (i == 0) + { + if (cEffect[i] == 1) buffer.Append(i + ":" + CookImplement.Properties.Resources.StrStuff); + else if (cEffect[i] == 2) buffer.Append(i + ":" + cSpecialEffect); + else if (cEffect[i] == -1) buffer.Append(i + ":" + CookImplement.Properties.Resources.StrNothing); + } + else if (i == 10) buffer.Append(i + ":7"); + else + { + buffer.Append(i + ":"); + if (cEffect[i] > 0) buffer.Append("+" + cEffect[i]); + else buffer.Append(cEffect[i]); + } + buffer.Append(','); + } + } + buffer.Remove(buffer.Length - 1, 1); + buffer.Append(';'); + return buffer.ToString(); + } + public String getEffect() + { + StringBuilder buffer = new StringBuilder(); + for (int i = 0; i < cEffect.Length; i++) + { + if (cEffect[i] != 0) + { + if (!(buffer.Length == 0)) buffer.Append(", "); + switch (i) + { + case 0: + if (cEffect[i] == 1) + { + buffer.Append("요리재료로 쓰임"); + break; + } + else + { + buffer.Append(cSpecialEffect); + break; + } + case 1: + buffer.Append(CookImplement.Properties.Resources.Effect1); + break; + case 2: + buffer.Append(CookImplement.Properties.Resources.Effect2); + break; + case 3: + buffer.Append(CookImplement.Properties.Resources.Effect3); + break; + case 4: + buffer.Append(CookImplement.Properties.Resources.Effect4); + break; + case 5: + buffer.Append(CookImplement.Properties.Resources.Effect5); + break; + case 6: + buffer.Append(CookImplement.Properties.Resources.Effect6); + break; + case 7: + buffer.Append(CookImplement.Properties.Resources.Effect7); + break; + case 8: + buffer.Append(CookImplement.Properties.Resources.Effect8); + break; + case 9: + buffer.Append(CookImplement.Properties.Resources.Effect9); + break; + case 10: + if (cEffect[i] > 0) + buffer.Append(CookImplement.Properties.Resources.Effect10); + break; + } + if (i != 0 && i != 10) + { + if (cEffect[i] > 0) + buffer.Append("+" + cEffect[i]); + else + buffer.Append(cEffect[i]); + } + } + } + /* if (cSpecialEffect != "") + { + if (buffer != null) buffer.Append(", " + cSpecialEffect); + else buffer.Append(cSpecialEffect); + } */ + return buffer.ToString(); + } + public int[] getRatio() + { + return cStuffRatio; + } + + override public String ToString() + { + StringBuilder buffer = new StringBuilder(); + buffer.Append(cName + ";"); + buffer.Append(cRank + ";"); + for (int i = 0; i < cStuff.Length; i++) + { + buffer.Append(cStuff[i]); + if (i == 0) buffer.Append(','); + else if (i == 1 && cStuff.Length == 3) buffer.Append(','); + } + buffer.Append(';'); + buffer.Append(this.getEffectToInt()); + for (int i = 0; i < cStuffRatio.Length; i++) + { + buffer.Append(cStuffRatio[i]); + if (i != cStuffRatio.Length - 1) buffer.Append(','); + } + return buffer.ToString(); + } + override public bool Equals(Object o) + { + Cook buffer = (Cook)o; + if (this.cName.Equals(buffer.getName())) + return true; + else + return false; + } + override public int GetHashCode() + { + return base.GetHashCode(); + } + } + public class CookData + { + private Cook SelectedCook; private int CookIndex; + private Stuff[] SelectedStuffs = new Stuff[3]; + private List CookList; + private List StuffList; + private String ChkKeyword; + + public Cook cook + { + get { return SelectedCook; } + } + public int cIndex + { + get { return CookIndex; } + } + public Stuff[] stuffs + { + get { return SelectedStuffs; } + } + public List cList + { + get { return CookList; } + } + public List sList + { + get { return StuffList; } + } + + public CookData(List CList, List SList, int index) + { + this.CookList = CList; + this.StuffList = SList; + this.CookIndex = index; + this.SelectedCook = this.CookList[this.CookIndex]; + CheckStuff(); + } + public CookData(List CList, List SList, String name) + { + this.CookList = CList; + this.StuffList = SList; + this.ChkKeyword = name; + this.CookIndex = this.CookList.FindIndex(FindCookName); + this.SelectedCook = this.CookList[CookIndex]; + CheckStuff(); + } + public CookData(List CList, List SList, Cook cook) + { + this.CookList = CList; + this.StuffList = SList; + this.ChkKeyword = cook.getName(); + this.CookIndex = this.CookList.FindIndex(FindCookName); + this.SelectedCook = this.CookList[CookIndex]; + CheckStuff(); + } + + private void CheckStuff() + { + String[] buffer = SelectedCook.getStuff(); + for (int i = 0; i < buffer.Length; i++) + { + this.ChkKeyword = buffer[i]; + SelectedStuffs[i] = StuffList.Find(FindStuffName); + } + } + private bool FindCookName(Cook o) + { + if (o.getName() == ChkKeyword) return true; + else return false; + } + private bool FindStuffName(Stuff o) + { + if (o.sName == ChkKeyword) return true; + else return false; + } + } + public class Stuff + { + public enum SellerName + { + 케이틴 = 0, 글리니스 = 1, 세나 = 2, 글루아스 = 3, 리리스 = 4, + 에피 = 5, 제니퍼 = 6, 루와이 = 7, 피에릭 = 8, 글라니테스 = 9, + 고든 = 10, 프레이저 = 11, 반스트 = 12, 채집 = 13, 요리 = 14, + 루카스 = 15, 카독 = 16 + }; + private String Name; + private int Price; + private List SellingPoint = new List(); + + public String sName + { + get { return this.Name; } + } + public int sPrice + { + get { return this.Price; } + } + public List sSellingPoint + { + get { return this.SellingPoint; } + } + + /// + /// Make object through 'Console Input' + /// Only for using testments. + /// + public Stuff() + { + try + { + Console.Write(CookImplement.Properties.Resources.MsgInsertStuffName+ "\n# "); + this.Name = Console.ReadLine(); + Console.Write(CookImplement.Properties.Resources.MsgInsertStuffPrice + "\n# "); + this.Price = Int32.Parse(Console.ReadLine()); + Console.Write(CookImplement.Properties.Resources.MsgInsertStuffHowToGet + "\n"); + Console.Write(CookImplement.Properties.Resources.MsgLegend + "\n#"); + int i = -1; + i = Int32.Parse(Console.ReadLine()); + while (i >= 0 && i <= 15) + { + SellingPoint.Add((SellerName)Enum.Parse(typeof(SellerName), i.ToString())); + Console.Write("# "); + i = Int32.Parse(Console.ReadLine()); + } + Console.WriteLine(this.ToString()); + } + catch (IndexOutOfRangeException e) + { + Console.WriteLine(CookImplement.Properties.Resources.MsgDataInvalid); + Console.WriteLine(e.StackTrace); + Console.WriteLine(CookImplement.Properties.Resources.MsgContinue); + } + } + /// + /// Make object through 'Passed Data' + /// + /// Serialized Data + public Stuff(String data) + { + try + { + String[] StuffDatas = data.Split('/'); + if (StuffDatas.Length == 3) + { + String[] SellerDatas = StuffDatas[2].Split(','); + this.Name = StuffDatas[0]; + this.Price = Int32.Parse(StuffDatas[1]); + for (int i = 0; i < SellerDatas.Length; i++) SellingPoint.Add((SellerName)Enum.Parse(typeof(SellerName), SellerDatas[i])); + } + } + catch (IndexOutOfRangeException e) + { + Console.WriteLine(CookImplement.Properties.Resources.MsgDataInvalid); + Console.WriteLine(e.StackTrace); + Console.WriteLine(CookImplement.Properties.Resources.MsgContinue); + } + } + public override String ToString() + { + int i = 0; String sellers = ""; + while (i < SellingPoint.Count) + { + sellers += SellingPoint[i++].ToString(); + if (i != SellingPoint.Count) sellers += ','; + } + return Name + "/" + Price + "/" + sellers; + } + public override bool Equals(object obj) + { + return base.Equals(obj); + } + public override int GetHashCode() + { + return base.GetHashCode(); + } + } } \ No newline at end of file diff --git a/CookImplement.csproj b/CookImplement.csproj index d5448a8..b09fd4a 100644 --- a/CookImplement.csproj +++ b/CookImplement.csproj @@ -56,16 +56,21 @@ + + ErrorDialog.cs + ErrorDialog.cs ErrorDialog.cs + ResXFileCodeGenerator Resources.Designer.cs + diff --git a/Dialog/ErrorDialog.Designer.cs b/Dialog/ErrorDialog.Designer.cs index 36d352a..4d9b157 100644 --- a/Dialog/ErrorDialog.Designer.cs +++ b/Dialog/ErrorDialog.Designer.cs @@ -51,7 +51,6 @@ private void InitializeComponent() // textBox1 // resources.ApplyResources(this.textBox1, "textBox1"); - this.textBox1.BackColor = System.Drawing.SystemColors.ButtonFace; this.textBox1.Name = "textBox1"; // // button1 @@ -78,7 +77,6 @@ private void InitializeComponent() // resources.ApplyResources(this, "$this"); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.BackColor = System.Drawing.Color.White; this.Controls.Add(this.linkLabel1); this.Controls.Add(this.button2); this.Controls.Add(this.button1); diff --git a/Dialog/ErrorDialog.cs b/Dialog/ErrorDialog.cs index 660d25a..5e95c8e 100644 --- a/Dialog/ErrorDialog.cs +++ b/Dialog/ErrorDialog.cs @@ -21,8 +21,8 @@ public ErrorDialog(string exception, string target) private void button2_Click(object sender, EventArgs e) { Clipboard.Clear(); - Clipboard.SetText(textBox1.Text); - MessageBox.Show("복사 되었습니다.", "알림", MessageBoxButtons.OK, MessageBoxIcon.Information); + Clipboard.SetText(textBox1.Text); + MessageBox.Show(CookImplement.Properties.Resources.MsgCopied, CookImplement.Properties.Resources.StrInfo, MessageBoxButtons.OK, MessageBoxIcon.Information); } private void button1_Click(object sender, EventArgs e) diff --git a/Dialog/ErrorDialog.en.resx b/Dialog/ErrorDialog.en.resx new file mode 100644 index 0000000..5177f2f --- /dev/null +++ b/Dialog/ErrorDialog.en.resx @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + 264, 30 + + + Please report following content to the developer. +Help us to improve the program. + + + Segoe UI, 14.25pt + + + 162, 25 + + + An error occurred + + + Close + + + Copy + + + 60, 15 + + + Segoe UI, 9pt + + \ No newline at end of file diff --git a/Dialog/ErrorDialog.ja-JP.resx b/Dialog/ErrorDialog.ja-JP.resx index 11bb10f..8d10b94 100644 --- a/Dialog/ErrorDialog.ja-JP.resx +++ b/Dialog/ErrorDialog.ja-JP.resx @@ -119,7 +119,7 @@ - 255, 15 + 255, 30 以下の内容をコピーして、開発者に報告してください。 diff --git a/Dialog/ErrorDialog.resx b/Dialog/ErrorDialog.resx index 45a811d..0db46e3 100644 --- a/Dialog/ErrorDialog.resx +++ b/Dialog/ErrorDialog.resx @@ -143,9 +143,6 @@ linkLabel1 - - System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - 2 @@ -176,12 +173,18 @@ $this + + True + 14, 41 System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 0 + 아래 내용을 복사하여 개발자에게 보고해 주세요. 프로그램 개선에 큰 도움이 됩니다. @@ -210,9 +213,6 @@ System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - $this - True @@ -222,8 +222,8 @@ $this - - True + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 linkLabel1 @@ -237,14 +237,17 @@ 61, 15 - - 에러가 발생했습니다. + + True 14, 305 - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + $this + + + 270, 30 75, 23 @@ -255,11 +258,9 @@ 1 - - True - - - 1 + + + 3, 4, 3, 4 3 @@ -270,14 +271,14 @@ 17, 79 - - 270, 30 + + 1 button1 - - 0 + + System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 닫기 @@ -294,17 +295,16 @@ button2 - - - 3, 4, 3, 4 + + 에러가 발생했습니다. $this - + True - - - ja-JP - + + + en +
\ No newline at end of file diff --git a/Properties/Resources.Designer.cs b/Properties/Resources.Designer.cs index c4e69cd..e171ae9 100644 --- a/Properties/Resources.Designer.cs +++ b/Properties/Resources.Designer.cs @@ -1,140 +1,322 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Runtime Version:4.0.30319.1 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -namespace CookImplement.Properties { - using System; - - - /// - /// A strongly-typed resource class, for looking up localized strings, etc. - /// - // This class was auto-generated by the StronglyTypedResourceBuilder - // class via a tool like ResGen or Visual Studio. - // To add or remove a member, edit your .ResX file then rerun ResGen - // with the /str option, or rebuild your VS project. - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - internal class Resources { - - private static global::System.Resources.ResourceManager resourceMan; - - private static global::System.Globalization.CultureInfo resourceCulture; - - [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] - internal Resources() { - } - - /// - /// Returns the cached ResourceManager instance used by this class. - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Resources.ResourceManager ResourceManager { - get { - if (object.ReferenceEquals(resourceMan, null)) { - global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("CookImplement.Properties.Resources", typeof(Resources).Assembly); - resourceMan = temp; - } - return resourceMan; - } - } - - /// - /// Overrides the current thread's CurrentUICulture property for all - /// resource lookups using this strongly typed resource class. - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Globalization.CultureInfo Culture { - get { - return resourceCulture; - } - set { - resourceCulture = value; - } - } - - internal static System.Drawing.Bitmap _00_P { - get { - object obj = ResourceManager.GetObject("_00_P", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - internal static System.Drawing.Bitmap _01_F { - get { - object obj = ResourceManager.GetObject("_01_F", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - internal static System.Drawing.Bitmap _02_E { - get { - object obj = ResourceManager.GetObject("_02_E", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - internal static System.Drawing.Bitmap _03_D { - get { - object obj = ResourceManager.GetObject("_03_D", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - internal static System.Drawing.Bitmap _04_C { - get { - object obj = ResourceManager.GetObject("_04_C", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - internal static System.Drawing.Bitmap _05_B { - get { - object obj = ResourceManager.GetObject("_05_B", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - internal static System.Drawing.Bitmap _06_A { - get { - object obj = ResourceManager.GetObject("_06_A", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - internal static System.Drawing.Bitmap _07_9 { - get { - object obj = ResourceManager.GetObject("_07_9", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - internal static System.Drawing.Bitmap _08_8 { - get { - object obj = ResourceManager.GetObject("_08_8", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - internal static System.Drawing.Bitmap _09_7 { - get { - object obj = ResourceManager.GetObject("_09_7", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - internal static System.Drawing.Bitmap _10_6 { - get { - object obj = ResourceManager.GetObject("_10_6", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - } -} +//------------------------------------------------------------------------------ +// +// このコードはツールによって生成されました。 +// ランタイム バージョン:4.0.30319.239 +// +// このファイルへの変更は、以下の状況下で不正な動作の原因になったり、 +// コードが再生成されるときに損失したりします。 +// +//------------------------------------------------------------------------------ + +namespace CookImplement.Properties { + using System; + + + /// + /// ローカライズされた文字列などを検索するための、厳密に型指定されたリソース クラスです。 + /// + // このクラスは StronglyTypedResourceBuilder クラスが ResGen + // または Visual Studio のようなツールを使用して自動生成されました。 + // メンバーを追加または削除するには、.ResX ファイルを編集して、/str オプションと共に + // ResGen を実行し直すか、または VS プロジェクトをビルドし直します。 + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() { + } + + /// + /// このクラスで使用されているキャッシュされた ResourceManager インスタンスを返します。 + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("CookImplement.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// 厳密に型指定されたこのリソース クラスを使用して、すべての検索リソースに対し、 + /// 現在のスレッドの CurrentUICulture プロパティをオーバーライドします。 + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + + internal static System.Drawing.Bitmap _00_P { + get { + object obj = ResourceManager.GetObject("_00_P", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + internal static System.Drawing.Bitmap _01_F { + get { + object obj = ResourceManager.GetObject("_01_F", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + internal static System.Drawing.Bitmap _02_E { + get { + object obj = ResourceManager.GetObject("_02_E", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + internal static System.Drawing.Bitmap _03_D { + get { + object obj = ResourceManager.GetObject("_03_D", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + internal static System.Drawing.Bitmap _04_C { + get { + object obj = ResourceManager.GetObject("_04_C", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + internal static System.Drawing.Bitmap _05_B { + get { + object obj = ResourceManager.GetObject("_05_B", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + internal static System.Drawing.Bitmap _06_A { + get { + object obj = ResourceManager.GetObject("_06_A", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + internal static System.Drawing.Bitmap _07_9 { + get { + object obj = ResourceManager.GetObject("_07_9", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + internal static System.Drawing.Bitmap _08_8 { + get { + object obj = ResourceManager.GetObject("_08_8", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + internal static System.Drawing.Bitmap _09_7 { + get { + object obj = ResourceManager.GetObject("_09_7", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + internal static System.Drawing.Bitmap _10_6 { + get { + object obj = ResourceManager.GetObject("_10_6", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 체력 に類似しているローカライズされた文字列を検索します。 + /// + internal static string Effect1 { + get { + return ResourceManager.GetString("Effect1", resourceCulture); + } + } + + /// + /// 다이어트 효과 に類似しているローカライズされた文字列を検索します。 + /// + internal static string Effect10 { + get { + return ResourceManager.GetString("Effect10", resourceCulture); + } + } + + /// + /// 지력 に類似しているローカライズされた文字列を検索します。 + /// + internal static string Effect2 { + get { + return ResourceManager.GetString("Effect2", resourceCulture); + } + } + + /// + /// 솜씨 に類似しているローカライズされた文字列を検索します。 + /// + internal static string Effect3 { + get { + return ResourceManager.GetString("Effect3", resourceCulture); + } + } + + /// + /// 의지 に類似しているローカライズされた文字列を検索します。 + /// + internal static string Effect4 { + get { + return ResourceManager.GetString("Effect4", resourceCulture); + } + } + + /// + /// 행운 に類似しているローカライズされた文字列を検索します。 + /// + internal static string Effect5 { + get { + return ResourceManager.GetString("Effect5", resourceCulture); + } + } + + /// + /// 최대생명력 に類似しているローカライズされた文字列を検索します。 + /// + internal static string Effect6 { + get { + return ResourceManager.GetString("Effect6", resourceCulture); + } + } + + /// + /// 최대마나 に類似しているローカライズされた文字列を検索します。 + /// + internal static string Effect7 { + get { + return ResourceManager.GetString("Effect7", resourceCulture); + } + } + + /// + /// 최대스태미너 に類似しているローカライズされた文字列を検索します。 + /// + internal static string Effect8 { + get { + return ResourceManager.GetString("Effect8", resourceCulture); + } + } + + /// + /// 스태미너 회복도 に類似しているローカライズされた文字列を検索します。 + /// + internal static string Effect9 { + get { + return ResourceManager.GetString("Effect9", resourceCulture); + } + } + + /// + /// 계속 진행하려면 아무 키나 누르세요. に類似しているローカライズされた文字列を検索します。 + /// + internal static string MsgContinue { + get { + return ResourceManager.GetString("MsgContinue", resourceCulture); + } + } + + /// + /// 복사 되었습니다. に類似しているローカライズされた文字列を検索します。 + /// + internal static string MsgCopied { + get { + return ResourceManager.GetString("MsgCopied", resourceCulture); + } + } + + /// + /// 입력한 데이터의 형식이 잘못 되었습니다. に類似しているローカライズされた文字列を検索します。 + /// + internal static string MsgDataInvalid { + get { + return ResourceManager.GetString("MsgDataInvalid", resourceCulture); + } + } + + /// + /// 재료 입수 방법을 입력하세요. に類似しているローカライズされた文字列を検索します。 + /// + internal static string MsgInsertStuffHowToGet { + get { + return ResourceManager.GetString("MsgInsertStuffHowToGet", resourceCulture); + } + } + + /// + /// 재료 이름을 입력하세요. に類似しているローカライズされた文字列を検索します。 + /// + internal static string MsgInsertStuffName { + get { + return ResourceManager.GetString("MsgInsertStuffName", resourceCulture); + } + } + + /// + /// 재료 가격을 입력하세요. に類似しているローカライズされた文字列を検索します。 + /// + internal static string MsgInsertStuffPrice { + get { + return ResourceManager.GetString("MsgInsertStuffPrice", resourceCulture); + } + } + + /// + /// 케이틴 = 0, 글리니스 = 1, 세나 = 2, 글루아스 = 3, 리리스 = 4, + ///에피 = 5, 제니퍼 = 6, 루와이 = 7, 피에릭 = 8, 글라니테스 = 9, + ///반스트 = 10, 고든 = 11, 프레이저 = 12, 채집 = 13, 요리 = 14 に類似しているローカライズされた文字列を検索します。 + /// + internal static string MsgLegend { + get { + return ResourceManager.GetString("MsgLegend", resourceCulture); + } + } + + /// + /// 알림 に類似しているローカライズされた文字列を検索します。 + /// + internal static string StrInfo { + get { + return ResourceManager.GetString("StrInfo", resourceCulture); + } + } + + /// + /// 없음 に類似しているローカライズされた文字列を検索します。 + /// + internal static string StrNothing { + get { + return ResourceManager.GetString("StrNothing", resourceCulture); + } + } + + /// + /// 요리재료 に類似しているローカライズされた文字列を検索します。 + /// + internal static string StrStuff { + get { + return ResourceManager.GetString("StrStuff", resourceCulture); + } + } + } +} diff --git a/Properties/Resources.en.resx b/Properties/Resources.en.resx new file mode 100644 index 0000000..afb8245 --- /dev/null +++ b/Properties/Resources.en.resx @@ -0,0 +1,226 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + STR + Str + + + Diet Effect + Diet + + + INT + Int + + + DEX + Dex + + + Will + Will + + + Luck + Luk + + + MaxHP + MaxHP+ + + + Mana + MP + + + MaxSP + MaxSP+ + + + SP + SP+ + + + To continue, please press any key... + + + Copied to the clipboard. + + + Invalid data type enter. + + + Please enter the how to get stuff. + + + Please enter the stuff name. + + + Please enter the price of stuff. + + + Ceitinn = 0, Glynis = 1, Scena = 2, Glewyas = 3, Lilith = 4, +Epi = 5, Jennifer = 6, Ruway = 7, Pierrick = 8, Granites = 9, +Wanst = 10, Gordon = 11, Fraser = 12, by Gathering = 13, by Cooking = 14 + + + Infomation + + + Nothing + + + Cooking Stuff + + + + ..\Resources\00-P.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\01-F.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\02-E.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\03-D.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\04-C.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\05-B.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\06-A.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\07-9.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\08-8.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\09-7.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\10-6.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + \ No newline at end of file diff --git a/Properties/Resources.ja-JP.resx b/Properties/Resources.ja-JP.resx new file mode 100644 index 0000000..09649f5 --- /dev/null +++ b/Properties/Resources.ja-JP.resx @@ -0,0 +1,226 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + STR + Str + + + ダイエット効果 + Diet + + + INT + Int + + + DEX + Dex + + + Will + Will + + + Luck + Luk + + + 最大HP + MaxHP+ + + + マナ + MP + + + 最大スタミナ + MaxSP+ + + + スタミナ + SP+ + + + 続行するには何かキーを押してください... + + + クリップボードにコピーしました。 + + + 無効なデーター型が入力されています。 + + + 材料の入手方法を入力してください。 + + + 材料名を入力してください。 + + + 材料の価格を入力してください。 + + + ケイティン = 0, グリニス = 1, シェーナ = 2, グルアス = 3, リリス = 4, +エピ = 5, ジェニファー = 6, ルワイ = 7, ピエリック = 8, グラニテス = 9, +バンスト = 10, ゴードン = 11, フレイザー = 12, 採集 = 13, 料理 = 14 + + + 情報 + + + なし + + + 料理の材料 + + + + ..\Resources\00-P.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\01-F.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\02-E.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\03-D.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\04-C.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\05-B.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\06-A.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\07-9.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\08-8.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\09-7.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\10-6.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + \ No newline at end of file diff --git a/Properties/Resources.resx b/Properties/Resources.resx index 5287830..08a168f 100644 --- a/Properties/Resources.resx +++ b/Properties/Resources.resx @@ -1,154 +1,226 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - ..\Resources\00-P.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\01-F.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\02-E.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\03-D.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\04-C.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\05-B.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\06-A.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\07-9.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\08-8.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\09-7.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\10-6.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 체력 + Str + + + 다이어트 효과 + Diet + + + 지력 + Int + + + 솜씨 + Dex + + + 의지 + Will + + + 행운 + Luk + + + 최대생명력 + MaxHP+ + + + 최대마나 + MP + + + 최대스태미너 + MaxSP+ + + + 스태미너 회복도 + SP+ + + + 계속 진행하려면 아무 키나 누르세요. + + + 복사 되었습니다. + + + 입력한 데이터의 형식이 잘못 되었습니다. + + + 재료 입수 방법을 입력하세요. + + + 재료 이름을 입력하세요. + + + 재료 가격을 입력하세요. + + + 케이틴 = 0, 글리니스 = 1, 세나 = 2, 글루아스 = 3, 리리스 = 4, +에피 = 5, 제니퍼 = 6, 루와이 = 7, 피에릭 = 8, 글라니테스 = 9, +반스트 = 10, 고든 = 11, 프레이저 = 12, 채집 = 13, 요리 = 14 + + + 알림 + + + 없음 + + + 요리재료 + + + + ..\Resources\00-P.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\01-F.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\02-E.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\03-D.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\04-C.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\05-B.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\06-A.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\07-9.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\08-8.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\09-7.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\10-6.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + \ No newline at end of file From 64df7ace2a4e7e8faf53534c0f1e94eb14bbc1be Mon Sep 17 00:00:00 2001 From: Logue Date: Mon, 7 Nov 2011 23:08:14 +0900 Subject: [PATCH 4/8] Remove png data from locale file. --- CookImplement.cs | 2 +- Dialog/ErrorDialog.cs | 64 ++++++++++++++++----------------- Properties/AssemblyInfo.cs | 16 +++++---- Properties/Resources.en.resx | 34 ------------------ Properties/Resources.ja-JP.resx | 34 ------------------ 5 files changed, 42 insertions(+), 108 deletions(-) diff --git a/CookImplement.cs b/CookImplement.cs index ff1e409..4bd496a 100644 --- a/CookImplement.cs +++ b/CookImplement.cs @@ -304,7 +304,7 @@ public String getEffect() case 0: if (cEffect[i] == 1) { - buffer.Append("요리재료로 쓰임"); + buffer.Append(CookImplement.Properties.Resources.StrStuff); break; } else diff --git a/Dialog/ErrorDialog.cs b/Dialog/ErrorDialog.cs index 5e95c8e..beea26e 100644 --- a/Dialog/ErrorDialog.cs +++ b/Dialog/ErrorDialog.cs @@ -1,33 +1,33 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Data; -using System.Drawing; -using System.Text; -using System.Windows.Forms; - -namespace CookImplement.Dialog -{ - public partial class ErrorDialog : Form - { - public ErrorDialog(string exception, string target) - { - InitializeComponent(); - textBox1.Text += target; - textBox1.Text += "\n" + exception; - linkLabel1.Text = Application.CompanyName; - } - - private void button2_Click(object sender, EventArgs e) - { - Clipboard.Clear(); +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Text; +using System.Windows.Forms; + +namespace CookImplement.Dialog +{ + public partial class ErrorDialog : Form + { + public ErrorDialog(string exception, string target) + { + InitializeComponent(); + textBox1.Text += target; + textBox1.Text += "\n" + exception; + linkLabel1.Text = Application.CompanyName; + } + + private void button2_Click(object sender, EventArgs e) + { + Clipboard.Clear(); Clipboard.SetText(textBox1.Text); - MessageBox.Show(CookImplement.Properties.Resources.MsgCopied, CookImplement.Properties.Resources.StrInfo, MessageBoxButtons.OK, MessageBoxIcon.Information); - } - - private void button1_Click(object sender, EventArgs e) - { - this.Close(); - } - } -} + MessageBox.Show(CookImplement.Properties.Resources.MsgCopied, CookImplement.Properties.Resources.StrInfo, MessageBoxButtons.OK, MessageBoxIcon.Information); + } + + private void button1_Click(object sender, EventArgs e) + { + this.Close(); + } + } +} diff --git a/Properties/AssemblyInfo.cs b/Properties/AssemblyInfo.cs index 24fe5d4..4b5b42b 100644 --- a/Properties/AssemblyInfo.cs +++ b/Properties/AssemblyInfo.cs @@ -1,16 +1,17 @@ using System.Reflection; using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; +using System.Runtime.InteropServices; +using System.Resources; // General Information about an assembly is controlled through the following // set of attributes. Change these attribute values to modify the information // associated with an assembly. -[assembly: AssemblyTitle("CookImplement")] -[assembly: AssemblyDescription("")] +[assembly: AssemblyTitle("CookImplement")] +[assembly: AssemblyDescription("Library for MabiCooker")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("CookImplement")] -[assembly: AssemblyCopyright("Copyright © 2009")] +[assembly: AssemblyProduct("CookImplement")] +[assembly: AssemblyCopyright("Copyright © 2009 deholic")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] @@ -32,5 +33,6 @@ // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] +[assembly: AssemblyVersion("1.0.0.1")] +[assembly: AssemblyFileVersion("1.0.0.1")] +[assembly: NeutralResourcesLanguageAttribute("ko-KR")] diff --git a/Properties/Resources.en.resx b/Properties/Resources.en.resx index afb8245..606dfd0 100644 --- a/Properties/Resources.en.resx +++ b/Properties/Resources.en.resx @@ -189,38 +189,4 @@ Wanst = 10, Gordon = 11, Fraser = 12, by Gathering = 13, by Cooking = 14 Cooking Stuff - - - ..\Resources\00-P.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\01-F.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\02-E.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\03-D.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\04-C.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\05-B.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\06-A.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\07-9.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\08-8.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\09-7.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\10-6.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - \ No newline at end of file diff --git a/Properties/Resources.ja-JP.resx b/Properties/Resources.ja-JP.resx index 09649f5..7371003 100644 --- a/Properties/Resources.ja-JP.resx +++ b/Properties/Resources.ja-JP.resx @@ -189,38 +189,4 @@ 料理の材料 - - - ..\Resources\00-P.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\01-F.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\02-E.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\03-D.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\04-C.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\05-B.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\06-A.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\07-9.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\08-8.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\09-7.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\10-6.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - \ No newline at end of file From a6c156a9c7684922bf659fd32e3bac1b317c8029 Mon Sep 17 00:00:00 2001 From: Logue Date: Mon, 9 Jan 2012 21:23:03 +0900 Subject: [PATCH 5/8] *The locale of the Japanese language file ja-jp from the jp was changed. *To invoke the image of the cooking ranks. *Move to the resource areas that were hard-coded in Korean. *Other minor fixes --- CookImplement.cs | 1174 +++++++++-------- CookImplement.csproj | 15 +- Dialog/ErrorDialog.Designer.cs | 36 +- Dialog/ErrorDialog.cs | 3 +- ...rDialog.ja-JP.resx => ErrorDialog.ja.resx} | 21 + Dialog/ErrorDialog.resx | 415 ++++-- Properties/AssemblyInfo.cs | 68 +- Properties/Resources.Designer.cs | 365 ++++- Properties/Resources.en.resx | 53 +- ...Resources.ja-JP.resx => Resources.ja.resx} | 95 ++ Properties/Resources.resx | 136 +- Resources/00-P.png | Bin 3696 -> 5656 bytes Resources/09-7.png | Bin 2817 -> 2534 bytes Resources/10-6.png | Bin 2506 -> 1953 bytes Resources/button_cancel.png | Bin 0 -> 915 bytes Resources/button_ok.png | Bin 0 -> 684 bytes Resources/critical.png | Bin 0 -> 2489 bytes Resources/gear.ico | Bin 0 -> 7886 bytes Resources/info.png | Bin 0 -> 2270 bytes Resources/warning.png | Bin 0 -> 2012 bytes 20 files changed, 1635 insertions(+), 746 deletions(-) rename Dialog/{ErrorDialog.ja-JP.resx => ErrorDialog.ja.resx} (87%) rename Properties/{Resources.ja-JP.resx => Resources.ja.resx} (72%) create mode 100644 Resources/button_cancel.png create mode 100644 Resources/button_ok.png create mode 100644 Resources/critical.png create mode 100644 Resources/gear.ico create mode 100644 Resources/info.png create mode 100644 Resources/warning.png diff --git a/CookImplement.cs b/CookImplement.cs index 4bd496a..92986a2 100644 --- a/CookImplement.cs +++ b/CookImplement.cs @@ -2,576 +2,646 @@ using System.Collections.Generic; using System.Text; using System.Drawing; +using System.Diagnostics; using CookImplement.Dialog; namespace CookImplement { - public class Rank - { - public String rName; - public Char rNumber; - public Int32 rIndex; - public Image rImage; - - public enum rNames - { - 혼합 = 0, - 굽기 = 1, - 삶기 = 2, - 반죽 = 3, - 끓이기 = 4, - 면 = 5, - 튀기기 = 6, - 볶기 = 7, - 파스타 = 8, - 잼 = 9, - 파이 = 10 - }; - - public Rank(Char RankNumber) - { - - this.rNumber = RankNumber; - } - public Rank(int RankNumber) - { - - } - - public static char checkRank(int i) - { - switch (i) - { - case 0: return 'P'; - case 1: return 'F'; - case 2: return 'E'; - case 3: return 'D'; - case 4: return 'C'; - case 5: return 'B'; - case 6: return 'A'; - case 7: return '9'; - case 8: return '8'; - case 9: return '7'; - case 10: return '6'; - default: return '\0'; - } - } - public static int checkRank(char c) - { - switch (c) - { - case 'P': return 0; - case 'F': return 1; - case 'E': return 2; - case 'D': return 3; - case 'C': return 4; - case 'B': return 5; - case 'A': return 6; - case '9': return 7; - case '8': return 8; - case '7': return 9; - case '6': return 10; - default: return -1; - } - } - } - public class Cook - { - public enum RankName - { 혼합 = 0, 굽기 = 1, 삶기 = 2, 반죽 = 3, 끓이기 = 4, 면 = 5, 튀기기 = 6, 볶기 = 7, 파스타 = 8, 잼 = 9, 파이 = 10 }; - private int cNumber; - private String cName; - private String cRank; - private int[] cEffect; - private String cSpecialEffect = ""; - private String[] cStuff; - private int[] cStuffRatio; - - public Cook(string data) - { - RefreshData(data); - } - public Cook() - { - } + public class Rank + { + public int rId; + public Char rChar; + public Char rNumber; + public String rName; + public Image rImage; + public Rank(Char RankNumber) + { + this.rNumber = RankNumber; + } + public Rank(int RankNumber) + { + this.rId = RankNumber; + } + public static char getRankChar(int i) + { + switch (i) + { + case 0: return 'P'; + case 1: return 'F'; + case 2: return 'E'; + case 3: return 'D'; + case 4: return 'C'; + case 5: return 'B'; + case 6: return 'A'; + case 7: return '9'; + case 8: return '8'; + case 9: return '7'; + case 10: return '6'; + default: return '\0'; + } + } + public static int getRankId(char c) + { + switch (c) + { + case 'P': return 0; + case 'F': return 1; + case 'E': return 2; + case 'D': return 3; + case 'C': return 4; + case 'B': return 5; + case 'A': return 6; + case '9': return 7; + case '8': return 8; + case '7': return 9; + case '6': return 10; + default: return -1; + } + } + public static string getRankName(int i) + { + switch (i) + { + case 0: return CookImplement.Properties.Resources.RankP; + case 1: return CookImplement.Properties.Resources.RankF; + case 2: return CookImplement.Properties.Resources.RankE; + case 3: return CookImplement.Properties.Resources.RankD; + case 4: return CookImplement.Properties.Resources.RankC; + case 5: return CookImplement.Properties.Resources.RankB; + case 6: return CookImplement.Properties.Resources.RankA; + case 7: return CookImplement.Properties.Resources.Rank9; + case 8: return CookImplement.Properties.Resources.Rank8; + case 9: return CookImplement.Properties.Resources.Rank7; + case 10: return CookImplement.Properties.Resources.Rank6; + default: return "?"; + } + } + public static string getRankName(char c) + { + switch (c) + { + case 'P': return CookImplement.Properties.Resources.RankP; + case 'F': return CookImplement.Properties.Resources.RankF; + case 'E': return CookImplement.Properties.Resources.RankE; + case 'D': return CookImplement.Properties.Resources.RankD; + case 'C': return CookImplement.Properties.Resources.RankC; + case 'B': return CookImplement.Properties.Resources.RankB; + case 'A': return CookImplement.Properties.Resources.RankA; + case '9': return CookImplement.Properties.Resources.Rank9; + case '8': return CookImplement.Properties.Resources.Rank8; + case '7': return CookImplement.Properties.Resources.Rank7; + case '6': return CookImplement.Properties.Resources.Rank6; + default: return "?"; + } + } + public static Bitmap getRankBitmap(int i) + { + switch (i) + { + case 0: return CookImplement.Properties.Resources._00_P; + case 1: return CookImplement.Properties.Resources._01_F; + case 2: return CookImplement.Properties.Resources._02_E; + case 3: return CookImplement.Properties.Resources._03_D; + case 4: return CookImplement.Properties.Resources._04_C; + case 5: return CookImplement.Properties.Resources._05_B; + case 6: return CookImplement.Properties.Resources._06_A; + case 7: return CookImplement.Properties.Resources._07_9; + case 8: return CookImplement.Properties.Resources._08_8; + case 9: return CookImplement.Properties.Resources._09_7; + case 10: return CookImplement.Properties.Resources._10_6; + default: return null; + } + } + public static Bitmap getRankBitmap(char c) + { + switch (c) + { + case 'P': return CookImplement.Properties.Resources._00_P; + case 'F': return CookImplement.Properties.Resources._01_F; + case 'E': return CookImplement.Properties.Resources._02_E; + case 'D': return CookImplement.Properties.Resources._03_D; + case 'C': return CookImplement.Properties.Resources._04_C; + case 'B': return CookImplement.Properties.Resources._05_B; + case 'A': return CookImplement.Properties.Resources._06_A; + case '9': return CookImplement.Properties.Resources._07_9; + case '8': return CookImplement.Properties.Resources._08_8; + case '7': return CookImplement.Properties.Resources._09_7; + case '6': return CookImplement.Properties.Resources._10_6; + default: return null; + } + } + } + public class Seller + { + public static string toString(int i) + { + switch (i) + { + case 0: return CookImplement.Properties.Resources.Seller00; // Ceitinn + case 1: return CookImplement.Properties.Resources.Seller01; // Glynis + case 2: return CookImplement.Properties.Resources.Seller02; // Scena + case 3: return CookImplement.Properties.Resources.Seller03; // Glewyas + case 4: return CookImplement.Properties.Resources.Seller04; // Lilith + case 5: return CookImplement.Properties.Resources.Seller05; // Effie + case 6: return CookImplement.Properties.Resources.Seller06; // Jennifer + case 7: return CookImplement.Properties.Resources.Seller07; // Ruway + case 8: return CookImplement.Properties.Resources.Seller08; // Pierrick + case 9: return CookImplement.Properties.Resources.Seller09; // Granites + case 10: return CookImplement.Properties.Resources.Seller10; // Wanst + case 11: return CookImplement.Properties.Resources.Seller11; // Gordon + case 12: return CookImplement.Properties.Resources.Seller12; // Fraser + case 13: return CookImplement.Properties.Resources.Seller13; // by Gathering + case 14: return CookImplement.Properties.Resources.Seller14; // by Cooking + case 15: return CookImplement.Properties.Resources.Seller15; // Lucas + case 16: return CookImplement.Properties.Resources.Seller16; // Kadok + default: return null; + } + } + } + public class Cook + { + private int cNumber; + private String cName; + private String cRank; + private int[] cEffect; + private String cSpecialEffect = ""; + private String[] cStuff; + private int[] cStuffRatio; - public void RefreshData(string s) - { - short foodindex = 0, i = 0, j = 0; - string[] datas = s.Split(';'); - string[] buffer; - cEffect = new int[11]; - int[] intbuffer = new int[3]; - try - { - for (j = 0; j < cEffect.Length; j++) cEffect[j] = 0; - while (i < 5) - { - switch (i) - { - case 0: - cNumber = foodindex; - cName = datas[i]; - break; - case 1: - cRank = datas[i]; - break; - case 2: - cStuff = datas[i].Split(','); - break; - case 3: // 091120 Fix : Data File 구조 변경 - buffer = datas[i].Split(','); - for (j = 0; j < buffer.Length; j++) - { - string[] parsebuffer = buffer[j].Split(':'); - int parsemode = int.Parse(parsebuffer[0]); - if (parsemode == 0) - { - if (parsebuffer[1].Equals("1")) - { - cSpecialEffect += CookImplement.Properties.Resources.StrStuff; - cEffect[parsemode] += 1; - } - else - { - cSpecialEffect += parsebuffer[1]; - if (!parsebuffer[1].Contains(CookImplement.Properties.Resources.StrNothing)) cEffect[parsemode] += 2; - else cEffect[parsemode] = -1; - } - } - else if (parsemode == 10) - { - cEffect[parsemode] = int.Parse(parsebuffer[1]); - cSpecialEffect += CookImplement.Properties.Resources.Effect10; - } - else - { - cEffect[parsemode] = int.Parse(parsebuffer[1]); - } - } - break; - case 4: - buffer = datas[i].Split(','); - j = 0; - while (j < 3) - { - intbuffer[j] = int.Parse(buffer[j]); - j++; - } - cStuffRatio = intbuffer; - break; - } - i++; - } - } - catch (IndexOutOfRangeException e) - { - - ErrorDialog error = new ErrorDialog(s, e.StackTrace); error.ShowDialog(); - } - } - public static char checkRank(int i) - { - switch (i) - { - case 0: return 'P'; - case 1: return 'F'; - case 2: return 'E'; - case 3: return 'D'; - case 4: return 'C'; - case 5: return 'B'; - case 6: return 'A'; - case 7: return '9'; - case 8: return '8'; - case 9: return '7'; - case 10: return '6'; - default: return '\0'; - } - } - public static int checkRank(char c) - { - switch (c) - { - case 'P': return 0; - case 'F': return 1; - case 'E': return 2; - case 'D': return 3; - case 'C': return 4; - case 'B': return 5; - case 'A': return 6; - case '9': return 7; - case '8': return 8; - case '7': return 9; - case '6': return 10; - default: return -999; - } - } + public Cook(string data) + { + RefreshData(data); + } + public Cook() + { + } + public void RefreshData(string s) + { + short foodindex = 0, i = 0, j = 0; + string[] datas = s.Split(';'); + string[] buffer; + cEffect = new int[11]; + int[] intbuffer = new int[3]; + try + { + for (j = 0; j < cEffect.Length; j++) cEffect[j] = 0; + while (i < 5) + { + switch (i) + { + // Food + case 0: + cNumber = foodindex; + cName = datas[i]; + break; + // Rank + case 1: + cRank = datas[i]; + break; + // Stuff + case 2: + cStuff = datas[i].Split(','); + break; + // Effect + case 3: // 091120 Fix : Data File 구조 변경 - public char Rank - { - get - { - char[] buffer = cRank.ToCharArray(); - return buffer[0]; - } - } - public String Name - { - get { return cName; } - } - public String[] Stuff - { - get { return cStuff; } - } - public String SEffect - { - get { return cSpecialEffect; } - } + buffer = datas[i].Split(','); + for (j = 0; j < buffer.Length; j++) + { + string[] parsebuffer = buffer[j].Split(':'); + int parsemode = int.Parse(parsebuffer[0]); + if (parsemode == 0) + { + if (parsebuffer[1].Equals("1")) + { + cSpecialEffect += CookImplement.Properties.Resources.StrStuff; + cEffect[parsemode] += 1; + } + else + { + cSpecialEffect += parsebuffer[1]; + if (!parsebuffer[1].Contains(CookImplement.Properties.Resources.StrNothing)) cEffect[parsemode] += 2; + else cEffect[parsemode] = -1; + } + } + else if (parsemode == 10) + { + cEffect[parsemode] = int.Parse(parsebuffer[1]); + cSpecialEffect += CookImplement.Properties.Resources.Effect10; + } + else + { + cEffect[parsemode] = int.Parse(parsebuffer[1]); + } + } + break; + // Detail + case 4: + buffer = datas[i].Split(','); + j = 0; + while (j < 3) + { + intbuffer[j] = int.Parse(buffer[j]); + j++; + } + cStuffRatio = intbuffer; + break; + } + i++; + } + } + catch (IndexOutOfRangeException e) + { + ErrorDialog error = new ErrorDialog(s, e.StackTrace); error.ShowDialog(); + } + } + public static char checkRank(int i) + { + return CookImplement.Rank.getRankChar(i); + } + public static int checkRank(char c) + { + return CookImplement.Rank.getRankId(c); + } + + + public char Rank + { + get + { + char[] buffer = cRank.ToCharArray(); + return buffer[0]; + } + } + public String Name + { + get { return cName; } + } + public String[] Stuff + { + get { return cStuff; } + } + public String SEffect + { + get { return cSpecialEffect; } + } - public int getNumber() - { - return cNumber; - } - public char getRank() - { - char[] buffer = cRank.ToCharArray(); - return buffer[0]; - } - public String getRankName() - { - return ""; - } - public String getName() - { - return cName; - } - public String[] getStuff() - { - return cStuff; - } - public String getStuffForString() - { - String buffer = ""; - for (int i = 0; i < cStuff.Length; i++) - { - buffer += cStuff[i]; - if (i == 0) buffer += " / "; - else if (i == 1 && cStuff.Length == 3) buffer += " / "; - } - return buffer; - } - public int[] getEffectArray() - { - return cEffect; - } - public String getEffectToInt() - { - StringBuilder buffer = new StringBuilder(); - for (int i = 0; i < cEffect.Length; i++) - { - if (cEffect[i] != 0) - { - if (i == 0) - { - if (cEffect[i] == 1) buffer.Append(i + ":" + CookImplement.Properties.Resources.StrStuff); - else if (cEffect[i] == 2) buffer.Append(i + ":" + cSpecialEffect); - else if (cEffect[i] == -1) buffer.Append(i + ":" + CookImplement.Properties.Resources.StrNothing); - } - else if (i == 10) buffer.Append(i + ":7"); - else - { - buffer.Append(i + ":"); - if (cEffect[i] > 0) buffer.Append("+" + cEffect[i]); - else buffer.Append(cEffect[i]); - } - buffer.Append(','); - } - } - buffer.Remove(buffer.Length - 1, 1); - buffer.Append(';'); - return buffer.ToString(); - } - public String getEffect() - { - StringBuilder buffer = new StringBuilder(); - for (int i = 0; i < cEffect.Length; i++) - { - if (cEffect[i] != 0) - { - if (!(buffer.Length == 0)) buffer.Append(", "); - switch (i) - { - case 0: - if (cEffect[i] == 1) - { - buffer.Append(CookImplement.Properties.Resources.StrStuff); - break; - } - else - { - buffer.Append(cSpecialEffect); - break; - } - case 1: - buffer.Append(CookImplement.Properties.Resources.Effect1); - break; - case 2: - buffer.Append(CookImplement.Properties.Resources.Effect2); - break; - case 3: - buffer.Append(CookImplement.Properties.Resources.Effect3); - break; - case 4: - buffer.Append(CookImplement.Properties.Resources.Effect4); - break; - case 5: - buffer.Append(CookImplement.Properties.Resources.Effect5); - break; - case 6: - buffer.Append(CookImplement.Properties.Resources.Effect6); - break; - case 7: - buffer.Append(CookImplement.Properties.Resources.Effect7); - break; - case 8: - buffer.Append(CookImplement.Properties.Resources.Effect8); - break; - case 9: - buffer.Append(CookImplement.Properties.Resources.Effect9); - break; - case 10: - if (cEffect[i] > 0) - buffer.Append(CookImplement.Properties.Resources.Effect10); - break; - } - if (i != 0 && i != 10) - { - if (cEffect[i] > 0) - buffer.Append("+" + cEffect[i]); - else - buffer.Append(cEffect[i]); - } - } - } - /* if (cSpecialEffect != "") - { - if (buffer != null) buffer.Append(", " + cSpecialEffect); - else buffer.Append(cSpecialEffect); - } */ - return buffer.ToString(); - } - public int[] getRatio() - { - return cStuffRatio; - } + public int getNumber() + { + return cNumber; + } + public char getRank() + { + char[] buffer = cRank.ToCharArray(); + return buffer[0]; + } + public String getRankName() + { + return ""; + } + public String getName() + { + return cName; + } + public String[] getStuff() + { + return cStuff; + } + public String getStuffForString() + { + String buffer = ""; + for (int i = 0; i < cStuff.Length; i++) + { + buffer += cStuff[i]; + if (i == 0) buffer += " / "; + else if (i == 1 && cStuff.Length == 3) buffer += " / "; + } + return buffer; + } + public int[] getEffectArray() + { + return cEffect; + } + public String getEffectToInt() + { + StringBuilder buffer = new StringBuilder(); + for (int i = 0; i < cEffect.Length; i++) + { + if (cEffect[i] != 0) + { + if (i == 0) + { + if (cEffect[i] == 1) buffer.Append(i + ":" + CookImplement.Properties.Resources.StrStuff); + else if (cEffect[i] == 2) buffer.Append(i + ":" + cSpecialEffect); + else if (cEffect[i] == -1) buffer.Append(i + ":" + CookImplement.Properties.Resources.StrNothing); + } + else if (i == 10) buffer.Append(i + ":7"); + else + { + buffer.Append(i + ":"); + if (cEffect[i] > 0) buffer.Append("+" + cEffect[i]); + else buffer.Append(cEffect[i]); + } + buffer.Append(','); + } + } + buffer.Remove(buffer.Length - 1, 1); + buffer.Append(';'); + return buffer.ToString(); + } + public String getEffect() + { + StringBuilder buffer = new StringBuilder(); + for (int i = 0; i < cEffect.Length; i++) + { + if (cEffect[i] != 0) + { + if (!(buffer.Length == 0)) buffer.Append(", "); + switch (i) + { + case 0: + if (cEffect[i] == 1) + { + buffer.Append(CookImplement.Properties.Resources.StrStuff); + break; + } + else + { + buffer.Append(cSpecialEffect); + break; + } + case 1: + buffer.Append(CookImplement.Properties.Resources.Effect1); + break; + case 2: + buffer.Append(CookImplement.Properties.Resources.Effect2); + break; + case 3: + buffer.Append(CookImplement.Properties.Resources.Effect3); + break; + case 4: + buffer.Append(CookImplement.Properties.Resources.Effect4); + break; + case 5: + buffer.Append(CookImplement.Properties.Resources.Effect5); + break; + case 6: + buffer.Append(CookImplement.Properties.Resources.Effect6); + break; + case 7: + buffer.Append(CookImplement.Properties.Resources.Effect7); + break; + case 8: + buffer.Append(CookImplement.Properties.Resources.Effect8); + break; + case 9: + buffer.Append(CookImplement.Properties.Resources.Effect9); + break; + case 10: + if (cEffect[i] > 0) + buffer.Append(CookImplement.Properties.Resources.Effect10); + break; + } + if (i != 0 && i != 10) + { + if (cEffect[i] > 0) + buffer.Append("+" + cEffect[i]); + else + buffer.Append(cEffect[i]); + } + } + } + /* if (cSpecialEffect != "") + { + if (buffer != null) buffer.Append(", " + cSpecialEffect); + else buffer.Append(cSpecialEffect); + } */ + return buffer.ToString(); + } + public int[] getRatio() + { + return cStuffRatio; + } - override public String ToString() - { - StringBuilder buffer = new StringBuilder(); - buffer.Append(cName + ";"); - buffer.Append(cRank + ";"); - for (int i = 0; i < cStuff.Length; i++) - { - buffer.Append(cStuff[i]); - if (i == 0) buffer.Append(','); - else if (i == 1 && cStuff.Length == 3) buffer.Append(','); - } - buffer.Append(';'); - buffer.Append(this.getEffectToInt()); - for (int i = 0; i < cStuffRatio.Length; i++) - { - buffer.Append(cStuffRatio[i]); - if (i != cStuffRatio.Length - 1) buffer.Append(','); - } - return buffer.ToString(); - } - override public bool Equals(Object o) - { - Cook buffer = (Cook)o; - if (this.cName.Equals(buffer.getName())) - return true; - else - return false; - } + override public String ToString() + { + StringBuilder buffer = new StringBuilder(); + buffer.Append(cName + ";"); + buffer.Append(cRank + ";"); + for (int i = 0; i < cStuff.Length; i++) + { + buffer.Append(cStuff[i]); + if (i == 0) buffer.Append(','); + else if (i == 1 && cStuff.Length == 3) buffer.Append(','); + } + buffer.Append(';'); + buffer.Append(this.getEffectToInt()); + for (int i = 0; i < cStuffRatio.Length; i++) + { + buffer.Append(cStuffRatio[i]); + if (i != cStuffRatio.Length - 1) buffer.Append(','); + } + return buffer.ToString(); + } + override public bool Equals(Object o) + { + Cook buffer = (Cook)o; + if (this.cName.Equals(buffer.getName())) + return true; + else + return false; + } override public int GetHashCode() { return base.GetHashCode(); } - } - public class CookData - { - private Cook SelectedCook; private int CookIndex; - private Stuff[] SelectedStuffs = new Stuff[3]; - private List CookList; - private List StuffList; - private String ChkKeyword; - - public Cook cook - { - get { return SelectedCook; } - } - public int cIndex - { - get { return CookIndex; } - } - public Stuff[] stuffs - { - get { return SelectedStuffs; } - } - public List cList - { - get { return CookList; } - } - public List sList - { - get { return StuffList; } - } + } + public class CookData + { + private Cook SelectedCook; private int CookIndex; + private Stuff[] SelectedStuffs = new Stuff[3]; + private List CookList; + private List StuffList; + private String ChkKeyword; - public CookData(List CList, List SList, int index) - { - this.CookList = CList; - this.StuffList = SList; - this.CookIndex = index; - this.SelectedCook = this.CookList[this.CookIndex]; - CheckStuff(); - } - public CookData(List CList, List SList, String name) - { - this.CookList = CList; - this.StuffList = SList; - this.ChkKeyword = name; - this.CookIndex = this.CookList.FindIndex(FindCookName); - this.SelectedCook = this.CookList[CookIndex]; - CheckStuff(); - } - public CookData(List CList, List SList, Cook cook) - { - this.CookList = CList; - this.StuffList = SList; - this.ChkKeyword = cook.getName(); - this.CookIndex = this.CookList.FindIndex(FindCookName); - this.SelectedCook = this.CookList[CookIndex]; - CheckStuff(); - } + public Cook cook + { + get { return SelectedCook; } + } + public int cIndex + { + get { return CookIndex; } + } + public Stuff[] stuffs + { + get { return SelectedStuffs; } + } + public List cList + { + get { return CookList; } + } + public List sList + { + get { return StuffList; } + } - private void CheckStuff() - { - String[] buffer = SelectedCook.getStuff(); - for (int i = 0; i < buffer.Length; i++) - { - this.ChkKeyword = buffer[i]; - SelectedStuffs[i] = StuffList.Find(FindStuffName); - } - } - private bool FindCookName(Cook o) - { - if (o.getName() == ChkKeyword) return true; - else return false; - } - private bool FindStuffName(Stuff o) - { - if (o.sName == ChkKeyword) return true; - else return false; - } - } - public class Stuff - { - public enum SellerName - { - 케이틴 = 0, 글리니스 = 1, 세나 = 2, 글루아스 = 3, 리리스 = 4, - 에피 = 5, 제니퍼 = 6, 루와이 = 7, 피에릭 = 8, 글라니테스 = 9, - 고든 = 10, 프레이저 = 11, 반스트 = 12, 채집 = 13, 요리 = 14, - 루카스 = 15, 카독 = 16 - }; - private String Name; - private int Price; - private List SellingPoint = new List(); + public CookData(List CList, List SList, int index) + { + this.CookList = CList; + this.StuffList = SList; + this.CookIndex = index; + this.SelectedCook = this.CookList[this.CookIndex]; + CheckStuff(); + } + public CookData(List CList, List SList, String name) + { + this.CookList = CList; + this.StuffList = SList; + this.ChkKeyword = name; + this.CookIndex = this.CookList.FindIndex(FindCookName); + this.SelectedCook = this.CookList[CookIndex]; + CheckStuff(); + } + public CookData(List CList, List SList, Cook cook) + { + this.CookList = CList; + this.StuffList = SList; + this.ChkKeyword = cook.getName(); + this.CookIndex = this.CookList.FindIndex(FindCookName); + this.SelectedCook = this.CookList[CookIndex]; + CheckStuff(); + } - public String sName - { - get { return this.Name; } - } - public int sPrice - { - get { return this.Price; } - } - public List sSellingPoint - { - get { return this.SellingPoint; } - } + private void CheckStuff() + { + String[] buffer = SelectedCook.getStuff(); + for (int i = 0; i < buffer.Length; i++) + { + this.ChkKeyword = buffer[i]; + SelectedStuffs[i] = StuffList.Find(FindStuffName); + } + } + private bool FindCookName(Cook o) + { + if (o.getName() == ChkKeyword) return true; + else return false; + } + private bool FindStuffName(Stuff o) + { + if (o.sName == ChkKeyword) return true; + else return false; + } + } + public class Stuff + { + /* + public enum SellerName + { + 케이틴 = 0, 글리니스 = 1, 세나 = 2, 글루아스 = 3, 리리스 = 4, + 에피 = 5, 제니퍼 = 6, 루와이 = 7, 피에릭 = 8, 글라니테스 = 9, + 고든 = 10, 프레이저 = 11, 반스트 = 12, 채집 = 13, 요리 = 14, + 루카스 = 15, 카독 = 16 + }; + */ + private String Name; + private int Price; + //private List SellingPoint = new List(); + private List SellingPoint = new List(); - /// - /// Make object through 'Console Input' - /// Only for using testments. - /// - public Stuff() - { - try - { - Console.Write(CookImplement.Properties.Resources.MsgInsertStuffName+ "\n# "); - this.Name = Console.ReadLine(); - Console.Write(CookImplement.Properties.Resources.MsgInsertStuffPrice + "\n# "); - this.Price = Int32.Parse(Console.ReadLine()); - Console.Write(CookImplement.Properties.Resources.MsgInsertStuffHowToGet + "\n"); - Console.Write(CookImplement.Properties.Resources.MsgLegend + "\n#"); - int i = -1; - i = Int32.Parse(Console.ReadLine()); - while (i >= 0 && i <= 15) - { - SellingPoint.Add((SellerName)Enum.Parse(typeof(SellerName), i.ToString())); - Console.Write("# "); - i = Int32.Parse(Console.ReadLine()); - } - Console.WriteLine(this.ToString()); - } - catch (IndexOutOfRangeException e) - { - Console.WriteLine(CookImplement.Properties.Resources.MsgDataInvalid); - Console.WriteLine(e.StackTrace); - Console.WriteLine(CookImplement.Properties.Resources.MsgContinue); - } - } - /// - /// Make object through 'Passed Data' - /// - /// Serialized Data - public Stuff(String data) - { - try - { - String[] StuffDatas = data.Split('/'); - if (StuffDatas.Length == 3) - { - String[] SellerDatas = StuffDatas[2].Split(','); - this.Name = StuffDatas[0]; - this.Price = Int32.Parse(StuffDatas[1]); - for (int i = 0; i < SellerDatas.Length; i++) SellingPoint.Add((SellerName)Enum.Parse(typeof(SellerName), SellerDatas[i])); - } - } - catch (IndexOutOfRangeException e) - { - Console.WriteLine(CookImplement.Properties.Resources.MsgDataInvalid); - Console.WriteLine(e.StackTrace); - Console.WriteLine(CookImplement.Properties.Resources.MsgContinue); - } - } - public override String ToString() - { - int i = 0; String sellers = ""; - while (i < SellingPoint.Count) - { - sellers += SellingPoint[i++].ToString(); - if (i != SellingPoint.Count) sellers += ','; - } - return Name + "/" + Price + "/" + sellers; - } - public override bool Equals(object obj) - { - return base.Equals(obj); - } + public String sName + { + get { return this.Name; } + } + public int sPrice + { + get { return this.Price; } + } + /* public List sSellingPoint + { + get { return this.SellingPoint; } + } + */ + public List sSellingPoint + { + get { return this.SellingPoint; } + } + /// + /// Make object through 'Console Input' + /// Only for using testments. + /// + public Stuff() + { + try + { + Console.Write(CookImplement.Properties.Resources.MsgInsertStuffName+ "\n# "); + this.Name = Console.ReadLine(); + Console.Write(CookImplement.Properties.Resources.MsgInsertStuffPrice + "\n# "); + this.Price = Int32.Parse(Console.ReadLine()); + Console.Write(CookImplement.Properties.Resources.MsgInsertStuffHowToGet + "\n"); + Console.Write(CookImplement.Properties.Resources.MsgLegend + "\n#"); + int i = -1; + i = Int32.Parse(Console.ReadLine()); + while (i >= 0 && i <= 15) + { + //SellingPoint.Add((SellerName)Enum.Parse(typeof(SellerName), i.ToString())); + SellingPoint.Add( Seller.toString(i) ); + Console.Write("# "); + i = Int32.Parse(Console.ReadLine()); + } + Console.WriteLine(this.ToString()); + } + catch (IndexOutOfRangeException e) + { + Console.WriteLine(CookImplement.Properties.Resources.MsgDataInvalid); + Console.WriteLine(e.StackTrace); + Console.WriteLine(CookImplement.Properties.Resources.MsgContinue); + } + } + /// + /// Make object through 'Passed Data' + /// + /// Serialized Data + public Stuff(String data) + { + try + { + String[] StuffDatas = data.Split('/'); + if (StuffDatas.Length == 3) + { + String[] SellerDatas = StuffDatas[2].Split(','); + this.Name = StuffDatas[0]; + this.Price = Int32.Parse(StuffDatas[1]); + for (int i = 0; i < SellerDatas.Length; i++) + { + //SellingPoint.Add((SellerName)Enum.Parse(typeof(SellerName), SellerDatas[i])); + SellingPoint.Add(Seller.toString(i)); + } + } + } + catch (IndexOutOfRangeException e) + { + Console.WriteLine(CookImplement.Properties.Resources.MsgDataInvalid); + Console.WriteLine(e.StackTrace); + Console.WriteLine(CookImplement.Properties.Resources.MsgContinue); + } + } + public override String ToString() + { + int i = 0; String sellers = ""; + while (i < SellingPoint.Count) + { + sellers += SellingPoint[i++].ToString(); + if (i != SellingPoint.Count) sellers += ','; + } + return Name + "/" + Price + "/" + sellers; + } + public override bool Equals(object obj) + { + return base.Equals(obj); + } public override int GetHashCode() { return base.GetHashCode(); } - } + } } \ No newline at end of file diff --git a/CookImplement.csproj b/CookImplement.csproj index b09fd4a..9e60617 100644 --- a/CookImplement.csproj +++ b/CookImplement.csproj @@ -59,16 +59,17 @@ ErrorDialog.cs - + ErrorDialog.cs ErrorDialog.cs - + - ResXFileCodeGenerator + PublicResXFileCodeGenerator Resources.Designer.cs + Designer @@ -105,6 +106,14 @@ + + + + + + + +