OSDN Git Service

move UVertex impl.
[tdcgexplorer/tso2mqo.git] / FormMaterial.cs
1 using System;\r
2 using System.Collections.Generic;\r
3 using System.ComponentModel;\r
4 using System.Data;\r
5 using System.Drawing;\r
6 using System.IO;\r
7 using System.Text;\r
8 using System.Windows.Forms;\r
9 \r
10 namespace Tso2MqoGui\r
11 {\r
12     public partial class FormMaterial : Form\r
13     {\r
14         public Dictionary<string, MaterialInfo> materials;\r
15 \r
16         public FormMaterial()\r
17         {\r
18             InitializeComponent();\r
19             DialogResult = DialogResult.Cancel;\r
20         }\r
21 \r
22         private void FormMaterial_Load(object sender, EventArgs e)\r
23         {\r
24             foreach (MaterialInfo mat_info in materials.Values)\r
25             {\r
26                 ListViewItem item = lvMaterials.Items.Add(mat_info.Name);\r
27                 item.Tag = mat_info;\r
28                 item.SubItems.Add(mat_info.ColorTexture ?? "");\r
29                 item.SubItems.Add(mat_info.ShadeTexture ?? "");\r
30                 item.SubItems.Add(mat_info.ShaderFile ?? "");\r
31             }\r
32         }\r
33 \r
34         private void bOk_Click(object sender, EventArgs e)\r
35         {\r
36             string error_message = null;\r
37 \r
38             // 正しく情報が設定されているかをチェックする\r
39             foreach (ListViewItem item in lvMaterials.Items)\r
40             {\r
41                 string material_name = item.Text;\r
42 \r
43                 for (int i = 1; i < 4; i++)\r
44                 {\r
45                     string column_name = lvMaterials.Columns[i].Text;\r
46                     string text = item.SubItems[i].Text;\r
47 #if false\r
48                     if (text == "")\r
49                         error_message = string.Format("マテリアル名 {0} の {1} を設定する必要があります。", material_name, column_name);\r
50                     else if (!File.Exists(text))\r
51                         error_message = string.Format("マテリアル名 {0} の {1} は存在しません。", material_name, column_name);\r
52 #endif\r
53                     if (error_message != null)\r
54                     {\r
55                         MessageBox.Show(error_message);\r
56                         item.Selected = true;\r
57                         return;\r
58                     }\r
59                 }\r
60             }\r
61 \r
62             DialogResult = DialogResult.OK;\r
63             Hide();\r
64         }\r
65 \r
66         private void bCancel_Click(object sender, EventArgs e)\r
67         {\r
68             DialogResult = DialogResult.Cancel;\r
69             Hide();\r
70         }\r
71 \r
72         private void lvMaterials_SelectedIndexChanged(object sender, EventArgs e)\r
73         {\r
74             if (lvMaterials.SelectedItems.Count > 0)\r
75             {\r
76                 MaterialInfo mat_info = lvMaterials.SelectedItems[0].Tag as MaterialInfo;\r
77                 pgMaterial.SelectedObject = mat_info;\r
78             }\r
79             else\r
80             {\r
81                 pgMaterial.SelectedObject = null;\r
82             }\r
83         }\r
84 \r
85         private void pgMaterial_PropertyValueChanged(object s, PropertyValueChangedEventArgs e)\r
86         {\r
87             if (lvMaterials.SelectedItems.Count > 0)\r
88             {\r
89                 ListViewItem item = lvMaterials.SelectedItems[0];\r
90 \r
91                 switch (e.ChangedItem.PropertyDescriptor.Name)\r
92                 {\r
93                     case "ColorTexture":\r
94                         item.SubItems[1].Text = e.ChangedItem.Value.ToString();\r
95                         break;\r
96                     case "ShadeTexture":\r
97                         item.SubItems[2].Text = e.ChangedItem.Value.ToString();\r
98                         break;\r
99                     case "ShaderFile":\r
100                         item.SubItems[3].Text = e.ChangedItem.Value.ToString();\r
101                         break;\r
102                 }\r
103             }\r
104         }\r
105     }\r
106 }\r