Elin Decompiled Documentation EA 23.102 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);
182 }
183 base.transform.position = tempV;
184 base.transform.localScale = tempV2;
185 destLiquid = Mathf.Lerp(destLiquid, p.liquidLv, Core.gameDelta * (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 }
202 if (owner.sourceCard.replacer.data == null)
203 {
204 return;
205 }
207 if (data2.frame <= 1)
208 {
209 return;
210 }
212 if (spriteTimer >= data2.time)
213 {
214 spriteTimer -= data2.time;
215 spriteIndex++;
216 if (spriteIndex >= data2.frame)
217 {
218 spriteIndex = 0;
219 }
220 sr.sprite = ((data2.spritesSnow != null && p.snow) ? data2.spritesSnow[spriteIndex] : data2.sprites[spriteIndex]);
221 }
222 }
223
224 public virtual void RefreshSprite()
225 {
226 switch (type)
227 {
228 case Type.Canvas:
229 if (owner == null || !sr2)
230 {
231 break;
232 }
233 if (owner.c_textureData != null)
234 {
235 sr2.sprite = owner.GetPaintSprite();
236 if (owner.trait is TraitCanvas traitCanvas)
237 {
238 sr2.transform.SetLocalScale(traitCanvas.Scale, traitCanvas.Scale, 1f);
239 }
240 }
241 else
242 {
243 sr2.sprite = null;
244 }
245 break;
246 case Type.Boat:
247 sr2.SetActive(owner.Cell.IsFloorWater);
248 break;
249 case Type.MultiSprite:
250 sr2.sprite = owner.GetSprite();
251 break;
252 }
253 int dir = owner.dir;
254 SpriteRenderer spriteRenderer = sr;
255 Sprite sprite2 = (sr.sprite = owner.GetSprite(dir));
256 Sprite sprite4 = (spriteRenderer.sprite = sprite2);
257 Sprite sprite5 = sprite4;
258 sr.flipX = dir == 1 || dir == 3;
259 mpb.SetTexture("_MainTex", sprite5.texture);
260 Vector4 value = new Vector4(sprite5.textureRect.min.x / (float)sprite5.texture.width, sprite5.textureRect.min.y / (float)sprite5.texture.height, sprite5.textureRect.max.x / (float)sprite5.texture.width, sprite5.textureRect.max.y / (float)sprite5.texture.height);
261 mpb.SetVector("_Rect", value);
262 mpb.SetFloat("_PixelHeight", sprite5.rect.height);
263 if (!sr2)
264 {
265 return;
266 }
267 if ((bool)sr2.sprite && (bool)sr2.sprite.texture)
268 {
269 sr2.flipX = dir == 1 || dir == 3;
270 sprite5 = sr2.sprite;
271 if ((bool)sprite5)
272 {
273 _ = sprite5.textureRect;
274 value = new Vector4(sprite5.textureRect.min.x / (float)sprite5.texture.width, sprite5.textureRect.min.y / (float)sprite5.texture.height, sprite5.textureRect.max.x / (float)sprite5.texture.width, sprite5.textureRect.max.y / (float)sprite5.texture.height);
275 mpb2.SetTexture("_MainTex", sprite5.texture);
276 mpb2.SetVector("_Rect", value);
277 mpb2.SetFloat("_PixelHeight", sprite5.rect.height);
278 }
279 }
280 else
281 {
282 sr2.sprite = null;
283 }
284 }
285
286 public virtual void Kill()
287 {
288 PoolManager.Despawn(base.transform);
289 }
290}
Definition: Actor.cs:2
BaseTileMap tileMap
float floatY
Definition: BaseTileMap.cs:323
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:224
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:286
virtual int GetFrame()
Definition: CardActor.cs:98
Definition: Card.cs:11
string id
Definition: Card.cs:31
SourceMaterial.Row material
Definition: Card.cs:1927
string Name
Definition: Card.cs:2013
Sprite GetPaintSprite()
Definition: Card.cs:6280
virtual Sprite GetSprite(int dir=0)
Definition: Card.cs:5341
Trait trait
Definition: Card.cs:49
byte[] c_textureData
Definition: Card.cs:1805
Cell Cell
Definition: Card.cs:1931
int dir
Definition: Card.cs:142
virtual CardRow sourceCard
Definition: Card.cs:2007
CardRenderer renderer
Definition: Card.cs:57
bool IsFloorWater
Definition: Cell.cs:727
Card held
Definition: Chara.cs:67
UD_String_MatData matColors
Definition: Core.cs:14
static float gameDelta
Definition: Core.cs:21
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:40
bool useOffsetBack
Definition: RenderData.cs:36
RenderData data
Definition: RenderObject.cs:34
int liquidLv
Definition: RenderParam.cs:7
SpriteReplacer replacer
Definition: RenderRow.cs:89
GameScreen screenElin
Definition: Scene.cs:89
Sprite[] sprites
Definition: SpriteData.cs:21
Sprite[] spritesSnow
Definition: SpriteData.cs:23
float time
Definition: SpriteData.cs:29
Sprite[] GetSprites()
Definition: SpriteData.cs:52
SpriteData data
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