Elin Decompiled Documentation EA 23.299 Nightly
Loading...
Searching...
No Matches
CardActor.cs
Go to the documentation of this file.
1using UnityEngine;
2
3public class CardActor : Actor
4{
5 public enum Type
6 {
8 Boat,
9 Canvas,
11 }
12
13 public Card owner;
14
15 public SpriteRenderer sr;
16
17 public SpriteRenderer sr2;
18
20
21 public MaterialPropertyBlock mpb;
22
23 public MaterialPropertyBlock mpb2;
24
25 public Type type;
26
27 private float destLiquid;
28
29 private float spriteTimer;
30
31 private int spriteIndex;
32
33 private Vector3 originalScale;
34
35 protected static Vector3 tempV;
36
37 protected static Vector3 tempV2;
38
39 public virtual bool isPCC => false;
40
41 public virtual int currentDir => 0;
42
43 private void Awake()
44 {
45 originalScale = base.transform.localScale;
46 }
47
48 public void SetOwner(Card t)
49 {
50 base.gameObject.SetActive(value: true);
51 owner = t;
52 if (mpb == null)
53 {
54 mpb = new MaterialPropertyBlock();
55 }
56 mpb.SetColor("_Mat", EMono.Colors.matColors.TryGetValue(t.material.alias).main);
57 if ((bool)sr)
58 {
59 sr.SetPropertyBlock(mpb);
60 }
61 if ((bool)sr2)
62 {
63 if (mpb2 == null)
64 {
65 mpb2 = new MaterialPropertyBlock();
66 }
67 mpb2.SetColor("_Mat", Color.white);
68 sr2.SetPropertyBlock(mpb2);
69 }
70 OnSetOwner();
71 if (Application.isEditor)
72 {
73 base.gameObject.name = owner.Name;
74 }
75 if (type == Type.Boat)
76 {
77 srAnime.SetData(owner.id + "_anime");
78 }
80 }
81
82 public virtual void OnSetOwner()
83 {
84 }
85
86 public virtual void IdleFrame()
87 {
88 }
89
90 public virtual void NextFrame()
91 {
92 }
93
94 public virtual void NextDir()
95 {
96 }
97
98 public virtual int GetFrame()
99 {
100 return 0;
101 }
102
103 public virtual void OnRender(RenderParam p)
104 {
105 this.SetActive(enable: true);
108 if (data.useOffsetBack && owner != EMono.pc.held)
109 {
110 bool num;
111 if (!data.symmetry)
112 {
113 if (p.dir == 1)
114 {
115 goto IL_006a;
116 }
117 num = p.dir == 2;
118 }
119 else
120 {
121 num = p.dir % 2 == 1;
122 }
123 if (num)
124 {
125 goto IL_006a;
126 }
127 }
128 tempV.x = p.x + data.offset.x + current.offset.x;
129 tempV.y = p.y + data.offset.y + current.offset.y;
130 tempV.z = p.z + data.offset.z + current.offset.z;
131 goto IL_015c;
132 IL_006a:
133 tempV.x = p.x + data.offsetBack.x + current.offset.x;
134 tempV.y = p.y + data.offsetBack.y + current.offset.y;
135 tempV.z = p.z + data.offsetBack.z + current.offset.z;
136 goto IL_015c;
137 IL_015c:
138 if (isPCC)
139 {
140 RenderDataPcc renderDataPcc = data as RenderDataPcc;
141 CharaActorPCC charaActorPCC = this as CharaActorPCC;
142 tempV.x = (float)(int)(tempV.x * 100f) * 0.01f;
143 tempV.y = (float)(int)(tempV.y * 100f) * 0.01f;
144 tempV2.x = charaActorPCC.provider.vCurrent.source.size.x * current.scale.x;
145 tempV2.y = charaActorPCC.provider.vCurrent.source.size.y * current.scale.y;
146 tempV2.z = renderDataPcc._scale.z * current.scale.z;
147 base.transform.localRotation = current.rotation;
148 }
149 else
150 {
151 tempV2.x = originalScale.x * current.scale.x;
152 tempV2.y = originalScale.y * current.scale.y;
153 tempV2.z = originalScale.z * current.scale.z;
154 }
155 if (type == Type.Boat)
156 {
157 float floatY = EMono.scene.screenElin.tileMap.floatY;
158 int floatV = EMono.scene.screenElin.tileMap.floatV;
159 sr2.transform.localPosition = new Vector3(0f, -0.005f * floatY, sr2.transform.localPosition.z);
160 int num2 = 0;
161 if (floatV == 1)
162 {
163 if (floatY < 2f)
164 {
165 num2 = 0;
166 }
167 else
168 {
169 num2 = 1;
170 }
171 }
172 else if (floatY < 3f)
173 {
174 num2 = 3;
175 }
176 else
177 {
178 num2 = 2;
179 }
180 num2 = ((floatV == 1) ? ((!(floatY < 0f)) ? ((floatY < 3f) ? 1 : 2) : 0) : ((!(floatY < 2f)) ? ((!(floatY < 5f)) ? 2 : 3) : 0));
181 srAnime.sr.sprite = srAnime.data.GetSprites().TryGet(num2, returnNull: true);
182 }
183 base.transform.position = tempV;
184 base.transform.localScale = tempV2;
185 destLiquid = Mathf.Lerp(destLiquid, p.liquidLv, Core.gameDeltaNoPause * (float)((destLiquid > (float)p.liquidLv) ? 90 : 20));
186 mpb.SetFloat("_MatColor", p.matColor);
187 mpb.SetFloat("_Color", p.color);
188 mpb.SetFloat("_Liquid", destLiquid);
189 sr.SetPropertyBlock(mpb);
190 if ((bool)sr2)
191 {
192 if ((bool)sr2.sprite)
193 {
194 mpb2.SetTexture("_MainTex", sr2.sprite.texture);
195 }
196 mpb2.SetTexture("_MaskTex", sr.sprite.texture);
197 mpb2.SetFloat("_MatColor", p.matColor);
198 mpb2.SetFloat("_Color", p.color);
199 mpb2.SetFloat("_Liquid", destLiquid);
200 sr2.SetPropertyBlock(mpb2);
201 }
203 if (!replacer.HasSprite(owner.sourceCard.idSprite, data))
204 {
205 return;
206 }
207 SpriteData spriteData = replacer.data;
208 if (p.snow && replacer.suffixes.TryGetValue("_snow", out var value))
209 {
210 spriteData = value;
211 }
212 if (spriteData.frame <= 1)
213 {
214 return;
215 }
217 if (spriteTimer >= spriteData.time)
218 {
219 spriteTimer -= spriteData.time;
220 spriteIndex++;
221 if (spriteIndex >= spriteData.frame)
222 {
223 spriteIndex = 0;
224 }
225 sr.sprite = spriteData.GetSprites().TryGet(spriteIndex, returnNull: true);
226 if ((bool)sr.sprite)
227 {
228 mpb.SetTexture("_MainTex", sr.sprite.texture);
229 }
230 }
231 }
232
233 public virtual void RefreshSprite()
234 {
235 switch (type)
236 {
237 case Type.Canvas:
238 if (owner == null || !sr2)
239 {
240 break;
241 }
242 if (owner.c_textureData != null)
243 {
244 sr2.sprite = owner.GetPaintSprite();
245 if (owner.trait is TraitCanvas traitCanvas)
246 {
247 sr2.transform.SetLocalScale(traitCanvas.Scale, traitCanvas.Scale, 1f);
248 mpb2.SetFloat("_PortraitFilterStrength", traitCanvas.UsePortraitFilter ? 1 : 0);
249 }
250 }
251 else
252 {
253 sr2.sprite = null;
254 }
255 break;
256 case Type.Boat:
257 sr2.SetActive(owner.Cell.IsFloorWater);
258 break;
259 case Type.MultiSprite:
260 sr2.sprite = owner.GetSprite();
261 break;
262 }
263 int dir = owner.dir;
264 Sprite sprite = owner.GetSprite(dir);
265 if (!sr.sprite)
266 {
267 sr.sprite = sprite;
268 }
269 sr.flipX = dir == 1 || dir == 3;
270 mpb.SetTexture("_MainTex", sprite.texture);
271 Vector4 value = new Vector4(sprite.textureRect.min.x / (float)sprite.texture.width, sprite.textureRect.min.y / (float)sprite.texture.height, sprite.textureRect.max.x / (float)sprite.texture.width, sprite.textureRect.max.y / (float)sprite.texture.height);
272 mpb.SetVector("_Rect", value);
273 mpb.SetFloat("_PixelHeight", sprite.rect.height);
274 if (!sr2)
275 {
276 return;
277 }
278 if ((bool)sr2.sprite && (bool)sr2.sprite.texture)
279 {
280 sr2.flipX = dir == 1 || dir == 3;
281 sprite = sr2.sprite;
282 if ((bool)sprite)
283 {
284 _ = sprite.textureRect;
285 value = new Vector4(sprite.textureRect.min.x / (float)sprite.texture.width, sprite.textureRect.min.y / (float)sprite.texture.height, sprite.textureRect.max.x / (float)sprite.texture.width, sprite.textureRect.max.y / (float)sprite.texture.height);
286 mpb2.SetTexture("_MainTex", sprite.texture);
287 mpb2.SetVector("_Rect", value);
288 mpb2.SetFloat("_PixelHeight", sprite.rect.height);
289 }
290 }
291 else
292 {
293 sr2.sprite = null;
294 }
295 }
296
297 public virtual void Kill()
298 {
299 sr.sprite = null;
300 PoolManager.Despawn(base.transform);
301 }
302}
Definition: Actor.cs:2
BaseTileMap tileMap
float floatY
Definition: BaseTileMap.cs:329
static Vector3 tempV2
Definition: CardActor.cs:37
int spriteIndex
Definition: CardActor.cs:31
virtual bool isPCC
Definition: CardActor.cs:39
void Awake()
Definition: CardActor.cs:43
virtual void OnRender(RenderParam p)
Definition: CardActor.cs:103
SpriteReplacerAnimation srAnime
Definition: CardActor.cs:19
SpriteRenderer sr
Definition: CardActor.cs:15
virtual int currentDir
Definition: CardActor.cs:41
virtual void NextDir()
Definition: CardActor.cs:94
float spriteTimer
Definition: CardActor.cs:29
SpriteRenderer sr2
Definition: CardActor.cs:17
Type type
Definition: CardActor.cs:25
void SetOwner(Card t)
Definition: CardActor.cs:48
MaterialPropertyBlock mpb2
Definition: CardActor.cs:23
virtual void NextFrame()
Definition: CardActor.cs:90
static Vector3 tempV
Definition: CardActor.cs:35
virtual void RefreshSprite()
Definition: CardActor.cs:233
float destLiquid
Definition: CardActor.cs:27
virtual void IdleFrame()
Definition: CardActor.cs:86
MaterialPropertyBlock mpb
Definition: CardActor.cs:21
virtual void OnSetOwner()
Definition: CardActor.cs:82
Vector3 originalScale
Definition: CardActor.cs:33
Card owner
Definition: CardActor.cs:13
virtual void Kill()
Definition: CardActor.cs:297
virtual int GetFrame()
Definition: CardActor.cs:98
override string idSprite
Definition: CardRow.cs:64
Definition: Card.cs:11
string id
Definition: Card.cs:36
SourceMaterial.Row material
Definition: Card.cs:2091
string Name
Definition: Card.cs:2179
Sprite GetPaintSprite()
Definition: Card.cs:7385
virtual Sprite GetSprite(int dir=0)
Definition: Card.cs:6362
Trait trait
Definition: Card.cs:54
byte[] c_textureData
Definition: Card.cs:1969
Cell Cell
Definition: Card.cs:2095
int dir
Definition: Card.cs:149
virtual CardRow sourceCard
Definition: Card.cs:2171
CardRenderer renderer
Definition: Card.cs:64
bool IsFloorWater
Definition: Cell.cs:727
Card held
Definition: Chara.cs:70
UD_String_MatData matColors
Definition: Core.cs:14
static float gameDeltaNoPause
Definition: Core.cs:23
static float delta
Definition: Core.cs:17
Definition: EMono.cs:4
static ColorProfile Colors
Definition: EMono.cs:35
static Chara pc
Definition: EMono.cs:13
static Scene scene
Definition: EMono.cs:27
static void Despawn(Component c)
Definition: PoolManager.cs:128
bool symmetry
Definition: RenderData.cs:41
bool useOffsetBack
Definition: RenderData.cs:37
RenderData data
Definition: RenderObject.cs:34
int liquidLv
Definition: RenderParam.cs:7
SpriteReplacer replacer
Definition: RenderRow.cs:89
GameScreen screenElin
Definition: Scene.cs:93
float time
Definition: SpriteData.cs:28
Sprite[] GetSprites()
Definition: SpriteData.cs:109
Dictionary< string, SpriteData > suffixes
SpriteData data
bool HasSprite(string id, RenderData renderData=null)
Quaternion rotation
Definition: SubPassData.cs:15
Vector3 scale
Definition: SubPassData.cs:13
static SubPassData Current
Definition: SubPassData.cs:9
Vector3 offset
Definition: SubPassData.cs:11
bool TryGetValue(TKey key, out TValue value)
Definition: UDictionary.cs:178