Elin Decompiled Documentation EA 23.344.1 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 bool visible = true;
34
35 private Vector3 originalScale;
36
37 protected static Vector3 tempV;
38
39 protected static Vector3 tempV2;
40
41 public virtual bool isPCC => false;
42
43 public virtual int currentDir => 0;
44
45 private void Awake()
46 {
47 originalScale = base.transform.localScale;
48 }
49
50 public void SetOwner(Card t)
51 {
52 base.gameObject.SetActive(value: true);
53 owner = t;
54 if (mpb == null)
55 {
56 mpb = new MaterialPropertyBlock();
57 }
58 mpb.SetColor("_Mat", EMono.Colors.matColors.TryGetValue(t.material.alias).main);
59 if ((bool)sr)
60 {
61 sr.SetPropertyBlock(mpb);
62 }
63 if ((bool)sr2)
64 {
65 if (mpb2 == null)
66 {
67 mpb2 = new MaterialPropertyBlock();
68 }
69 mpb2.SetColor("_Mat", Color.white);
70 sr2.SetPropertyBlock(mpb2);
71 }
72 OnSetOwner();
73 if (Application.isEditor)
74 {
75 base.gameObject.name = owner.Name;
76 }
77 if (type == Type.Boat)
78 {
79 srAnime.SetData(owner.id + "_anime");
80 }
82 }
83
84 public virtual void OnSetOwner()
85 {
86 }
87
88 public virtual void IdleFrame()
89 {
90 }
91
92 public virtual void NextFrame()
93 {
94 }
95
96 public virtual void NextDir()
97 {
98 }
99
100 public virtual int GetFrame()
101 {
102 return 0;
103 }
104
105 public virtual void OnRender(RenderParam p)
106 {
107 this.SetActive(enable: true);
108 if (!visible)
109 {
110 SetVisible(enable: true);
111 }
114 if (data.useOffsetBack && owner != EMono.pc.held)
115 {
116 bool num;
117 if (!data.symmetry)
118 {
119 if (p.dir == 1)
120 {
121 goto IL_0079;
122 }
123 num = p.dir == 2;
124 }
125 else
126 {
127 num = p.dir % 2 == 1;
128 }
129 if (num)
130 {
131 goto IL_0079;
132 }
133 }
134 tempV.x = p.x + data.offset.x + current.offset.x;
135 tempV.y = p.y + data.offset.y + current.offset.y;
136 tempV.z = p.z + data.offset.z + current.offset.z;
137 goto IL_016b;
138 IL_016b:
139 if (isPCC)
140 {
141 RenderDataPcc renderDataPcc = data as RenderDataPcc;
142 CharaActorPCC charaActorPCC = this as CharaActorPCC;
143 tempV.x = (float)(int)(tempV.x * 100f) * 0.01f;
144 tempV.y = (float)(int)(tempV.y * 100f) * 0.01f;
145 tempV2.x = charaActorPCC.provider.vCurrent.source.size.x * current.scale.x;
146 tempV2.y = charaActorPCC.provider.vCurrent.source.size.y * current.scale.y;
147 tempV2.z = renderDataPcc._scale.z * current.scale.z;
148 base.transform.localRotation = current.rotation;
149 }
150 else
151 {
152 tempV2.x = originalScale.x * current.scale.x;
153 tempV2.y = originalScale.y * current.scale.y;
154 tempV2.z = originalScale.z * current.scale.z;
155 }
156 if (type == Type.Boat)
157 {
158 float floatY = EMono.scene.screenElin.tileMap.floatY;
159 int floatV = EMono.scene.screenElin.tileMap.floatV;
160 sr2.transform.localPosition = new Vector3(0f, -0.005f * floatY, sr2.transform.localPosition.z);
161 int num2 = 0;
162 if (floatV == 1)
163 {
164 if (floatY < 2f)
165 {
166 num2 = 0;
167 }
168 else
169 {
170 num2 = 1;
171 }
172 }
173 else if (floatY < 3f)
174 {
175 num2 = 3;
176 }
177 else
178 {
179 num2 = 2;
180 }
181 num2 = ((floatV == 1) ? ((!(floatY < 0f)) ? ((floatY < 3f) ? 1 : 2) : 0) : ((!(floatY < 2f)) ? ((!(floatY < 5f)) ? 2 : 3) : 0));
182 srAnime.sr.sprite = srAnime.data.GetSprites().TryGet(num2, returnNull: true);
183 }
184 base.transform.position = tempV;
185 base.transform.localScale = tempV2;
186 destLiquid = Mathf.Lerp(destLiquid, p.liquidLv, Core.gameDeltaNoPause * (float)((destLiquid > (float)p.liquidLv) ? 90 : 20));
187 mpb.SetFloat("_MatColor", p.matColor);
188 mpb.SetFloat("_Color", p.color);
189 mpb.SetFloat("_Liquid", destLiquid);
190 sr.SetPropertyBlock(mpb);
191 if ((bool)sr2)
192 {
193 if ((bool)sr2.sprite)
194 {
195 mpb2.SetTexture("_MainTex", sr2.sprite.texture);
196 }
197 mpb2.SetTexture("_MaskTex", sr.sprite.texture);
198 mpb2.SetFloat("_MatColor", p.matColor);
199 mpb2.SetFloat("_Color", p.color);
200 mpb2.SetFloat("_Liquid", destLiquid);
201 sr2.SetPropertyBlock(mpb2);
202 }
204 if (!replacer.HasSprite(owner.sourceCard.idSprite, data))
205 {
206 return;
207 }
208 SpriteData spriteData = replacer.data;
209 if (p.snow && replacer.suffixes.TryGetValue("_snow", out var value))
210 {
211 spriteData = value;
212 }
213 if (spriteData.frame <= 1)
214 {
215 return;
216 }
218 if (spriteTimer >= spriteData.time)
219 {
220 spriteTimer -= spriteData.time;
221 spriteIndex++;
222 if (spriteIndex >= spriteData.frame)
223 {
224 spriteIndex = 0;
225 }
226 sr.sprite = spriteData.GetSprites().TryGet(spriteIndex, returnNull: true);
227 if ((bool)sr.sprite)
228 {
229 mpb.SetTexture("_MainTex", sr.sprite.texture);
230 }
231 }
232 return;
233 IL_0079:
234 tempV.x = p.x + data.offsetBack.x + current.offset.x;
235 tempV.y = p.y + data.offsetBack.y + current.offset.y;
236 tempV.z = p.z + data.offsetBack.z + current.offset.z;
237 goto IL_016b;
238 }
239
240 public virtual void ReloadSprite()
241 {
242 sr.sprite = null;
244 }
245
246 public virtual void RefreshSprite()
247 {
248 switch (type)
249 {
250 case Type.Canvas:
251 if (owner == null || !sr2)
252 {
253 break;
254 }
255 if (owner.c_textureData != null)
256 {
257 sr2.sprite = owner.GetPaintSprite();
258 if (owner.trait is TraitCanvas traitCanvas)
259 {
260 sr2.transform.SetLocalScale(traitCanvas.Scale, traitCanvas.Scale, 1f);
261 mpb2.SetFloat("_PortraitFilterStrength", traitCanvas.UsePortraitFilter ? 1 : 0);
262 }
263 }
264 else
265 {
266 sr2.sprite = null;
267 }
268 break;
269 case Type.Boat:
270 sr2.SetActive(owner.Cell.IsFloorWater);
271 break;
272 case Type.MultiSprite:
273 sr2.sprite = owner.GetSprite();
274 break;
275 }
276 int dir = owner.dir;
277 Sprite sprite = owner.GetSprite(dir);
278 if (!sr.sprite)
279 {
280 sr.sprite = sprite;
281 }
282 sr.flipX = dir == 1 || dir == 3;
283 mpb.SetTexture("_MainTex", sprite.texture);
284 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);
285 mpb.SetVector("_Rect", value);
286 mpb.SetFloat("_PixelHeight", sprite.rect.height);
287 if (!sr2)
288 {
289 return;
290 }
291 if ((bool)sr2.sprite && (bool)sr2.sprite.texture)
292 {
293 sr2.flipX = dir == 1 || dir == 3;
294 sprite = sr2.sprite;
295 if ((bool)sprite)
296 {
297 _ = sprite.textureRect;
298 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);
299 mpb2.SetTexture("_MainTex", sprite.texture);
300 mpb2.SetVector("_Rect", value);
301 mpb2.SetFloat("_PixelHeight", sprite.rect.height);
302 }
303 }
304 else
305 {
306 sr2.sprite = null;
307 }
308 }
309
310 public virtual void Kill()
311 {
312 sr.sprite = null;
313 PoolManager.Despawn(base.transform);
314 }
315
316 public void SetVisible(bool enable)
317 {
318 if (visible != enable)
319 {
320 visible = enable;
321 if ((bool)sr)
322 {
323 sr.enabled = visible;
324 }
325 if ((bool)sr2)
326 {
327 sr2.enabled = visible;
328 }
329 }
330 }
331}
Definition: Actor.cs:2
BaseTileMap tileMap
float floatY
Definition: BaseTileMap.cs:329
static Vector3 tempV2
Definition: CardActor.cs:39
int spriteIndex
Definition: CardActor.cs:31
void SetVisible(bool enable)
Definition: CardActor.cs:316
virtual bool isPCC
Definition: CardActor.cs:41
void Awake()
Definition: CardActor.cs:45
virtual void OnRender(RenderParam p)
Definition: CardActor.cs:105
SpriteReplacerAnimation srAnime
Definition: CardActor.cs:19
SpriteRenderer sr
Definition: CardActor.cs:15
virtual int currentDir
Definition: CardActor.cs:43
virtual void NextDir()
Definition: CardActor.cs:96
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:50
MaterialPropertyBlock mpb2
Definition: CardActor.cs:23
virtual void NextFrame()
Definition: CardActor.cs:92
static Vector3 tempV
Definition: CardActor.cs:37
virtual void RefreshSprite()
Definition: CardActor.cs:246
float destLiquid
Definition: CardActor.cs:27
virtual void IdleFrame()
Definition: CardActor.cs:88
bool visible
Definition: CardActor.cs:33
MaterialPropertyBlock mpb
Definition: CardActor.cs:21
virtual void OnSetOwner()
Definition: CardActor.cs:84
Vector3 originalScale
Definition: CardActor.cs:35
Card owner
Definition: CardActor.cs:13
virtual void Kill()
Definition: CardActor.cs:310
virtual void ReloadSprite()
Definition: CardActor.cs:240
virtual int GetFrame()
Definition: CardActor.cs:100
override string idSprite
Definition: CardRow.cs:64
Definition: Card.cs:11
string id
Definition: Card.cs:36
SourceMaterial.Row material
Definition: Card.cs:2103
string Name
Definition: Card.cs:2191
Sprite GetPaintSprite()
Definition: Card.cs:7587
virtual Sprite GetSprite(int dir=0)
Definition: Card.cs:6564
Trait trait
Definition: Card.cs:54
byte[] c_textureData
Definition: Card.cs:1981
Cell Cell
Definition: Card.cs:2107
int dir
Definition: Card.cs:149
virtual CardRow sourceCard
Definition: Card.cs:2183
CardRenderer renderer
Definition: Card.cs:64
bool IsFloorWater
Definition: Cell.cs:771
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:30
Sprite[] GetSprites()
Definition: SpriteData.cs:134
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