Elin Decompiled Documentation EA 23.102 Nightly
Loading...
Searching...
No Matches
TextureManager.cs
Go to the documentation of this file.
1using System;
2using System.Collections.Generic;
3using System.IO;
4
5public class TextureManager
6{
7 public Dictionary<string, TextureData> texMap = new Dictionary<string, TextureData>();
8
9 public string pathTex => CorePath.packageCore + "Texture/";
10
11 public void Init()
12 {
15 AddBase(textureData.block, "blocks.png", tileMap.passBlock);
16 AddBase(textureData.floor, "floors.png", tileMap.passFloor);
17 AddBase(textureData.objs_SS, "objs_SS.png", tileMap.passObjSS);
18 AddBase(textureData.objs_S, "objs_S.png", tileMap.passObjS);
19 AddBase(textureData.objs, "objs.png", tileMap.passObj);
20 AddBase(textureData.objs_L, "objs_L.png", tileMap.passObjL);
21 AddBase(textureData.roofs, "roofs.png", tileMap.passRoof);
22 AddBase(textureData.shadows, "shadows.png", tileMap.passShadow);
23 AddBase(textureData.fov, "fov.png", tileMap.passFov);
24 AddBase(textureData.objs_C, "objs_C.png", tileMap.passChara);
25 AddBase(textureData.objs_CLL, "objs_CLL.png", tileMap.passCharaLL);
26 AddBase(textureData.block_snow, "blocks_snow.png", tileMap.passBlock.snowPass);
27 AddBase(textureData.floor_snow, "floors_snow.png", tileMap.passFloor.snowPass);
28 AddBase(textureData.objs_S_snow, "objs_S_snow.png", tileMap.passObjS.snowPass);
29 AddBase(textureData.objs_snow, "objs_snow.png", tileMap.passObj.snowPass);
30 AddBase(textureData.objs_L_snow, "objs_L_snow.png", tileMap.passObjL.snowPass);
31 Add(tileMap.passRamp, textureData.block);
32 Add(tileMap.passWaterBlock, textureData.block);
33 Add(tileMap.passFog, textureData.block);
34 Add(tileMap.passLiquid, textureData.block);
35 Add(tileMap.passBlockEx, textureData.block);
36 Add(tileMap.passInner, textureData.block);
37 Add(tileMap.passBlockMarker, textureData.block);
38 Add(tileMap.passEdge, textureData.floor);
39 Add(tileMap.passFloorEx, textureData.floor);
40 Add(tileMap.passFloorWater, textureData.floor);
41 Add(tileMap.passAutoTile, textureData.floor);
42 Add(tileMap.passShore, textureData.floor);
43 Add(tileMap.passAutoTileWater, textureData.floor);
44 Add(tileMap.passFloorMarker, textureData.floor);
45 Add(tileMap.passCharaL, textureData.objs_C);
46 Add(tileMap.passCharaLW, textureData.objs_C);
47 Add(tileMap.passIcon, textureData.objs_S);
48 AddList(textureData.world, "world.png");
49 AddList(textureData.bird, "bird1.png");
50 FileInfo[] files = new DirectoryInfo(CorePath.user + "/Texture Replace").GetFiles();
51 foreach (FileInfo fileInfo in files)
52 {
53 if (fileInfo.Name.EndsWith(".png"))
54 {
55 TryAddReplace(fileInfo, TextureReplace.Source.User);
56 }
57 }
58 foreach (FileInfo replaceFile in EClass.core.mods.replaceFiles)
59 {
60 TryAddReplace(replaceFile);
61 }
62 }
63
64 public void AddBase(TextureData data, string path, MeshPass pass, string texName = "_MainTex")
65 {
66 texMap[data.id] = data;
67 data.path = pathTex + path;
68 data.texName = texName;
69 data.dictReplace.Clear();
70 data.tileW = data.tex.width / (int)pass.pmesh.tiling.x;
71 data.tileH = data.tex.height / (int)pass.pmesh.tiling.y;
72 texMap[data.id].listPass.Add(pass);
73 }
74
75 public void Add(MeshPass to, TextureData from, string texName = "_MainTex")
76 {
77 texMap[from.id].listPass.Add(to);
78 }
79
80 public void AddList(TextureData data, string path)
81 {
82 data.path = pathTex + path;
83 texMap[data.id] = data;
84 }
85
86 public void RefreshTextures()
87 {
88 foreach (TextureData value in texMap.Values)
89 {
90 value.TryRefresh();
91 }
93 {
95 }
96 }
97
98 public void OnDropFile(List<string> paths)
99 {
100 int num = 0;
101 foreach (string path in paths)
102 {
103 FileInfo fileInfo = new FileInfo(path);
104 if (!TryAddReplace(fileInfo, TextureReplace.Source.User, add: false))
105 {
106 continue;
107 }
108 string text = CorePath.user + "/Texture Replace/" + fileInfo.Name;
109 try
110 {
111 if (File.Exists(text))
112 {
113 File.Delete(text);
114 }
115 fileInfo.CopyTo(text, overwrite: true);
116 }
117 catch (Exception)
118 {
119 }
120 TryAddReplace(new FileInfo(text), TextureReplace.Source.User, add: true, refresh: true);
121 num++;
122 }
123 Msg.Say("Imported " + num + "image(s)");
124 }
125
126 public bool TryAddReplace(FileInfo file, TextureReplace.Source source = TextureReplace.Source.Mod, bool add = true, bool refresh = false)
127 {
128 string[] array = Path.GetFileNameWithoutExtension(file.Name).Split('_');
129 if (array.Length == 1)
130 {
131 return false;
132 }
133 string key = array[0];
134 if (!int.TryParse(array[1], out var result))
135 {
136 return false;
137 }
138 if (!texMap.ContainsKey(key))
139 {
140 return false;
141 }
142 TextureData textureData = texMap[key];
143 if (textureData.listPass.Count == 0)
144 {
145 return false;
146 }
147 if (add)
148 {
149 textureData.AddReplace(new TextureReplace
150 {
151 file = file,
152 index = result,
153 data = textureData,
154 source = source
155 });
156 if (refresh)
157 {
158 textureData.TryRefresh();
159 }
160 }
161 return true;
162 }
163
164 public void ApplyLocalReplace(string path)
165 {
166 foreach (TextureData value in texMap.Values)
167 {
168 if (value.listReplaceLocal.Count > 0)
169 {
170 value.forceRefresh = true;
171 foreach (TextureReplace item in value.listReplaceLocal)
172 {
173 item.DestoryTex();
174 if (item.original != null)
175 {
176 value.dictReplace[item.index] = item.original;
177 }
178 else
179 {
180 value.dictReplace.Remove(item.index);
181 }
182 }
183 }
184 value.listReplaceLocal.Clear();
185 }
186 string path2 = path + "Texture Replace";
187 if (Directory.Exists(path2))
188 {
189 FileInfo[] files = new DirectoryInfo(path2).GetFiles();
190 foreach (FileInfo file in files)
191 {
193 }
194 }
196 }
197}
BaseTileMap tileMap
MeshPass passFog
Definition: BaseTileMap.cs:169
MeshPass passFloor
Definition: BaseTileMap.cs:145
MeshPass passIcon
Definition: BaseTileMap.cs:185
MeshPass passFloorEx
Definition: BaseTileMap.cs:163
MeshPass passObj
Definition: BaseTileMap.cs:153
MeshPass passFloorMarker
Definition: BaseTileMap.cs:181
MeshPass passChara
Definition: BaseTileMap.cs:187
MeshPass passRamp
Definition: BaseTileMap.cs:143
MeshPass passShadow
Definition: BaseTileMap.cs:133
MeshPass passWaterBlock
Definition: BaseTileMap.cs:183
MeshPass passAutoTileWater
Definition: BaseTileMap.cs:177
MeshPass passFov
Definition: BaseTileMap.cs:171
MeshPass passFloorWater
Definition: BaseTileMap.cs:165
MeshPass passAutoTile
Definition: BaseTileMap.cs:175
MeshPass passEdge
Definition: BaseTileMap.cs:173
MeshPass passCharaL
Definition: BaseTileMap.cs:189
MeshPass passLiquid
Definition: BaseTileMap.cs:135
MeshPass passObjSS
Definition: BaseTileMap.cs:151
MeshPass passShore
Definition: BaseTileMap.cs:195
MeshPass passRoof
Definition: BaseTileMap.cs:159
MeshPass passCharaLL
Definition: BaseTileMap.cs:193
MeshPass passCharaLW
Definition: BaseTileMap.cs:191
MeshPass passObjL
Definition: BaseTileMap.cs:155
MeshPass passBlockMarker
Definition: BaseTileMap.cs:179
MeshPass passObjS
Definition: BaseTileMap.cs:149
MeshPass passInner
Definition: BaseTileMap.cs:167
MeshPass passBlockEx
Definition: BaseTileMap.cs:161
MeshPass passBlock
Definition: BaseTileMap.cs:147
static string user
Definition: CorePath.cs:160
TextureData roofs
Definition: CoreRef.cs:282
TextureData bird
Definition: CoreRef.cs:286
TextureData objs
Definition: CoreRef.cs:260
TextureData block
Definition: CoreRef.cs:252
TextureData objs_L_snow
Definition: CoreRef.cs:270
TextureData world
Definition: CoreRef.cs:280
TextureData objs_L
Definition: CoreRef.cs:268
TextureData objs_S_snow
Definition: CoreRef.cs:266
TextureData shadows
Definition: CoreRef.cs:276
TextureData floor_snow
Definition: CoreRef.cs:258
TextureData objs_snow
Definition: CoreRef.cs:262
TextureData fov
Definition: CoreRef.cs:278
TextureData objs_S
Definition: CoreRef.cs:264
TextureData block_snow
Definition: CoreRef.cs:254
TextureData objs_CLL
Definition: CoreRef.cs:274
TextureData objs_C
Definition: CoreRef.cs:272
TextureData floor
Definition: CoreRef.cs:256
TextureData objs_SS
Definition: CoreRef.cs:284
TextureDatas textureData
Definition: CoreRef.cs:343
CoreRef refs
Definition: Core.cs:51
ModManager mods
Definition: Core.cs:39
bool IsGameStarted
Definition: Core.cs:84
Definition: EClass.cs:5
static Scene scene
Definition: EClass.cs:30
static Core core
Definition: EClass.cs:6
static Zone _zone
Definition: EClass.cs:20
ProceduralMesh pmesh
Definition: MeshPass.cs:25
MeshPass snowPass
Definition: MeshPass.cs:17
List< FileInfo > replaceFiles
Definition: ModManager.cs:27
Definition: Msg.cs:5
static string Say(string idLang, string ref1, string ref2=null, string ref3=null, string ref4=null)
Definition: Msg.cs:58
GameScreen screenElin
Definition: Scene.cs:89
void ApplyZoneConfig()
Definition: Scene.cs:811
Texture2D tex
Definition: TextureData.cs:39
Dictionary< int, TextureReplace > dictReplace
Definition: TextureData.cs:57
void TryRefresh()
Definition: TextureData.cs:62
List< MeshPass > listPass
Definition: TextureData.cs:54
void AddReplace(TextureReplace r)
Definition: TextureData.cs:193
string id
Definition: TextureData.cs:33
List< TextureReplace > listReplaceLocal
Definition: TextureData.cs:60
void RefreshTextures()
void ApplyLocalReplace(string path)
void OnDropFile(List< string > paths)
void AddList(TextureData data, string path)
void Add(MeshPass to, TextureData from, string texName="_MainTex")
void AddBase(TextureData data, string path, MeshPass pass, string texName="_MainTex")
bool TryAddReplace(FileInfo file, TextureReplace.Source source=TextureReplace.Source.Mod, bool add=true, bool refresh=false)
Dictionary< string, TextureData > texMap
bool isStarted
Definition: Zone.cs:70