Elin Decompiled Documentation EA 23.102 Nightly
Loading...
Searching...
No Matches
SpriteData.cs
Go to the documentation of this file.
1using System;
2using System.Globalization;
3using System.IO;
4using System.Text;
5using IniParser;
6using IniParser.Model;
7using UnityEngine;
8
9public class SpriteData
10{
11 public DateTime date;
12
13 public Texture2D tex;
14
15 public Texture2D texSnow;
16
17 public string path;
18
19 public string texName;
20
21 public Sprite[] sprites;
22
23 public Sprite[] spritesSnow;
24
25 public int frame = 1;
26
27 public int scale = 50;
28
29 public float time = 0.2f;
30
31 public void Init()
32 {
33 try
34 {
35 if (File.Exists(path + ".ini"))
36 {
37 IniData iniData = new FileIniDataParser().ReadFile(path + ".ini", Encoding.UTF8);
38 frame = int.Parse(iniData.GetKey("frame") ?? "1");
39 scale = int.Parse(iniData.GetKey("scale") ?? "50");
40 time = float.Parse(iniData.GetKey("time") ?? "0.2", CultureInfo.InvariantCulture);
41 }
42 }
43 catch (Exception message)
44 {
45 Debug.Log(message);
46 Debug.Log("exception: Failed to parse:" + path + ".ini");
47 time = 0.2f;
48 scale = 50;
49 }
50 }
51
52 public Sprite[] GetSprites()
53 {
54 Validate();
55 return sprites;
56 }
57
58 public Sprite GetSprite(bool snow = false)
59 {
60 Validate();
61 if (!snow || spritesSnow == null)
62 {
63 return sprites[0];
64 }
65 return spritesSnow[0];
66 }
67
68 public void Validate()
69 {
70 DateTime lastWriteTime = File.GetLastWriteTime(path + ".png");
71 bool flag = date.Year != 1 && date == lastWriteTime;
72 if (!flag)
73 {
74 Load(flag, ref tex, ref sprites, "");
75 if (File.Exists(path + "_snow.png"))
76 {
77 Load(flag, ref texSnow, ref spritesSnow, "_snow");
78 }
79 date = lastWriteTime;
80 }
81 }
82
83 public void Load(bool dateMatched, ref Texture2D tex, ref Sprite[] sprites, string suffix)
84 {
85 if (dateMatched && (bool)tex)
86 {
87 return;
88 }
89 if ((bool)tex)
90 {
91 Texture2D texture2D = IO.LoadPNG(path + suffix + ".png");
92 if (texture2D.width != tex.width || texture2D.height != tex.height)
93 {
94 Debug.Log(texture2D.width + "/" + texture2D.height + "/" + path);
95 tex.Reinitialize(texture2D.width, texture2D.height);
96 }
97 tex.SetPixels32(texture2D.GetPixels32());
98 tex.Apply();
99 UnityEngine.Object.Destroy(texture2D);
100 }
101 else
102 {
103 tex = IO.LoadPNG(path + suffix + ".png");
104 int num = tex.width / frame;
105 int height = tex.height;
106 sprites = new Sprite[frame];
107 for (int i = 0; i < frame; i++)
108 {
109 sprites[i] = Sprite.Create(tex, new Rect(i * num, 0f, num, height), new Vector2(0.5f, 0.5f), 100f, 0u, SpriteMeshType.FullRect);
110 }
111 }
112 }
113}
void Init()
Definition: SpriteData.cs:31
Sprite[] sprites
Definition: SpriteData.cs:21
Sprite[] spritesSnow
Definition: SpriteData.cs:23
Texture2D tex
Definition: SpriteData.cs:13
string texName
Definition: SpriteData.cs:19
string path
Definition: SpriteData.cs:17
void Validate()
Definition: SpriteData.cs:68
DateTime date
Definition: SpriteData.cs:11
Texture2D texSnow
Definition: SpriteData.cs:15
Sprite GetSprite(bool snow=false)
Definition: SpriteData.cs:58
float time
Definition: SpriteData.cs:29
void Load(bool dateMatched, ref Texture2D tex, ref Sprite[] sprites, string suffix)
Definition: SpriteData.cs:83
Sprite[] GetSprites()
Definition: SpriteData.cs:52